; LLVM IR from libxsmm/libxsmm :: src (generator_gemm_reference_impl)

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

%union.libxsmm_bfloat8_f16 = type { i16 }
%union.libxsmm_bfloat16_f32 = type { float }
%struct.libxsmm_gemm_def = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local float @libxsmm_convert_mxfp4_to_float(i8 noundef zeroext) #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: nounwind uwtable
declare dso_local signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_calculate_brgemm_offsets(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local float @libxsmm_calculate_mxfp4_scf(i32 noundef, i32 noundef, i32 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local float @libxsmm_calculate_mxfp4_scf_b(i32 noundef, i32 noundef, i32 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @libxsmm_calculate_zpt(i32 noundef, i32 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_ref_matmul(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i64, align 8
  %40 = alloca i8, align 1
  %41 = alloca float, align 4
  %42 = alloca float, align 4
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  %53 = alloca float, align 4
  %54 = alloca float, align 4
  %55 = alloca float, align 4
  %56 = alloca float, align 4
  %57 = alloca i8, align 1
  %58 = alloca float, align 4
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca float, align 4
  %65 = alloca i32, align 4
  %66 = alloca float, align 4
  %67 = alloca float, align 4
  %68 = alloca i8, align 1
  %69 = alloca i8, align 1
  %70 = alloca i8, align 1
  %71 = alloca i8, align 1
  %72 = alloca i8, align 1
  %73 = alloca i8, align 1
  %74 = alloca i8, align 1
  %75 = alloca float, align 4
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca i8, align 1
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca ptr, align 8
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca i32, align 4
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca ptr, align 8
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca i32, align 4
  %100 = alloca ptr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca i32, align 4
  %104 = alloca ptr, align 8
  %105 = alloca ptr, align 8
  %106 = alloca ptr, align 8
  %107 = alloca i32, align 4
  %108 = alloca ptr, align 8
  %109 = alloca ptr, align 8
  %110 = alloca ptr, align 8
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca float, align 4
  %114 = alloca ptr, align 8
  %115 = alloca ptr, align 8
  %116 = alloca ptr, align 8
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca float, align 4
  %120 = alloca ptr, align 8
  %121 = alloca ptr, align 8
  %122 = alloca ptr, align 8
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca float, align 4
  %126 = alloca ptr, align 8
  %127 = alloca ptr, align 8
  %128 = alloca ptr, align 8
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca float, align 4
  %132 = alloca ptr, align 8
  %133 = alloca ptr, align 8
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca i32, align 4
  %137 = alloca i16, align 2
  %138 = alloca float, align 4
  %139 = alloca float, align 4
  %140 = alloca float, align 4
  %141 = alloca float, align 4
  %142 = alloca i8, align 1
  %143 = alloca i32, align 4
  %144 = alloca ptr, align 8
  %145 = alloca ptr, align 8
  %146 = alloca ptr, align 8
  %147 = alloca ptr, align 8
  %148 = alloca i16, align 2
  %149 = alloca i16, align 2
  %150 = alloca float, align 4
  %151 = alloca i32, align 4
  %152 = alloca ptr, align 8
  %153 = alloca i32, align 4
  %154 = alloca i32, align 4
  %155 = alloca i32, align 4
  %156 = alloca i32, align 4
  %157 = alloca float, align 4
  %158 = alloca float, align 4
  %159 = alloca %union.libxsmm_bfloat8_f16, align 2
  %160 = alloca float, align 4
  %161 = alloca ptr, align 8
  %162 = alloca ptr, align 8
  %163 = alloca ptr, align 8
  %164 = alloca i16, align 2
  %165 = alloca i16, align 2
  %166 = alloca i16, align 2
  %167 = alloca ptr, align 8
  %168 = alloca i8, align 1
  %169 = alloca i16, align 2
  %170 = alloca i32, align 4
  %171 = alloca float, align 4
  %172 = alloca i32, align 4
  %173 = alloca ptr, align 8
  %174 = alloca i32, align 4
  %175 = alloca i32, align 4
  %176 = alloca i32, align 4
  %177 = alloca i32, align 4
  %178 = alloca float, align 4
  %179 = alloca float, align 4
  %180 = alloca float, align 4
  %181 = alloca i8, align 1
  %182 = alloca float, align 4
  %183 = alloca ptr, align 8
  %184 = alloca ptr, align 8
  %185 = alloca ptr, align 8
  %186 = alloca i16, align 2
  %187 = alloca i16, align 2
  %188 = alloca i16, align 2
  %189 = alloca float, align 4
  %190 = alloca i32, align 4
  %191 = alloca ptr, align 8
  %192 = alloca i32, align 4
  %193 = alloca i32, align 4
  %194 = alloca i32, align 4
  %195 = alloca i32, align 4
  %196 = alloca float, align 4
  %197 = alloca float, align 4
  %198 = alloca float, align 4
  %199 = alloca i8, align 1
  %200 = alloca i16, align 2
  %201 = alloca i32, align 4
  %202 = alloca float, align 4
  %203 = alloca ptr, align 8
  %204 = alloca ptr, align 8
  %205 = alloca ptr, align 8
  %206 = alloca i16, align 2
  %207 = alloca float, align 4
  %208 = alloca i16, align 2
  %209 = alloca i16, align 2
  %210 = alloca i32, align 4
  %211 = alloca ptr, align 8
  %212 = alloca i32, align 4
  %213 = alloca i32, align 4
  %214 = alloca i32, align 4
  %215 = alloca i32, align 4
  %216 = alloca float, align 4
  %217 = alloca float, align 4
  %218 = alloca float, align 4
  %219 = alloca i8, align 1
  %220 = alloca i16, align 2
  %221 = alloca i32, align 4
  %222 = alloca float, align 4
  %223 = alloca ptr, align 8
  %224 = alloca ptr, align 8
  %225 = alloca ptr, align 8
  %226 = alloca i16, align 2
  %227 = alloca i16, align 2
  %228 = alloca i16, align 2
  %229 = alloca float, align 4
  %230 = alloca i32, align 4
  %231 = alloca ptr, align 8
  %232 = alloca i32, align 4
  %233 = alloca i32, align 4
  %234 = alloca i32, align 4
  %235 = alloca i32, align 4
  %236 = alloca float, align 4
  %237 = alloca float, align 4
  %238 = alloca float, align 4
  %239 = alloca ptr, align 8
  %240 = alloca ptr, align 8
  %241 = alloca ptr, align 8
  %242 = alloca i16, align 2
  %243 = alloca float, align 4
  %244 = alloca i16, align 2
  %245 = alloca i16, align 2
  %246 = alloca i32, align 4
  %247 = alloca ptr, align 8
  %248 = alloca i32, align 4
  %249 = alloca i32, align 4
  %250 = alloca i32, align 4
  %251 = alloca i32, align 4
  %252 = alloca float, align 4
  %253 = alloca float, align 4
  %254 = alloca float, align 4
  %255 = alloca ptr, align 8
  %256 = alloca ptr, align 8
  %257 = alloca ptr, align 8
  %258 = alloca i32, align 4
  %259 = alloca %union.libxsmm_bfloat16_f32, align 4
  %260 = alloca %union.libxsmm_bfloat16_f32, align 4
  %261 = alloca ptr, align 8
  %262 = alloca ptr, align 8
  %263 = alloca ptr, align 8
  %264 = alloca i32, align 4
  %265 = alloca %union.libxsmm_bfloat8_f16, align 2
  %266 = alloca float, align 4
  %267 = alloca %union.libxsmm_bfloat16_f32, align 4
  %268 = alloca ptr, align 8
  %269 = alloca ptr, align 8
  %270 = alloca ptr, align 8
  %271 = alloca i32, align 4
  %272 = alloca float, align 4
  %273 = alloca %union.libxsmm_bfloat16_f32, align 4
  %274 = alloca ptr, align 8
  %275 = alloca ptr, align 8
  %276 = alloca ptr, align 8
  %277 = alloca i32, align 4
  %278 = alloca float, align 4
  %279 = alloca i16, align 2
  %280 = alloca %union.libxsmm_bfloat16_f32, align 4
  %281 = alloca float, align 4
  %282 = alloca %union.libxsmm_bfloat16_f32, align 4
  %283 = alloca ptr, align 8
  %284 = alloca ptr, align 8
  %285 = alloca ptr, align 8
  %286 = alloca i32, align 4
  %287 = alloca float, align 4
  %288 = alloca i16, align 2
  %289 = alloca %union.libxsmm_bfloat16_f32, align 4
  %290 = alloca %union.libxsmm_bfloat8_f16, align 2
  %291 = alloca float, align 4
  %292 = alloca %union.libxsmm_bfloat16_f32, align 4
  %293 = alloca ptr, align 8
  %294 = alloca ptr, align 8
  %295 = alloca ptr, align 8
  %296 = alloca i32, align 4
  %297 = alloca float, align 4
  %298 = alloca i16, align 2
  %299 = alloca %union.libxsmm_bfloat16_f32, align 4
  %300 = alloca %union.libxsmm_bfloat16_f32, align 4
  %301 = alloca %union.libxsmm_bfloat16_f32, align 4
  %302 = alloca ptr, align 8
  %303 = alloca ptr, align 8
  %304 = alloca ptr, align 8
  %305 = alloca i32, align 4
  %306 = alloca %union.libxsmm_bfloat8_f16, align 2
  %307 = alloca %union.libxsmm_bfloat8_f16, align 2
  %308 = alloca float, align 4
  %309 = alloca float, align 4
  %310 = alloca ptr, align 8
  %311 = alloca ptr, align 8
  %312 = alloca ptr, align 8
  %313 = alloca i32, align 4
  %314 = alloca float, align 4
  %315 = alloca float, align 4
  %316 = alloca ptr, align 8
  %317 = alloca ptr, align 8
  %318 = alloca ptr, align 8
  %319 = alloca i32, align 4
  %320 = alloca float, align 4
  %321 = alloca i8, align 1
  %322 = alloca %union.libxsmm_bfloat8_f16, align 2
  %323 = alloca %union.libxsmm_bfloat8_f16, align 2
  %324 = alloca %union.libxsmm_bfloat8_f16, align 2
  %325 = alloca float, align 4
  %326 = alloca float, align 4
  %327 = alloca ptr, align 8
  %328 = alloca ptr, align 8
  %329 = alloca ptr, align 8
  %330 = alloca i32, align 4
  %331 = alloca float, align 4
  %332 = alloca i8, align 1
  %333 = alloca float, align 4
  %334 = alloca float, align 4
  %335 = alloca float, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %336 = load ptr, ptr %5, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %336, i32 0, i32 7
  %338 = load i32, ptr %337, align 4, !tbaa !9
  store i32 %338, ptr %14, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %339, i32 0, i32 8
  %341 = load i32, ptr %340, align 8, !tbaa !16
  store i32 %341, ptr %15, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %342, i32 0, i32 9
  %344 = load i32, ptr %343, align 4, !tbaa !17
  store i32 %344, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %345, i32 0, i32 4
  %347 = load i32, ptr %346, align 8, !tbaa !18
  store i32 %347, ptr %17, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %348, i32 0, i32 5
  %350 = load i32, ptr %349, align 4, !tbaa !19
  store i32 %350, ptr %18, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %351 = load ptr, ptr %5, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %351, i32 0, i32 6
  %353 = load i32, ptr %352, align 8, !tbaa !20
  store i32 %353, ptr %19, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  store i64 0, ptr %20, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  store i64 0, ptr %21, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  store i8 0, ptr %22, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  store i8 0, ptr %23, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  store i8 0, ptr %24, align 1, !tbaa !22
  %354 = load ptr, ptr %5, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %354, i32 0, i32 51
  %356 = load i32, ptr %355, align 4, !tbaa !23
  %357 = icmp ugt i32 %356, 0
  br i1 %357, label %358, label %778

358:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %359 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %359, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %360 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %360, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %361, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  %362 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %362, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  %363 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %363, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %364 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %364, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %365 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %365, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %366 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %366, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %367, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %368 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %368, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %369 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %369, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %370 = load ptr, ptr %5, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %370, i32 0, i32 66
  %372 = load ptr, ptr %371, align 8, !tbaa !24
  store ptr %372, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %373, i32 0, i32 59
  %375 = load ptr, ptr %374, align 8, !tbaa !25
  store ptr %375, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 1, ptr %38, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  store i64 0, ptr %39, align 8, !tbaa !21
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %376, i32 0, i32 0
  %378 = load i32, ptr %377, align 8, !tbaa !26
  %379 = icmp ne i32 %378, 1
  br i1 %379, label %380, label %385

380:                                              ; preds = %358
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %381, i32 0, i32 1
  %383 = load i32, ptr %382, align 4, !tbaa !27
  %384 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %383)
  store i32 %384, ptr %38, align 4, !tbaa !15
  br label %385

385:                                              ; preds = %380, %358
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %386

386:                                              ; preds = %702, %385
  %387 = load i32, ptr %12, align 4, !tbaa !15
  %388 = load i32, ptr %19, align 4, !tbaa !15
  %389 = load i32, ptr %38, align 4, !tbaa !15
  %390 = sdiv i32 %388, %389
  %391 = icmp slt i32 %387, %390
  br i1 %391, label %392, label %705

392:                                              ; preds = %386
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %393

393:                                              ; preds = %698, %392
  %394 = load i32, ptr %11, align 4, !tbaa !15
  %395 = load i32, ptr %17, align 4, !tbaa !15
  %396 = icmp slt i32 %394, %395
  br i1 %396, label %397, label %701

397:                                              ; preds = %393
  %398 = load ptr, ptr %5, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %398, i32 0, i32 13
  %400 = load double, ptr %399, align 8, !tbaa !28
  %401 = fcmp oeq double %400, 0.000000e+00
  br i1 %401, label %402, label %438

402:                                              ; preds = %397
  %403 = load i32, ptr %12, align 4, !tbaa !15
  %404 = icmp eq i32 %403, 0
  br i1 %404, label %405, label %438

405:                                              ; preds = %402
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %406

406:                                              ; preds = %434, %405
  %407 = load i32, ptr %10, align 4, !tbaa !15
  %408 = load i32, ptr %18, align 4, !tbaa !15
  %409 = icmp slt i32 %407, %408
  br i1 %409, label %410, label %437

410:                                              ; preds = %406
  %411 = load ptr, ptr %5, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %411, i32 0, i32 2
  %413 = load i32, ptr %412, align 8, !tbaa !29
  %414 = icmp ne i32 %413, 1
  br i1 %414, label %415, label %424

415:                                              ; preds = %410
  %416 = load ptr, ptr %36, align 8, !tbaa !5
  %417 = load i32, ptr %10, align 4, !tbaa !15
  %418 = load i32, ptr %17, align 4, !tbaa !15
  %419 = mul nsw i32 %417, %418
  %420 = load i32, ptr %11, align 4, !tbaa !15
  %421 = add nsw i32 %419, %420
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds float, ptr %416, i64 %422
  store float 0.000000e+00, ptr %423, align 4, !tbaa !30
  br label %433

424:                                              ; preds = %410
  %425 = load ptr, ptr %27, align 8, !tbaa !5
  %426 = load i32, ptr %10, align 4, !tbaa !15
  %427 = load i32, ptr %16, align 4, !tbaa !15
  %428 = mul nsw i32 %426, %427
  %429 = load i32, ptr %11, align 4, !tbaa !15
  %430 = add nsw i32 %428, %429
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds float, ptr %425, i64 %431
  store float 0.000000e+00, ptr %432, align 4, !tbaa !30
  br label %433

433:                                              ; preds = %424, %415
  br label %434

434:                                              ; preds = %433
  %435 = load i32, ptr %10, align 4, !tbaa !15
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %10, align 4, !tbaa !15
  br label %406, !llvm.loop !31

437:                                              ; preds = %406
  br label %438

438:                                              ; preds = %437, %402, %397
  %439 = load ptr, ptr %5, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %439, i32 0, i32 13
  %441 = load double, ptr %440, align 8, !tbaa !28
  %442 = fcmp ogt double %441, 0.000000e+00
  br i1 %442, label %443, label %509

443:                                              ; preds = %438
  %444 = load i32, ptr %12, align 4, !tbaa !15
  %445 = icmp eq i32 %444, 0
  br i1 %445, label %446, label %509

446:                                              ; preds = %443
  %447 = load ptr, ptr %5, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %447, i32 0, i32 2
  %449 = load i32, ptr %448, align 8, !tbaa !29
  %450 = icmp ne i32 %449, 1
  br i1 %450, label %451, label %509

451:                                              ; preds = %446
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %452

452:                                              ; preds = %505, %451
  %453 = load i32, ptr %10, align 4, !tbaa !15
  %454 = load i32, ptr %18, align 4, !tbaa !15
  %455 = icmp slt i32 %453, %454
  br i1 %455, label %456, label %508

456:                                              ; preds = %452
  %457 = load ptr, ptr %5, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %457, i32 0, i32 2
  %459 = load i32, ptr %458, align 8, !tbaa !29
  %460 = icmp eq i32 %459, 2
  br i1 %460, label %461, label %480

461:                                              ; preds = %456
  %462 = load ptr, ptr %34, align 8, !tbaa !5
  %463 = load i32, ptr %10, align 4, !tbaa !15
  %464 = load i32, ptr %16, align 4, !tbaa !15
  %465 = mul nsw i32 %463, %464
  %466 = load i32, ptr %11, align 4, !tbaa !15
  %467 = add nsw i32 %465, %466
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i16, ptr %462, i64 %468
  %470 = load i16, ptr %469, align 2, !tbaa !33
  %471 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %470)
  %472 = load ptr, ptr %36, align 8, !tbaa !5
  %473 = load i32, ptr %10, align 4, !tbaa !15
  %474 = load i32, ptr %17, align 4, !tbaa !15
  %475 = mul nsw i32 %473, %474
  %476 = load i32, ptr %11, align 4, !tbaa !15
  %477 = add nsw i32 %475, %476
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds float, ptr %472, i64 %478
  store float %471, ptr %479, align 4, !tbaa !30
  br label %480

480:                                              ; preds = %461, %456
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %481, i32 0, i32 2
  %483 = load i32, ptr %482, align 8, !tbaa !29
  %484 = icmp eq i32 %483, 3
  br i1 %484, label %485, label %504

485:                                              ; preds = %480
  %486 = load ptr, ptr %35, align 8, !tbaa !5
  %487 = load i32, ptr %10, align 4, !tbaa !15
  %488 = load i32, ptr %16, align 4, !tbaa !15
  %489 = mul nsw i32 %487, %488
  %490 = load i32, ptr %11, align 4, !tbaa !15
  %491 = add nsw i32 %489, %490
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds i16, ptr %486, i64 %492
  %494 = load i16, ptr %493, align 2, !tbaa !33
  %495 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %494)
  %496 = load ptr, ptr %36, align 8, !tbaa !5
  %497 = load i32, ptr %10, align 4, !tbaa !15
  %498 = load i32, ptr %17, align 4, !tbaa !15
  %499 = mul nsw i32 %497, %498
  %500 = load i32, ptr %11, align 4, !tbaa !15
  %501 = add nsw i32 %499, %500
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds float, ptr %496, i64 %502
  store float %495, ptr %503, align 4, !tbaa !30
  br label %504

504:                                              ; preds = %485, %480
  br label %505

505:                                              ; preds = %504
  %506 = load i32, ptr %10, align 4, !tbaa !15
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr %10, align 4, !tbaa !15
  br label %452, !llvm.loop !35

508:                                              ; preds = %452
  br label %509

509:                                              ; preds = %508, %446, %443, %438
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %510

510:                                              ; preds = %694, %509
  %511 = load i32, ptr %13, align 4, !tbaa !15
  %512 = load i32, ptr %38, align 4, !tbaa !15
  %513 = icmp slt i32 %511, %512
  br i1 %513, label %514, label %697

514:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #6
  %515 = load ptr, ptr %37, align 8, !tbaa !5
  %516 = load i32, ptr %11, align 4, !tbaa !15
  %517 = load i32, ptr %38, align 4, !tbaa !15
  %518 = mul nsw i32 %516, %517
  %519 = load i32, ptr %13, align 4, !tbaa !15
  %520 = add nsw i32 %518, %519
  %521 = load i32, ptr %12, align 4, !tbaa !15
  %522 = load i32, ptr %17, align 4, !tbaa !15
  %523 = load i32, ptr %38, align 4, !tbaa !15
  %524 = mul nsw i32 %522, %523
  %525 = call zeroext i8 @libxsmm_extract_bit(ptr noundef %515, i32 noundef %520, i32 noundef %521, i32 noundef %524)
  store i8 %525, ptr %40, align 1, !tbaa !22
  %526 = load i8, ptr %40, align 1, !tbaa !22
  %527 = zext i8 %526 to i32
  %528 = icmp sgt i32 %527, 0
  br i1 %528, label %529, label %693

529:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  store float 0.000000e+00, ptr %41, align 4, !tbaa !30
  %530 = load ptr, ptr %5, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %530, i32 0, i32 0
  %532 = load i32, ptr %531, align 8, !tbaa !26
  %533 = icmp eq i32 %532, 1
  br i1 %533, label %534, label %539

534:                                              ; preds = %529
  %535 = load ptr, ptr %25, align 8, !tbaa !5
  %536 = load i64, ptr %39, align 8, !tbaa !21
  %537 = getelementptr inbounds float, ptr %535, i64 %536
  %538 = load float, ptr %537, align 4, !tbaa !30
  store float %538, ptr %41, align 4, !tbaa !30
  br label %588

539:                                              ; preds = %529
  %540 = load ptr, ptr %5, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %540, i32 0, i32 0
  %542 = load i32, ptr %541, align 8, !tbaa !26
  %543 = icmp eq i32 %542, 2
  br i1 %543, label %544, label %550

544:                                              ; preds = %539
  %545 = load ptr, ptr %28, align 8, !tbaa !5
  %546 = load i64, ptr %39, align 8, !tbaa !21
  %547 = getelementptr inbounds i16, ptr %545, i64 %546
  %548 = load i16, ptr %547, align 2, !tbaa !33
  %549 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %548)
  store float %549, ptr %41, align 4, !tbaa !30
  br label %587

550:                                              ; preds = %539
  %551 = load ptr, ptr %5, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %551, i32 0, i32 0
  %553 = load i32, ptr %552, align 8, !tbaa !26
  %554 = icmp eq i32 %553, 3
  br i1 %554, label %555, label %561

555:                                              ; preds = %550
  %556 = load ptr, ptr %29, align 8, !tbaa !5
  %557 = load i64, ptr %39, align 8, !tbaa !21
  %558 = getelementptr inbounds i16, ptr %556, i64 %557
  %559 = load i16, ptr %558, align 2, !tbaa !33
  %560 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %559)
  store float %560, ptr %41, align 4, !tbaa !30
  br label %586

561:                                              ; preds = %550
  %562 = load ptr, ptr %5, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %562, i32 0, i32 0
  %564 = load i32, ptr %563, align 8, !tbaa !26
  %565 = icmp eq i32 %564, 4
  br i1 %565, label %566, label %572

566:                                              ; preds = %561
  %567 = load ptr, ptr %30, align 8, !tbaa !5
  %568 = load i64, ptr %39, align 8, !tbaa !21
  %569 = getelementptr inbounds i8, ptr %567, i64 %568
  %570 = load i8, ptr %569, align 1, !tbaa !22
  %571 = call float @libxsmm_convert_bf8_to_f32(i8 noundef zeroext %570)
  store float %571, ptr %41, align 4, !tbaa !30
  br label %585

572:                                              ; preds = %561
  %573 = load ptr, ptr %5, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %573, i32 0, i32 0
  %575 = load i32, ptr %574, align 8, !tbaa !26
  %576 = icmp eq i32 %575, 5
  br i1 %576, label %577, label %583

577:                                              ; preds = %572
  %578 = load ptr, ptr %31, align 8, !tbaa !5
  %579 = load i64, ptr %39, align 8, !tbaa !21
  %580 = getelementptr inbounds i8, ptr %578, i64 %579
  %581 = load i8, ptr %580, align 1, !tbaa !22
  %582 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %581)
  store float %582, ptr %41, align 4, !tbaa !30
  br label %584

583:                                              ; preds = %572
  br label %584

584:                                              ; preds = %583, %577
  br label %585

585:                                              ; preds = %584, %566
  br label %586

586:                                              ; preds = %585, %555
  br label %587

587:                                              ; preds = %586, %544
  br label %588

588:                                              ; preds = %587, %534
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %589

589:                                              ; preds = %687, %588
  %590 = load i32, ptr %10, align 4, !tbaa !15
  %591 = load i32, ptr %18, align 4, !tbaa !15
  %592 = icmp slt i32 %590, %591
  br i1 %592, label %593, label %690

593:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store float 0.000000e+00, ptr %42, align 4, !tbaa !30
  %594 = load ptr, ptr %5, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %594, i32 0, i32 1
  %596 = load i32, ptr %595, align 4, !tbaa !27
  %597 = icmp eq i32 %596, 1
  br i1 %597, label %598, label %612

598:                                              ; preds = %593
  %599 = load ptr, ptr %26, align 8, !tbaa !5
  %600 = load i32, ptr %10, align 4, !tbaa !15
  %601 = load i32, ptr %15, align 4, !tbaa !15
  %602 = mul nsw i32 %600, %601
  %603 = load i32, ptr %12, align 4, !tbaa !15
  %604 = load i32, ptr %38, align 4, !tbaa !15
  %605 = mul nsw i32 %603, %604
  %606 = add nsw i32 %602, %605
  %607 = load i32, ptr %13, align 4, !tbaa !15
  %608 = add nsw i32 %606, %607
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds float, ptr %599, i64 %609
  %611 = load float, ptr %610, align 4, !tbaa !30
  store float %611, ptr %42, align 4, !tbaa !30
  br label %655

612:                                              ; preds = %593
  %613 = load ptr, ptr %5, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %613, i32 0, i32 1
  %615 = load i32, ptr %614, align 4, !tbaa !27
  %616 = icmp eq i32 %615, 2
  br i1 %616, label %617, label %632

617:                                              ; preds = %612
  %618 = load ptr, ptr %32, align 8, !tbaa !5
  %619 = load i32, ptr %10, align 4, !tbaa !15
  %620 = load i32, ptr %15, align 4, !tbaa !15
  %621 = mul nsw i32 %619, %620
  %622 = load i32, ptr %12, align 4, !tbaa !15
  %623 = load i32, ptr %38, align 4, !tbaa !15
  %624 = mul nsw i32 %622, %623
  %625 = add nsw i32 %621, %624
  %626 = load i32, ptr %13, align 4, !tbaa !15
  %627 = add nsw i32 %625, %626
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds i16, ptr %618, i64 %628
  %630 = load i16, ptr %629, align 2, !tbaa !33
  %631 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %630)
  store float %631, ptr %42, align 4, !tbaa !30
  br label %654

632:                                              ; preds = %612
  %633 = load ptr, ptr %5, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %633, i32 0, i32 1
  %635 = load i32, ptr %634, align 4, !tbaa !27
  %636 = icmp eq i32 %635, 3
  br i1 %636, label %637, label %652

637:                                              ; preds = %632
  %638 = load ptr, ptr %33, align 8, !tbaa !5
  %639 = load i32, ptr %10, align 4, !tbaa !15
  %640 = load i32, ptr %15, align 4, !tbaa !15
  %641 = mul nsw i32 %639, %640
  %642 = load i32, ptr %12, align 4, !tbaa !15
  %643 = load i32, ptr %38, align 4, !tbaa !15
  %644 = mul nsw i32 %642, %643
  %645 = add nsw i32 %641, %644
  %646 = load i32, ptr %13, align 4, !tbaa !15
  %647 = add nsw i32 %645, %646
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds i16, ptr %638, i64 %648
  %650 = load i16, ptr %649, align 2, !tbaa !33
  %651 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %650)
  store float %651, ptr %42, align 4, !tbaa !30
  br label %653

652:                                              ; preds = %632
  br label %653

653:                                              ; preds = %652, %637
  br label %654

654:                                              ; preds = %653, %617
  br label %655

655:                                              ; preds = %654, %598
  %656 = load ptr, ptr %5, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %656, i32 0, i32 2
  %658 = load i32, ptr %657, align 8, !tbaa !29
  %659 = icmp eq i32 %658, 1
  br i1 %659, label %660, label %673

660:                                              ; preds = %655
  %661 = load float, ptr %41, align 4, !tbaa !30
  %662 = load float, ptr %42, align 4, !tbaa !30
  %663 = load ptr, ptr %27, align 8, !tbaa !5
  %664 = load i32, ptr %10, align 4, !tbaa !15
  %665 = load i32, ptr %16, align 4, !tbaa !15
  %666 = mul nsw i32 %664, %665
  %667 = load i32, ptr %11, align 4, !tbaa !15
  %668 = add nsw i32 %666, %667
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds float, ptr %663, i64 %669
  %671 = load float, ptr %670, align 4, !tbaa !30
  %672 = call float @llvm.fmuladd.f32(float %661, float %662, float %671)
  store float %672, ptr %670, align 4, !tbaa !30
  br label %686

673:                                              ; preds = %655
  %674 = load float, ptr %41, align 4, !tbaa !30
  %675 = load float, ptr %42, align 4, !tbaa !30
  %676 = load ptr, ptr %36, align 8, !tbaa !5
  %677 = load i32, ptr %10, align 4, !tbaa !15
  %678 = load i32, ptr %17, align 4, !tbaa !15
  %679 = mul nsw i32 %677, %678
  %680 = load i32, ptr %11, align 4, !tbaa !15
  %681 = add nsw i32 %679, %680
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds float, ptr %676, i64 %682
  %684 = load float, ptr %683, align 4, !tbaa !30
  %685 = call float @llvm.fmuladd.f32(float %674, float %675, float %684)
  store float %685, ptr %683, align 4, !tbaa !30
  br label %686

686:                                              ; preds = %673, %660
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %687

687:                                              ; preds = %686
  %688 = load i32, ptr %10, align 4, !tbaa !15
  %689 = add nsw i32 %688, 1
  store i32 %689, ptr %10, align 4, !tbaa !15
  br label %589, !llvm.loop !36

690:                                              ; preds = %589
  %691 = load i64, ptr %39, align 8, !tbaa !21
  %692 = add i64 %691, 1
  store i64 %692, ptr %39, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %693

693:                                              ; preds = %690, %514
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  br label %694

694:                                              ; preds = %693
  %695 = load i32, ptr %13, align 4, !tbaa !15
  %696 = add nsw i32 %695, 1
  store i32 %696, ptr %13, align 4, !tbaa !15
  br label %510, !llvm.loop !37

697:                                              ; preds = %510
  br label %698

698:                                              ; preds = %697
  %699 = load i32, ptr %11, align 4, !tbaa !15
  %700 = add nsw i32 %699, 1
  store i32 %700, ptr %11, align 4, !tbaa !15
  br label %393, !llvm.loop !38

701:                                              ; preds = %393
  br label %702

702:                                              ; preds = %701
  %703 = load i32, ptr %12, align 4, !tbaa !15
  %704 = add nsw i32 %703, 1
  store i32 %704, ptr %12, align 4, !tbaa !15
  br label %386, !llvm.loop !39

705:                                              ; preds = %386
  %706 = load ptr, ptr %5, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %706, i32 0, i32 2
  %708 = load i32, ptr %707, align 8, !tbaa !29
  %709 = icmp ne i32 %708, 1
  br i1 %709, label %710, label %777

710:                                              ; preds = %705
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %711

711:                                              ; preds = %773, %710
  %712 = load i32, ptr %11, align 4, !tbaa !15
  %713 = load i32, ptr %17, align 4, !tbaa !15
  %714 = icmp slt i32 %712, %713
  br i1 %714, label %715, label %776

715:                                              ; preds = %711
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %716

716:                                              ; preds = %769, %715
  %717 = load i32, ptr %10, align 4, !tbaa !15
  %718 = load i32, ptr %18, align 4, !tbaa !15
  %719 = icmp slt i32 %717, %718
  br i1 %719, label %720, label %772

720:                                              ; preds = %716
  %721 = load ptr, ptr %5, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %721, i32 0, i32 2
  %723 = load i32, ptr %722, align 8, !tbaa !29
  %724 = icmp eq i32 %723, 2
  br i1 %724, label %725, label %744

725:                                              ; preds = %720
  %726 = load ptr, ptr %36, align 8, !tbaa !5
  %727 = load i32, ptr %10, align 4, !tbaa !15
  %728 = load i32, ptr %17, align 4, !tbaa !15
  %729 = mul nsw i32 %727, %728
  %730 = load i32, ptr %11, align 4, !tbaa !15
  %731 = add nsw i32 %729, %730
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds float, ptr %726, i64 %732
  %734 = load float, ptr %733, align 4, !tbaa !30
  %735 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %734)
  %736 = load ptr, ptr %34, align 8, !tbaa !5
  %737 = load i32, ptr %10, align 4, !tbaa !15
  %738 = load i32, ptr %16, align 4, !tbaa !15
  %739 = mul nsw i32 %737, %738
  %740 = load i32, ptr %11, align 4, !tbaa !15
  %741 = add nsw i32 %739, %740
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds i16, ptr %736, i64 %742
  store i16 %735, ptr %743, align 2, !tbaa !33
  br label %744

744:                                              ; preds = %725, %720
  %745 = load ptr, ptr %5, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %745, i32 0, i32 2
  %747 = load i32, ptr %746, align 8, !tbaa !29
  %748 = icmp eq i32 %747, 3
  br i1 %748, label %749, label %768

749:                                              ; preds = %744
  %750 = load ptr, ptr %36, align 8, !tbaa !5
  %751 = load i32, ptr %10, align 4, !tbaa !15
  %752 = load i32, ptr %17, align 4, !tbaa !15
  %753 = mul nsw i32 %751, %752
  %754 = load i32, ptr %11, align 4, !tbaa !15
  %755 = add nsw i32 %753, %754
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds float, ptr %750, i64 %756
  %758 = load float, ptr %757, align 4, !tbaa !30
  %759 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %758)
  %760 = load ptr, ptr %35, align 8, !tbaa !5
  %761 = load i32, ptr %10, align 4, !tbaa !15
  %762 = load i32, ptr %16, align 4, !tbaa !15
  %763 = mul nsw i32 %761, %762
  %764 = load i32, ptr %11, align 4, !tbaa !15
  %765 = add nsw i32 %763, %764
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds i16, ptr %760, i64 %766
  store i16 %759, ptr %767, align 2, !tbaa !33
  br label %768

768:                                              ; preds = %749, %744
  br label %769

769:                                              ; preds = %768
  %770 = load i32, ptr %10, align 4, !tbaa !15
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %10, align 4, !tbaa !15
  br label %716, !llvm.loop !40

772:                                              ; preds = %716
  br label %773

773:                                              ; preds = %772
  %774 = load i32, ptr %11, align 4, !tbaa !15
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %11, align 4, !tbaa !15
  br label %711, !llvm.loop !41

776:                                              ; preds = %711
  br label %777

777:                                              ; preds = %776, %705
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %8159

778:                                              ; preds = %4
  %779 = load ptr, ptr %5, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %779, i32 0, i32 44
  %781 = load i32, ptr %780, align 8, !tbaa !42
  %782 = icmp ugt i32 %781, 0
  br i1 %782, label %788, label %783

783:                                              ; preds = %778
  %784 = load ptr, ptr %5, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %784, i32 0, i32 45
  %786 = load i32, ptr %785, align 4, !tbaa !43
  %787 = icmp ugt i32 %786, 0
  br i1 %787, label %788, label %1077

788:                                              ; preds = %783, %778
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %789 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %789, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %790 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %790, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  %791 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %791, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  %792 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %792, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  %793 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %793, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %794 = load ptr, ptr %5, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %794, i32 0, i32 42
  %796 = load i32, ptr %795, align 8, !tbaa !44
  store i32 %796, ptr %48, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %797

797:                                              ; preds = %1073, %788
  %798 = load i32, ptr %10, align 4, !tbaa !15
  %799 = load i32, ptr %18, align 4, !tbaa !15
  %800 = icmp slt i32 %798, %799
  br i1 %800, label %801, label %1076

801:                                              ; preds = %797
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %802

802:                                              ; preds = %1069, %801
  %803 = load i32, ptr %11, align 4, !tbaa !15
  %804 = load i32, ptr %17, align 4, !tbaa !15
  %805 = icmp slt i32 %803, %804
  br i1 %805, label %806, label %1072

806:                                              ; preds = %802
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  store float 0.000000e+00, ptr %49, align 4, !tbaa !30
  %807 = load ptr, ptr %5, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %807, i32 0, i32 13
  %809 = load double, ptr %808, align 8, !tbaa !28
  %810 = fcmp oeq double %809, 0.000000e+00
  br i1 %810, label %811, label %840

811:                                              ; preds = %806
  %812 = load ptr, ptr %5, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %812, i32 0, i32 2
  %814 = load i32, ptr %813, align 8, !tbaa !29
  %815 = icmp eq i32 %814, 1
  br i1 %815, label %816, label %825

816:                                              ; preds = %811
  %817 = load ptr, ptr %46, align 8, !tbaa !5
  %818 = load i32, ptr %10, align 4, !tbaa !15
  %819 = load i32, ptr %16, align 4, !tbaa !15
  %820 = mul nsw i32 %818, %819
  %821 = load i32, ptr %11, align 4, !tbaa !15
  %822 = add nsw i32 %820, %821
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds float, ptr %817, i64 %823
  store float 0.000000e+00, ptr %824, align 4, !tbaa !30
  br label %825

825:                                              ; preds = %816, %811
  %826 = load ptr, ptr %5, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %826, i32 0, i32 2
  %828 = load i32, ptr %827, align 8, !tbaa !29
  %829 = icmp eq i32 %828, 2
  br i1 %829, label %830, label %839

830:                                              ; preds = %825
  %831 = load ptr, ptr %47, align 8, !tbaa !5
  %832 = load i32, ptr %10, align 4, !tbaa !15
  %833 = load i32, ptr %16, align 4, !tbaa !15
  %834 = mul nsw i32 %832, %833
  %835 = load i32, ptr %11, align 4, !tbaa !15
  %836 = add nsw i32 %834, %835
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds i16, ptr %831, i64 %837
  store i16 0, ptr %838, align 2, !tbaa !33
  br label %839

839:                                              ; preds = %830, %825
  br label %840

840:                                              ; preds = %839, %806
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %841

841:                                              ; preds = %1019, %840
  %842 = load i32, ptr %9, align 4, !tbaa !15
  %843 = load ptr, ptr %5, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %843, i32 0, i32 26
  %845 = load i32, ptr %844, align 8, !tbaa !45
  %846 = icmp slt i32 %842, %845
  br i1 %846, label %847, label %1022

847:                                              ; preds = %841
  %848 = load ptr, ptr %5, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %848, i32 0, i32 1
  %850 = load i32, ptr %849, align 4, !tbaa !27
  %851 = icmp eq i32 %850, 2
  br i1 %851, label %852, label %856

852:                                              ; preds = %847
  %853 = load i32, ptr %9, align 4, !tbaa !15
  %854 = sext i32 %853 to i64
  %855 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %43, ptr noundef %45, ptr noundef %20, ptr noundef %21, i64 noundef %854, ptr noundef %855)
  br label %856

856:                                              ; preds = %852, %847
  %857 = load ptr, ptr %5, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %857, i32 0, i32 1
  %859 = load i32, ptr %858, align 4, !tbaa !27
  %860 = icmp eq i32 %859, 1
  br i1 %860, label %861, label %865

861:                                              ; preds = %856
  %862 = load i32, ptr %9, align 4, !tbaa !15
  %863 = sext i32 %862 to i64
  %864 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %43, ptr noundef %44, ptr noundef %20, ptr noundef %21, i64 noundef %863, ptr noundef %864)
  br label %865

865:                                              ; preds = %861, %856
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %866

866:                                              ; preds = %1015, %865
  %867 = load i32, ptr %12, align 4, !tbaa !15
  %868 = load i32, ptr %19, align 4, !tbaa !15
  %869 = load i32, ptr %48, align 4, !tbaa !15
  %870 = sdiv i32 %868, %869
  %871 = icmp slt i32 %867, %870
  br i1 %871, label %872, label %1018

872:                                              ; preds = %866
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  %873 = load i32, ptr %9, align 4, !tbaa !15
  %874 = load i32, ptr %12, align 4, !tbaa !15
  %875 = load i32, ptr %11, align 4, !tbaa !15
  %876 = load ptr, ptr %5, align 8, !tbaa !5
  %877 = call float @libxsmm_calculate_mxfp4_scf(i32 noundef %873, i32 noundef %874, i32 noundef %875, ptr noundef %876)
  store float %877, ptr %50, align 4, !tbaa !30
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %878

878:                                              ; preds = %1011, %872
  %879 = load i32, ptr %13, align 4, !tbaa !15
  %880 = load i32, ptr %48, align 4, !tbaa !15
  %881 = icmp slt i32 %879, %880
  br i1 %881, label %882, label %1014

882:                                              ; preds = %878
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  store i8 0, ptr %51, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  store i8 0, ptr %52, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  store float 0.000000e+00, ptr %53, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  store float 0.000000e+00, ptr %54, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  store float 0.000000e+00, ptr %55, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  store float 0.000000e+00, ptr %56, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #6
  %883 = load ptr, ptr %43, align 8, !tbaa !5
  %884 = load i64, ptr %20, align 8, !tbaa !21
  %885 = load i32, ptr %12, align 4, !tbaa !15
  %886 = load i32, ptr %48, align 4, !tbaa !15
  %887 = mul nsw i32 %885, %886
  %888 = load i32, ptr %13, align 4, !tbaa !15
  %889 = add nsw i32 %887, %888
  %890 = load i32, ptr %14, align 4, !tbaa !15
  %891 = mul nsw i32 %889, %890
  %892 = sdiv i32 %891, 2
  %893 = sext i32 %892 to i64
  %894 = add nsw i64 %884, %893
  %895 = load i32, ptr %11, align 4, !tbaa !15
  %896 = sext i32 %895 to i64
  %897 = add nsw i64 %894, %896
  %898 = getelementptr inbounds i8, ptr %883, i64 %897
  %899 = load i8, ptr %898, align 1, !tbaa !22
  store i8 %899, ptr %57, align 1, !tbaa !22
  %900 = load i8, ptr %57, align 1, !tbaa !22
  %901 = zext i8 %900 to i32
  %902 = and i32 %901, 15
  %903 = trunc i32 %902 to i8
  store i8 %903, ptr %51, align 1, !tbaa !22
  %904 = load i8, ptr %51, align 1, !tbaa !22
  %905 = call float @libxsmm_convert_mxfp4_to_float(i8 noundef zeroext %904)
  %906 = load float, ptr %50, align 4, !tbaa !30
  %907 = fmul float %905, %906
  store float %907, ptr %53, align 4, !tbaa !30
  %908 = load i8, ptr %57, align 1, !tbaa !22
  %909 = zext i8 %908 to i32
  %910 = ashr i32 %909, 4
  %911 = and i32 %910, 15
  %912 = trunc i32 %911 to i8
  store i8 %912, ptr %52, align 1, !tbaa !22
  %913 = load i8, ptr %52, align 1, !tbaa !22
  %914 = call float @libxsmm_convert_mxfp4_to_float(i8 noundef zeroext %913)
  %915 = load float, ptr %50, align 4, !tbaa !30
  %916 = fmul float %914, %915
  store float %916, ptr %54, align 4, !tbaa !30
  %917 = load ptr, ptr %5, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %917, i32 0, i32 1
  %919 = load i32, ptr %918, align 4, !tbaa !27
  %920 = icmp eq i32 %919, 2
  br i1 %920, label %921, label %960

921:                                              ; preds = %882
  %922 = load ptr, ptr %45, align 8, !tbaa !5
  %923 = load i64, ptr %21, align 8, !tbaa !21
  %924 = load i32, ptr %10, align 4, !tbaa !15
  %925 = load i32, ptr %15, align 4, !tbaa !15
  %926 = mul nsw i32 %924, %925
  %927 = sext i32 %926 to i64
  %928 = add nsw i64 %923, %927
  %929 = load i32, ptr %12, align 4, !tbaa !15
  %930 = load i32, ptr %48, align 4, !tbaa !15
  %931 = mul nsw i32 %929, %930
  %932 = sext i32 %931 to i64
  %933 = add nsw i64 %928, %932
  %934 = load i32, ptr %13, align 4, !tbaa !15
  %935 = sext i32 %934 to i64
  %936 = add nsw i64 %933, %935
  %937 = add nsw i64 %936, 0
  %938 = getelementptr inbounds i16, ptr %922, i64 %937
  %939 = load i16, ptr %938, align 2, !tbaa !33
  %940 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %939)
  store float %940, ptr %55, align 4, !tbaa !30
  %941 = load ptr, ptr %45, align 8, !tbaa !5
  %942 = load i64, ptr %21, align 8, !tbaa !21
  %943 = load i32, ptr %10, align 4, !tbaa !15
  %944 = load i32, ptr %15, align 4, !tbaa !15
  %945 = mul nsw i32 %943, %944
  %946 = sext i32 %945 to i64
  %947 = add nsw i64 %942, %946
  %948 = load i32, ptr %12, align 4, !tbaa !15
  %949 = load i32, ptr %48, align 4, !tbaa !15
  %950 = mul nsw i32 %948, %949
  %951 = sext i32 %950 to i64
  %952 = add nsw i64 %947, %951
  %953 = load i32, ptr %13, align 4, !tbaa !15
  %954 = sext i32 %953 to i64
  %955 = add nsw i64 %952, %954
  %956 = add nsw i64 %955, 1
  %957 = getelementptr inbounds i16, ptr %941, i64 %956
  %958 = load i16, ptr %957, align 2, !tbaa !33
  %959 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %958)
  store float %959, ptr %56, align 4, !tbaa !30
  br label %960

960:                                              ; preds = %921, %882
  %961 = load ptr, ptr %5, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %961, i32 0, i32 1
  %963 = load i32, ptr %962, align 4, !tbaa !27
  %964 = icmp eq i32 %963, 1
  br i1 %964, label %965, label %1002

965:                                              ; preds = %960
  %966 = load ptr, ptr %44, align 8, !tbaa !5
  %967 = load i64, ptr %21, align 8, !tbaa !21
  %968 = load i32, ptr %10, align 4, !tbaa !15
  %969 = load i32, ptr %15, align 4, !tbaa !15
  %970 = mul nsw i32 %968, %969
  %971 = sext i32 %970 to i64
  %972 = add nsw i64 %967, %971
  %973 = load i32, ptr %12, align 4, !tbaa !15
  %974 = load i32, ptr %48, align 4, !tbaa !15
  %975 = mul nsw i32 %973, %974
  %976 = sext i32 %975 to i64
  %977 = add nsw i64 %972, %976
  %978 = load i32, ptr %13, align 4, !tbaa !15
  %979 = sext i32 %978 to i64
  %980 = add nsw i64 %977, %979
  %981 = add nsw i64 %980, 0
  %982 = getelementptr inbounds float, ptr %966, i64 %981
  %983 = load float, ptr %982, align 4, !tbaa !30
  store float %983, ptr %55, align 4, !tbaa !30
  %984 = load ptr, ptr %44, align 8, !tbaa !5
  %985 = load i64, ptr %21, align 8, !tbaa !21
  %986 = load i32, ptr %10, align 4, !tbaa !15
  %987 = load i32, ptr %15, align 4, !tbaa !15
  %988 = mul nsw i32 %986, %987
  %989 = sext i32 %988 to i64
  %990 = add nsw i64 %985, %989
  %991 = load i32, ptr %12, align 4, !tbaa !15
  %992 = load i32, ptr %48, align 4, !tbaa !15
  %993 = mul nsw i32 %991, %992
  %994 = sext i32 %993 to i64
  %995 = add nsw i64 %990, %994
  %996 = load i32, ptr %13, align 4, !tbaa !15
  %997 = sext i32 %996 to i64
  %998 = add nsw i64 %995, %997
  %999 = add nsw i64 %998, 1
  %1000 = getelementptr inbounds float, ptr %984, i64 %999
  %1001 = load float, ptr %1000, align 4, !tbaa !30
  store float %1001, ptr %56, align 4, !tbaa !30
  br label %1002

1002:                                             ; preds = %965, %960
  %1003 = load float, ptr %53, align 4, !tbaa !30
  %1004 = load float, ptr %55, align 4, !tbaa !30
  %1005 = load float, ptr %49, align 4, !tbaa !30
  %1006 = call float @llvm.fmuladd.f32(float %1003, float %1004, float %1005)
  store float %1006, ptr %49, align 4, !tbaa !30
  %1007 = load float, ptr %54, align 4, !tbaa !30
  %1008 = load float, ptr %56, align 4, !tbaa !30
  %1009 = load float, ptr %49, align 4, !tbaa !30
  %1010 = call float @llvm.fmuladd.f32(float %1007, float %1008, float %1009)
  store float %1010, ptr %49, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  br label %1011

1011:                                             ; preds = %1002
  %1012 = load i32, ptr %13, align 4, !tbaa !15
  %1013 = add nsw i32 %1012, 2
  store i32 %1013, ptr %13, align 4, !tbaa !15
  br label %878, !llvm.loop !46

1014:                                             ; preds = %878
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %1015

1015:                                             ; preds = %1014
  %1016 = load i32, ptr %12, align 4, !tbaa !15
  %1017 = add nsw i32 %1016, 1
  store i32 %1017, ptr %12, align 4, !tbaa !15
  br label %866, !llvm.loop !47

1018:                                             ; preds = %866
  br label %1019

1019:                                             ; preds = %1018
  %1020 = load i32, ptr %9, align 4, !tbaa !15
  %1021 = add nsw i32 %1020, 1
  store i32 %1021, ptr %9, align 4, !tbaa !15
  br label %841, !llvm.loop !48

1022:                                             ; preds = %841
  %1023 = load ptr, ptr %5, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1023, i32 0, i32 2
  %1025 = load i32, ptr %1024, align 8, !tbaa !29
  %1026 = icmp eq i32 %1025, 1
  br i1 %1026, label %1027, label %1039

1027:                                             ; preds = %1022
  %1028 = load float, ptr %49, align 4, !tbaa !30
  %1029 = load ptr, ptr %46, align 8, !tbaa !5
  %1030 = load i32, ptr %10, align 4, !tbaa !15
  %1031 = load i32, ptr %16, align 4, !tbaa !15
  %1032 = mul nsw i32 %1030, %1031
  %1033 = load i32, ptr %11, align 4, !tbaa !15
  %1034 = add nsw i32 %1032, %1033
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds float, ptr %1029, i64 %1035
  %1037 = load float, ptr %1036, align 4, !tbaa !30
  %1038 = fadd float %1037, %1028
  store float %1038, ptr %1036, align 4, !tbaa !30
  br label %1039

1039:                                             ; preds = %1027, %1022
  %1040 = load ptr, ptr %5, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1040, i32 0, i32 2
  %1042 = load i32, ptr %1041, align 8, !tbaa !29
  %1043 = icmp eq i32 %1042, 2
  br i1 %1043, label %1044, label %1068

1044:                                             ; preds = %1039
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  %1045 = load ptr, ptr %47, align 8, !tbaa !5
  %1046 = load i32, ptr %10, align 4, !tbaa !15
  %1047 = load i32, ptr %16, align 4, !tbaa !15
  %1048 = mul nsw i32 %1046, %1047
  %1049 = load i32, ptr %11, align 4, !tbaa !15
  %1050 = add nsw i32 %1048, %1049
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds i16, ptr %1045, i64 %1051
  %1053 = load i16, ptr %1052, align 2, !tbaa !33
  %1054 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %1053)
  store float %1054, ptr %58, align 4, !tbaa !30
  %1055 = load float, ptr %49, align 4, !tbaa !30
  %1056 = load float, ptr %58, align 4, !tbaa !30
  %1057 = fadd float %1056, %1055
  store float %1057, ptr %58, align 4, !tbaa !30
  %1058 = load float, ptr %58, align 4, !tbaa !30
  %1059 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %1058)
  %1060 = load ptr, ptr %47, align 8, !tbaa !5
  %1061 = load i32, ptr %10, align 4, !tbaa !15
  %1062 = load i32, ptr %16, align 4, !tbaa !15
  %1063 = mul nsw i32 %1061, %1062
  %1064 = load i32, ptr %11, align 4, !tbaa !15
  %1065 = add nsw i32 %1063, %1064
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds i16, ptr %1060, i64 %1066
  store i16 %1059, ptr %1067, align 2, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  br label %1068

1068:                                             ; preds = %1044, %1039
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load i32, ptr %11, align 4, !tbaa !15
  %1071 = add nsw i32 %1070, 1
  store i32 %1071, ptr %11, align 4, !tbaa !15
  br label %802, !llvm.loop !49

1072:                                             ; preds = %802
  br label %1073

1073:                                             ; preds = %1072
  %1074 = load i32, ptr %10, align 4, !tbaa !15
  %1075 = add nsw i32 %1074, 1
  store i32 %1075, ptr %10, align 4, !tbaa !15
  br label %797, !llvm.loop !50

1076:                                             ; preds = %797
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  br label %8158

1077:                                             ; preds = %783
  %1078 = load ptr, ptr %5, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1078, i32 0, i32 46
  %1080 = load i32, ptr %1079, align 8, !tbaa !51
  %1081 = icmp ugt i32 %1080, 0
  br i1 %1081, label %1082, label %1579

1082:                                             ; preds = %1077
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  %1083 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1083, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %1084 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1084, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  %1085 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1085, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #6
  %1086 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1086, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  %1087 = load ptr, ptr %5, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1087, i32 0, i32 42
  %1089 = load i32, ptr %1088, align 8, !tbaa !44
  store i32 %1089, ptr %63, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %1090

1090:                                             ; preds = %1575, %1082
  %1091 = load i32, ptr %10, align 4, !tbaa !15
  %1092 = load i32, ptr %18, align 4, !tbaa !15
  %1093 = icmp slt i32 %1091, %1092
  br i1 %1093, label %1094, label %1578

1094:                                             ; preds = %1090
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %1095

1095:                                             ; preds = %1571, %1094
  %1096 = load i32, ptr %11, align 4, !tbaa !15
  %1097 = load i32, ptr %17, align 4, !tbaa !15
  %1098 = icmp slt i32 %1096, %1097
  br i1 %1098, label %1099, label %1574

1099:                                             ; preds = %1095
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  store float 0.000000e+00, ptr %64, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  store i32 0, ptr %65, align 4, !tbaa !15
  %1100 = load ptr, ptr %5, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1100, i32 0, i32 13
  %1102 = load double, ptr %1101, align 8, !tbaa !28
  %1103 = fcmp oeq double %1102, 0.000000e+00
  br i1 %1103, label %1104, label %1133

1104:                                             ; preds = %1099
  %1105 = load ptr, ptr %5, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1105, i32 0, i32 2
  %1107 = load i32, ptr %1106, align 8, !tbaa !29
  %1108 = icmp eq i32 %1107, 1
  br i1 %1108, label %1109, label %1118

1109:                                             ; preds = %1104
  %1110 = load ptr, ptr %61, align 8, !tbaa !5
  %1111 = load i32, ptr %10, align 4, !tbaa !15
  %1112 = load i32, ptr %16, align 4, !tbaa !15
  %1113 = mul nsw i32 %1111, %1112
  %1114 = load i32, ptr %11, align 4, !tbaa !15
  %1115 = add nsw i32 %1113, %1114
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds float, ptr %1110, i64 %1116
  store float 0.000000e+00, ptr %1117, align 4, !tbaa !30
  br label %1118

1118:                                             ; preds = %1109, %1104
  %1119 = load ptr, ptr %5, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1119, i32 0, i32 2
  %1121 = load i32, ptr %1120, align 8, !tbaa !29
  %1122 = icmp eq i32 %1121, 2
  br i1 %1122, label %1123, label %1132

1123:                                             ; preds = %1118
  %1124 = load ptr, ptr %62, align 8, !tbaa !5
  %1125 = load i32, ptr %10, align 4, !tbaa !15
  %1126 = load i32, ptr %16, align 4, !tbaa !15
  %1127 = mul nsw i32 %1125, %1126
  %1128 = load i32, ptr %11, align 4, !tbaa !15
  %1129 = add nsw i32 %1127, %1128
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds i16, ptr %1124, i64 %1130
  store i16 0, ptr %1131, align 2, !tbaa !33
  br label %1132

1132:                                             ; preds = %1123, %1118
  br label %1133

1133:                                             ; preds = %1132, %1099
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %1134

1134:                                             ; preds = %1521, %1133
  %1135 = load i32, ptr %9, align 4, !tbaa !15
  %1136 = load ptr, ptr %5, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1136, i32 0, i32 26
  %1138 = load i32, ptr %1137, align 8, !tbaa !45
  %1139 = icmp slt i32 %1135, %1138
  br i1 %1139, label %1140, label %1524

1140:                                             ; preds = %1134
  %1141 = load i32, ptr %9, align 4, !tbaa !15
  %1142 = sext i32 %1141 to i64
  %1143 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %59, ptr noundef %60, ptr noundef %20, ptr noundef %21, i64 noundef %1142, ptr noundef %1143)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %1144

1144:                                             ; preds = %1517, %1140
  %1145 = load i32, ptr %12, align 4, !tbaa !15
  %1146 = load i32, ptr %19, align 4, !tbaa !15
  %1147 = load i32, ptr %63, align 4, !tbaa !15
  %1148 = sdiv i32 %1146, %1147
  %1149 = icmp slt i32 %1145, %1148
  br i1 %1149, label %1150, label %1520

1150:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %1151 = load i32, ptr %9, align 4, !tbaa !15
  %1152 = load i32, ptr %12, align 4, !tbaa !15
  %1153 = load i32, ptr %11, align 4, !tbaa !15
  %1154 = load ptr, ptr %5, align 8, !tbaa !5
  %1155 = call float @libxsmm_calculate_mxfp4_scf(i32 noundef %1151, i32 noundef %1152, i32 noundef %1153, ptr noundef %1154)
  store float %1155, ptr %66, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %1156 = load i32, ptr %9, align 4, !tbaa !15
  %1157 = load i32, ptr %12, align 4, !tbaa !15
  %1158 = load i32, ptr %10, align 4, !tbaa !15
  %1159 = load ptr, ptr %5, align 8, !tbaa !5
  %1160 = call float @libxsmm_calculate_mxfp4_scf_b(i32 noundef %1156, i32 noundef %1157, i32 noundef %1158, ptr noundef %1159)
  store float %1160, ptr %67, align 4, !tbaa !30
  store i32 0, ptr %65, align 4, !tbaa !15
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %1161

1161:                                             ; preds = %1506, %1150
  %1162 = load i32, ptr %13, align 4, !tbaa !15
  %1163 = load i32, ptr %63, align 4, !tbaa !15
  %1164 = icmp slt i32 %1162, %1163
  br i1 %1164, label %1165, label %1509

1165:                                             ; preds = %1161
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #6
  store i8 0, ptr %68, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #6
  store i8 0, ptr %69, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #6
  store i8 0, ptr %70, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #6
  store i8 0, ptr %71, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #6
  store i8 0, ptr %72, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #6
  store i8 0, ptr %73, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #6
  store i8 0, ptr %74, align 1, !tbaa !22
  %1166 = load ptr, ptr %59, align 8, !tbaa !5
  %1167 = load i64, ptr %20, align 8, !tbaa !21
  %1168 = load i32, ptr %12, align 4, !tbaa !15
  %1169 = sext i32 %1168 to i64
  %1170 = load i32, ptr %63, align 4, !tbaa !15
  %1171 = sext i32 %1170 to i64
  %1172 = mul nsw i64 %1169, %1171
  %1173 = load i32, ptr %13, align 4, !tbaa !15
  %1174 = sext i32 %1173 to i64
  %1175 = add nsw i64 %1172, %1174
  %1176 = sdiv i64 %1175, 8
  %1177 = load i32, ptr %14, align 4, !tbaa !15
  %1178 = sext i32 %1177 to i64
  %1179 = mul nsw i64 %1176, %1178
  %1180 = mul nsw i64 %1179, 4
  %1181 = add nsw i64 %1167, %1180
  %1182 = load i32, ptr %11, align 4, !tbaa !15
  %1183 = mul nsw i32 %1182, 4
  %1184 = sext i32 %1183 to i64
  %1185 = add nsw i64 %1181, %1184
  %1186 = add nsw i64 %1185, 0
  %1187 = getelementptr inbounds i8, ptr %1166, i64 %1186
  %1188 = load i8, ptr %1187, align 1, !tbaa !22
  store i8 %1188, ptr %70, align 1, !tbaa !22
  %1189 = load i8, ptr %70, align 1, !tbaa !22
  %1190 = zext i8 %1189 to i32
  %1191 = and i32 %1190, 15
  %1192 = trunc i32 %1191 to i8
  store i8 %1192, ptr %68, align 1, !tbaa !22
  %1193 = load i8, ptr %68, align 1, !tbaa !22
  %1194 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1193)
  store i8 %1194, ptr %71, align 1, !tbaa !22
  %1195 = load i8, ptr %70, align 1, !tbaa !22
  %1196 = zext i8 %1195 to i32
  %1197 = ashr i32 %1196, 4
  %1198 = and i32 %1197, 15
  %1199 = trunc i32 %1198 to i8
  store i8 %1199, ptr %69, align 1, !tbaa !22
  %1200 = load i8, ptr %69, align 1, !tbaa !22
  %1201 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1200)
  store i8 %1201, ptr %72, align 1, !tbaa !22
  %1202 = load ptr, ptr %60, align 8, !tbaa !5
  %1203 = load i64, ptr %21, align 8, !tbaa !21
  %1204 = load i32, ptr %10, align 4, !tbaa !15
  %1205 = load i32, ptr %15, align 4, !tbaa !15
  %1206 = mul nsw i32 %1204, %1205
  %1207 = sext i32 %1206 to i64
  %1208 = add nsw i64 %1203, %1207
  %1209 = load i32, ptr %12, align 4, !tbaa !15
  %1210 = load i32, ptr %63, align 4, !tbaa !15
  %1211 = mul nsw i32 %1209, %1210
  %1212 = sext i32 %1211 to i64
  %1213 = add nsw i64 %1208, %1212
  %1214 = load i32, ptr %13, align 4, !tbaa !15
  %1215 = sext i32 %1214 to i64
  %1216 = add nsw i64 %1213, %1215
  %1217 = add nsw i64 %1216, 0
  %1218 = getelementptr inbounds i8, ptr %1202, i64 %1217
  %1219 = load i8, ptr %1218, align 1, !tbaa !22
  store i8 %1219, ptr %73, align 1, !tbaa !22
  %1220 = load ptr, ptr %60, align 8, !tbaa !5
  %1221 = load i64, ptr %21, align 8, !tbaa !21
  %1222 = load i32, ptr %10, align 4, !tbaa !15
  %1223 = load i32, ptr %15, align 4, !tbaa !15
  %1224 = mul nsw i32 %1222, %1223
  %1225 = sext i32 %1224 to i64
  %1226 = add nsw i64 %1221, %1225
  %1227 = load i32, ptr %12, align 4, !tbaa !15
  %1228 = load i32, ptr %63, align 4, !tbaa !15
  %1229 = mul nsw i32 %1227, %1228
  %1230 = sext i32 %1229 to i64
  %1231 = add nsw i64 %1226, %1230
  %1232 = load i32, ptr %13, align 4, !tbaa !15
  %1233 = sext i32 %1232 to i64
  %1234 = add nsw i64 %1231, %1233
  %1235 = add nsw i64 %1234, 4
  %1236 = getelementptr inbounds i8, ptr %1220, i64 %1235
  %1237 = load i8, ptr %1236, align 1, !tbaa !22
  store i8 %1237, ptr %74, align 1, !tbaa !22
  %1238 = load i8, ptr %71, align 1, !tbaa !22
  %1239 = sext i8 %1238 to i32
  %1240 = load i8, ptr %73, align 1, !tbaa !22
  %1241 = sext i8 %1240 to i32
  %1242 = mul nsw i32 %1239, %1241
  %1243 = load i8, ptr %72, align 1, !tbaa !22
  %1244 = sext i8 %1243 to i32
  %1245 = load i8, ptr %74, align 1, !tbaa !22
  %1246 = sext i8 %1245 to i32
  %1247 = mul nsw i32 %1244, %1246
  %1248 = add nsw i32 %1242, %1247
  %1249 = load i32, ptr %65, align 4, !tbaa !15
  %1250 = add nsw i32 %1249, %1248
  store i32 %1250, ptr %65, align 4, !tbaa !15
  %1251 = load ptr, ptr %59, align 8, !tbaa !5
  %1252 = load i64, ptr %20, align 8, !tbaa !21
  %1253 = load i32, ptr %12, align 4, !tbaa !15
  %1254 = sext i32 %1253 to i64
  %1255 = load i32, ptr %63, align 4, !tbaa !15
  %1256 = sext i32 %1255 to i64
  %1257 = mul nsw i64 %1254, %1256
  %1258 = load i32, ptr %13, align 4, !tbaa !15
  %1259 = sext i32 %1258 to i64
  %1260 = add nsw i64 %1257, %1259
  %1261 = sdiv i64 %1260, 8
  %1262 = load i32, ptr %14, align 4, !tbaa !15
  %1263 = sext i32 %1262 to i64
  %1264 = mul nsw i64 %1261, %1263
  %1265 = mul nsw i64 %1264, 4
  %1266 = add nsw i64 %1252, %1265
  %1267 = load i32, ptr %11, align 4, !tbaa !15
  %1268 = mul nsw i32 %1267, 4
  %1269 = sext i32 %1268 to i64
  %1270 = add nsw i64 %1266, %1269
  %1271 = add nsw i64 %1270, 1
  %1272 = getelementptr inbounds i8, ptr %1251, i64 %1271
  %1273 = load i8, ptr %1272, align 1, !tbaa !22
  store i8 %1273, ptr %70, align 1, !tbaa !22
  %1274 = load i8, ptr %70, align 1, !tbaa !22
  %1275 = zext i8 %1274 to i32
  %1276 = and i32 %1275, 15
  %1277 = trunc i32 %1276 to i8
  store i8 %1277, ptr %68, align 1, !tbaa !22
  %1278 = load i8, ptr %68, align 1, !tbaa !22
  %1279 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1278)
  store i8 %1279, ptr %71, align 1, !tbaa !22
  %1280 = load i8, ptr %70, align 1, !tbaa !22
  %1281 = zext i8 %1280 to i32
  %1282 = ashr i32 %1281, 4
  %1283 = and i32 %1282, 15
  %1284 = trunc i32 %1283 to i8
  store i8 %1284, ptr %69, align 1, !tbaa !22
  %1285 = load i8, ptr %69, align 1, !tbaa !22
  %1286 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1285)
  store i8 %1286, ptr %72, align 1, !tbaa !22
  %1287 = load ptr, ptr %60, align 8, !tbaa !5
  %1288 = load i64, ptr %21, align 8, !tbaa !21
  %1289 = load i32, ptr %10, align 4, !tbaa !15
  %1290 = load i32, ptr %15, align 4, !tbaa !15
  %1291 = mul nsw i32 %1289, %1290
  %1292 = sext i32 %1291 to i64
  %1293 = add nsw i64 %1288, %1292
  %1294 = load i32, ptr %12, align 4, !tbaa !15
  %1295 = load i32, ptr %63, align 4, !tbaa !15
  %1296 = mul nsw i32 %1294, %1295
  %1297 = sext i32 %1296 to i64
  %1298 = add nsw i64 %1293, %1297
  %1299 = load i32, ptr %13, align 4, !tbaa !15
  %1300 = sext i32 %1299 to i64
  %1301 = add nsw i64 %1298, %1300
  %1302 = add nsw i64 %1301, 1
  %1303 = getelementptr inbounds i8, ptr %1287, i64 %1302
  %1304 = load i8, ptr %1303, align 1, !tbaa !22
  store i8 %1304, ptr %73, align 1, !tbaa !22
  %1305 = load ptr, ptr %60, align 8, !tbaa !5
  %1306 = load i64, ptr %21, align 8, !tbaa !21
  %1307 = load i32, ptr %10, align 4, !tbaa !15
  %1308 = load i32, ptr %15, align 4, !tbaa !15
  %1309 = mul nsw i32 %1307, %1308
  %1310 = sext i32 %1309 to i64
  %1311 = add nsw i64 %1306, %1310
  %1312 = load i32, ptr %12, align 4, !tbaa !15
  %1313 = load i32, ptr %63, align 4, !tbaa !15
  %1314 = mul nsw i32 %1312, %1313
  %1315 = sext i32 %1314 to i64
  %1316 = add nsw i64 %1311, %1315
  %1317 = load i32, ptr %13, align 4, !tbaa !15
  %1318 = sext i32 %1317 to i64
  %1319 = add nsw i64 %1316, %1318
  %1320 = add nsw i64 %1319, 5
  %1321 = getelementptr inbounds i8, ptr %1305, i64 %1320
  %1322 = load i8, ptr %1321, align 1, !tbaa !22
  store i8 %1322, ptr %74, align 1, !tbaa !22
  %1323 = load i8, ptr %71, align 1, !tbaa !22
  %1324 = sext i8 %1323 to i32
  %1325 = load i8, ptr %73, align 1, !tbaa !22
  %1326 = sext i8 %1325 to i32
  %1327 = mul nsw i32 %1324, %1326
  %1328 = load i8, ptr %72, align 1, !tbaa !22
  %1329 = sext i8 %1328 to i32
  %1330 = load i8, ptr %74, align 1, !tbaa !22
  %1331 = sext i8 %1330 to i32
  %1332 = mul nsw i32 %1329, %1331
  %1333 = add nsw i32 %1327, %1332
  %1334 = load i32, ptr %65, align 4, !tbaa !15
  %1335 = add nsw i32 %1334, %1333
  store i32 %1335, ptr %65, align 4, !tbaa !15
  %1336 = load ptr, ptr %59, align 8, !tbaa !5
  %1337 = load i64, ptr %20, align 8, !tbaa !21
  %1338 = load i32, ptr %12, align 4, !tbaa !15
  %1339 = sext i32 %1338 to i64
  %1340 = load i32, ptr %63, align 4, !tbaa !15
  %1341 = sext i32 %1340 to i64
  %1342 = mul nsw i64 %1339, %1341
  %1343 = load i32, ptr %13, align 4, !tbaa !15
  %1344 = sext i32 %1343 to i64
  %1345 = add nsw i64 %1342, %1344
  %1346 = sdiv i64 %1345, 8
  %1347 = load i32, ptr %14, align 4, !tbaa !15
  %1348 = sext i32 %1347 to i64
  %1349 = mul nsw i64 %1346, %1348
  %1350 = mul nsw i64 %1349, 4
  %1351 = add nsw i64 %1337, %1350
  %1352 = load i32, ptr %11, align 4, !tbaa !15
  %1353 = mul nsw i32 %1352, 4
  %1354 = sext i32 %1353 to i64
  %1355 = add nsw i64 %1351, %1354
  %1356 = add nsw i64 %1355, 2
  %1357 = getelementptr inbounds i8, ptr %1336, i64 %1356
  %1358 = load i8, ptr %1357, align 1, !tbaa !22
  store i8 %1358, ptr %70, align 1, !tbaa !22
  %1359 = load i8, ptr %70, align 1, !tbaa !22
  %1360 = zext i8 %1359 to i32
  %1361 = and i32 %1360, 15
  %1362 = trunc i32 %1361 to i8
  store i8 %1362, ptr %68, align 1, !tbaa !22
  %1363 = load i8, ptr %68, align 1, !tbaa !22
  %1364 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1363)
  store i8 %1364, ptr %71, align 1, !tbaa !22
  %1365 = load i8, ptr %70, align 1, !tbaa !22
  %1366 = zext i8 %1365 to i32
  %1367 = ashr i32 %1366, 4
  %1368 = and i32 %1367, 15
  %1369 = trunc i32 %1368 to i8
  store i8 %1369, ptr %69, align 1, !tbaa !22
  %1370 = load i8, ptr %69, align 1, !tbaa !22
  %1371 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1370)
  store i8 %1371, ptr %72, align 1, !tbaa !22
  %1372 = load ptr, ptr %60, align 8, !tbaa !5
  %1373 = load i64, ptr %21, align 8, !tbaa !21
  %1374 = load i32, ptr %10, align 4, !tbaa !15
  %1375 = load i32, ptr %15, align 4, !tbaa !15
  %1376 = mul nsw i32 %1374, %1375
  %1377 = sext i32 %1376 to i64
  %1378 = add nsw i64 %1373, %1377
  %1379 = load i32, ptr %12, align 4, !tbaa !15
  %1380 = load i32, ptr %63, align 4, !tbaa !15
  %1381 = mul nsw i32 %1379, %1380
  %1382 = sext i32 %1381 to i64
  %1383 = add nsw i64 %1378, %1382
  %1384 = load i32, ptr %13, align 4, !tbaa !15
  %1385 = sext i32 %1384 to i64
  %1386 = add nsw i64 %1383, %1385
  %1387 = add nsw i64 %1386, 2
  %1388 = getelementptr inbounds i8, ptr %1372, i64 %1387
  %1389 = load i8, ptr %1388, align 1, !tbaa !22
  store i8 %1389, ptr %73, align 1, !tbaa !22
  %1390 = load ptr, ptr %60, align 8, !tbaa !5
  %1391 = load i64, ptr %21, align 8, !tbaa !21
  %1392 = load i32, ptr %10, align 4, !tbaa !15
  %1393 = load i32, ptr %15, align 4, !tbaa !15
  %1394 = mul nsw i32 %1392, %1393
  %1395 = sext i32 %1394 to i64
  %1396 = add nsw i64 %1391, %1395
  %1397 = load i32, ptr %12, align 4, !tbaa !15
  %1398 = load i32, ptr %63, align 4, !tbaa !15
  %1399 = mul nsw i32 %1397, %1398
  %1400 = sext i32 %1399 to i64
  %1401 = add nsw i64 %1396, %1400
  %1402 = load i32, ptr %13, align 4, !tbaa !15
  %1403 = sext i32 %1402 to i64
  %1404 = add nsw i64 %1401, %1403
  %1405 = add nsw i64 %1404, 6
  %1406 = getelementptr inbounds i8, ptr %1390, i64 %1405
  %1407 = load i8, ptr %1406, align 1, !tbaa !22
  store i8 %1407, ptr %74, align 1, !tbaa !22
  %1408 = load i8, ptr %71, align 1, !tbaa !22
  %1409 = sext i8 %1408 to i32
  %1410 = load i8, ptr %73, align 1, !tbaa !22
  %1411 = sext i8 %1410 to i32
  %1412 = mul nsw i32 %1409, %1411
  %1413 = load i8, ptr %72, align 1, !tbaa !22
  %1414 = sext i8 %1413 to i32
  %1415 = load i8, ptr %74, align 1, !tbaa !22
  %1416 = sext i8 %1415 to i32
  %1417 = mul nsw i32 %1414, %1416
  %1418 = add nsw i32 %1412, %1417
  %1419 = load i32, ptr %65, align 4, !tbaa !15
  %1420 = add nsw i32 %1419, %1418
  store i32 %1420, ptr %65, align 4, !tbaa !15
  %1421 = load ptr, ptr %59, align 8, !tbaa !5
  %1422 = load i64, ptr %20, align 8, !tbaa !21
  %1423 = load i32, ptr %12, align 4, !tbaa !15
  %1424 = sext i32 %1423 to i64
  %1425 = load i32, ptr %63, align 4, !tbaa !15
  %1426 = sext i32 %1425 to i64
  %1427 = mul nsw i64 %1424, %1426
  %1428 = load i32, ptr %13, align 4, !tbaa !15
  %1429 = sext i32 %1428 to i64
  %1430 = add nsw i64 %1427, %1429
  %1431 = sdiv i64 %1430, 8
  %1432 = load i32, ptr %14, align 4, !tbaa !15
  %1433 = sext i32 %1432 to i64
  %1434 = mul nsw i64 %1431, %1433
  %1435 = mul nsw i64 %1434, 4
  %1436 = add nsw i64 %1422, %1435
  %1437 = load i32, ptr %11, align 4, !tbaa !15
  %1438 = mul nsw i32 %1437, 4
  %1439 = sext i32 %1438 to i64
  %1440 = add nsw i64 %1436, %1439
  %1441 = add nsw i64 %1440, 3
  %1442 = getelementptr inbounds i8, ptr %1421, i64 %1441
  %1443 = load i8, ptr %1442, align 1, !tbaa !22
  store i8 %1443, ptr %70, align 1, !tbaa !22
  %1444 = load i8, ptr %70, align 1, !tbaa !22
  %1445 = zext i8 %1444 to i32
  %1446 = and i32 %1445, 15
  %1447 = trunc i32 %1446 to i8
  store i8 %1447, ptr %68, align 1, !tbaa !22
  %1448 = load i8, ptr %68, align 1, !tbaa !22
  %1449 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1448)
  store i8 %1449, ptr %71, align 1, !tbaa !22
  %1450 = load i8, ptr %70, align 1, !tbaa !22
  %1451 = zext i8 %1450 to i32
  %1452 = ashr i32 %1451, 4
  %1453 = and i32 %1452, 15
  %1454 = trunc i32 %1453 to i8
  store i8 %1454, ptr %69, align 1, !tbaa !22
  %1455 = load i8, ptr %69, align 1, !tbaa !22
  %1456 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %1455)
  store i8 %1456, ptr %72, align 1, !tbaa !22
  %1457 = load ptr, ptr %60, align 8, !tbaa !5
  %1458 = load i64, ptr %21, align 8, !tbaa !21
  %1459 = load i32, ptr %10, align 4, !tbaa !15
  %1460 = load i32, ptr %15, align 4, !tbaa !15
  %1461 = mul nsw i32 %1459, %1460
  %1462 = sext i32 %1461 to i64
  %1463 = add nsw i64 %1458, %1462
  %1464 = load i32, ptr %12, align 4, !tbaa !15
  %1465 = load i32, ptr %63, align 4, !tbaa !15
  %1466 = mul nsw i32 %1464, %1465
  %1467 = sext i32 %1466 to i64
  %1468 = add nsw i64 %1463, %1467
  %1469 = load i32, ptr %13, align 4, !tbaa !15
  %1470 = sext i32 %1469 to i64
  %1471 = add nsw i64 %1468, %1470
  %1472 = add nsw i64 %1471, 3
  %1473 = getelementptr inbounds i8, ptr %1457, i64 %1472
  %1474 = load i8, ptr %1473, align 1, !tbaa !22
  store i8 %1474, ptr %73, align 1, !tbaa !22
  %1475 = load ptr, ptr %60, align 8, !tbaa !5
  %1476 = load i64, ptr %21, align 8, !tbaa !21
  %1477 = load i32, ptr %10, align 4, !tbaa !15
  %1478 = load i32, ptr %15, align 4, !tbaa !15
  %1479 = mul nsw i32 %1477, %1478
  %1480 = sext i32 %1479 to i64
  %1481 = add nsw i64 %1476, %1480
  %1482 = load i32, ptr %12, align 4, !tbaa !15
  %1483 = load i32, ptr %63, align 4, !tbaa !15
  %1484 = mul nsw i32 %1482, %1483
  %1485 = sext i32 %1484 to i64
  %1486 = add nsw i64 %1481, %1485
  %1487 = load i32, ptr %13, align 4, !tbaa !15
  %1488 = sext i32 %1487 to i64
  %1489 = add nsw i64 %1486, %1488
  %1490 = add nsw i64 %1489, 7
  %1491 = getelementptr inbounds i8, ptr %1475, i64 %1490
  %1492 = load i8, ptr %1491, align 1, !tbaa !22
  store i8 %1492, ptr %74, align 1, !tbaa !22
  %1493 = load i8, ptr %71, align 1, !tbaa !22
  %1494 = sext i8 %1493 to i32
  %1495 = load i8, ptr %73, align 1, !tbaa !22
  %1496 = sext i8 %1495 to i32
  %1497 = mul nsw i32 %1494, %1496
  %1498 = load i8, ptr %72, align 1, !tbaa !22
  %1499 = sext i8 %1498 to i32
  %1500 = load i8, ptr %74, align 1, !tbaa !22
  %1501 = sext i8 %1500 to i32
  %1502 = mul nsw i32 %1499, %1501
  %1503 = add nsw i32 %1497, %1502
  %1504 = load i32, ptr %65, align 4, !tbaa !15
  %1505 = add nsw i32 %1504, %1503
  store i32 %1505, ptr %65, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  br label %1506

1506:                                             ; preds = %1165
  %1507 = load i32, ptr %13, align 4, !tbaa !15
  %1508 = add nsw i32 %1507, 8
  store i32 %1508, ptr %13, align 4, !tbaa !15
  br label %1161, !llvm.loop !52

1509:                                             ; preds = %1161
  %1510 = load i32, ptr %65, align 4, !tbaa !15
  %1511 = sitofp i32 %1510 to float
  %1512 = load float, ptr %66, align 4, !tbaa !30
  %1513 = fmul float %1511, %1512
  %1514 = load float, ptr %67, align 4, !tbaa !30
  %1515 = load float, ptr %64, align 4, !tbaa !30
  %1516 = call float @llvm.fmuladd.f32(float %1513, float %1514, float %1515)
  store float %1516, ptr %64, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  br label %1517

1517:                                             ; preds = %1509
  %1518 = load i32, ptr %12, align 4, !tbaa !15
  %1519 = add nsw i32 %1518, 1
  store i32 %1519, ptr %12, align 4, !tbaa !15
  br label %1144, !llvm.loop !53

1520:                                             ; preds = %1144
  br label %1521

1521:                                             ; preds = %1520
  %1522 = load i32, ptr %9, align 4, !tbaa !15
  %1523 = add nsw i32 %1522, 1
  store i32 %1523, ptr %9, align 4, !tbaa !15
  br label %1134, !llvm.loop !54

1524:                                             ; preds = %1134
  %1525 = load ptr, ptr %5, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1525, i32 0, i32 2
  %1527 = load i32, ptr %1526, align 8, !tbaa !29
  %1528 = icmp eq i32 %1527, 1
  br i1 %1528, label %1529, label %1541

1529:                                             ; preds = %1524
  %1530 = load float, ptr %64, align 4, !tbaa !30
  %1531 = load ptr, ptr %61, align 8, !tbaa !5
  %1532 = load i32, ptr %10, align 4, !tbaa !15
  %1533 = load i32, ptr %16, align 4, !tbaa !15
  %1534 = mul nsw i32 %1532, %1533
  %1535 = load i32, ptr %11, align 4, !tbaa !15
  %1536 = add nsw i32 %1534, %1535
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds float, ptr %1531, i64 %1537
  %1539 = load float, ptr %1538, align 4, !tbaa !30
  %1540 = fadd float %1539, %1530
  store float %1540, ptr %1538, align 4, !tbaa !30
  br label %1541

1541:                                             ; preds = %1529, %1524
  %1542 = load ptr, ptr %5, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1542, i32 0, i32 2
  %1544 = load i32, ptr %1543, align 8, !tbaa !29
  %1545 = icmp eq i32 %1544, 2
  br i1 %1545, label %1546, label %1570

1546:                                             ; preds = %1541
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #6
  %1547 = load ptr, ptr %62, align 8, !tbaa !5
  %1548 = load i32, ptr %10, align 4, !tbaa !15
  %1549 = load i32, ptr %16, align 4, !tbaa !15
  %1550 = mul nsw i32 %1548, %1549
  %1551 = load i32, ptr %11, align 4, !tbaa !15
  %1552 = add nsw i32 %1550, %1551
  %1553 = sext i32 %1552 to i64
  %1554 = getelementptr inbounds i16, ptr %1547, i64 %1553
  %1555 = load i16, ptr %1554, align 2, !tbaa !33
  %1556 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %1555)
  store float %1556, ptr %75, align 4, !tbaa !30
  %1557 = load float, ptr %64, align 4, !tbaa !30
  %1558 = load float, ptr %75, align 4, !tbaa !30
  %1559 = fadd float %1558, %1557
  store float %1559, ptr %75, align 4, !tbaa !30
  %1560 = load float, ptr %75, align 4, !tbaa !30
  %1561 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %1560)
  %1562 = load ptr, ptr %62, align 8, !tbaa !5
  %1563 = load i32, ptr %10, align 4, !tbaa !15
  %1564 = load i32, ptr %16, align 4, !tbaa !15
  %1565 = mul nsw i32 %1563, %1564
  %1566 = load i32, ptr %11, align 4, !tbaa !15
  %1567 = add nsw i32 %1565, %1566
  %1568 = sext i32 %1567 to i64
  %1569 = getelementptr inbounds i16, ptr %1562, i64 %1568
  store i16 %1561, ptr %1569, align 2, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #6
  br label %1570

1570:                                             ; preds = %1546, %1541
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  br label %1571

1571:                                             ; preds = %1570
  %1572 = load i32, ptr %11, align 4, !tbaa !15
  %1573 = add nsw i32 %1572, 1
  store i32 %1573, ptr %11, align 4, !tbaa !15
  br label %1095, !llvm.loop !55

1574:                                             ; preds = %1095
  br label %1575

1575:                                             ; preds = %1574
  %1576 = load i32, ptr %10, align 4, !tbaa !15
  %1577 = add nsw i32 %1576, 1
  store i32 %1577, ptr %10, align 4, !tbaa !15
  br label %1090, !llvm.loop !56

1578:                                             ; preds = %1090
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  br label %8157

1579:                                             ; preds = %1077
  %1580 = load ptr, ptr %5, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1580, i32 0, i32 47
  %1582 = load i32, ptr %1581, align 4, !tbaa !57
  %1583 = icmp ugt i32 %1582, 0
  br i1 %1583, label %1584, label %2000

1584:                                             ; preds = %1579
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  %1585 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1585, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #6
  %1586 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1586, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #6
  %1587 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1587, ptr %78, align 8, !tbaa !5
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %1588

1588:                                             ; preds = %1996, %1584
  %1589 = load i32, ptr %10, align 4, !tbaa !15
  %1590 = load i32, ptr %18, align 4, !tbaa !15
  %1591 = icmp slt i32 %1589, %1590
  br i1 %1591, label %1592, label %1999

1592:                                             ; preds = %1588
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %1593

1593:                                             ; preds = %1992, %1592
  %1594 = load i32, ptr %11, align 4, !tbaa !15
  %1595 = load i32, ptr %17, align 4, !tbaa !15
  %1596 = icmp slt i32 %1594, %1595
  br i1 %1596, label %1597, label %1995

1597:                                             ; preds = %1593
  %1598 = load ptr, ptr %5, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1598, i32 0, i32 13
  %1600 = load double, ptr %1599, align 8, !tbaa !28
  %1601 = fcmp oeq double %1600, 0.000000e+00
  br i1 %1601, label %1602, label %1611

1602:                                             ; preds = %1597
  %1603 = load ptr, ptr %78, align 8, !tbaa !5
  %1604 = load i32, ptr %10, align 4, !tbaa !15
  %1605 = load i32, ptr %16, align 4, !tbaa !15
  %1606 = mul nsw i32 %1604, %1605
  %1607 = load i32, ptr %11, align 4, !tbaa !15
  %1608 = add nsw i32 %1606, %1607
  %1609 = sext i32 %1608 to i64
  %1610 = getelementptr inbounds i32, ptr %1603, i64 %1609
  store i32 0, ptr %1610, align 4, !tbaa !15
  br label %1611

1611:                                             ; preds = %1602, %1597
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %1612

1612:                                             ; preds = %1988, %1611
  %1613 = load i32, ptr %9, align 4, !tbaa !15
  %1614 = load ptr, ptr %5, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %1614, i32 0, i32 26
  %1616 = load i32, ptr %1615, align 8, !tbaa !45
  %1617 = icmp slt i32 %1613, %1616
  br i1 %1617, label %1618, label %1991

1618:                                             ; preds = %1612
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #6
  %1619 = load i32, ptr %9, align 4, !tbaa !15
  %1620 = load i32, ptr %11, align 4, !tbaa !15
  %1621 = load ptr, ptr %5, align 8, !tbaa !5
  %1622 = call zeroext i8 @libxsmm_calculate_zpt(i32 noundef %1619, i32 noundef %1620, ptr noundef %1621)
  store i8 %1622, ptr %79, align 1, !tbaa !22
  %1623 = load i32, ptr %9, align 4, !tbaa !15
  %1624 = sext i32 %1623 to i64
  %1625 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %76, ptr noundef %77, ptr noundef %20, ptr noundef %21, i64 noundef %1624, ptr noundef %1625)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %1626

1626:                                             ; preds = %1984, %1618
  %1627 = load i32, ptr %12, align 4, !tbaa !15
  %1628 = load i32, ptr %19, align 4, !tbaa !15
  %1629 = sdiv i32 %1628, 8
  %1630 = icmp slt i32 %1627, %1629
  br i1 %1630, label %1631, label %1987

1631:                                             ; preds = %1626
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #6
  store i32 0, ptr %80, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  store i32 0, ptr %81, align 4, !tbaa !15
  %1632 = load ptr, ptr %76, align 8, !tbaa !5
  %1633 = load i64, ptr %20, align 8, !tbaa !21
  %1634 = load i32, ptr %12, align 4, !tbaa !15
  %1635 = load i32, ptr %14, align 4, !tbaa !15
  %1636 = mul nsw i32 %1634, %1635
  %1637 = mul nsw i32 %1636, 4
  %1638 = sext i32 %1637 to i64
  %1639 = add nsw i64 %1633, %1638
  %1640 = load i32, ptr %11, align 4, !tbaa !15
  %1641 = mul nsw i32 4, %1640
  %1642 = sext i32 %1641 to i64
  %1643 = add nsw i64 %1639, %1642
  %1644 = add nsw i64 %1643, 0
  %1645 = getelementptr inbounds i8, ptr %1632, i64 %1644
  %1646 = load i8, ptr %1645, align 1, !tbaa !22
  store i8 %1646, ptr %22, align 1, !tbaa !22
  %1647 = load i8, ptr %22, align 1, !tbaa !22
  %1648 = zext i8 %1647 to i32
  %1649 = and i32 %1648, 15
  store i32 %1649, ptr %81, align 4, !tbaa !15
  %1650 = load i8, ptr %22, align 1, !tbaa !22
  %1651 = zext i8 %1650 to i32
  %1652 = ashr i32 %1651, 4
  %1653 = and i32 %1652, 15
  store i32 %1653, ptr %80, align 4, !tbaa !15
  %1654 = load i32, ptr %81, align 4, !tbaa !15
  %1655 = load i8, ptr %79, align 1, !tbaa !22
  %1656 = zext i8 %1655 to i32
  %1657 = sub i32 %1654, %1656
  %1658 = trunc i32 %1657 to i8
  store i8 %1658, ptr %23, align 1, !tbaa !22
  %1659 = load i32, ptr %80, align 4, !tbaa !15
  %1660 = load i8, ptr %79, align 1, !tbaa !22
  %1661 = zext i8 %1660 to i32
  %1662 = sub i32 %1659, %1661
  %1663 = trunc i32 %1662 to i8
  store i8 %1663, ptr %24, align 1, !tbaa !22
  %1664 = load i8, ptr %23, align 1, !tbaa !22
  %1665 = sext i8 %1664 to i32
  %1666 = load ptr, ptr %77, align 8, !tbaa !5
  %1667 = load i64, ptr %21, align 8, !tbaa !21
  %1668 = load i32, ptr %10, align 4, !tbaa !15
  %1669 = load i32, ptr %15, align 4, !tbaa !15
  %1670 = mul nsw i32 %1668, %1669
  %1671 = sext i32 %1670 to i64
  %1672 = add nsw i64 %1667, %1671
  %1673 = load i32, ptr %12, align 4, !tbaa !15
  %1674 = mul nsw i32 %1673, 8
  %1675 = sext i32 %1674 to i64
  %1676 = add nsw i64 %1672, %1675
  %1677 = add nsw i64 %1676, 0
  %1678 = getelementptr inbounds i8, ptr %1666, i64 %1677
  %1679 = load i8, ptr %1678, align 1, !tbaa !22
  %1680 = zext i8 %1679 to i32
  %1681 = mul nsw i32 %1665, %1680
  %1682 = load ptr, ptr %78, align 8, !tbaa !5
  %1683 = load i32, ptr %10, align 4, !tbaa !15
  %1684 = load i32, ptr %16, align 4, !tbaa !15
  %1685 = mul nsw i32 %1683, %1684
  %1686 = load i32, ptr %11, align 4, !tbaa !15
  %1687 = add nsw i32 %1685, %1686
  %1688 = sext i32 %1687 to i64
  %1689 = getelementptr inbounds i32, ptr %1682, i64 %1688
  %1690 = load i32, ptr %1689, align 4, !tbaa !15
  %1691 = add nsw i32 %1690, %1681
  store i32 %1691, ptr %1689, align 4, !tbaa !15
  %1692 = load i8, ptr %24, align 1, !tbaa !22
  %1693 = sext i8 %1692 to i32
  %1694 = load ptr, ptr %77, align 8, !tbaa !5
  %1695 = load i64, ptr %21, align 8, !tbaa !21
  %1696 = load i32, ptr %10, align 4, !tbaa !15
  %1697 = load i32, ptr %15, align 4, !tbaa !15
  %1698 = mul nsw i32 %1696, %1697
  %1699 = sext i32 %1698 to i64
  %1700 = add nsw i64 %1695, %1699
  %1701 = load i32, ptr %12, align 4, !tbaa !15
  %1702 = mul nsw i32 %1701, 8
  %1703 = sext i32 %1702 to i64
  %1704 = add nsw i64 %1700, %1703
  %1705 = add nsw i64 %1704, 4
  %1706 = getelementptr inbounds i8, ptr %1694, i64 %1705
  %1707 = load i8, ptr %1706, align 1, !tbaa !22
  %1708 = zext i8 %1707 to i32
  %1709 = mul nsw i32 %1693, %1708
  %1710 = load ptr, ptr %78, align 8, !tbaa !5
  %1711 = load i32, ptr %10, align 4, !tbaa !15
  %1712 = load i32, ptr %16, align 4, !tbaa !15
  %1713 = mul nsw i32 %1711, %1712
  %1714 = load i32, ptr %11, align 4, !tbaa !15
  %1715 = add nsw i32 %1713, %1714
  %1716 = sext i32 %1715 to i64
  %1717 = getelementptr inbounds i32, ptr %1710, i64 %1716
  %1718 = load i32, ptr %1717, align 4, !tbaa !15
  %1719 = add nsw i32 %1718, %1709
  store i32 %1719, ptr %1717, align 4, !tbaa !15
  %1720 = load ptr, ptr %76, align 8, !tbaa !5
  %1721 = load i64, ptr %20, align 8, !tbaa !21
  %1722 = load i32, ptr %12, align 4, !tbaa !15
  %1723 = load i32, ptr %14, align 4, !tbaa !15
  %1724 = mul nsw i32 %1722, %1723
  %1725 = mul nsw i32 %1724, 4
  %1726 = sext i32 %1725 to i64
  %1727 = add nsw i64 %1721, %1726
  %1728 = load i32, ptr %11, align 4, !tbaa !15
  %1729 = mul nsw i32 4, %1728
  %1730 = sext i32 %1729 to i64
  %1731 = add nsw i64 %1727, %1730
  %1732 = add nsw i64 %1731, 1
  %1733 = getelementptr inbounds i8, ptr %1720, i64 %1732
  %1734 = load i8, ptr %1733, align 1, !tbaa !22
  store i8 %1734, ptr %22, align 1, !tbaa !22
  %1735 = load i8, ptr %22, align 1, !tbaa !22
  %1736 = zext i8 %1735 to i32
  %1737 = and i32 %1736, 15
  store i32 %1737, ptr %81, align 4, !tbaa !15
  %1738 = load i8, ptr %22, align 1, !tbaa !22
  %1739 = zext i8 %1738 to i32
  %1740 = ashr i32 %1739, 4
  %1741 = and i32 %1740, 15
  store i32 %1741, ptr %80, align 4, !tbaa !15
  %1742 = load i32, ptr %81, align 4, !tbaa !15
  %1743 = load i8, ptr %79, align 1, !tbaa !22
  %1744 = zext i8 %1743 to i32
  %1745 = sub i32 %1742, %1744
  %1746 = trunc i32 %1745 to i8
  store i8 %1746, ptr %23, align 1, !tbaa !22
  %1747 = load i32, ptr %80, align 4, !tbaa !15
  %1748 = load i8, ptr %79, align 1, !tbaa !22
  %1749 = zext i8 %1748 to i32
  %1750 = sub i32 %1747, %1749
  %1751 = trunc i32 %1750 to i8
  store i8 %1751, ptr %24, align 1, !tbaa !22
  %1752 = load i8, ptr %23, align 1, !tbaa !22
  %1753 = sext i8 %1752 to i32
  %1754 = load ptr, ptr %77, align 8, !tbaa !5
  %1755 = load i64, ptr %21, align 8, !tbaa !21
  %1756 = load i32, ptr %10, align 4, !tbaa !15
  %1757 = load i32, ptr %15, align 4, !tbaa !15
  %1758 = mul nsw i32 %1756, %1757
  %1759 = sext i32 %1758 to i64
  %1760 = add nsw i64 %1755, %1759
  %1761 = load i32, ptr %12, align 4, !tbaa !15
  %1762 = mul nsw i32 %1761, 8
  %1763 = sext i32 %1762 to i64
  %1764 = add nsw i64 %1760, %1763
  %1765 = add nsw i64 %1764, 1
  %1766 = getelementptr inbounds i8, ptr %1754, i64 %1765
  %1767 = load i8, ptr %1766, align 1, !tbaa !22
  %1768 = zext i8 %1767 to i32
  %1769 = mul nsw i32 %1753, %1768
  %1770 = load ptr, ptr %78, align 8, !tbaa !5
  %1771 = load i32, ptr %10, align 4, !tbaa !15
  %1772 = load i32, ptr %16, align 4, !tbaa !15
  %1773 = mul nsw i32 %1771, %1772
  %1774 = load i32, ptr %11, align 4, !tbaa !15
  %1775 = add nsw i32 %1773, %1774
  %1776 = sext i32 %1775 to i64
  %1777 = getelementptr inbounds i32, ptr %1770, i64 %1776
  %1778 = load i32, ptr %1777, align 4, !tbaa !15
  %1779 = add nsw i32 %1778, %1769
  store i32 %1779, ptr %1777, align 4, !tbaa !15
  %1780 = load i8, ptr %24, align 1, !tbaa !22
  %1781 = sext i8 %1780 to i32
  %1782 = load ptr, ptr %77, align 8, !tbaa !5
  %1783 = load i64, ptr %21, align 8, !tbaa !21
  %1784 = load i32, ptr %10, align 4, !tbaa !15
  %1785 = load i32, ptr %15, align 4, !tbaa !15
  %1786 = mul nsw i32 %1784, %1785
  %1787 = sext i32 %1786 to i64
  %1788 = add nsw i64 %1783, %1787
  %1789 = load i32, ptr %12, align 4, !tbaa !15
  %1790 = mul nsw i32 %1789, 8
  %1791 = sext i32 %1790 to i64
  %1792 = add nsw i64 %1788, %1791
  %1793 = add nsw i64 %1792, 5
  %1794 = getelementptr inbounds i8, ptr %1782, i64 %1793
  %1795 = load i8, ptr %1794, align 1, !tbaa !22
  %1796 = zext i8 %1795 to i32
  %1797 = mul nsw i32 %1781, %1796
  %1798 = load ptr, ptr %78, align 8, !tbaa !5
  %1799 = load i32, ptr %10, align 4, !tbaa !15
  %1800 = load i32, ptr %16, align 4, !tbaa !15
  %1801 = mul nsw i32 %1799, %1800
  %1802 = load i32, ptr %11, align 4, !tbaa !15
  %1803 = add nsw i32 %1801, %1802
  %1804 = sext i32 %1803 to i64
  %1805 = getelementptr inbounds i32, ptr %1798, i64 %1804
  %1806 = load i32, ptr %1805, align 4, !tbaa !15
  %1807 = add nsw i32 %1806, %1797
  store i32 %1807, ptr %1805, align 4, !tbaa !15
  %1808 = load ptr, ptr %76, align 8, !tbaa !5
  %1809 = load i64, ptr %20, align 8, !tbaa !21
  %1810 = load i32, ptr %12, align 4, !tbaa !15
  %1811 = load i32, ptr %14, align 4, !tbaa !15
  %1812 = mul nsw i32 %1810, %1811
  %1813 = mul nsw i32 %1812, 4
  %1814 = sext i32 %1813 to i64
  %1815 = add nsw i64 %1809, %1814
  %1816 = load i32, ptr %11, align 4, !tbaa !15
  %1817 = mul nsw i32 4, %1816
  %1818 = sext i32 %1817 to i64
  %1819 = add nsw i64 %1815, %1818
  %1820 = add nsw i64 %1819, 2
  %1821 = getelementptr inbounds i8, ptr %1808, i64 %1820
  %1822 = load i8, ptr %1821, align 1, !tbaa !22
  store i8 %1822, ptr %22, align 1, !tbaa !22
  %1823 = load i8, ptr %22, align 1, !tbaa !22
  %1824 = zext i8 %1823 to i32
  %1825 = and i32 %1824, 15
  store i32 %1825, ptr %81, align 4, !tbaa !15
  %1826 = load i8, ptr %22, align 1, !tbaa !22
  %1827 = zext i8 %1826 to i32
  %1828 = ashr i32 %1827, 4
  %1829 = and i32 %1828, 15
  store i32 %1829, ptr %80, align 4, !tbaa !15
  %1830 = load i32, ptr %81, align 4, !tbaa !15
  %1831 = load i8, ptr %79, align 1, !tbaa !22
  %1832 = zext i8 %1831 to i32
  %1833 = sub i32 %1830, %1832
  %1834 = trunc i32 %1833 to i8
  store i8 %1834, ptr %23, align 1, !tbaa !22
  %1835 = load i32, ptr %80, align 4, !tbaa !15
  %1836 = load i8, ptr %79, align 1, !tbaa !22
  %1837 = zext i8 %1836 to i32
  %1838 = sub i32 %1835, %1837
  %1839 = trunc i32 %1838 to i8
  store i8 %1839, ptr %24, align 1, !tbaa !22
  %1840 = load i8, ptr %23, align 1, !tbaa !22
  %1841 = sext i8 %1840 to i32
  %1842 = load ptr, ptr %77, align 8, !tbaa !5
  %1843 = load i64, ptr %21, align 8, !tbaa !21
  %1844 = load i32, ptr %10, align 4, !tbaa !15
  %1845 = load i32, ptr %15, align 4, !tbaa !15
  %1846 = mul nsw i32 %1844, %1845
  %1847 = sext i32 %1846 to i64
  %1848 = add nsw i64 %1843, %1847
  %1849 = load i32, ptr %12, align 4, !tbaa !15
  %1850 = mul nsw i32 %1849, 8
  %1851 = sext i32 %1850 to i64
  %1852 = add nsw i64 %1848, %1851
  %1853 = add nsw i64 %1852, 2
  %1854 = getelementptr inbounds i8, ptr %1842, i64 %1853
  %1855 = load i8, ptr %1854, align 1, !tbaa !22
  %1856 = zext i8 %1855 to i32
  %1857 = mul nsw i32 %1841, %1856
  %1858 = load ptr, ptr %78, align 8, !tbaa !5
  %1859 = load i32, ptr %10, align 4, !tbaa !15
  %1860 = load i32, ptr %16, align 4, !tbaa !15
  %1861 = mul nsw i32 %1859, %1860
  %1862 = load i32, ptr %11, align 4, !tbaa !15
  %1863 = add nsw i32 %1861, %1862
  %1864 = sext i32 %1863 to i64
  %1865 = getelementptr inbounds i32, ptr %1858, i64 %1864
  %1866 = load i32, ptr %1865, align 4, !tbaa !15
  %1867 = add nsw i32 %1866, %1857
  store i32 %1867, ptr %1865, align 4, !tbaa !15
  %1868 = load i8, ptr %24, align 1, !tbaa !22
  %1869 = sext i8 %1868 to i32
  %1870 = load ptr, ptr %77, align 8, !tbaa !5
  %1871 = load i64, ptr %21, align 8, !tbaa !21
  %1872 = load i32, ptr %10, align 4, !tbaa !15
  %1873 = load i32, ptr %15, align 4, !tbaa !15
  %1874 = mul nsw i32 %1872, %1873
  %1875 = sext i32 %1874 to i64
  %1876 = add nsw i64 %1871, %1875
  %1877 = load i32, ptr %12, align 4, !tbaa !15
  %1878 = mul nsw i32 %1877, 8
  %1879 = sext i32 %1878 to i64
  %1880 = add nsw i64 %1876, %1879
  %1881 = add nsw i64 %1880, 6
  %1882 = getelementptr inbounds i8, ptr %1870, i64 %1881
  %1883 = load i8, ptr %1882, align 1, !tbaa !22
  %1884 = zext i8 %1883 to i32
  %1885 = mul nsw i32 %1869, %1884
  %1886 = load ptr, ptr %78, align 8, !tbaa !5
  %1887 = load i32, ptr %10, align 4, !tbaa !15
  %1888 = load i32, ptr %16, align 4, !tbaa !15
  %1889 = mul nsw i32 %1887, %1888
  %1890 = load i32, ptr %11, align 4, !tbaa !15
  %1891 = add nsw i32 %1889, %1890
  %1892 = sext i32 %1891 to i64
  %1893 = getelementptr inbounds i32, ptr %1886, i64 %1892
  %1894 = load i32, ptr %1893, align 4, !tbaa !15
  %1895 = add nsw i32 %1894, %1885
  store i32 %1895, ptr %1893, align 4, !tbaa !15
  %1896 = load ptr, ptr %76, align 8, !tbaa !5
  %1897 = load i64, ptr %20, align 8, !tbaa !21
  %1898 = load i32, ptr %12, align 4, !tbaa !15
  %1899 = load i32, ptr %14, align 4, !tbaa !15
  %1900 = mul nsw i32 %1898, %1899
  %1901 = mul nsw i32 %1900, 4
  %1902 = sext i32 %1901 to i64
  %1903 = add nsw i64 %1897, %1902
  %1904 = load i32, ptr %11, align 4, !tbaa !15
  %1905 = mul nsw i32 4, %1904
  %1906 = sext i32 %1905 to i64
  %1907 = add nsw i64 %1903, %1906
  %1908 = add nsw i64 %1907, 3
  %1909 = getelementptr inbounds i8, ptr %1896, i64 %1908
  %1910 = load i8, ptr %1909, align 1, !tbaa !22
  store i8 %1910, ptr %22, align 1, !tbaa !22
  %1911 = load i8, ptr %22, align 1, !tbaa !22
  %1912 = zext i8 %1911 to i32
  %1913 = and i32 %1912, 15
  store i32 %1913, ptr %81, align 4, !tbaa !15
  %1914 = load i8, ptr %22, align 1, !tbaa !22
  %1915 = zext i8 %1914 to i32
  %1916 = ashr i32 %1915, 4
  %1917 = and i32 %1916, 15
  store i32 %1917, ptr %80, align 4, !tbaa !15
  %1918 = load i32, ptr %81, align 4, !tbaa !15
  %1919 = load i8, ptr %79, align 1, !tbaa !22
  %1920 = zext i8 %1919 to i32
  %1921 = sub i32 %1918, %1920
  %1922 = trunc i32 %1921 to i8
  store i8 %1922, ptr %23, align 1, !tbaa !22
  %1923 = load i32, ptr %80, align 4, !tbaa !15
  %1924 = load i8, ptr %79, align 1, !tbaa !22
  %1925 = zext i8 %1924 to i32
  %1926 = sub i32 %1923, %1925
  %1927 = trunc i32 %1926 to i8
  store i8 %1927, ptr %24, align 1, !tbaa !22
  %1928 = load i8, ptr %23, align 1, !tbaa !22
  %1929 = sext i8 %1928 to i32
  %1930 = load ptr, ptr %77, align 8, !tbaa !5
  %1931 = load i64, ptr %21, align 8, !tbaa !21
  %1932 = load i32, ptr %10, align 4, !tbaa !15
  %1933 = load i32, ptr %15, align 4, !tbaa !15
  %1934 = mul nsw i32 %1932, %1933
  %1935 = sext i32 %1934 to i64
  %1936 = add nsw i64 %1931, %1935
  %1937 = load i32, ptr %12, align 4, !tbaa !15
  %1938 = mul nsw i32 %1937, 8
  %1939 = sext i32 %1938 to i64
  %1940 = add nsw i64 %1936, %1939
  %1941 = add nsw i64 %1940, 3
  %1942 = getelementptr inbounds i8, ptr %1930, i64 %1941
  %1943 = load i8, ptr %1942, align 1, !tbaa !22
  %1944 = zext i8 %1943 to i32
  %1945 = mul nsw i32 %1929, %1944
  %1946 = load ptr, ptr %78, align 8, !tbaa !5
  %1947 = load i32, ptr %10, align 4, !tbaa !15
  %1948 = load i32, ptr %16, align 4, !tbaa !15
  %1949 = mul nsw i32 %1947, %1948
  %1950 = load i32, ptr %11, align 4, !tbaa !15
  %1951 = add nsw i32 %1949, %1950
  %1952 = sext i32 %1951 to i64
  %1953 = getelementptr inbounds i32, ptr %1946, i64 %1952
  %1954 = load i32, ptr %1953, align 4, !tbaa !15
  %1955 = add nsw i32 %1954, %1945
  store i32 %1955, ptr %1953, align 4, !tbaa !15
  %1956 = load i8, ptr %24, align 1, !tbaa !22
  %1957 = sext i8 %1956 to i32
  %1958 = load ptr, ptr %77, align 8, !tbaa !5
  %1959 = load i64, ptr %21, align 8, !tbaa !21
  %1960 = load i32, ptr %10, align 4, !tbaa !15
  %1961 = load i32, ptr %15, align 4, !tbaa !15
  %1962 = mul nsw i32 %1960, %1961
  %1963 = sext i32 %1962 to i64
  %1964 = add nsw i64 %1959, %1963
  %1965 = load i32, ptr %12, align 4, !tbaa !15
  %1966 = mul nsw i32 %1965, 8
  %1967 = sext i32 %1966 to i64
  %1968 = add nsw i64 %1964, %1967
  %1969 = add nsw i64 %1968, 7
  %1970 = getelementptr inbounds i8, ptr %1958, i64 %1969
  %1971 = load i8, ptr %1970, align 1, !tbaa !22
  %1972 = zext i8 %1971 to i32
  %1973 = mul nsw i32 %1957, %1972
  %1974 = load ptr, ptr %78, align 8, !tbaa !5
  %1975 = load i32, ptr %10, align 4, !tbaa !15
  %1976 = load i32, ptr %16, align 4, !tbaa !15
  %1977 = mul nsw i32 %1975, %1976
  %1978 = load i32, ptr %11, align 4, !tbaa !15
  %1979 = add nsw i32 %1977, %1978
  %1980 = sext i32 %1979 to i64
  %1981 = getelementptr inbounds i32, ptr %1974, i64 %1980
  %1982 = load i32, ptr %1981, align 4, !tbaa !15
  %1983 = add nsw i32 %1982, %1973
  store i32 %1983, ptr %1981, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #6
  br label %1984

1984:                                             ; preds = %1631
  %1985 = load i32, ptr %12, align 4, !tbaa !15
  %1986 = add nsw i32 %1985, 1
  store i32 %1986, ptr %12, align 4, !tbaa !15
  br label %1626, !llvm.loop !58

1987:                                             ; preds = %1626
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #6
  br label %1988

1988:                                             ; preds = %1987
  %1989 = load i32, ptr %9, align 4, !tbaa !15
  %1990 = add nsw i32 %1989, 1
  store i32 %1990, ptr %9, align 4, !tbaa !15
  br label %1612, !llvm.loop !59

1991:                                             ; preds = %1612
  br label %1992

1992:                                             ; preds = %1991
  %1993 = load i32, ptr %11, align 4, !tbaa !15
  %1994 = add nsw i32 %1993, 1
  store i32 %1994, ptr %11, align 4, !tbaa !15
  br label %1593, !llvm.loop !60

1995:                                             ; preds = %1593
  br label %1996

1996:                                             ; preds = %1995
  %1997 = load i32, ptr %10, align 4, !tbaa !15
  %1998 = add nsw i32 %1997, 1
  store i32 %1998, ptr %10, align 4, !tbaa !15
  br label %1588, !llvm.loop !61

1999:                                             ; preds = %1588
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  br label %8156

2000:                                             ; preds = %1579
  %2001 = load ptr, ptr %5, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2001, i32 0, i32 0
  %2003 = load i32, ptr %2002, align 8, !tbaa !26
  %2004 = icmp eq i32 %2003, 0
  br i1 %2004, label %2005, label %2236

2005:                                             ; preds = %2000
  %2006 = load ptr, ptr %5, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2006, i32 0, i32 1
  %2008 = load i32, ptr %2007, align 4, !tbaa !27
  %2009 = icmp eq i32 %2008, 0
  br i1 %2009, label %2010, label %2236

2010:                                             ; preds = %2005
  %2011 = load ptr, ptr %5, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2011, i32 0, i32 2
  %2013 = load i32, ptr %2012, align 8, !tbaa !29
  %2014 = icmp eq i32 %2013, 0
  br i1 %2014, label %2015, label %2236

2015:                                             ; preds = %2010
  %2016 = load ptr, ptr %5, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2016, i32 0, i32 3
  %2018 = load i32, ptr %2017, align 4, !tbaa !62
  %2019 = icmp eq i32 %2018, 0
  br i1 %2019, label %2020, label %2236

2020:                                             ; preds = %2015
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #6
  %2021 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %2021, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #6
  %2022 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2022, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #6
  %2023 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2023, ptr %84, align 8, !tbaa !5
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %2024

2024:                                             ; preds = %2232, %2020
  %2025 = load i32, ptr %10, align 4, !tbaa !15
  %2026 = load i32, ptr %18, align 4, !tbaa !15
  %2027 = icmp slt i32 %2025, %2026
  br i1 %2027, label %2028, label %2235

2028:                                             ; preds = %2024
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %2029

2029:                                             ; preds = %2228, %2028
  %2030 = load i32, ptr %11, align 4, !tbaa !15
  %2031 = load i32, ptr %17, align 4, !tbaa !15
  %2032 = icmp slt i32 %2030, %2031
  br i1 %2032, label %2033, label %2231

2033:                                             ; preds = %2029
  %2034 = load ptr, ptr %5, align 8, !tbaa !5
  %2035 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2034, i32 0, i32 13
  %2036 = load double, ptr %2035, align 8, !tbaa !28
  %2037 = fcmp oeq double %2036, 0.000000e+00
  br i1 %2037, label %2038, label %2047

2038:                                             ; preds = %2033
  %2039 = load ptr, ptr %84, align 8, !tbaa !5
  %2040 = load i32, ptr %10, align 4, !tbaa !15
  %2041 = load i32, ptr %16, align 4, !tbaa !15
  %2042 = mul nsw i32 %2040, %2041
  %2043 = load i32, ptr %11, align 4, !tbaa !15
  %2044 = add nsw i32 %2042, %2043
  %2045 = sext i32 %2044 to i64
  %2046 = getelementptr inbounds double, ptr %2039, i64 %2045
  store double 0.000000e+00, ptr %2046, align 8, !tbaa !63
  br label %2047

2047:                                             ; preds = %2038, %2033
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %2048

2048:                                             ; preds = %2224, %2047
  %2049 = load i32, ptr %9, align 4, !tbaa !15
  %2050 = load ptr, ptr %5, align 8, !tbaa !5
  %2051 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2050, i32 0, i32 26
  %2052 = load i32, ptr %2051, align 8, !tbaa !45
  %2053 = icmp slt i32 %2049, %2052
  br i1 %2053, label %2054, label %2227

2054:                                             ; preds = %2048
  %2055 = load i32, ptr %9, align 4, !tbaa !15
  %2056 = sext i32 %2055 to i64
  %2057 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %82, ptr noundef %83, ptr noundef %20, ptr noundef %21, i64 noundef %2056, ptr noundef %2057)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %2058

2058:                                             ; preds = %2220, %2054
  %2059 = load i32, ptr %12, align 4, !tbaa !15
  %2060 = load i32, ptr %19, align 4, !tbaa !15
  %2061 = icmp slt i32 %2059, %2060
  br i1 %2061, label %2062, label %2223

2062:                                             ; preds = %2058
  %2063 = load ptr, ptr %5, align 8, !tbaa !5
  %2064 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2063, i32 0, i32 15
  %2065 = load i32, ptr %2064, align 4, !tbaa !64
  %2066 = icmp eq i32 %2065, 0
  br i1 %2066, label %2067, label %2143

2067:                                             ; preds = %2062
  %2068 = load ptr, ptr %5, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2068, i32 0, i32 14
  %2070 = load i32, ptr %2069, align 8, !tbaa !65
  %2071 = icmp eq i32 %2070, 0
  br i1 %2071, label %2072, label %2107

2072:                                             ; preds = %2067
  %2073 = load ptr, ptr %82, align 8, !tbaa !5
  %2074 = load i64, ptr %20, align 8, !tbaa !21
  %2075 = load i32, ptr %12, align 4, !tbaa !15
  %2076 = load i32, ptr %14, align 4, !tbaa !15
  %2077 = mul nsw i32 %2075, %2076
  %2078 = sext i32 %2077 to i64
  %2079 = add nsw i64 %2074, %2078
  %2080 = load i32, ptr %11, align 4, !tbaa !15
  %2081 = sext i32 %2080 to i64
  %2082 = add nsw i64 %2079, %2081
  %2083 = getelementptr inbounds double, ptr %2073, i64 %2082
  %2084 = load double, ptr %2083, align 8, !tbaa !63
  %2085 = load ptr, ptr %83, align 8, !tbaa !5
  %2086 = load i64, ptr %21, align 8, !tbaa !21
  %2087 = load i32, ptr %10, align 4, !tbaa !15
  %2088 = load i32, ptr %15, align 4, !tbaa !15
  %2089 = mul nsw i32 %2087, %2088
  %2090 = sext i32 %2089 to i64
  %2091 = add nsw i64 %2086, %2090
  %2092 = load i32, ptr %12, align 4, !tbaa !15
  %2093 = sext i32 %2092 to i64
  %2094 = add nsw i64 %2091, %2093
  %2095 = getelementptr inbounds double, ptr %2085, i64 %2094
  %2096 = load double, ptr %2095, align 8, !tbaa !63
  %2097 = load ptr, ptr %84, align 8, !tbaa !5
  %2098 = load i32, ptr %10, align 4, !tbaa !15
  %2099 = load i32, ptr %16, align 4, !tbaa !15
  %2100 = mul nsw i32 %2098, %2099
  %2101 = load i32, ptr %11, align 4, !tbaa !15
  %2102 = add nsw i32 %2100, %2101
  %2103 = sext i32 %2102 to i64
  %2104 = getelementptr inbounds double, ptr %2097, i64 %2103
  %2105 = load double, ptr %2104, align 8, !tbaa !63
  %2106 = call double @llvm.fmuladd.f64(double %2084, double %2096, double %2105)
  store double %2106, ptr %2104, align 8, !tbaa !63
  br label %2142

2107:                                             ; preds = %2067
  %2108 = load ptr, ptr %82, align 8, !tbaa !5
  %2109 = load i64, ptr %20, align 8, !tbaa !21
  %2110 = load i32, ptr %11, align 4, !tbaa !15
  %2111 = load i32, ptr %14, align 4, !tbaa !15
  %2112 = mul nsw i32 %2110, %2111
  %2113 = sext i32 %2112 to i64
  %2114 = add nsw i64 %2109, %2113
  %2115 = load i32, ptr %12, align 4, !tbaa !15
  %2116 = sext i32 %2115 to i64
  %2117 = add nsw i64 %2114, %2116
  %2118 = getelementptr inbounds double, ptr %2108, i64 %2117
  %2119 = load double, ptr %2118, align 8, !tbaa !63
  %2120 = load ptr, ptr %83, align 8, !tbaa !5
  %2121 = load i64, ptr %21, align 8, !tbaa !21
  %2122 = load i32, ptr %10, align 4, !tbaa !15
  %2123 = load i32, ptr %15, align 4, !tbaa !15
  %2124 = mul nsw i32 %2122, %2123
  %2125 = sext i32 %2124 to i64
  %2126 = add nsw i64 %2121, %2125
  %2127 = load i32, ptr %12, align 4, !tbaa !15
  %2128 = sext i32 %2127 to i64
  %2129 = add nsw i64 %2126, %2128
  %2130 = getelementptr inbounds double, ptr %2120, i64 %2129
  %2131 = load double, ptr %2130, align 8, !tbaa !63
  %2132 = load ptr, ptr %84, align 8, !tbaa !5
  %2133 = load i32, ptr %10, align 4, !tbaa !15
  %2134 = load i32, ptr %16, align 4, !tbaa !15
  %2135 = mul nsw i32 %2133, %2134
  %2136 = load i32, ptr %11, align 4, !tbaa !15
  %2137 = add nsw i32 %2135, %2136
  %2138 = sext i32 %2137 to i64
  %2139 = getelementptr inbounds double, ptr %2132, i64 %2138
  %2140 = load double, ptr %2139, align 8, !tbaa !63
  %2141 = call double @llvm.fmuladd.f64(double %2119, double %2131, double %2140)
  store double %2141, ptr %2139, align 8, !tbaa !63
  br label %2142

2142:                                             ; preds = %2107, %2072
  br label %2219

2143:                                             ; preds = %2062
  %2144 = load ptr, ptr %5, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2144, i32 0, i32 14
  %2146 = load i32, ptr %2145, align 8, !tbaa !65
  %2147 = icmp eq i32 %2146, 0
  br i1 %2147, label %2148, label %2183

2148:                                             ; preds = %2143
  %2149 = load ptr, ptr %82, align 8, !tbaa !5
  %2150 = load i64, ptr %20, align 8, !tbaa !21
  %2151 = load i32, ptr %12, align 4, !tbaa !15
  %2152 = load i32, ptr %14, align 4, !tbaa !15
  %2153 = mul nsw i32 %2151, %2152
  %2154 = sext i32 %2153 to i64
  %2155 = add nsw i64 %2150, %2154
  %2156 = load i32, ptr %11, align 4, !tbaa !15
  %2157 = sext i32 %2156 to i64
  %2158 = add nsw i64 %2155, %2157
  %2159 = getelementptr inbounds double, ptr %2149, i64 %2158
  %2160 = load double, ptr %2159, align 8, !tbaa !63
  %2161 = load ptr, ptr %83, align 8, !tbaa !5
  %2162 = load i64, ptr %21, align 8, !tbaa !21
  %2163 = load i32, ptr %12, align 4, !tbaa !15
  %2164 = load i32, ptr %15, align 4, !tbaa !15
  %2165 = mul nsw i32 %2163, %2164
  %2166 = sext i32 %2165 to i64
  %2167 = add nsw i64 %2162, %2166
  %2168 = load i32, ptr %10, align 4, !tbaa !15
  %2169 = sext i32 %2168 to i64
  %2170 = add nsw i64 %2167, %2169
  %2171 = getelementptr inbounds double, ptr %2161, i64 %2170
  %2172 = load double, ptr %2171, align 8, !tbaa !63
  %2173 = load ptr, ptr %84, align 8, !tbaa !5
  %2174 = load i32, ptr %10, align 4, !tbaa !15
  %2175 = load i32, ptr %16, align 4, !tbaa !15
  %2176 = mul nsw i32 %2174, %2175
  %2177 = load i32, ptr %11, align 4, !tbaa !15
  %2178 = add nsw i32 %2176, %2177
  %2179 = sext i32 %2178 to i64
  %2180 = getelementptr inbounds double, ptr %2173, i64 %2179
  %2181 = load double, ptr %2180, align 8, !tbaa !63
  %2182 = call double @llvm.fmuladd.f64(double %2160, double %2172, double %2181)
  store double %2182, ptr %2180, align 8, !tbaa !63
  br label %2218

2183:                                             ; preds = %2143
  %2184 = load ptr, ptr %82, align 8, !tbaa !5
  %2185 = load i64, ptr %20, align 8, !tbaa !21
  %2186 = load i32, ptr %11, align 4, !tbaa !15
  %2187 = load i32, ptr %14, align 4, !tbaa !15
  %2188 = mul nsw i32 %2186, %2187
  %2189 = sext i32 %2188 to i64
  %2190 = add nsw i64 %2185, %2189
  %2191 = load i32, ptr %12, align 4, !tbaa !15
  %2192 = sext i32 %2191 to i64
  %2193 = add nsw i64 %2190, %2192
  %2194 = getelementptr inbounds double, ptr %2184, i64 %2193
  %2195 = load double, ptr %2194, align 8, !tbaa !63
  %2196 = load ptr, ptr %83, align 8, !tbaa !5
  %2197 = load i64, ptr %21, align 8, !tbaa !21
  %2198 = load i32, ptr %12, align 4, !tbaa !15
  %2199 = load i32, ptr %15, align 4, !tbaa !15
  %2200 = mul nsw i32 %2198, %2199
  %2201 = sext i32 %2200 to i64
  %2202 = add nsw i64 %2197, %2201
  %2203 = load i32, ptr %10, align 4, !tbaa !15
  %2204 = sext i32 %2203 to i64
  %2205 = add nsw i64 %2202, %2204
  %2206 = getelementptr inbounds double, ptr %2196, i64 %2205
  %2207 = load double, ptr %2206, align 8, !tbaa !63
  %2208 = load ptr, ptr %84, align 8, !tbaa !5
  %2209 = load i32, ptr %10, align 4, !tbaa !15
  %2210 = load i32, ptr %16, align 4, !tbaa !15
  %2211 = mul nsw i32 %2209, %2210
  %2212 = load i32, ptr %11, align 4, !tbaa !15
  %2213 = add nsw i32 %2211, %2212
  %2214 = sext i32 %2213 to i64
  %2215 = getelementptr inbounds double, ptr %2208, i64 %2214
  %2216 = load double, ptr %2215, align 8, !tbaa !63
  %2217 = call double @llvm.fmuladd.f64(double %2195, double %2207, double %2216)
  store double %2217, ptr %2215, align 8, !tbaa !63
  br label %2218

2218:                                             ; preds = %2183, %2148
  br label %2219

2219:                                             ; preds = %2218, %2142
  br label %2220

2220:                                             ; preds = %2219
  %2221 = load i32, ptr %12, align 4, !tbaa !15
  %2222 = add nsw i32 %2221, 1
  store i32 %2222, ptr %12, align 4, !tbaa !15
  br label %2058, !llvm.loop !66

2223:                                             ; preds = %2058
  br label %2224

2224:                                             ; preds = %2223
  %2225 = load i32, ptr %9, align 4, !tbaa !15
  %2226 = add nsw i32 %2225, 1
  store i32 %2226, ptr %9, align 4, !tbaa !15
  br label %2048, !llvm.loop !67

2227:                                             ; preds = %2048
  br label %2228

2228:                                             ; preds = %2227
  %2229 = load i32, ptr %11, align 4, !tbaa !15
  %2230 = add nsw i32 %2229, 1
  store i32 %2230, ptr %11, align 4, !tbaa !15
  br label %2029, !llvm.loop !68

2231:                                             ; preds = %2029
  br label %2232

2232:                                             ; preds = %2231
  %2233 = load i32, ptr %10, align 4, !tbaa !15
  %2234 = add nsw i32 %2233, 1
  store i32 %2234, ptr %10, align 4, !tbaa !15
  br label %2024, !llvm.loop !69

2235:                                             ; preds = %2024
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #6
  br label %8155

2236:                                             ; preds = %2015, %2010, %2005, %2000
  %2237 = load ptr, ptr %5, align 8, !tbaa !5
  %2238 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2237, i32 0, i32 0
  %2239 = load i32, ptr %2238, align 8, !tbaa !26
  %2240 = icmp eq i32 %2239, 1
  br i1 %2240, label %2241, label %2472

2241:                                             ; preds = %2236
  %2242 = load ptr, ptr %5, align 8, !tbaa !5
  %2243 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2242, i32 0, i32 1
  %2244 = load i32, ptr %2243, align 4, !tbaa !27
  %2245 = icmp eq i32 %2244, 1
  br i1 %2245, label %2246, label %2472

2246:                                             ; preds = %2241
  %2247 = load ptr, ptr %5, align 8, !tbaa !5
  %2248 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2247, i32 0, i32 2
  %2249 = load i32, ptr %2248, align 8, !tbaa !29
  %2250 = icmp eq i32 %2249, 1
  br i1 %2250, label %2251, label %2472

2251:                                             ; preds = %2246
  %2252 = load ptr, ptr %5, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2252, i32 0, i32 3
  %2254 = load i32, ptr %2253, align 4, !tbaa !62
  %2255 = icmp eq i32 %2254, 1
  br i1 %2255, label %2256, label %2472

2256:                                             ; preds = %2251
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #6
  %2257 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %2257, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #6
  %2258 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2258, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #6
  %2259 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2259, ptr %87, align 8, !tbaa !5
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %2260

2260:                                             ; preds = %2468, %2256
  %2261 = load i32, ptr %10, align 4, !tbaa !15
  %2262 = load i32, ptr %18, align 4, !tbaa !15
  %2263 = icmp slt i32 %2261, %2262
  br i1 %2263, label %2264, label %2471

2264:                                             ; preds = %2260
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %2265

2265:                                             ; preds = %2464, %2264
  %2266 = load i32, ptr %11, align 4, !tbaa !15
  %2267 = load i32, ptr %17, align 4, !tbaa !15
  %2268 = icmp slt i32 %2266, %2267
  br i1 %2268, label %2269, label %2467

2269:                                             ; preds = %2265
  %2270 = load ptr, ptr %5, align 8, !tbaa !5
  %2271 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2270, i32 0, i32 13
  %2272 = load double, ptr %2271, align 8, !tbaa !28
  %2273 = fcmp oeq double %2272, 0.000000e+00
  br i1 %2273, label %2274, label %2283

2274:                                             ; preds = %2269
  %2275 = load ptr, ptr %87, align 8, !tbaa !5
  %2276 = load i32, ptr %10, align 4, !tbaa !15
  %2277 = load i32, ptr %16, align 4, !tbaa !15
  %2278 = mul nsw i32 %2276, %2277
  %2279 = load i32, ptr %11, align 4, !tbaa !15
  %2280 = add nsw i32 %2278, %2279
  %2281 = sext i32 %2280 to i64
  %2282 = getelementptr inbounds float, ptr %2275, i64 %2281
  store float 0.000000e+00, ptr %2282, align 4, !tbaa !30
  br label %2283

2283:                                             ; preds = %2274, %2269
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %2284

2284:                                             ; preds = %2460, %2283
  %2285 = load i32, ptr %9, align 4, !tbaa !15
  %2286 = load ptr, ptr %5, align 8, !tbaa !5
  %2287 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2286, i32 0, i32 26
  %2288 = load i32, ptr %2287, align 8, !tbaa !45
  %2289 = icmp slt i32 %2285, %2288
  br i1 %2289, label %2290, label %2463

2290:                                             ; preds = %2284
  %2291 = load i32, ptr %9, align 4, !tbaa !15
  %2292 = sext i32 %2291 to i64
  %2293 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %85, ptr noundef %86, ptr noundef %20, ptr noundef %21, i64 noundef %2292, ptr noundef %2293)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %2294

2294:                                             ; preds = %2456, %2290
  %2295 = load i32, ptr %12, align 4, !tbaa !15
  %2296 = load i32, ptr %19, align 4, !tbaa !15
  %2297 = icmp slt i32 %2295, %2296
  br i1 %2297, label %2298, label %2459

2298:                                             ; preds = %2294
  %2299 = load ptr, ptr %5, align 8, !tbaa !5
  %2300 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2299, i32 0, i32 15
  %2301 = load i32, ptr %2300, align 4, !tbaa !64
  %2302 = icmp eq i32 %2301, 0
  br i1 %2302, label %2303, label %2379

2303:                                             ; preds = %2298
  %2304 = load ptr, ptr %5, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2304, i32 0, i32 14
  %2306 = load i32, ptr %2305, align 8, !tbaa !65
  %2307 = icmp eq i32 %2306, 0
  br i1 %2307, label %2308, label %2343

2308:                                             ; preds = %2303
  %2309 = load ptr, ptr %85, align 8, !tbaa !5
  %2310 = load i64, ptr %20, align 8, !tbaa !21
  %2311 = load i32, ptr %12, align 4, !tbaa !15
  %2312 = load i32, ptr %14, align 4, !tbaa !15
  %2313 = mul nsw i32 %2311, %2312
  %2314 = sext i32 %2313 to i64
  %2315 = add nsw i64 %2310, %2314
  %2316 = load i32, ptr %11, align 4, !tbaa !15
  %2317 = sext i32 %2316 to i64
  %2318 = add nsw i64 %2315, %2317
  %2319 = getelementptr inbounds float, ptr %2309, i64 %2318
  %2320 = load float, ptr %2319, align 4, !tbaa !30
  %2321 = load ptr, ptr %86, align 8, !tbaa !5
  %2322 = load i64, ptr %21, align 8, !tbaa !21
  %2323 = load i32, ptr %10, align 4, !tbaa !15
  %2324 = load i32, ptr %15, align 4, !tbaa !15
  %2325 = mul nsw i32 %2323, %2324
  %2326 = sext i32 %2325 to i64
  %2327 = add nsw i64 %2322, %2326
  %2328 = load i32, ptr %12, align 4, !tbaa !15
  %2329 = sext i32 %2328 to i64
  %2330 = add nsw i64 %2327, %2329
  %2331 = getelementptr inbounds float, ptr %2321, i64 %2330
  %2332 = load float, ptr %2331, align 4, !tbaa !30
  %2333 = load ptr, ptr %87, align 8, !tbaa !5
  %2334 = load i32, ptr %10, align 4, !tbaa !15
  %2335 = load i32, ptr %16, align 4, !tbaa !15
  %2336 = mul nsw i32 %2334, %2335
  %2337 = load i32, ptr %11, align 4, !tbaa !15
  %2338 = add nsw i32 %2336, %2337
  %2339 = sext i32 %2338 to i64
  %2340 = getelementptr inbounds float, ptr %2333, i64 %2339
  %2341 = load float, ptr %2340, align 4, !tbaa !30
  %2342 = call float @llvm.fmuladd.f32(float %2320, float %2332, float %2341)
  store float %2342, ptr %2340, align 4, !tbaa !30
  br label %2378

2343:                                             ; preds = %2303
  %2344 = load ptr, ptr %85, align 8, !tbaa !5
  %2345 = load i64, ptr %20, align 8, !tbaa !21
  %2346 = load i32, ptr %11, align 4, !tbaa !15
  %2347 = load i32, ptr %14, align 4, !tbaa !15
  %2348 = mul nsw i32 %2346, %2347
  %2349 = sext i32 %2348 to i64
  %2350 = add nsw i64 %2345, %2349
  %2351 = load i32, ptr %12, align 4, !tbaa !15
  %2352 = sext i32 %2351 to i64
  %2353 = add nsw i64 %2350, %2352
  %2354 = getelementptr inbounds float, ptr %2344, i64 %2353
  %2355 = load float, ptr %2354, align 4, !tbaa !30
  %2356 = load ptr, ptr %86, align 8, !tbaa !5
  %2357 = load i64, ptr %21, align 8, !tbaa !21
  %2358 = load i32, ptr %10, align 4, !tbaa !15
  %2359 = load i32, ptr %15, align 4, !tbaa !15
  %2360 = mul nsw i32 %2358, %2359
  %2361 = sext i32 %2360 to i64
  %2362 = add nsw i64 %2357, %2361
  %2363 = load i32, ptr %12, align 4, !tbaa !15
  %2364 = sext i32 %2363 to i64
  %2365 = add nsw i64 %2362, %2364
  %2366 = getelementptr inbounds float, ptr %2356, i64 %2365
  %2367 = load float, ptr %2366, align 4, !tbaa !30
  %2368 = load ptr, ptr %87, align 8, !tbaa !5
  %2369 = load i32, ptr %10, align 4, !tbaa !15
  %2370 = load i32, ptr %16, align 4, !tbaa !15
  %2371 = mul nsw i32 %2369, %2370
  %2372 = load i32, ptr %11, align 4, !tbaa !15
  %2373 = add nsw i32 %2371, %2372
  %2374 = sext i32 %2373 to i64
  %2375 = getelementptr inbounds float, ptr %2368, i64 %2374
  %2376 = load float, ptr %2375, align 4, !tbaa !30
  %2377 = call float @llvm.fmuladd.f32(float %2355, float %2367, float %2376)
  store float %2377, ptr %2375, align 4, !tbaa !30
  br label %2378

2378:                                             ; preds = %2343, %2308
  br label %2455

2379:                                             ; preds = %2298
  %2380 = load ptr, ptr %5, align 8, !tbaa !5
  %2381 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2380, i32 0, i32 14
  %2382 = load i32, ptr %2381, align 8, !tbaa !65
  %2383 = icmp eq i32 %2382, 0
  br i1 %2383, label %2384, label %2419

2384:                                             ; preds = %2379
  %2385 = load ptr, ptr %85, align 8, !tbaa !5
  %2386 = load i64, ptr %20, align 8, !tbaa !21
  %2387 = load i32, ptr %12, align 4, !tbaa !15
  %2388 = load i32, ptr %14, align 4, !tbaa !15
  %2389 = mul nsw i32 %2387, %2388
  %2390 = sext i32 %2389 to i64
  %2391 = add nsw i64 %2386, %2390
  %2392 = load i32, ptr %11, align 4, !tbaa !15
  %2393 = sext i32 %2392 to i64
  %2394 = add nsw i64 %2391, %2393
  %2395 = getelementptr inbounds float, ptr %2385, i64 %2394
  %2396 = load float, ptr %2395, align 4, !tbaa !30
  %2397 = load ptr, ptr %86, align 8, !tbaa !5
  %2398 = load i64, ptr %21, align 8, !tbaa !21
  %2399 = load i32, ptr %12, align 4, !tbaa !15
  %2400 = load i32, ptr %15, align 4, !tbaa !15
  %2401 = mul nsw i32 %2399, %2400
  %2402 = sext i32 %2401 to i64
  %2403 = add nsw i64 %2398, %2402
  %2404 = load i32, ptr %10, align 4, !tbaa !15
  %2405 = sext i32 %2404 to i64
  %2406 = add nsw i64 %2403, %2405
  %2407 = getelementptr inbounds float, ptr %2397, i64 %2406
  %2408 = load float, ptr %2407, align 4, !tbaa !30
  %2409 = load ptr, ptr %87, align 8, !tbaa !5
  %2410 = load i32, ptr %10, align 4, !tbaa !15
  %2411 = load i32, ptr %16, align 4, !tbaa !15
  %2412 = mul nsw i32 %2410, %2411
  %2413 = load i32, ptr %11, align 4, !tbaa !15
  %2414 = add nsw i32 %2412, %2413
  %2415 = sext i32 %2414 to i64
  %2416 = getelementptr inbounds float, ptr %2409, i64 %2415
  %2417 = load float, ptr %2416, align 4, !tbaa !30
  %2418 = call float @llvm.fmuladd.f32(float %2396, float %2408, float %2417)
  store float %2418, ptr %2416, align 4, !tbaa !30
  br label %2454

2419:                                             ; preds = %2379
  %2420 = load ptr, ptr %85, align 8, !tbaa !5
  %2421 = load i64, ptr %20, align 8, !tbaa !21
  %2422 = load i32, ptr %11, align 4, !tbaa !15
  %2423 = load i32, ptr %14, align 4, !tbaa !15
  %2424 = mul nsw i32 %2422, %2423
  %2425 = sext i32 %2424 to i64
  %2426 = add nsw i64 %2421, %2425
  %2427 = load i32, ptr %12, align 4, !tbaa !15
  %2428 = sext i32 %2427 to i64
  %2429 = add nsw i64 %2426, %2428
  %2430 = getelementptr inbounds float, ptr %2420, i64 %2429
  %2431 = load float, ptr %2430, align 4, !tbaa !30
  %2432 = load ptr, ptr %86, align 8, !tbaa !5
  %2433 = load i64, ptr %21, align 8, !tbaa !21
  %2434 = load i32, ptr %12, align 4, !tbaa !15
  %2435 = load i32, ptr %15, align 4, !tbaa !15
  %2436 = mul nsw i32 %2434, %2435
  %2437 = sext i32 %2436 to i64
  %2438 = add nsw i64 %2433, %2437
  %2439 = load i32, ptr %10, align 4, !tbaa !15
  %2440 = sext i32 %2439 to i64
  %2441 = add nsw i64 %2438, %2440
  %2442 = getelementptr inbounds float, ptr %2432, i64 %2441
  %2443 = load float, ptr %2442, align 4, !tbaa !30
  %2444 = load ptr, ptr %87, align 8, !tbaa !5
  %2445 = load i32, ptr %10, align 4, !tbaa !15
  %2446 = load i32, ptr %16, align 4, !tbaa !15
  %2447 = mul nsw i32 %2445, %2446
  %2448 = load i32, ptr %11, align 4, !tbaa !15
  %2449 = add nsw i32 %2447, %2448
  %2450 = sext i32 %2449 to i64
  %2451 = getelementptr inbounds float, ptr %2444, i64 %2450
  %2452 = load float, ptr %2451, align 4, !tbaa !30
  %2453 = call float @llvm.fmuladd.f32(float %2431, float %2443, float %2452)
  store float %2453, ptr %2451, align 4, !tbaa !30
  br label %2454

2454:                                             ; preds = %2419, %2384
  br label %2455

2455:                                             ; preds = %2454, %2378
  br label %2456

2456:                                             ; preds = %2455
  %2457 = load i32, ptr %12, align 4, !tbaa !15
  %2458 = add nsw i32 %2457, 1
  store i32 %2458, ptr %12, align 4, !tbaa !15
  br label %2294, !llvm.loop !70

2459:                                             ; preds = %2294
  br label %2460

2460:                                             ; preds = %2459
  %2461 = load i32, ptr %9, align 4, !tbaa !15
  %2462 = add nsw i32 %2461, 1
  store i32 %2462, ptr %9, align 4, !tbaa !15
  br label %2284, !llvm.loop !71

2463:                                             ; preds = %2284
  br label %2464

2464:                                             ; preds = %2463
  %2465 = load i32, ptr %11, align 4, !tbaa !15
  %2466 = add nsw i32 %2465, 1
  store i32 %2466, ptr %11, align 4, !tbaa !15
  br label %2265, !llvm.loop !72

2467:                                             ; preds = %2265
  br label %2468

2468:                                             ; preds = %2467
  %2469 = load i32, ptr %10, align 4, !tbaa !15
  %2470 = add nsw i32 %2469, 1
  store i32 %2470, ptr %10, align 4, !tbaa !15
  br label %2260, !llvm.loop !73

2471:                                             ; preds = %2260
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #6
  br label %8154

2472:                                             ; preds = %2251, %2246, %2241, %2236
  %2473 = load ptr, ptr %5, align 8, !tbaa !5
  %2474 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2473, i32 0, i32 0
  %2475 = load i32, ptr %2474, align 8, !tbaa !26
  %2476 = icmp eq i32 %2475, 10
  br i1 %2476, label %2477, label %2615

2477:                                             ; preds = %2472
  %2478 = load ptr, ptr %5, align 8, !tbaa !5
  %2479 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2478, i32 0, i32 1
  %2480 = load i32, ptr %2479, align 4, !tbaa !27
  %2481 = icmp eq i32 %2480, 10
  br i1 %2481, label %2482, label %2615

2482:                                             ; preds = %2477
  %2483 = load ptr, ptr %5, align 8, !tbaa !5
  %2484 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2483, i32 0, i32 2
  %2485 = load i32, ptr %2484, align 8, !tbaa !29
  %2486 = icmp eq i32 %2485, 8
  br i1 %2486, label %2487, label %2615

2487:                                             ; preds = %2482
  %2488 = load ptr, ptr %5, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2488, i32 0, i32 3
  %2490 = load i32, ptr %2489, align 4, !tbaa !62
  %2491 = icmp eq i32 %2490, 8
  br i1 %2491, label %2492, label %2615

2492:                                             ; preds = %2487
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #6
  %2493 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %2493, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #6
  %2494 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2494, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #6
  %2495 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2495, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #6
  %2496 = load ptr, ptr %5, align 8, !tbaa !5
  %2497 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2496, i32 0, i32 0
  %2498 = load i32, ptr %2497, align 8, !tbaa !26
  %2499 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %2498)
  store i32 %2499, ptr %91, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %2500

2500:                                             ; preds = %2611, %2492
  %2501 = load i32, ptr %10, align 4, !tbaa !15
  %2502 = load i32, ptr %18, align 4, !tbaa !15
  %2503 = icmp slt i32 %2501, %2502
  br i1 %2503, label %2504, label %2614

2504:                                             ; preds = %2500
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %2505

2505:                                             ; preds = %2607, %2504
  %2506 = load i32, ptr %11, align 4, !tbaa !15
  %2507 = load i32, ptr %17, align 4, !tbaa !15
  %2508 = icmp slt i32 %2506, %2507
  br i1 %2508, label %2509, label %2610

2509:                                             ; preds = %2505
  %2510 = load ptr, ptr %5, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2510, i32 0, i32 13
  %2512 = load double, ptr %2511, align 8, !tbaa !28
  %2513 = fcmp oeq double %2512, 0.000000e+00
  br i1 %2513, label %2514, label %2523

2514:                                             ; preds = %2509
  %2515 = load ptr, ptr %90, align 8, !tbaa !5
  %2516 = load i32, ptr %10, align 4, !tbaa !15
  %2517 = load i32, ptr %16, align 4, !tbaa !15
  %2518 = mul nsw i32 %2516, %2517
  %2519 = load i32, ptr %11, align 4, !tbaa !15
  %2520 = add nsw i32 %2518, %2519
  %2521 = sext i32 %2520 to i64
  %2522 = getelementptr inbounds i32, ptr %2515, i64 %2521
  store i32 0, ptr %2522, align 4, !tbaa !15
  br label %2523

2523:                                             ; preds = %2514, %2509
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %2524

2524:                                             ; preds = %2603, %2523
  %2525 = load i32, ptr %9, align 4, !tbaa !15
  %2526 = load ptr, ptr %5, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2526, i32 0, i32 26
  %2528 = load i32, ptr %2527, align 8, !tbaa !45
  %2529 = icmp slt i32 %2525, %2528
  br i1 %2529, label %2530, label %2606

2530:                                             ; preds = %2524
  %2531 = load i32, ptr %9, align 4, !tbaa !15
  %2532 = sext i32 %2531 to i64
  %2533 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %88, ptr noundef %89, ptr noundef %20, ptr noundef %21, i64 noundef %2532, ptr noundef %2533)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %2534

2534:                                             ; preds = %2599, %2530
  %2535 = load i32, ptr %12, align 4, !tbaa !15
  %2536 = load i32, ptr %19, align 4, !tbaa !15
  %2537 = load i32, ptr %91, align 4, !tbaa !15
  %2538 = sdiv i32 %2536, %2537
  %2539 = icmp slt i32 %2535, %2538
  br i1 %2539, label %2540, label %2602

2540:                                             ; preds = %2534
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %2541

2541:                                             ; preds = %2595, %2540
  %2542 = load i32, ptr %13, align 4, !tbaa !15
  %2543 = load i32, ptr %91, align 4, !tbaa !15
  %2544 = icmp slt i32 %2542, %2543
  br i1 %2544, label %2545, label %2598

2545:                                             ; preds = %2541
  %2546 = load ptr, ptr %88, align 8, !tbaa !5
  %2547 = load i64, ptr %20, align 8, !tbaa !21
  %2548 = load i32, ptr %12, align 4, !tbaa !15
  %2549 = load i32, ptr %14, align 4, !tbaa !15
  %2550 = load i32, ptr %91, align 4, !tbaa !15
  %2551 = mul nsw i32 %2549, %2550
  %2552 = mul nsw i32 %2548, %2551
  %2553 = sext i32 %2552 to i64
  %2554 = add nsw i64 %2547, %2553
  %2555 = load i32, ptr %11, align 4, !tbaa !15
  %2556 = load i32, ptr %91, align 4, !tbaa !15
  %2557 = mul nsw i32 %2555, %2556
  %2558 = sext i32 %2557 to i64
  %2559 = add nsw i64 %2554, %2558
  %2560 = load i32, ptr %13, align 4, !tbaa !15
  %2561 = sext i32 %2560 to i64
  %2562 = add nsw i64 %2559, %2561
  %2563 = getelementptr inbounds i16, ptr %2546, i64 %2562
  %2564 = load i16, ptr %2563, align 2, !tbaa !33
  %2565 = sext i16 %2564 to i32
  %2566 = load ptr, ptr %89, align 8, !tbaa !5
  %2567 = load i64, ptr %21, align 8, !tbaa !21
  %2568 = load i32, ptr %10, align 4, !tbaa !15
  %2569 = load i32, ptr %15, align 4, !tbaa !15
  %2570 = mul nsw i32 %2568, %2569
  %2571 = sext i32 %2570 to i64
  %2572 = add nsw i64 %2567, %2571
  %2573 = load i32, ptr %12, align 4, !tbaa !15
  %2574 = load i32, ptr %91, align 4, !tbaa !15
  %2575 = mul nsw i32 %2573, %2574
  %2576 = sext i32 %2575 to i64
  %2577 = add nsw i64 %2572, %2576
  %2578 = load i32, ptr %13, align 4, !tbaa !15
  %2579 = sext i32 %2578 to i64
  %2580 = add nsw i64 %2577, %2579
  %2581 = getelementptr inbounds i16, ptr %2566, i64 %2580
  %2582 = load i16, ptr %2581, align 2, !tbaa !33
  %2583 = sext i16 %2582 to i32
  %2584 = mul nsw i32 %2565, %2583
  %2585 = load ptr, ptr %90, align 8, !tbaa !5
  %2586 = load i32, ptr %10, align 4, !tbaa !15
  %2587 = load i32, ptr %16, align 4, !tbaa !15
  %2588 = mul nsw i32 %2586, %2587
  %2589 = load i32, ptr %11, align 4, !tbaa !15
  %2590 = add nsw i32 %2588, %2589
  %2591 = sext i32 %2590 to i64
  %2592 = getelementptr inbounds i32, ptr %2585, i64 %2591
  %2593 = load i32, ptr %2592, align 4, !tbaa !15
  %2594 = add nsw i32 %2593, %2584
  store i32 %2594, ptr %2592, align 4, !tbaa !15
  br label %2595

2595:                                             ; preds = %2545
  %2596 = load i32, ptr %13, align 4, !tbaa !15
  %2597 = add nsw i32 %2596, 1
  store i32 %2597, ptr %13, align 4, !tbaa !15
  br label %2541, !llvm.loop !74

2598:                                             ; preds = %2541
  br label %2599

2599:                                             ; preds = %2598
  %2600 = load i32, ptr %12, align 4, !tbaa !15
  %2601 = add nsw i32 %2600, 1
  store i32 %2601, ptr %12, align 4, !tbaa !15
  br label %2534, !llvm.loop !75

2602:                                             ; preds = %2534
  br label %2603

2603:                                             ; preds = %2602
  %2604 = load i32, ptr %9, align 4, !tbaa !15
  %2605 = add nsw i32 %2604, 1
  store i32 %2605, ptr %9, align 4, !tbaa !15
  br label %2524, !llvm.loop !76

2606:                                             ; preds = %2524
  br label %2607

2607:                                             ; preds = %2606
  %2608 = load i32, ptr %11, align 4, !tbaa !15
  %2609 = add nsw i32 %2608, 1
  store i32 %2609, ptr %11, align 4, !tbaa !15
  br label %2505, !llvm.loop !77

2610:                                             ; preds = %2505
  br label %2611

2611:                                             ; preds = %2610
  %2612 = load i32, ptr %10, align 4, !tbaa !15
  %2613 = add nsw i32 %2612, 1
  store i32 %2613, ptr %10, align 4, !tbaa !15
  br label %2500, !llvm.loop !78

2614:                                             ; preds = %2500
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #6
  br label %8153

2615:                                             ; preds = %2487, %2482, %2477, %2472
  %2616 = load ptr, ptr %5, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2616, i32 0, i32 0
  %2618 = load i32, ptr %2617, align 8, !tbaa !26
  %2619 = icmp eq i32 %2618, 12
  br i1 %2619, label %2620, label %2768

2620:                                             ; preds = %2615
  %2621 = load ptr, ptr %5, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2621, i32 0, i32 1
  %2623 = load i32, ptr %2622, align 4, !tbaa !27
  %2624 = icmp eq i32 %2623, 12
  br i1 %2624, label %2625, label %2768

2625:                                             ; preds = %2620
  %2626 = load ptr, ptr %5, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2626, i32 0, i32 2
  %2628 = load i32, ptr %2627, align 8, !tbaa !29
  %2629 = icmp eq i32 %2628, 8
  br i1 %2629, label %2630, label %2768

2630:                                             ; preds = %2625
  %2631 = load ptr, ptr %5, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2631, i32 0, i32 3
  %2633 = load i32, ptr %2632, align 4, !tbaa !62
  %2634 = icmp eq i32 %2633, 8
  br i1 %2634, label %2635, label %2768

2635:                                             ; preds = %2630
  %2636 = load ptr, ptr %5, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2636, i32 0, i32 19
  %2638 = load i32, ptr %2637, align 4, !tbaa !79
  %2639 = icmp eq i32 %2638, 1
  br i1 %2639, label %2640, label %2768

2640:                                             ; preds = %2635
  %2641 = load ptr, ptr %5, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2641, i32 0, i32 20
  %2643 = load i32, ptr %2642, align 8, !tbaa !80
  %2644 = icmp eq i32 %2643, 1
  br i1 %2644, label %2645, label %2768

2645:                                             ; preds = %2640
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #6
  %2646 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %2646, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #6
  %2647 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2647, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #6
  %2648 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2648, ptr %94, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #6
  %2649 = load ptr, ptr %5, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2649, i32 0, i32 0
  %2651 = load i32, ptr %2650, align 8, !tbaa !26
  %2652 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %2651)
  store i32 %2652, ptr %95, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %2653

2653:                                             ; preds = %2764, %2645
  %2654 = load i32, ptr %10, align 4, !tbaa !15
  %2655 = load i32, ptr %18, align 4, !tbaa !15
  %2656 = icmp slt i32 %2654, %2655
  br i1 %2656, label %2657, label %2767

2657:                                             ; preds = %2653
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %2658

2658:                                             ; preds = %2760, %2657
  %2659 = load i32, ptr %11, align 4, !tbaa !15
  %2660 = load i32, ptr %17, align 4, !tbaa !15
  %2661 = icmp slt i32 %2659, %2660
  br i1 %2661, label %2662, label %2763

2662:                                             ; preds = %2658
  %2663 = load ptr, ptr %5, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2663, i32 0, i32 13
  %2665 = load double, ptr %2664, align 8, !tbaa !28
  %2666 = fcmp oeq double %2665, 0.000000e+00
  br i1 %2666, label %2667, label %2676

2667:                                             ; preds = %2662
  %2668 = load ptr, ptr %94, align 8, !tbaa !5
  %2669 = load i32, ptr %10, align 4, !tbaa !15
  %2670 = load i32, ptr %16, align 4, !tbaa !15
  %2671 = mul nsw i32 %2669, %2670
  %2672 = load i32, ptr %11, align 4, !tbaa !15
  %2673 = add nsw i32 %2671, %2672
  %2674 = sext i32 %2673 to i64
  %2675 = getelementptr inbounds i32, ptr %2668, i64 %2674
  store i32 0, ptr %2675, align 4, !tbaa !15
  br label %2676

2676:                                             ; preds = %2667, %2662
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %2677

2677:                                             ; preds = %2756, %2676
  %2678 = load i32, ptr %9, align 4, !tbaa !15
  %2679 = load ptr, ptr %5, align 8, !tbaa !5
  %2680 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2679, i32 0, i32 26
  %2681 = load i32, ptr %2680, align 8, !tbaa !45
  %2682 = icmp slt i32 %2678, %2681
  br i1 %2682, label %2683, label %2759

2683:                                             ; preds = %2677
  %2684 = load i32, ptr %9, align 4, !tbaa !15
  %2685 = sext i32 %2684 to i64
  %2686 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %92, ptr noundef %93, ptr noundef %20, ptr noundef %21, i64 noundef %2685, ptr noundef %2686)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %2687

2687:                                             ; preds = %2752, %2683
  %2688 = load i32, ptr %12, align 4, !tbaa !15
  %2689 = load i32, ptr %19, align 4, !tbaa !15
  %2690 = load i32, ptr %95, align 4, !tbaa !15
  %2691 = sdiv i32 %2689, %2690
  %2692 = icmp slt i32 %2688, %2691
  br i1 %2692, label %2693, label %2755

2693:                                             ; preds = %2687
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %2694

2694:                                             ; preds = %2748, %2693
  %2695 = load i32, ptr %13, align 4, !tbaa !15
  %2696 = load i32, ptr %95, align 4, !tbaa !15
  %2697 = icmp slt i32 %2695, %2696
  br i1 %2697, label %2698, label %2751

2698:                                             ; preds = %2694
  %2699 = load ptr, ptr %92, align 8, !tbaa !5
  %2700 = load i64, ptr %20, align 8, !tbaa !21
  %2701 = load i32, ptr %12, align 4, !tbaa !15
  %2702 = load i32, ptr %14, align 4, !tbaa !15
  %2703 = load i32, ptr %95, align 4, !tbaa !15
  %2704 = mul nsw i32 %2702, %2703
  %2705 = mul nsw i32 %2701, %2704
  %2706 = sext i32 %2705 to i64
  %2707 = add nsw i64 %2700, %2706
  %2708 = load i32, ptr %11, align 4, !tbaa !15
  %2709 = load i32, ptr %95, align 4, !tbaa !15
  %2710 = mul nsw i32 %2708, %2709
  %2711 = sext i32 %2710 to i64
  %2712 = add nsw i64 %2707, %2711
  %2713 = load i32, ptr %13, align 4, !tbaa !15
  %2714 = sext i32 %2713 to i64
  %2715 = add nsw i64 %2712, %2714
  %2716 = getelementptr inbounds i8, ptr %2699, i64 %2715
  %2717 = load i8, ptr %2716, align 1, !tbaa !22
  %2718 = zext i8 %2717 to i32
  %2719 = load ptr, ptr %93, align 8, !tbaa !5
  %2720 = load i64, ptr %21, align 8, !tbaa !21
  %2721 = load i32, ptr %10, align 4, !tbaa !15
  %2722 = load i32, ptr %15, align 4, !tbaa !15
  %2723 = mul nsw i32 %2721, %2722
  %2724 = sext i32 %2723 to i64
  %2725 = add nsw i64 %2720, %2724
  %2726 = load i32, ptr %12, align 4, !tbaa !15
  %2727 = load i32, ptr %95, align 4, !tbaa !15
  %2728 = mul nsw i32 %2726, %2727
  %2729 = sext i32 %2728 to i64
  %2730 = add nsw i64 %2725, %2729
  %2731 = load i32, ptr %13, align 4, !tbaa !15
  %2732 = sext i32 %2731 to i64
  %2733 = add nsw i64 %2730, %2732
  %2734 = getelementptr inbounds i8, ptr %2719, i64 %2733
  %2735 = load i8, ptr %2734, align 1, !tbaa !22
  %2736 = zext i8 %2735 to i32
  %2737 = mul nsw i32 %2718, %2736
  %2738 = load ptr, ptr %94, align 8, !tbaa !5
  %2739 = load i32, ptr %10, align 4, !tbaa !15
  %2740 = load i32, ptr %16, align 4, !tbaa !15
  %2741 = mul nsw i32 %2739, %2740
  %2742 = load i32, ptr %11, align 4, !tbaa !15
  %2743 = add nsw i32 %2741, %2742
  %2744 = sext i32 %2743 to i64
  %2745 = getelementptr inbounds i32, ptr %2738, i64 %2744
  %2746 = load i32, ptr %2745, align 4, !tbaa !15
  %2747 = add nsw i32 %2746, %2737
  store i32 %2747, ptr %2745, align 4, !tbaa !15
  br label %2748

2748:                                             ; preds = %2698
  %2749 = load i32, ptr %13, align 4, !tbaa !15
  %2750 = add nsw i32 %2749, 1
  store i32 %2750, ptr %13, align 4, !tbaa !15
  br label %2694, !llvm.loop !81

2751:                                             ; preds = %2694
  br label %2752

2752:                                             ; preds = %2751
  %2753 = load i32, ptr %12, align 4, !tbaa !15
  %2754 = add nsw i32 %2753, 1
  store i32 %2754, ptr %12, align 4, !tbaa !15
  br label %2687, !llvm.loop !82

2755:                                             ; preds = %2687
  br label %2756

2756:                                             ; preds = %2755
  %2757 = load i32, ptr %9, align 4, !tbaa !15
  %2758 = add nsw i32 %2757, 1
  store i32 %2758, ptr %9, align 4, !tbaa !15
  br label %2677, !llvm.loop !83

2759:                                             ; preds = %2677
  br label %2760

2760:                                             ; preds = %2759
  %2761 = load i32, ptr %11, align 4, !tbaa !15
  %2762 = add nsw i32 %2761, 1
  store i32 %2762, ptr %11, align 4, !tbaa !15
  br label %2658, !llvm.loop !84

2763:                                             ; preds = %2658
  br label %2764

2764:                                             ; preds = %2763
  %2765 = load i32, ptr %10, align 4, !tbaa !15
  %2766 = add nsw i32 %2765, 1
  store i32 %2766, ptr %10, align 4, !tbaa !15
  br label %2653, !llvm.loop !85

2767:                                             ; preds = %2653
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  br label %8152

2768:                                             ; preds = %2640, %2635, %2630, %2625, %2620, %2615
  %2769 = load ptr, ptr %5, align 8, !tbaa !5
  %2770 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2769, i32 0, i32 0
  %2771 = load i32, ptr %2770, align 8, !tbaa !26
  %2772 = icmp eq i32 %2771, 12
  br i1 %2772, label %2773, label %2921

2773:                                             ; preds = %2768
  %2774 = load ptr, ptr %5, align 8, !tbaa !5
  %2775 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2774, i32 0, i32 1
  %2776 = load i32, ptr %2775, align 4, !tbaa !27
  %2777 = icmp eq i32 %2776, 12
  br i1 %2777, label %2778, label %2921

2778:                                             ; preds = %2773
  %2779 = load ptr, ptr %5, align 8, !tbaa !5
  %2780 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2779, i32 0, i32 2
  %2781 = load i32, ptr %2780, align 8, !tbaa !29
  %2782 = icmp eq i32 %2781, 8
  br i1 %2782, label %2783, label %2921

2783:                                             ; preds = %2778
  %2784 = load ptr, ptr %5, align 8, !tbaa !5
  %2785 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2784, i32 0, i32 3
  %2786 = load i32, ptr %2785, align 4, !tbaa !62
  %2787 = icmp eq i32 %2786, 8
  br i1 %2787, label %2788, label %2921

2788:                                             ; preds = %2783
  %2789 = load ptr, ptr %5, align 8, !tbaa !5
  %2790 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2789, i32 0, i32 19
  %2791 = load i32, ptr %2790, align 4, !tbaa !79
  %2792 = icmp eq i32 %2791, 0
  br i1 %2792, label %2793, label %2921

2793:                                             ; preds = %2788
  %2794 = load ptr, ptr %5, align 8, !tbaa !5
  %2795 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2794, i32 0, i32 20
  %2796 = load i32, ptr %2795, align 8, !tbaa !80
  %2797 = icmp eq i32 %2796, 0
  br i1 %2797, label %2798, label %2921

2798:                                             ; preds = %2793
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #6
  %2799 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %2799, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #6
  %2800 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2800, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #6
  %2801 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2801, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #6
  %2802 = load ptr, ptr %5, align 8, !tbaa !5
  %2803 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2802, i32 0, i32 0
  %2804 = load i32, ptr %2803, align 8, !tbaa !26
  %2805 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %2804)
  store i32 %2805, ptr %99, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %2806

2806:                                             ; preds = %2917, %2798
  %2807 = load i32, ptr %10, align 4, !tbaa !15
  %2808 = load i32, ptr %18, align 4, !tbaa !15
  %2809 = icmp slt i32 %2807, %2808
  br i1 %2809, label %2810, label %2920

2810:                                             ; preds = %2806
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %2811

2811:                                             ; preds = %2913, %2810
  %2812 = load i32, ptr %11, align 4, !tbaa !15
  %2813 = load i32, ptr %17, align 4, !tbaa !15
  %2814 = icmp slt i32 %2812, %2813
  br i1 %2814, label %2815, label %2916

2815:                                             ; preds = %2811
  %2816 = load ptr, ptr %5, align 8, !tbaa !5
  %2817 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2816, i32 0, i32 13
  %2818 = load double, ptr %2817, align 8, !tbaa !28
  %2819 = fcmp oeq double %2818, 0.000000e+00
  br i1 %2819, label %2820, label %2829

2820:                                             ; preds = %2815
  %2821 = load ptr, ptr %98, align 8, !tbaa !5
  %2822 = load i32, ptr %10, align 4, !tbaa !15
  %2823 = load i32, ptr %16, align 4, !tbaa !15
  %2824 = mul nsw i32 %2822, %2823
  %2825 = load i32, ptr %11, align 4, !tbaa !15
  %2826 = add nsw i32 %2824, %2825
  %2827 = sext i32 %2826 to i64
  %2828 = getelementptr inbounds i32, ptr %2821, i64 %2827
  store i32 0, ptr %2828, align 4, !tbaa !15
  br label %2829

2829:                                             ; preds = %2820, %2815
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %2830

2830:                                             ; preds = %2909, %2829
  %2831 = load i32, ptr %9, align 4, !tbaa !15
  %2832 = load ptr, ptr %5, align 8, !tbaa !5
  %2833 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2832, i32 0, i32 26
  %2834 = load i32, ptr %2833, align 8, !tbaa !45
  %2835 = icmp slt i32 %2831, %2834
  br i1 %2835, label %2836, label %2912

2836:                                             ; preds = %2830
  %2837 = load i32, ptr %9, align 4, !tbaa !15
  %2838 = sext i32 %2837 to i64
  %2839 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %96, ptr noundef %97, ptr noundef %20, ptr noundef %21, i64 noundef %2838, ptr noundef %2839)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %2840

2840:                                             ; preds = %2905, %2836
  %2841 = load i32, ptr %12, align 4, !tbaa !15
  %2842 = load i32, ptr %19, align 4, !tbaa !15
  %2843 = load i32, ptr %99, align 4, !tbaa !15
  %2844 = sdiv i32 %2842, %2843
  %2845 = icmp slt i32 %2841, %2844
  br i1 %2845, label %2846, label %2908

2846:                                             ; preds = %2840
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %2847

2847:                                             ; preds = %2901, %2846
  %2848 = load i32, ptr %13, align 4, !tbaa !15
  %2849 = load i32, ptr %99, align 4, !tbaa !15
  %2850 = icmp slt i32 %2848, %2849
  br i1 %2850, label %2851, label %2904

2851:                                             ; preds = %2847
  %2852 = load ptr, ptr %96, align 8, !tbaa !5
  %2853 = load i64, ptr %20, align 8, !tbaa !21
  %2854 = load i32, ptr %12, align 4, !tbaa !15
  %2855 = load i32, ptr %14, align 4, !tbaa !15
  %2856 = load i32, ptr %99, align 4, !tbaa !15
  %2857 = mul nsw i32 %2855, %2856
  %2858 = mul nsw i32 %2854, %2857
  %2859 = sext i32 %2858 to i64
  %2860 = add nsw i64 %2853, %2859
  %2861 = load i32, ptr %11, align 4, !tbaa !15
  %2862 = load i32, ptr %99, align 4, !tbaa !15
  %2863 = mul nsw i32 %2861, %2862
  %2864 = sext i32 %2863 to i64
  %2865 = add nsw i64 %2860, %2864
  %2866 = load i32, ptr %13, align 4, !tbaa !15
  %2867 = sext i32 %2866 to i64
  %2868 = add nsw i64 %2865, %2867
  %2869 = getelementptr inbounds i8, ptr %2852, i64 %2868
  %2870 = load i8, ptr %2869, align 1, !tbaa !22
  %2871 = sext i8 %2870 to i32
  %2872 = load ptr, ptr %97, align 8, !tbaa !5
  %2873 = load i64, ptr %21, align 8, !tbaa !21
  %2874 = load i32, ptr %10, align 4, !tbaa !15
  %2875 = load i32, ptr %15, align 4, !tbaa !15
  %2876 = mul nsw i32 %2874, %2875
  %2877 = sext i32 %2876 to i64
  %2878 = add nsw i64 %2873, %2877
  %2879 = load i32, ptr %12, align 4, !tbaa !15
  %2880 = load i32, ptr %99, align 4, !tbaa !15
  %2881 = mul nsw i32 %2879, %2880
  %2882 = sext i32 %2881 to i64
  %2883 = add nsw i64 %2878, %2882
  %2884 = load i32, ptr %13, align 4, !tbaa !15
  %2885 = sext i32 %2884 to i64
  %2886 = add nsw i64 %2883, %2885
  %2887 = getelementptr inbounds i8, ptr %2872, i64 %2886
  %2888 = load i8, ptr %2887, align 1, !tbaa !22
  %2889 = sext i8 %2888 to i32
  %2890 = mul nsw i32 %2871, %2889
  %2891 = load ptr, ptr %98, align 8, !tbaa !5
  %2892 = load i32, ptr %10, align 4, !tbaa !15
  %2893 = load i32, ptr %16, align 4, !tbaa !15
  %2894 = mul nsw i32 %2892, %2893
  %2895 = load i32, ptr %11, align 4, !tbaa !15
  %2896 = add nsw i32 %2894, %2895
  %2897 = sext i32 %2896 to i64
  %2898 = getelementptr inbounds i32, ptr %2891, i64 %2897
  %2899 = load i32, ptr %2898, align 4, !tbaa !15
  %2900 = add nsw i32 %2899, %2890
  store i32 %2900, ptr %2898, align 4, !tbaa !15
  br label %2901

2901:                                             ; preds = %2851
  %2902 = load i32, ptr %13, align 4, !tbaa !15
  %2903 = add nsw i32 %2902, 1
  store i32 %2903, ptr %13, align 4, !tbaa !15
  br label %2847, !llvm.loop !86

2904:                                             ; preds = %2847
  br label %2905

2905:                                             ; preds = %2904
  %2906 = load i32, ptr %12, align 4, !tbaa !15
  %2907 = add nsw i32 %2906, 1
  store i32 %2907, ptr %12, align 4, !tbaa !15
  br label %2840, !llvm.loop !87

2908:                                             ; preds = %2840
  br label %2909

2909:                                             ; preds = %2908
  %2910 = load i32, ptr %9, align 4, !tbaa !15
  %2911 = add nsw i32 %2910, 1
  store i32 %2911, ptr %9, align 4, !tbaa !15
  br label %2830, !llvm.loop !88

2912:                                             ; preds = %2830
  br label %2913

2913:                                             ; preds = %2912
  %2914 = load i32, ptr %11, align 4, !tbaa !15
  %2915 = add nsw i32 %2914, 1
  store i32 %2915, ptr %11, align 4, !tbaa !15
  br label %2811, !llvm.loop !89

2916:                                             ; preds = %2811
  br label %2917

2917:                                             ; preds = %2916
  %2918 = load i32, ptr %10, align 4, !tbaa !15
  %2919 = add nsw i32 %2918, 1
  store i32 %2919, ptr %10, align 4, !tbaa !15
  br label %2806, !llvm.loop !90

2920:                                             ; preds = %2806
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #6
  br label %8151

2921:                                             ; preds = %2793, %2788, %2783, %2778, %2773, %2768
  %2922 = load ptr, ptr %5, align 8, !tbaa !5
  %2923 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2922, i32 0, i32 0
  %2924 = load i32, ptr %2923, align 8, !tbaa !26
  %2925 = icmp eq i32 %2924, 12
  br i1 %2925, label %2926, label %3074

2926:                                             ; preds = %2921
  %2927 = load ptr, ptr %5, align 8, !tbaa !5
  %2928 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2927, i32 0, i32 1
  %2929 = load i32, ptr %2928, align 4, !tbaa !27
  %2930 = icmp eq i32 %2929, 12
  br i1 %2930, label %2931, label %3074

2931:                                             ; preds = %2926
  %2932 = load ptr, ptr %5, align 8, !tbaa !5
  %2933 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2932, i32 0, i32 2
  %2934 = load i32, ptr %2933, align 8, !tbaa !29
  %2935 = icmp eq i32 %2934, 8
  br i1 %2935, label %2936, label %3074

2936:                                             ; preds = %2931
  %2937 = load ptr, ptr %5, align 8, !tbaa !5
  %2938 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2937, i32 0, i32 3
  %2939 = load i32, ptr %2938, align 4, !tbaa !62
  %2940 = icmp eq i32 %2939, 8
  br i1 %2940, label %2941, label %3074

2941:                                             ; preds = %2936
  %2942 = load ptr, ptr %5, align 8, !tbaa !5
  %2943 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2942, i32 0, i32 19
  %2944 = load i32, ptr %2943, align 4, !tbaa !79
  %2945 = icmp eq i32 %2944, 1
  br i1 %2945, label %2946, label %3074

2946:                                             ; preds = %2941
  %2947 = load ptr, ptr %5, align 8, !tbaa !5
  %2948 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2947, i32 0, i32 20
  %2949 = load i32, ptr %2948, align 8, !tbaa !80
  %2950 = icmp eq i32 %2949, 0
  br i1 %2950, label %2951, label %3074

2951:                                             ; preds = %2946
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #6
  %2952 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %2952, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #6
  %2953 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2953, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #6
  %2954 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2954, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #6
  %2955 = load ptr, ptr %5, align 8, !tbaa !5
  %2956 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2955, i32 0, i32 0
  %2957 = load i32, ptr %2956, align 8, !tbaa !26
  %2958 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %2957)
  store i32 %2958, ptr %103, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %2959

2959:                                             ; preds = %3070, %2951
  %2960 = load i32, ptr %10, align 4, !tbaa !15
  %2961 = load i32, ptr %18, align 4, !tbaa !15
  %2962 = icmp slt i32 %2960, %2961
  br i1 %2962, label %2963, label %3073

2963:                                             ; preds = %2959
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %2964

2964:                                             ; preds = %3066, %2963
  %2965 = load i32, ptr %11, align 4, !tbaa !15
  %2966 = load i32, ptr %17, align 4, !tbaa !15
  %2967 = icmp slt i32 %2965, %2966
  br i1 %2967, label %2968, label %3069

2968:                                             ; preds = %2964
  %2969 = load ptr, ptr %5, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2969, i32 0, i32 13
  %2971 = load double, ptr %2970, align 8, !tbaa !28
  %2972 = fcmp oeq double %2971, 0.000000e+00
  br i1 %2972, label %2973, label %2982

2973:                                             ; preds = %2968
  %2974 = load ptr, ptr %102, align 8, !tbaa !5
  %2975 = load i32, ptr %10, align 4, !tbaa !15
  %2976 = load i32, ptr %16, align 4, !tbaa !15
  %2977 = mul nsw i32 %2975, %2976
  %2978 = load i32, ptr %11, align 4, !tbaa !15
  %2979 = add nsw i32 %2977, %2978
  %2980 = sext i32 %2979 to i64
  %2981 = getelementptr inbounds i32, ptr %2974, i64 %2980
  store i32 0, ptr %2981, align 4, !tbaa !15
  br label %2982

2982:                                             ; preds = %2973, %2968
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %2983

2983:                                             ; preds = %3062, %2982
  %2984 = load i32, ptr %9, align 4, !tbaa !15
  %2985 = load ptr, ptr %5, align 8, !tbaa !5
  %2986 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %2985, i32 0, i32 26
  %2987 = load i32, ptr %2986, align 8, !tbaa !45
  %2988 = icmp slt i32 %2984, %2987
  br i1 %2988, label %2989, label %3065

2989:                                             ; preds = %2983
  %2990 = load i32, ptr %9, align 4, !tbaa !15
  %2991 = sext i32 %2990 to i64
  %2992 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %100, ptr noundef %101, ptr noundef %20, ptr noundef %21, i64 noundef %2991, ptr noundef %2992)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %2993

2993:                                             ; preds = %3058, %2989
  %2994 = load i32, ptr %12, align 4, !tbaa !15
  %2995 = load i32, ptr %19, align 4, !tbaa !15
  %2996 = load i32, ptr %103, align 4, !tbaa !15
  %2997 = sdiv i32 %2995, %2996
  %2998 = icmp slt i32 %2994, %2997
  br i1 %2998, label %2999, label %3061

2999:                                             ; preds = %2993
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %3000

3000:                                             ; preds = %3054, %2999
  %3001 = load i32, ptr %13, align 4, !tbaa !15
  %3002 = load i32, ptr %103, align 4, !tbaa !15
  %3003 = icmp slt i32 %3001, %3002
  br i1 %3003, label %3004, label %3057

3004:                                             ; preds = %3000
  %3005 = load ptr, ptr %100, align 8, !tbaa !5
  %3006 = load i64, ptr %20, align 8, !tbaa !21
  %3007 = load i32, ptr %12, align 4, !tbaa !15
  %3008 = load i32, ptr %14, align 4, !tbaa !15
  %3009 = load i32, ptr %103, align 4, !tbaa !15
  %3010 = mul nsw i32 %3008, %3009
  %3011 = mul nsw i32 %3007, %3010
  %3012 = sext i32 %3011 to i64
  %3013 = add nsw i64 %3006, %3012
  %3014 = load i32, ptr %11, align 4, !tbaa !15
  %3015 = load i32, ptr %103, align 4, !tbaa !15
  %3016 = mul nsw i32 %3014, %3015
  %3017 = sext i32 %3016 to i64
  %3018 = add nsw i64 %3013, %3017
  %3019 = load i32, ptr %13, align 4, !tbaa !15
  %3020 = sext i32 %3019 to i64
  %3021 = add nsw i64 %3018, %3020
  %3022 = getelementptr inbounds i8, ptr %3005, i64 %3021
  %3023 = load i8, ptr %3022, align 1, !tbaa !22
  %3024 = zext i8 %3023 to i32
  %3025 = load ptr, ptr %101, align 8, !tbaa !5
  %3026 = load i64, ptr %21, align 8, !tbaa !21
  %3027 = load i32, ptr %10, align 4, !tbaa !15
  %3028 = load i32, ptr %15, align 4, !tbaa !15
  %3029 = mul nsw i32 %3027, %3028
  %3030 = sext i32 %3029 to i64
  %3031 = add nsw i64 %3026, %3030
  %3032 = load i32, ptr %12, align 4, !tbaa !15
  %3033 = load i32, ptr %103, align 4, !tbaa !15
  %3034 = mul nsw i32 %3032, %3033
  %3035 = sext i32 %3034 to i64
  %3036 = add nsw i64 %3031, %3035
  %3037 = load i32, ptr %13, align 4, !tbaa !15
  %3038 = sext i32 %3037 to i64
  %3039 = add nsw i64 %3036, %3038
  %3040 = getelementptr inbounds i8, ptr %3025, i64 %3039
  %3041 = load i8, ptr %3040, align 1, !tbaa !22
  %3042 = sext i8 %3041 to i32
  %3043 = mul nsw i32 %3024, %3042
  %3044 = load ptr, ptr %102, align 8, !tbaa !5
  %3045 = load i32, ptr %10, align 4, !tbaa !15
  %3046 = load i32, ptr %16, align 4, !tbaa !15
  %3047 = mul nsw i32 %3045, %3046
  %3048 = load i32, ptr %11, align 4, !tbaa !15
  %3049 = add nsw i32 %3047, %3048
  %3050 = sext i32 %3049 to i64
  %3051 = getelementptr inbounds i32, ptr %3044, i64 %3050
  %3052 = load i32, ptr %3051, align 4, !tbaa !15
  %3053 = add nsw i32 %3052, %3043
  store i32 %3053, ptr %3051, align 4, !tbaa !15
  br label %3054

3054:                                             ; preds = %3004
  %3055 = load i32, ptr %13, align 4, !tbaa !15
  %3056 = add nsw i32 %3055, 1
  store i32 %3056, ptr %13, align 4, !tbaa !15
  br label %3000, !llvm.loop !91

3057:                                             ; preds = %3000
  br label %3058

3058:                                             ; preds = %3057
  %3059 = load i32, ptr %12, align 4, !tbaa !15
  %3060 = add nsw i32 %3059, 1
  store i32 %3060, ptr %12, align 4, !tbaa !15
  br label %2993, !llvm.loop !92

3061:                                             ; preds = %2993
  br label %3062

3062:                                             ; preds = %3061
  %3063 = load i32, ptr %9, align 4, !tbaa !15
  %3064 = add nsw i32 %3063, 1
  store i32 %3064, ptr %9, align 4, !tbaa !15
  br label %2983, !llvm.loop !93

3065:                                             ; preds = %2983
  br label %3066

3066:                                             ; preds = %3065
  %3067 = load i32, ptr %11, align 4, !tbaa !15
  %3068 = add nsw i32 %3067, 1
  store i32 %3068, ptr %11, align 4, !tbaa !15
  br label %2964, !llvm.loop !94

3069:                                             ; preds = %2964
  br label %3070

3070:                                             ; preds = %3069
  %3071 = load i32, ptr %10, align 4, !tbaa !15
  %3072 = add nsw i32 %3071, 1
  store i32 %3072, ptr %10, align 4, !tbaa !15
  br label %2959, !llvm.loop !95

3073:                                             ; preds = %2959
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  br label %8150

3074:                                             ; preds = %2946, %2941, %2936, %2931, %2926, %2921
  %3075 = load ptr, ptr %5, align 8, !tbaa !5
  %3076 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3075, i32 0, i32 0
  %3077 = load i32, ptr %3076, align 8, !tbaa !26
  %3078 = icmp eq i32 %3077, 12
  br i1 %3078, label %3079, label %3227

3079:                                             ; preds = %3074
  %3080 = load ptr, ptr %5, align 8, !tbaa !5
  %3081 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3080, i32 0, i32 1
  %3082 = load i32, ptr %3081, align 4, !tbaa !27
  %3083 = icmp eq i32 %3082, 12
  br i1 %3083, label %3084, label %3227

3084:                                             ; preds = %3079
  %3085 = load ptr, ptr %5, align 8, !tbaa !5
  %3086 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3085, i32 0, i32 2
  %3087 = load i32, ptr %3086, align 8, !tbaa !29
  %3088 = icmp eq i32 %3087, 8
  br i1 %3088, label %3089, label %3227

3089:                                             ; preds = %3084
  %3090 = load ptr, ptr %5, align 8, !tbaa !5
  %3091 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3090, i32 0, i32 3
  %3092 = load i32, ptr %3091, align 4, !tbaa !62
  %3093 = icmp eq i32 %3092, 8
  br i1 %3093, label %3094, label %3227

3094:                                             ; preds = %3089
  %3095 = load ptr, ptr %5, align 8, !tbaa !5
  %3096 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3095, i32 0, i32 19
  %3097 = load i32, ptr %3096, align 4, !tbaa !79
  %3098 = icmp eq i32 %3097, 0
  br i1 %3098, label %3099, label %3227

3099:                                             ; preds = %3094
  %3100 = load ptr, ptr %5, align 8, !tbaa !5
  %3101 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3100, i32 0, i32 20
  %3102 = load i32, ptr %3101, align 8, !tbaa !80
  %3103 = icmp eq i32 %3102, 1
  br i1 %3103, label %3104, label %3227

3104:                                             ; preds = %3099
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #6
  %3105 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %3105, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #6
  %3106 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3106, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #6
  %3107 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3107, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #6
  %3108 = load ptr, ptr %5, align 8, !tbaa !5
  %3109 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3108, i32 0, i32 0
  %3110 = load i32, ptr %3109, align 8, !tbaa !26
  %3111 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %3110)
  store i32 %3111, ptr %107, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %3112

3112:                                             ; preds = %3223, %3104
  %3113 = load i32, ptr %10, align 4, !tbaa !15
  %3114 = load i32, ptr %18, align 4, !tbaa !15
  %3115 = icmp slt i32 %3113, %3114
  br i1 %3115, label %3116, label %3226

3116:                                             ; preds = %3112
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %3117

3117:                                             ; preds = %3219, %3116
  %3118 = load i32, ptr %11, align 4, !tbaa !15
  %3119 = load i32, ptr %17, align 4, !tbaa !15
  %3120 = icmp slt i32 %3118, %3119
  br i1 %3120, label %3121, label %3222

3121:                                             ; preds = %3117
  %3122 = load ptr, ptr %5, align 8, !tbaa !5
  %3123 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3122, i32 0, i32 13
  %3124 = load double, ptr %3123, align 8, !tbaa !28
  %3125 = fcmp oeq double %3124, 0.000000e+00
  br i1 %3125, label %3126, label %3135

3126:                                             ; preds = %3121
  %3127 = load ptr, ptr %106, align 8, !tbaa !5
  %3128 = load i32, ptr %10, align 4, !tbaa !15
  %3129 = load i32, ptr %16, align 4, !tbaa !15
  %3130 = mul nsw i32 %3128, %3129
  %3131 = load i32, ptr %11, align 4, !tbaa !15
  %3132 = add nsw i32 %3130, %3131
  %3133 = sext i32 %3132 to i64
  %3134 = getelementptr inbounds i32, ptr %3127, i64 %3133
  store i32 0, ptr %3134, align 4, !tbaa !15
  br label %3135

3135:                                             ; preds = %3126, %3121
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %3136

3136:                                             ; preds = %3215, %3135
  %3137 = load i32, ptr %9, align 4, !tbaa !15
  %3138 = load ptr, ptr %5, align 8, !tbaa !5
  %3139 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3138, i32 0, i32 26
  %3140 = load i32, ptr %3139, align 8, !tbaa !45
  %3141 = icmp slt i32 %3137, %3140
  br i1 %3141, label %3142, label %3218

3142:                                             ; preds = %3136
  %3143 = load i32, ptr %9, align 4, !tbaa !15
  %3144 = sext i32 %3143 to i64
  %3145 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %104, ptr noundef %105, ptr noundef %20, ptr noundef %21, i64 noundef %3144, ptr noundef %3145)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %3146

3146:                                             ; preds = %3211, %3142
  %3147 = load i32, ptr %12, align 4, !tbaa !15
  %3148 = load i32, ptr %19, align 4, !tbaa !15
  %3149 = load i32, ptr %107, align 4, !tbaa !15
  %3150 = sdiv i32 %3148, %3149
  %3151 = icmp slt i32 %3147, %3150
  br i1 %3151, label %3152, label %3214

3152:                                             ; preds = %3146
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %3153

3153:                                             ; preds = %3207, %3152
  %3154 = load i32, ptr %13, align 4, !tbaa !15
  %3155 = load i32, ptr %107, align 4, !tbaa !15
  %3156 = icmp slt i32 %3154, %3155
  br i1 %3156, label %3157, label %3210

3157:                                             ; preds = %3153
  %3158 = load ptr, ptr %104, align 8, !tbaa !5
  %3159 = load i64, ptr %20, align 8, !tbaa !21
  %3160 = load i32, ptr %12, align 4, !tbaa !15
  %3161 = load i32, ptr %14, align 4, !tbaa !15
  %3162 = load i32, ptr %107, align 4, !tbaa !15
  %3163 = mul nsw i32 %3161, %3162
  %3164 = mul nsw i32 %3160, %3163
  %3165 = sext i32 %3164 to i64
  %3166 = add nsw i64 %3159, %3165
  %3167 = load i32, ptr %11, align 4, !tbaa !15
  %3168 = load i32, ptr %107, align 4, !tbaa !15
  %3169 = mul nsw i32 %3167, %3168
  %3170 = sext i32 %3169 to i64
  %3171 = add nsw i64 %3166, %3170
  %3172 = load i32, ptr %13, align 4, !tbaa !15
  %3173 = sext i32 %3172 to i64
  %3174 = add nsw i64 %3171, %3173
  %3175 = getelementptr inbounds i8, ptr %3158, i64 %3174
  %3176 = load i8, ptr %3175, align 1, !tbaa !22
  %3177 = sext i8 %3176 to i32
  %3178 = load ptr, ptr %105, align 8, !tbaa !5
  %3179 = load i64, ptr %21, align 8, !tbaa !21
  %3180 = load i32, ptr %10, align 4, !tbaa !15
  %3181 = load i32, ptr %15, align 4, !tbaa !15
  %3182 = mul nsw i32 %3180, %3181
  %3183 = sext i32 %3182 to i64
  %3184 = add nsw i64 %3179, %3183
  %3185 = load i32, ptr %12, align 4, !tbaa !15
  %3186 = load i32, ptr %107, align 4, !tbaa !15
  %3187 = mul nsw i32 %3185, %3186
  %3188 = sext i32 %3187 to i64
  %3189 = add nsw i64 %3184, %3188
  %3190 = load i32, ptr %13, align 4, !tbaa !15
  %3191 = sext i32 %3190 to i64
  %3192 = add nsw i64 %3189, %3191
  %3193 = getelementptr inbounds i8, ptr %3178, i64 %3192
  %3194 = load i8, ptr %3193, align 1, !tbaa !22
  %3195 = zext i8 %3194 to i32
  %3196 = mul nsw i32 %3177, %3195
  %3197 = load ptr, ptr %106, align 8, !tbaa !5
  %3198 = load i32, ptr %10, align 4, !tbaa !15
  %3199 = load i32, ptr %16, align 4, !tbaa !15
  %3200 = mul nsw i32 %3198, %3199
  %3201 = load i32, ptr %11, align 4, !tbaa !15
  %3202 = add nsw i32 %3200, %3201
  %3203 = sext i32 %3202 to i64
  %3204 = getelementptr inbounds i32, ptr %3197, i64 %3203
  %3205 = load i32, ptr %3204, align 4, !tbaa !15
  %3206 = add nsw i32 %3205, %3196
  store i32 %3206, ptr %3204, align 4, !tbaa !15
  br label %3207

3207:                                             ; preds = %3157
  %3208 = load i32, ptr %13, align 4, !tbaa !15
  %3209 = add nsw i32 %3208, 1
  store i32 %3209, ptr %13, align 4, !tbaa !15
  br label %3153, !llvm.loop !96

3210:                                             ; preds = %3153
  br label %3211

3211:                                             ; preds = %3210
  %3212 = load i32, ptr %12, align 4, !tbaa !15
  %3213 = add nsw i32 %3212, 1
  store i32 %3213, ptr %12, align 4, !tbaa !15
  br label %3146, !llvm.loop !97

3214:                                             ; preds = %3146
  br label %3215

3215:                                             ; preds = %3214
  %3216 = load i32, ptr %9, align 4, !tbaa !15
  %3217 = add nsw i32 %3216, 1
  store i32 %3217, ptr %9, align 4, !tbaa !15
  br label %3136, !llvm.loop !98

3218:                                             ; preds = %3136
  br label %3219

3219:                                             ; preds = %3218
  %3220 = load i32, ptr %11, align 4, !tbaa !15
  %3221 = add nsw i32 %3220, 1
  store i32 %3221, ptr %11, align 4, !tbaa !15
  br label %3117, !llvm.loop !99

3222:                                             ; preds = %3117
  br label %3223

3223:                                             ; preds = %3222
  %3224 = load i32, ptr %10, align 4, !tbaa !15
  %3225 = add nsw i32 %3224, 1
  store i32 %3225, ptr %10, align 4, !tbaa !15
  br label %3112, !llvm.loop !100

3226:                                             ; preds = %3112
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  br label %8149

3227:                                             ; preds = %3099, %3094, %3089, %3084, %3079, %3074
  %3228 = load ptr, ptr %5, align 8, !tbaa !5
  %3229 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3228, i32 0, i32 0
  %3230 = load i32, ptr %3229, align 8, !tbaa !26
  %3231 = icmp eq i32 %3230, 12
  br i1 %3231, label %3232, label %3391

3232:                                             ; preds = %3227
  %3233 = load ptr, ptr %5, align 8, !tbaa !5
  %3234 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3233, i32 0, i32 1
  %3235 = load i32, ptr %3234, align 4, !tbaa !27
  %3236 = icmp eq i32 %3235, 12
  br i1 %3236, label %3237, label %3391

3237:                                             ; preds = %3232
  %3238 = load ptr, ptr %5, align 8, !tbaa !5
  %3239 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3238, i32 0, i32 2
  %3240 = load i32, ptr %3239, align 8, !tbaa !29
  %3241 = icmp eq i32 %3240, 1
  br i1 %3241, label %3242, label %3391

3242:                                             ; preds = %3237
  %3243 = load ptr, ptr %5, align 8, !tbaa !5
  %3244 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3243, i32 0, i32 3
  %3245 = load i32, ptr %3244, align 4, !tbaa !62
  %3246 = icmp eq i32 %3245, 8
  br i1 %3246, label %3247, label %3391

3247:                                             ; preds = %3242
  %3248 = load ptr, ptr %5, align 8, !tbaa !5
  %3249 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3248, i32 0, i32 19
  %3250 = load i32, ptr %3249, align 4, !tbaa !79
  %3251 = icmp eq i32 %3250, 1
  br i1 %3251, label %3252, label %3391

3252:                                             ; preds = %3247
  %3253 = load ptr, ptr %5, align 8, !tbaa !5
  %3254 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3253, i32 0, i32 20
  %3255 = load i32, ptr %3254, align 8, !tbaa !80
  %3256 = icmp eq i32 %3255, 1
  br i1 %3256, label %3257, label %3391

3257:                                             ; preds = %3252
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #6
  %3258 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %3258, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #6
  %3259 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3259, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #6
  %3260 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3260, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #6
  %3261 = load ptr, ptr %5, align 8, !tbaa !5
  %3262 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3261, i32 0, i32 0
  %3263 = load i32, ptr %3262, align 8, !tbaa !26
  %3264 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %3263)
  store i32 %3264, ptr %111, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %3265

3265:                                             ; preds = %3387, %3257
  %3266 = load i32, ptr %10, align 4, !tbaa !15
  %3267 = load i32, ptr %18, align 4, !tbaa !15
  %3268 = icmp slt i32 %3266, %3267
  br i1 %3268, label %3269, label %3390

3269:                                             ; preds = %3265
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %3270

3270:                                             ; preds = %3383, %3269
  %3271 = load i32, ptr %11, align 4, !tbaa !15
  %3272 = load i32, ptr %17, align 4, !tbaa !15
  %3273 = icmp slt i32 %3271, %3272
  br i1 %3273, label %3274, label %3386

3274:                                             ; preds = %3270
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #6
  store i32 0, ptr %112, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %3275

3275:                                             ; preds = %3346, %3274
  %3276 = load i32, ptr %9, align 4, !tbaa !15
  %3277 = load ptr, ptr %5, align 8, !tbaa !5
  %3278 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3277, i32 0, i32 26
  %3279 = load i32, ptr %3278, align 8, !tbaa !45
  %3280 = icmp slt i32 %3276, %3279
  br i1 %3280, label %3281, label %3349

3281:                                             ; preds = %3275
  %3282 = load i32, ptr %9, align 4, !tbaa !15
  %3283 = sext i32 %3282 to i64
  %3284 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %108, ptr noundef %109, ptr noundef %20, ptr noundef %21, i64 noundef %3283, ptr noundef %3284)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %3285

3285:                                             ; preds = %3342, %3281
  %3286 = load i32, ptr %12, align 4, !tbaa !15
  %3287 = load i32, ptr %19, align 4, !tbaa !15
  %3288 = load i32, ptr %111, align 4, !tbaa !15
  %3289 = sdiv i32 %3287, %3288
  %3290 = icmp slt i32 %3286, %3289
  br i1 %3290, label %3291, label %3345

3291:                                             ; preds = %3285
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %3292

3292:                                             ; preds = %3338, %3291
  %3293 = load i32, ptr %13, align 4, !tbaa !15
  %3294 = load i32, ptr %111, align 4, !tbaa !15
  %3295 = icmp slt i32 %3293, %3294
  br i1 %3295, label %3296, label %3341

3296:                                             ; preds = %3292
  %3297 = load ptr, ptr %108, align 8, !tbaa !5
  %3298 = load i64, ptr %20, align 8, !tbaa !21
  %3299 = load i32, ptr %12, align 4, !tbaa !15
  %3300 = load i32, ptr %14, align 4, !tbaa !15
  %3301 = load i32, ptr %111, align 4, !tbaa !15
  %3302 = mul nsw i32 %3300, %3301
  %3303 = mul nsw i32 %3299, %3302
  %3304 = sext i32 %3303 to i64
  %3305 = add nsw i64 %3298, %3304
  %3306 = load i32, ptr %11, align 4, !tbaa !15
  %3307 = load i32, ptr %111, align 4, !tbaa !15
  %3308 = mul nsw i32 %3306, %3307
  %3309 = sext i32 %3308 to i64
  %3310 = add nsw i64 %3305, %3309
  %3311 = load i32, ptr %13, align 4, !tbaa !15
  %3312 = sext i32 %3311 to i64
  %3313 = add nsw i64 %3310, %3312
  %3314 = getelementptr inbounds i8, ptr %3297, i64 %3313
  %3315 = load i8, ptr %3314, align 1, !tbaa !22
  %3316 = zext i8 %3315 to i32
  %3317 = load ptr, ptr %109, align 8, !tbaa !5
  %3318 = load i64, ptr %21, align 8, !tbaa !21
  %3319 = load i32, ptr %10, align 4, !tbaa !15
  %3320 = load i32, ptr %15, align 4, !tbaa !15
  %3321 = mul nsw i32 %3319, %3320
  %3322 = sext i32 %3321 to i64
  %3323 = add nsw i64 %3318, %3322
  %3324 = load i32, ptr %12, align 4, !tbaa !15
  %3325 = load i32, ptr %111, align 4, !tbaa !15
  %3326 = mul nsw i32 %3324, %3325
  %3327 = sext i32 %3326 to i64
  %3328 = add nsw i64 %3323, %3327
  %3329 = load i32, ptr %13, align 4, !tbaa !15
  %3330 = sext i32 %3329 to i64
  %3331 = add nsw i64 %3328, %3330
  %3332 = getelementptr inbounds i8, ptr %3317, i64 %3331
  %3333 = load i8, ptr %3332, align 1, !tbaa !22
  %3334 = zext i8 %3333 to i32
  %3335 = mul nsw i32 %3316, %3334
  %3336 = load i32, ptr %112, align 4, !tbaa !15
  %3337 = add nsw i32 %3336, %3335
  store i32 %3337, ptr %112, align 4, !tbaa !15
  br label %3338

3338:                                             ; preds = %3296
  %3339 = load i32, ptr %13, align 4, !tbaa !15
  %3340 = add nsw i32 %3339, 1
  store i32 %3340, ptr %13, align 4, !tbaa !15
  br label %3292, !llvm.loop !101

3341:                                             ; preds = %3292
  br label %3342

3342:                                             ; preds = %3341
  %3343 = load i32, ptr %12, align 4, !tbaa !15
  %3344 = add nsw i32 %3343, 1
  store i32 %3344, ptr %12, align 4, !tbaa !15
  br label %3285, !llvm.loop !102

3345:                                             ; preds = %3285
  br label %3346

3346:                                             ; preds = %3345
  %3347 = load i32, ptr %9, align 4, !tbaa !15
  %3348 = add nsw i32 %3347, 1
  store i32 %3348, ptr %9, align 4, !tbaa !15
  br label %3275, !llvm.loop !103

3349:                                             ; preds = %3275
  %3350 = load i32, ptr %112, align 4, !tbaa !15
  %3351 = sitofp i32 %3350 to float
  store float %3351, ptr %113, align 4, !tbaa !30
  %3352 = load ptr, ptr %5, align 8, !tbaa !5
  %3353 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3352, i32 0, i32 29
  %3354 = load float, ptr %3353, align 4, !tbaa !104
  %3355 = load float, ptr %113, align 4, !tbaa !30
  %3356 = fmul float %3355, %3354
  store float %3356, ptr %113, align 4, !tbaa !30
  %3357 = load ptr, ptr %5, align 8, !tbaa !5
  %3358 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3357, i32 0, i32 13
  %3359 = load double, ptr %3358, align 8, !tbaa !28
  %3360 = fcmp oeq double %3359, 1.000000e+00
  br i1 %3360, label %3361, label %3373

3361:                                             ; preds = %3349
  %3362 = load ptr, ptr %110, align 8, !tbaa !5
  %3363 = load i32, ptr %10, align 4, !tbaa !15
  %3364 = load i32, ptr %16, align 4, !tbaa !15
  %3365 = mul nsw i32 %3363, %3364
  %3366 = load i32, ptr %11, align 4, !tbaa !15
  %3367 = add nsw i32 %3365, %3366
  %3368 = sext i32 %3367 to i64
  %3369 = getelementptr inbounds float, ptr %3362, i64 %3368
  %3370 = load float, ptr %3369, align 4, !tbaa !30
  %3371 = load float, ptr %113, align 4, !tbaa !30
  %3372 = fadd float %3371, %3370
  store float %3372, ptr %113, align 4, !tbaa !30
  br label %3373

3373:                                             ; preds = %3361, %3349
  %3374 = load float, ptr %113, align 4, !tbaa !30
  %3375 = load ptr, ptr %110, align 8, !tbaa !5
  %3376 = load i32, ptr %10, align 4, !tbaa !15
  %3377 = load i32, ptr %16, align 4, !tbaa !15
  %3378 = mul nsw i32 %3376, %3377
  %3379 = load i32, ptr %11, align 4, !tbaa !15
  %3380 = add nsw i32 %3378, %3379
  %3381 = sext i32 %3380 to i64
  %3382 = getelementptr inbounds float, ptr %3375, i64 %3381
  store float %3374, ptr %3382, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #6
  br label %3383

3383:                                             ; preds = %3373
  %3384 = load i32, ptr %11, align 4, !tbaa !15
  %3385 = add nsw i32 %3384, 1
  store i32 %3385, ptr %11, align 4, !tbaa !15
  br label %3270, !llvm.loop !105

3386:                                             ; preds = %3270
  br label %3387

3387:                                             ; preds = %3386
  %3388 = load i32, ptr %10, align 4, !tbaa !15
  %3389 = add nsw i32 %3388, 1
  store i32 %3389, ptr %10, align 4, !tbaa !15
  br label %3265, !llvm.loop !106

3390:                                             ; preds = %3265
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #6
  br label %8148

3391:                                             ; preds = %3252, %3247, %3242, %3237, %3232, %3227
  %3392 = load ptr, ptr %5, align 8, !tbaa !5
  %3393 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3392, i32 0, i32 0
  %3394 = load i32, ptr %3393, align 8, !tbaa !26
  %3395 = icmp eq i32 %3394, 12
  br i1 %3395, label %3396, label %3555

3396:                                             ; preds = %3391
  %3397 = load ptr, ptr %5, align 8, !tbaa !5
  %3398 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3397, i32 0, i32 1
  %3399 = load i32, ptr %3398, align 4, !tbaa !27
  %3400 = icmp eq i32 %3399, 12
  br i1 %3400, label %3401, label %3555

3401:                                             ; preds = %3396
  %3402 = load ptr, ptr %5, align 8, !tbaa !5
  %3403 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3402, i32 0, i32 2
  %3404 = load i32, ptr %3403, align 8, !tbaa !29
  %3405 = icmp eq i32 %3404, 1
  br i1 %3405, label %3406, label %3555

3406:                                             ; preds = %3401
  %3407 = load ptr, ptr %5, align 8, !tbaa !5
  %3408 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3407, i32 0, i32 3
  %3409 = load i32, ptr %3408, align 4, !tbaa !62
  %3410 = icmp eq i32 %3409, 8
  br i1 %3410, label %3411, label %3555

3411:                                             ; preds = %3406
  %3412 = load ptr, ptr %5, align 8, !tbaa !5
  %3413 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3412, i32 0, i32 19
  %3414 = load i32, ptr %3413, align 4, !tbaa !79
  %3415 = icmp eq i32 %3414, 0
  br i1 %3415, label %3416, label %3555

3416:                                             ; preds = %3411
  %3417 = load ptr, ptr %5, align 8, !tbaa !5
  %3418 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3417, i32 0, i32 20
  %3419 = load i32, ptr %3418, align 8, !tbaa !80
  %3420 = icmp eq i32 %3419, 0
  br i1 %3420, label %3421, label %3555

3421:                                             ; preds = %3416
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #6
  %3422 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %3422, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #6
  %3423 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3423, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #6
  %3424 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3424, ptr %116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #6
  %3425 = load ptr, ptr %5, align 8, !tbaa !5
  %3426 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3425, i32 0, i32 0
  %3427 = load i32, ptr %3426, align 8, !tbaa !26
  %3428 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %3427)
  store i32 %3428, ptr %117, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %3429

3429:                                             ; preds = %3551, %3421
  %3430 = load i32, ptr %10, align 4, !tbaa !15
  %3431 = load i32, ptr %18, align 4, !tbaa !15
  %3432 = icmp slt i32 %3430, %3431
  br i1 %3432, label %3433, label %3554

3433:                                             ; preds = %3429
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %3434

3434:                                             ; preds = %3547, %3433
  %3435 = load i32, ptr %11, align 4, !tbaa !15
  %3436 = load i32, ptr %17, align 4, !tbaa !15
  %3437 = icmp slt i32 %3435, %3436
  br i1 %3437, label %3438, label %3550

3438:                                             ; preds = %3434
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #6
  store i32 0, ptr %118, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %3439

3439:                                             ; preds = %3510, %3438
  %3440 = load i32, ptr %9, align 4, !tbaa !15
  %3441 = load ptr, ptr %5, align 8, !tbaa !5
  %3442 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3441, i32 0, i32 26
  %3443 = load i32, ptr %3442, align 8, !tbaa !45
  %3444 = icmp slt i32 %3440, %3443
  br i1 %3444, label %3445, label %3513

3445:                                             ; preds = %3439
  %3446 = load i32, ptr %9, align 4, !tbaa !15
  %3447 = sext i32 %3446 to i64
  %3448 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %114, ptr noundef %115, ptr noundef %20, ptr noundef %21, i64 noundef %3447, ptr noundef %3448)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %3449

3449:                                             ; preds = %3506, %3445
  %3450 = load i32, ptr %12, align 4, !tbaa !15
  %3451 = load i32, ptr %19, align 4, !tbaa !15
  %3452 = load i32, ptr %117, align 4, !tbaa !15
  %3453 = sdiv i32 %3451, %3452
  %3454 = icmp slt i32 %3450, %3453
  br i1 %3454, label %3455, label %3509

3455:                                             ; preds = %3449
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %3456

3456:                                             ; preds = %3502, %3455
  %3457 = load i32, ptr %13, align 4, !tbaa !15
  %3458 = load i32, ptr %117, align 4, !tbaa !15
  %3459 = icmp slt i32 %3457, %3458
  br i1 %3459, label %3460, label %3505

3460:                                             ; preds = %3456
  %3461 = load ptr, ptr %114, align 8, !tbaa !5
  %3462 = load i64, ptr %20, align 8, !tbaa !21
  %3463 = load i32, ptr %12, align 4, !tbaa !15
  %3464 = load i32, ptr %14, align 4, !tbaa !15
  %3465 = load i32, ptr %117, align 4, !tbaa !15
  %3466 = mul nsw i32 %3464, %3465
  %3467 = mul nsw i32 %3463, %3466
  %3468 = sext i32 %3467 to i64
  %3469 = add nsw i64 %3462, %3468
  %3470 = load i32, ptr %11, align 4, !tbaa !15
  %3471 = load i32, ptr %117, align 4, !tbaa !15
  %3472 = mul nsw i32 %3470, %3471
  %3473 = sext i32 %3472 to i64
  %3474 = add nsw i64 %3469, %3473
  %3475 = load i32, ptr %13, align 4, !tbaa !15
  %3476 = sext i32 %3475 to i64
  %3477 = add nsw i64 %3474, %3476
  %3478 = getelementptr inbounds i8, ptr %3461, i64 %3477
  %3479 = load i8, ptr %3478, align 1, !tbaa !22
  %3480 = sext i8 %3479 to i32
  %3481 = load ptr, ptr %115, align 8, !tbaa !5
  %3482 = load i64, ptr %21, align 8, !tbaa !21
  %3483 = load i32, ptr %10, align 4, !tbaa !15
  %3484 = load i32, ptr %15, align 4, !tbaa !15
  %3485 = mul nsw i32 %3483, %3484
  %3486 = sext i32 %3485 to i64
  %3487 = add nsw i64 %3482, %3486
  %3488 = load i32, ptr %12, align 4, !tbaa !15
  %3489 = load i32, ptr %117, align 4, !tbaa !15
  %3490 = mul nsw i32 %3488, %3489
  %3491 = sext i32 %3490 to i64
  %3492 = add nsw i64 %3487, %3491
  %3493 = load i32, ptr %13, align 4, !tbaa !15
  %3494 = sext i32 %3493 to i64
  %3495 = add nsw i64 %3492, %3494
  %3496 = getelementptr inbounds i8, ptr %3481, i64 %3495
  %3497 = load i8, ptr %3496, align 1, !tbaa !22
  %3498 = sext i8 %3497 to i32
  %3499 = mul nsw i32 %3480, %3498
  %3500 = load i32, ptr %118, align 4, !tbaa !15
  %3501 = add nsw i32 %3500, %3499
  store i32 %3501, ptr %118, align 4, !tbaa !15
  br label %3502

3502:                                             ; preds = %3460
  %3503 = load i32, ptr %13, align 4, !tbaa !15
  %3504 = add nsw i32 %3503, 1
  store i32 %3504, ptr %13, align 4, !tbaa !15
  br label %3456, !llvm.loop !107

3505:                                             ; preds = %3456
  br label %3506

3506:                                             ; preds = %3505
  %3507 = load i32, ptr %12, align 4, !tbaa !15
  %3508 = add nsw i32 %3507, 1
  store i32 %3508, ptr %12, align 4, !tbaa !15
  br label %3449, !llvm.loop !108

3509:                                             ; preds = %3449
  br label %3510

3510:                                             ; preds = %3509
  %3511 = load i32, ptr %9, align 4, !tbaa !15
  %3512 = add nsw i32 %3511, 1
  store i32 %3512, ptr %9, align 4, !tbaa !15
  br label %3439, !llvm.loop !109

3513:                                             ; preds = %3439
  %3514 = load i32, ptr %118, align 4, !tbaa !15
  %3515 = sitofp i32 %3514 to float
  store float %3515, ptr %119, align 4, !tbaa !30
  %3516 = load ptr, ptr %5, align 8, !tbaa !5
  %3517 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3516, i32 0, i32 29
  %3518 = load float, ptr %3517, align 4, !tbaa !104
  %3519 = load float, ptr %119, align 4, !tbaa !30
  %3520 = fmul float %3519, %3518
  store float %3520, ptr %119, align 4, !tbaa !30
  %3521 = load ptr, ptr %5, align 8, !tbaa !5
  %3522 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3521, i32 0, i32 13
  %3523 = load double, ptr %3522, align 8, !tbaa !28
  %3524 = fcmp oeq double %3523, 1.000000e+00
  br i1 %3524, label %3525, label %3537

3525:                                             ; preds = %3513
  %3526 = load ptr, ptr %116, align 8, !tbaa !5
  %3527 = load i32, ptr %10, align 4, !tbaa !15
  %3528 = load i32, ptr %16, align 4, !tbaa !15
  %3529 = mul nsw i32 %3527, %3528
  %3530 = load i32, ptr %11, align 4, !tbaa !15
  %3531 = add nsw i32 %3529, %3530
  %3532 = sext i32 %3531 to i64
  %3533 = getelementptr inbounds float, ptr %3526, i64 %3532
  %3534 = load float, ptr %3533, align 4, !tbaa !30
  %3535 = load float, ptr %119, align 4, !tbaa !30
  %3536 = fadd float %3535, %3534
  store float %3536, ptr %119, align 4, !tbaa !30
  br label %3537

3537:                                             ; preds = %3525, %3513
  %3538 = load float, ptr %119, align 4, !tbaa !30
  %3539 = load ptr, ptr %116, align 8, !tbaa !5
  %3540 = load i32, ptr %10, align 4, !tbaa !15
  %3541 = load i32, ptr %16, align 4, !tbaa !15
  %3542 = mul nsw i32 %3540, %3541
  %3543 = load i32, ptr %11, align 4, !tbaa !15
  %3544 = add nsw i32 %3542, %3543
  %3545 = sext i32 %3544 to i64
  %3546 = getelementptr inbounds float, ptr %3539, i64 %3545
  store float %3538, ptr %3546, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #6
  br label %3547

3547:                                             ; preds = %3537
  %3548 = load i32, ptr %11, align 4, !tbaa !15
  %3549 = add nsw i32 %3548, 1
  store i32 %3549, ptr %11, align 4, !tbaa !15
  br label %3434, !llvm.loop !110

3550:                                             ; preds = %3434
  br label %3551

3551:                                             ; preds = %3550
  %3552 = load i32, ptr %10, align 4, !tbaa !15
  %3553 = add nsw i32 %3552, 1
  store i32 %3553, ptr %10, align 4, !tbaa !15
  br label %3429, !llvm.loop !111

3554:                                             ; preds = %3429
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  br label %8147

3555:                                             ; preds = %3416, %3411, %3406, %3401, %3396, %3391
  %3556 = load ptr, ptr %5, align 8, !tbaa !5
  %3557 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3556, i32 0, i32 0
  %3558 = load i32, ptr %3557, align 8, !tbaa !26
  %3559 = icmp eq i32 %3558, 12
  br i1 %3559, label %3560, label %3719

3560:                                             ; preds = %3555
  %3561 = load ptr, ptr %5, align 8, !tbaa !5
  %3562 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3561, i32 0, i32 1
  %3563 = load i32, ptr %3562, align 4, !tbaa !27
  %3564 = icmp eq i32 %3563, 12
  br i1 %3564, label %3565, label %3719

3565:                                             ; preds = %3560
  %3566 = load ptr, ptr %5, align 8, !tbaa !5
  %3567 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3566, i32 0, i32 2
  %3568 = load i32, ptr %3567, align 8, !tbaa !29
  %3569 = icmp eq i32 %3568, 1
  br i1 %3569, label %3570, label %3719

3570:                                             ; preds = %3565
  %3571 = load ptr, ptr %5, align 8, !tbaa !5
  %3572 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3571, i32 0, i32 3
  %3573 = load i32, ptr %3572, align 4, !tbaa !62
  %3574 = icmp eq i32 %3573, 8
  br i1 %3574, label %3575, label %3719

3575:                                             ; preds = %3570
  %3576 = load ptr, ptr %5, align 8, !tbaa !5
  %3577 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3576, i32 0, i32 19
  %3578 = load i32, ptr %3577, align 4, !tbaa !79
  %3579 = icmp eq i32 %3578, 1
  br i1 %3579, label %3580, label %3719

3580:                                             ; preds = %3575
  %3581 = load ptr, ptr %5, align 8, !tbaa !5
  %3582 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3581, i32 0, i32 20
  %3583 = load i32, ptr %3582, align 8, !tbaa !80
  %3584 = icmp eq i32 %3583, 0
  br i1 %3584, label %3585, label %3719

3585:                                             ; preds = %3580
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #6
  %3586 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %3586, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #6
  %3587 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3587, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #6
  %3588 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3588, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #6
  %3589 = load ptr, ptr %5, align 8, !tbaa !5
  %3590 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3589, i32 0, i32 0
  %3591 = load i32, ptr %3590, align 8, !tbaa !26
  %3592 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %3591)
  store i32 %3592, ptr %123, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %3593

3593:                                             ; preds = %3715, %3585
  %3594 = load i32, ptr %10, align 4, !tbaa !15
  %3595 = load i32, ptr %18, align 4, !tbaa !15
  %3596 = icmp slt i32 %3594, %3595
  br i1 %3596, label %3597, label %3718

3597:                                             ; preds = %3593
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %3598

3598:                                             ; preds = %3711, %3597
  %3599 = load i32, ptr %11, align 4, !tbaa !15
  %3600 = load i32, ptr %17, align 4, !tbaa !15
  %3601 = icmp slt i32 %3599, %3600
  br i1 %3601, label %3602, label %3714

3602:                                             ; preds = %3598
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #6
  store i32 0, ptr %124, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %3603

3603:                                             ; preds = %3674, %3602
  %3604 = load i32, ptr %9, align 4, !tbaa !15
  %3605 = load ptr, ptr %5, align 8, !tbaa !5
  %3606 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3605, i32 0, i32 26
  %3607 = load i32, ptr %3606, align 8, !tbaa !45
  %3608 = icmp slt i32 %3604, %3607
  br i1 %3608, label %3609, label %3677

3609:                                             ; preds = %3603
  %3610 = load i32, ptr %9, align 4, !tbaa !15
  %3611 = sext i32 %3610 to i64
  %3612 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %120, ptr noundef %121, ptr noundef %20, ptr noundef %21, i64 noundef %3611, ptr noundef %3612)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %3613

3613:                                             ; preds = %3670, %3609
  %3614 = load i32, ptr %12, align 4, !tbaa !15
  %3615 = load i32, ptr %19, align 4, !tbaa !15
  %3616 = load i32, ptr %123, align 4, !tbaa !15
  %3617 = sdiv i32 %3615, %3616
  %3618 = icmp slt i32 %3614, %3617
  br i1 %3618, label %3619, label %3673

3619:                                             ; preds = %3613
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %3620

3620:                                             ; preds = %3666, %3619
  %3621 = load i32, ptr %13, align 4, !tbaa !15
  %3622 = load i32, ptr %123, align 4, !tbaa !15
  %3623 = icmp slt i32 %3621, %3622
  br i1 %3623, label %3624, label %3669

3624:                                             ; preds = %3620
  %3625 = load ptr, ptr %120, align 8, !tbaa !5
  %3626 = load i64, ptr %20, align 8, !tbaa !21
  %3627 = load i32, ptr %12, align 4, !tbaa !15
  %3628 = load i32, ptr %14, align 4, !tbaa !15
  %3629 = load i32, ptr %123, align 4, !tbaa !15
  %3630 = mul nsw i32 %3628, %3629
  %3631 = mul nsw i32 %3627, %3630
  %3632 = sext i32 %3631 to i64
  %3633 = add nsw i64 %3626, %3632
  %3634 = load i32, ptr %11, align 4, !tbaa !15
  %3635 = load i32, ptr %123, align 4, !tbaa !15
  %3636 = mul nsw i32 %3634, %3635
  %3637 = sext i32 %3636 to i64
  %3638 = add nsw i64 %3633, %3637
  %3639 = load i32, ptr %13, align 4, !tbaa !15
  %3640 = sext i32 %3639 to i64
  %3641 = add nsw i64 %3638, %3640
  %3642 = getelementptr inbounds i8, ptr %3625, i64 %3641
  %3643 = load i8, ptr %3642, align 1, !tbaa !22
  %3644 = zext i8 %3643 to i32
  %3645 = load ptr, ptr %121, align 8, !tbaa !5
  %3646 = load i64, ptr %21, align 8, !tbaa !21
  %3647 = load i32, ptr %10, align 4, !tbaa !15
  %3648 = load i32, ptr %15, align 4, !tbaa !15
  %3649 = mul nsw i32 %3647, %3648
  %3650 = sext i32 %3649 to i64
  %3651 = add nsw i64 %3646, %3650
  %3652 = load i32, ptr %12, align 4, !tbaa !15
  %3653 = load i32, ptr %123, align 4, !tbaa !15
  %3654 = mul nsw i32 %3652, %3653
  %3655 = sext i32 %3654 to i64
  %3656 = add nsw i64 %3651, %3655
  %3657 = load i32, ptr %13, align 4, !tbaa !15
  %3658 = sext i32 %3657 to i64
  %3659 = add nsw i64 %3656, %3658
  %3660 = getelementptr inbounds i8, ptr %3645, i64 %3659
  %3661 = load i8, ptr %3660, align 1, !tbaa !22
  %3662 = sext i8 %3661 to i32
  %3663 = mul nsw i32 %3644, %3662
  %3664 = load i32, ptr %124, align 4, !tbaa !15
  %3665 = add nsw i32 %3664, %3663
  store i32 %3665, ptr %124, align 4, !tbaa !15
  br label %3666

3666:                                             ; preds = %3624
  %3667 = load i32, ptr %13, align 4, !tbaa !15
  %3668 = add nsw i32 %3667, 1
  store i32 %3668, ptr %13, align 4, !tbaa !15
  br label %3620, !llvm.loop !112

3669:                                             ; preds = %3620
  br label %3670

3670:                                             ; preds = %3669
  %3671 = load i32, ptr %12, align 4, !tbaa !15
  %3672 = add nsw i32 %3671, 1
  store i32 %3672, ptr %12, align 4, !tbaa !15
  br label %3613, !llvm.loop !113

3673:                                             ; preds = %3613
  br label %3674

3674:                                             ; preds = %3673
  %3675 = load i32, ptr %9, align 4, !tbaa !15
  %3676 = add nsw i32 %3675, 1
  store i32 %3676, ptr %9, align 4, !tbaa !15
  br label %3603, !llvm.loop !114

3677:                                             ; preds = %3603
  %3678 = load i32, ptr %124, align 4, !tbaa !15
  %3679 = sitofp i32 %3678 to float
  store float %3679, ptr %125, align 4, !tbaa !30
  %3680 = load ptr, ptr %5, align 8, !tbaa !5
  %3681 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3680, i32 0, i32 29
  %3682 = load float, ptr %3681, align 4, !tbaa !104
  %3683 = load float, ptr %125, align 4, !tbaa !30
  %3684 = fmul float %3683, %3682
  store float %3684, ptr %125, align 4, !tbaa !30
  %3685 = load ptr, ptr %5, align 8, !tbaa !5
  %3686 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3685, i32 0, i32 13
  %3687 = load double, ptr %3686, align 8, !tbaa !28
  %3688 = fcmp oeq double %3687, 1.000000e+00
  br i1 %3688, label %3689, label %3701

3689:                                             ; preds = %3677
  %3690 = load ptr, ptr %122, align 8, !tbaa !5
  %3691 = load i32, ptr %10, align 4, !tbaa !15
  %3692 = load i32, ptr %16, align 4, !tbaa !15
  %3693 = mul nsw i32 %3691, %3692
  %3694 = load i32, ptr %11, align 4, !tbaa !15
  %3695 = add nsw i32 %3693, %3694
  %3696 = sext i32 %3695 to i64
  %3697 = getelementptr inbounds float, ptr %3690, i64 %3696
  %3698 = load float, ptr %3697, align 4, !tbaa !30
  %3699 = load float, ptr %125, align 4, !tbaa !30
  %3700 = fadd float %3699, %3698
  store float %3700, ptr %125, align 4, !tbaa !30
  br label %3701

3701:                                             ; preds = %3689, %3677
  %3702 = load float, ptr %125, align 4, !tbaa !30
  %3703 = load ptr, ptr %122, align 8, !tbaa !5
  %3704 = load i32, ptr %10, align 4, !tbaa !15
  %3705 = load i32, ptr %16, align 4, !tbaa !15
  %3706 = mul nsw i32 %3704, %3705
  %3707 = load i32, ptr %11, align 4, !tbaa !15
  %3708 = add nsw i32 %3706, %3707
  %3709 = sext i32 %3708 to i64
  %3710 = getelementptr inbounds float, ptr %3703, i64 %3709
  store float %3702, ptr %3710, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #6
  br label %3711

3711:                                             ; preds = %3701
  %3712 = load i32, ptr %11, align 4, !tbaa !15
  %3713 = add nsw i32 %3712, 1
  store i32 %3713, ptr %11, align 4, !tbaa !15
  br label %3598, !llvm.loop !115

3714:                                             ; preds = %3598
  br label %3715

3715:                                             ; preds = %3714
  %3716 = load i32, ptr %10, align 4, !tbaa !15
  %3717 = add nsw i32 %3716, 1
  store i32 %3717, ptr %10, align 4, !tbaa !15
  br label %3593, !llvm.loop !116

3718:                                             ; preds = %3593
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #6
  br label %8146

3719:                                             ; preds = %3580, %3575, %3570, %3565, %3560, %3555
  %3720 = load ptr, ptr %5, align 8, !tbaa !5
  %3721 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3720, i32 0, i32 0
  %3722 = load i32, ptr %3721, align 8, !tbaa !26
  %3723 = icmp eq i32 %3722, 12
  br i1 %3723, label %3724, label %3883

3724:                                             ; preds = %3719
  %3725 = load ptr, ptr %5, align 8, !tbaa !5
  %3726 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3725, i32 0, i32 1
  %3727 = load i32, ptr %3726, align 4, !tbaa !27
  %3728 = icmp eq i32 %3727, 12
  br i1 %3728, label %3729, label %3883

3729:                                             ; preds = %3724
  %3730 = load ptr, ptr %5, align 8, !tbaa !5
  %3731 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3730, i32 0, i32 2
  %3732 = load i32, ptr %3731, align 8, !tbaa !29
  %3733 = icmp eq i32 %3732, 1
  br i1 %3733, label %3734, label %3883

3734:                                             ; preds = %3729
  %3735 = load ptr, ptr %5, align 8, !tbaa !5
  %3736 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3735, i32 0, i32 3
  %3737 = load i32, ptr %3736, align 4, !tbaa !62
  %3738 = icmp eq i32 %3737, 8
  br i1 %3738, label %3739, label %3883

3739:                                             ; preds = %3734
  %3740 = load ptr, ptr %5, align 8, !tbaa !5
  %3741 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3740, i32 0, i32 19
  %3742 = load i32, ptr %3741, align 4, !tbaa !79
  %3743 = icmp eq i32 %3742, 0
  br i1 %3743, label %3744, label %3883

3744:                                             ; preds = %3739
  %3745 = load ptr, ptr %5, align 8, !tbaa !5
  %3746 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3745, i32 0, i32 20
  %3747 = load i32, ptr %3746, align 8, !tbaa !80
  %3748 = icmp eq i32 %3747, 1
  br i1 %3748, label %3749, label %3883

3749:                                             ; preds = %3744
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #6
  %3750 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %3750, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #6
  %3751 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3751, ptr %127, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #6
  %3752 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3752, ptr %128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #6
  %3753 = load ptr, ptr %5, align 8, !tbaa !5
  %3754 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3753, i32 0, i32 0
  %3755 = load i32, ptr %3754, align 8, !tbaa !26
  %3756 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %3755)
  store i32 %3756, ptr %129, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %3757

3757:                                             ; preds = %3879, %3749
  %3758 = load i32, ptr %10, align 4, !tbaa !15
  %3759 = load i32, ptr %18, align 4, !tbaa !15
  %3760 = icmp slt i32 %3758, %3759
  br i1 %3760, label %3761, label %3882

3761:                                             ; preds = %3757
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %3762

3762:                                             ; preds = %3875, %3761
  %3763 = load i32, ptr %11, align 4, !tbaa !15
  %3764 = load i32, ptr %17, align 4, !tbaa !15
  %3765 = icmp slt i32 %3763, %3764
  br i1 %3765, label %3766, label %3878

3766:                                             ; preds = %3762
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #6
  store i32 0, ptr %130, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %3767

3767:                                             ; preds = %3838, %3766
  %3768 = load i32, ptr %9, align 4, !tbaa !15
  %3769 = load ptr, ptr %5, align 8, !tbaa !5
  %3770 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3769, i32 0, i32 26
  %3771 = load i32, ptr %3770, align 8, !tbaa !45
  %3772 = icmp slt i32 %3768, %3771
  br i1 %3772, label %3773, label %3841

3773:                                             ; preds = %3767
  %3774 = load i32, ptr %9, align 4, !tbaa !15
  %3775 = sext i32 %3774 to i64
  %3776 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %126, ptr noundef %127, ptr noundef %20, ptr noundef %21, i64 noundef %3775, ptr noundef %3776)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %3777

3777:                                             ; preds = %3834, %3773
  %3778 = load i32, ptr %12, align 4, !tbaa !15
  %3779 = load i32, ptr %19, align 4, !tbaa !15
  %3780 = load i32, ptr %129, align 4, !tbaa !15
  %3781 = sdiv i32 %3779, %3780
  %3782 = icmp slt i32 %3778, %3781
  br i1 %3782, label %3783, label %3837

3783:                                             ; preds = %3777
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %3784

3784:                                             ; preds = %3830, %3783
  %3785 = load i32, ptr %13, align 4, !tbaa !15
  %3786 = load i32, ptr %129, align 4, !tbaa !15
  %3787 = icmp slt i32 %3785, %3786
  br i1 %3787, label %3788, label %3833

3788:                                             ; preds = %3784
  %3789 = load ptr, ptr %126, align 8, !tbaa !5
  %3790 = load i64, ptr %20, align 8, !tbaa !21
  %3791 = load i32, ptr %12, align 4, !tbaa !15
  %3792 = load i32, ptr %14, align 4, !tbaa !15
  %3793 = load i32, ptr %129, align 4, !tbaa !15
  %3794 = mul nsw i32 %3792, %3793
  %3795 = mul nsw i32 %3791, %3794
  %3796 = sext i32 %3795 to i64
  %3797 = add nsw i64 %3790, %3796
  %3798 = load i32, ptr %11, align 4, !tbaa !15
  %3799 = load i32, ptr %129, align 4, !tbaa !15
  %3800 = mul nsw i32 %3798, %3799
  %3801 = sext i32 %3800 to i64
  %3802 = add nsw i64 %3797, %3801
  %3803 = load i32, ptr %13, align 4, !tbaa !15
  %3804 = sext i32 %3803 to i64
  %3805 = add nsw i64 %3802, %3804
  %3806 = getelementptr inbounds i8, ptr %3789, i64 %3805
  %3807 = load i8, ptr %3806, align 1, !tbaa !22
  %3808 = sext i8 %3807 to i32
  %3809 = load ptr, ptr %127, align 8, !tbaa !5
  %3810 = load i64, ptr %21, align 8, !tbaa !21
  %3811 = load i32, ptr %10, align 4, !tbaa !15
  %3812 = load i32, ptr %15, align 4, !tbaa !15
  %3813 = mul nsw i32 %3811, %3812
  %3814 = sext i32 %3813 to i64
  %3815 = add nsw i64 %3810, %3814
  %3816 = load i32, ptr %12, align 4, !tbaa !15
  %3817 = load i32, ptr %129, align 4, !tbaa !15
  %3818 = mul nsw i32 %3816, %3817
  %3819 = sext i32 %3818 to i64
  %3820 = add nsw i64 %3815, %3819
  %3821 = load i32, ptr %13, align 4, !tbaa !15
  %3822 = sext i32 %3821 to i64
  %3823 = add nsw i64 %3820, %3822
  %3824 = getelementptr inbounds i8, ptr %3809, i64 %3823
  %3825 = load i8, ptr %3824, align 1, !tbaa !22
  %3826 = zext i8 %3825 to i32
  %3827 = mul nsw i32 %3808, %3826
  %3828 = load i32, ptr %130, align 4, !tbaa !15
  %3829 = add nsw i32 %3828, %3827
  store i32 %3829, ptr %130, align 4, !tbaa !15
  br label %3830

3830:                                             ; preds = %3788
  %3831 = load i32, ptr %13, align 4, !tbaa !15
  %3832 = add nsw i32 %3831, 1
  store i32 %3832, ptr %13, align 4, !tbaa !15
  br label %3784, !llvm.loop !117

3833:                                             ; preds = %3784
  br label %3834

3834:                                             ; preds = %3833
  %3835 = load i32, ptr %12, align 4, !tbaa !15
  %3836 = add nsw i32 %3835, 1
  store i32 %3836, ptr %12, align 4, !tbaa !15
  br label %3777, !llvm.loop !118

3837:                                             ; preds = %3777
  br label %3838

3838:                                             ; preds = %3837
  %3839 = load i32, ptr %9, align 4, !tbaa !15
  %3840 = add nsw i32 %3839, 1
  store i32 %3840, ptr %9, align 4, !tbaa !15
  br label %3767, !llvm.loop !119

3841:                                             ; preds = %3767
  %3842 = load i32, ptr %130, align 4, !tbaa !15
  %3843 = sitofp i32 %3842 to float
  store float %3843, ptr %131, align 4, !tbaa !30
  %3844 = load ptr, ptr %5, align 8, !tbaa !5
  %3845 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3844, i32 0, i32 29
  %3846 = load float, ptr %3845, align 4, !tbaa !104
  %3847 = load float, ptr %131, align 4, !tbaa !30
  %3848 = fmul float %3847, %3846
  store float %3848, ptr %131, align 4, !tbaa !30
  %3849 = load ptr, ptr %5, align 8, !tbaa !5
  %3850 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3849, i32 0, i32 13
  %3851 = load double, ptr %3850, align 8, !tbaa !28
  %3852 = fcmp oeq double %3851, 1.000000e+00
  br i1 %3852, label %3853, label %3865

3853:                                             ; preds = %3841
  %3854 = load ptr, ptr %128, align 8, !tbaa !5
  %3855 = load i32, ptr %10, align 4, !tbaa !15
  %3856 = load i32, ptr %16, align 4, !tbaa !15
  %3857 = mul nsw i32 %3855, %3856
  %3858 = load i32, ptr %11, align 4, !tbaa !15
  %3859 = add nsw i32 %3857, %3858
  %3860 = sext i32 %3859 to i64
  %3861 = getelementptr inbounds float, ptr %3854, i64 %3860
  %3862 = load float, ptr %3861, align 4, !tbaa !30
  %3863 = load float, ptr %131, align 4, !tbaa !30
  %3864 = fadd float %3863, %3862
  store float %3864, ptr %131, align 4, !tbaa !30
  br label %3865

3865:                                             ; preds = %3853, %3841
  %3866 = load float, ptr %131, align 4, !tbaa !30
  %3867 = load ptr, ptr %128, align 8, !tbaa !5
  %3868 = load i32, ptr %10, align 4, !tbaa !15
  %3869 = load i32, ptr %16, align 4, !tbaa !15
  %3870 = mul nsw i32 %3868, %3869
  %3871 = load i32, ptr %11, align 4, !tbaa !15
  %3872 = add nsw i32 %3870, %3871
  %3873 = sext i32 %3872 to i64
  %3874 = getelementptr inbounds float, ptr %3867, i64 %3873
  store float %3866, ptr %3874, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #6
  br label %3875

3875:                                             ; preds = %3865
  %3876 = load i32, ptr %11, align 4, !tbaa !15
  %3877 = add nsw i32 %3876, 1
  store i32 %3877, ptr %11, align 4, !tbaa !15
  br label %3762, !llvm.loop !120

3878:                                             ; preds = %3762
  br label %3879

3879:                                             ; preds = %3878
  %3880 = load i32, ptr %10, align 4, !tbaa !15
  %3881 = add nsw i32 %3880, 1
  store i32 %3881, ptr %10, align 4, !tbaa !15
  br label %3757, !llvm.loop !121

3882:                                             ; preds = %3757
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #6
  br label %8145

3883:                                             ; preds = %3744, %3739, %3734, %3729, %3724, %3719
  %3884 = load ptr, ptr %5, align 8, !tbaa !5
  %3885 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3884, i32 0, i32 0
  %3886 = load i32, ptr %3885, align 8, !tbaa !26
  %3887 = icmp eq i32 %3886, 12
  br i1 %3887, label %3888, label %4083

3888:                                             ; preds = %3883
  %3889 = load ptr, ptr %5, align 8, !tbaa !5
  %3890 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3889, i32 0, i32 1
  %3891 = load i32, ptr %3890, align 4, !tbaa !27
  %3892 = icmp eq i32 %3891, 2
  br i1 %3892, label %3893, label %4083

3893:                                             ; preds = %3888
  %3894 = load ptr, ptr %5, align 8, !tbaa !5
  %3895 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3894, i32 0, i32 2
  %3896 = load i32, ptr %3895, align 8, !tbaa !29
  %3897 = icmp eq i32 %3896, 2
  br i1 %3897, label %3903, label %3898

3898:                                             ; preds = %3893
  %3899 = load ptr, ptr %5, align 8, !tbaa !5
  %3900 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3899, i32 0, i32 2
  %3901 = load i32, ptr %3900, align 8, !tbaa !29
  %3902 = icmp eq i32 %3901, 1
  br i1 %3902, label %3903, label %4083

3903:                                             ; preds = %3898, %3893
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #6
  %3904 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %3904, ptr %132, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #6
  %3905 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3905, ptr %133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #6
  %3906 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %3906, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #6
  %3907 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3907, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #6
  store i32 1, ptr %136, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 2, ptr %137) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #6
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %3908

3908:                                             ; preds = %4079, %3903
  %3909 = load i32, ptr %10, align 4, !tbaa !15
  %3910 = load i32, ptr %18, align 4, !tbaa !15
  %3911 = icmp slt i32 %3909, %3910
  br i1 %3911, label %3912, label %4082

3912:                                             ; preds = %3908
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %3913

3913:                                             ; preds = %4075, %3912
  %3914 = load i32, ptr %11, align 4, !tbaa !15
  %3915 = load i32, ptr %17, align 4, !tbaa !15
  %3916 = icmp slt i32 %3914, %3915
  br i1 %3916, label %3917, label %4078

3917:                                             ; preds = %3913
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #6
  store float 0.000000e+00, ptr %139, align 4, !tbaa !30
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %3918

3918:                                             ; preds = %4007, %3917
  %3919 = load i32, ptr %9, align 4, !tbaa !15
  %3920 = load ptr, ptr %5, align 8, !tbaa !5
  %3921 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3920, i32 0, i32 26
  %3922 = load i32, ptr %3921, align 8, !tbaa !45
  %3923 = icmp slt i32 %3919, %3922
  br i1 %3923, label %3924, label %4010

3924:                                             ; preds = %3918
  %3925 = load i32, ptr %9, align 4, !tbaa !15
  %3926 = sext i32 %3925 to i64
  %3927 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %132, ptr noundef %135, ptr noundef %20, ptr noundef %21, i64 noundef %3926, ptr noundef %3927)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %3928

3928:                                             ; preds = %4003, %3924
  %3929 = load i32, ptr %12, align 4, !tbaa !15
  %3930 = load i32, ptr %19, align 4, !tbaa !15
  %3931 = load i32, ptr %136, align 4, !tbaa !15
  %3932 = sdiv i32 %3930, %3931
  %3933 = icmp slt i32 %3929, %3932
  br i1 %3933, label %3934, label %4006

3934:                                             ; preds = %3928
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %3935

3935:                                             ; preds = %3999, %3934
  %3936 = load i32, ptr %13, align 4, !tbaa !15
  %3937 = load i32, ptr %136, align 4, !tbaa !15
  %3938 = icmp slt i32 %3936, %3937
  br i1 %3938, label %3939, label %4002

3939:                                             ; preds = %3935
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #6
  %3940 = load ptr, ptr %132, align 8, !tbaa !5
  %3941 = load i64, ptr %20, align 8, !tbaa !21
  %3942 = load i32, ptr %12, align 4, !tbaa !15
  %3943 = load i32, ptr %14, align 4, !tbaa !15
  %3944 = load i32, ptr %136, align 4, !tbaa !15
  %3945 = mul nsw i32 %3943, %3944
  %3946 = mul nsw i32 %3942, %3945
  %3947 = sext i32 %3946 to i64
  %3948 = add nsw i64 %3941, %3947
  %3949 = load i32, ptr %11, align 4, !tbaa !15
  %3950 = load i32, ptr %136, align 4, !tbaa !15
  %3951 = mul nsw i32 %3949, %3950
  %3952 = sext i32 %3951 to i64
  %3953 = add nsw i64 %3948, %3952
  %3954 = load i32, ptr %13, align 4, !tbaa !15
  %3955 = sext i32 %3954 to i64
  %3956 = add nsw i64 %3953, %3955
  %3957 = getelementptr inbounds i8, ptr %3940, i64 %3956
  %3958 = load i8, ptr %3957, align 1, !tbaa !22
  store i8 %3958, ptr %142, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #6
  %3959 = load i8, ptr %142, align 1, !tbaa !22
  %3960 = sext i8 %3959 to i32
  store i32 %3960, ptr %143, align 4, !tbaa !15
  %3961 = load i32, ptr %143, align 4, !tbaa !15
  %3962 = sitofp i32 %3961 to float
  store float %3962, ptr %140, align 4, !tbaa !30
  %3963 = load float, ptr %140, align 4, !tbaa !30
  %3964 = load ptr, ptr %5, align 8, !tbaa !5
  %3965 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %3964, i32 0, i32 30
  %3966 = load ptr, ptr %3965, align 8, !tbaa !122
  %3967 = load i32, ptr %11, align 4, !tbaa !15
  %3968 = sext i32 %3967 to i64
  %3969 = getelementptr inbounds float, ptr %3966, i64 %3968
  %3970 = load float, ptr %3969, align 4, !tbaa !30
  %3971 = fmul float %3963, %3970
  store float %3971, ptr %140, align 4, !tbaa !30
  %3972 = load float, ptr %140, align 4, !tbaa !30
  %3973 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %3972)
  store i16 %3973, ptr %137, align 2, !tbaa !33
  %3974 = load i16, ptr %137, align 2, !tbaa !33
  %3975 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %3974)
  store float %3975, ptr %140, align 4, !tbaa !30
  %3976 = load ptr, ptr %135, align 8, !tbaa !5
  %3977 = load i64, ptr %21, align 8, !tbaa !21
  %3978 = load i32, ptr %10, align 4, !tbaa !15
  %3979 = load i32, ptr %15, align 4, !tbaa !15
  %3980 = mul nsw i32 %3978, %3979
  %3981 = sext i32 %3980 to i64
  %3982 = add nsw i64 %3977, %3981
  %3983 = load i32, ptr %12, align 4, !tbaa !15
  %3984 = load i32, ptr %136, align 4, !tbaa !15
  %3985 = mul nsw i32 %3983, %3984
  %3986 = sext i32 %3985 to i64
  %3987 = add nsw i64 %3982, %3986
  %3988 = load i32, ptr %13, align 4, !tbaa !15
  %3989 = sext i32 %3988 to i64
  %3990 = add nsw i64 %3987, %3989
  %3991 = getelementptr inbounds i16, ptr %3976, i64 %3990
  %3992 = load i16, ptr %3991, align 2, !tbaa !33
  store i16 %3992, ptr %137, align 2, !tbaa !33
  %3993 = load i16, ptr %137, align 2, !tbaa !33
  %3994 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %3993)
  store float %3994, ptr %141, align 4, !tbaa !30
  %3995 = load float, ptr %140, align 4, !tbaa !30
  %3996 = load float, ptr %141, align 4, !tbaa !30
  %3997 = load float, ptr %139, align 4, !tbaa !30
  %3998 = call float @llvm.fmuladd.f32(float %3995, float %3996, float %3997)
  store float %3998, ptr %139, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #6
  br label %3999

3999:                                             ; preds = %3939
  %4000 = load i32, ptr %13, align 4, !tbaa !15
  %4001 = add nsw i32 %4000, 1
  store i32 %4001, ptr %13, align 4, !tbaa !15
  br label %3935, !llvm.loop !123

4002:                                             ; preds = %3935
  br label %4003

4003:                                             ; preds = %4002
  %4004 = load i32, ptr %12, align 4, !tbaa !15
  %4005 = add nsw i32 %4004, 1
  store i32 %4005, ptr %12, align 4, !tbaa !15
  br label %3928, !llvm.loop !124

4006:                                             ; preds = %3928
  br label %4007

4007:                                             ; preds = %4006
  %4008 = load i32, ptr %9, align 4, !tbaa !15
  %4009 = add nsw i32 %4008, 1
  store i32 %4009, ptr %9, align 4, !tbaa !15
  br label %3918, !llvm.loop !125

4010:                                             ; preds = %3918
  %4011 = load ptr, ptr %5, align 8, !tbaa !5
  %4012 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4011, i32 0, i32 2
  %4013 = load i32, ptr %4012, align 8, !tbaa !29
  %4014 = icmp eq i32 %4013, 2
  br i1 %4014, label %4015, label %4047

4015:                                             ; preds = %4010
  %4016 = load ptr, ptr %5, align 8, !tbaa !5
  %4017 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4016, i32 0, i32 13
  %4018 = load double, ptr %4017, align 8, !tbaa !28
  %4019 = fcmp oeq double %4018, 1.000000e+00
  br i1 %4019, label %4020, label %4035

4020:                                             ; preds = %4015
  %4021 = load ptr, ptr %133, align 8, !tbaa !5
  %4022 = load i32, ptr %10, align 4, !tbaa !15
  %4023 = load i32, ptr %16, align 4, !tbaa !15
  %4024 = mul nsw i32 %4022, %4023
  %4025 = load i32, ptr %11, align 4, !tbaa !15
  %4026 = add nsw i32 %4024, %4025
  %4027 = sext i32 %4026 to i64
  %4028 = getelementptr inbounds i16, ptr %4021, i64 %4027
  %4029 = load i16, ptr %4028, align 2, !tbaa !33
  store i16 %4029, ptr %137, align 2, !tbaa !33
  %4030 = load i16, ptr %137, align 2, !tbaa !33
  %4031 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %4030)
  store float %4031, ptr %138, align 4, !tbaa !30
  %4032 = load float, ptr %138, align 4, !tbaa !30
  %4033 = load float, ptr %139, align 4, !tbaa !30
  %4034 = fadd float %4033, %4032
  store float %4034, ptr %139, align 4, !tbaa !30
  br label %4035

4035:                                             ; preds = %4020, %4015
  %4036 = load float, ptr %139, align 4, !tbaa !30
  %4037 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %4036)
  store i16 %4037, ptr %137, align 2, !tbaa !33
  %4038 = load i16, ptr %137, align 2, !tbaa !33
  %4039 = load ptr, ptr %133, align 8, !tbaa !5
  %4040 = load i32, ptr %10, align 4, !tbaa !15
  %4041 = load i32, ptr %16, align 4, !tbaa !15
  %4042 = mul nsw i32 %4040, %4041
  %4043 = load i32, ptr %11, align 4, !tbaa !15
  %4044 = add nsw i32 %4042, %4043
  %4045 = sext i32 %4044 to i64
  %4046 = getelementptr inbounds i16, ptr %4039, i64 %4045
  store i16 %4038, ptr %4046, align 2, !tbaa !33
  br label %4074

4047:                                             ; preds = %4010
  %4048 = load ptr, ptr %5, align 8, !tbaa !5
  %4049 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4048, i32 0, i32 13
  %4050 = load double, ptr %4049, align 8, !tbaa !28
  %4051 = fcmp oeq double %4050, 1.000000e+00
  br i1 %4051, label %4052, label %4064

4052:                                             ; preds = %4047
  %4053 = load ptr, ptr %134, align 8, !tbaa !5
  %4054 = load i32, ptr %10, align 4, !tbaa !15
  %4055 = load i32, ptr %16, align 4, !tbaa !15
  %4056 = mul nsw i32 %4054, %4055
  %4057 = load i32, ptr %11, align 4, !tbaa !15
  %4058 = add nsw i32 %4056, %4057
  %4059 = sext i32 %4058 to i64
  %4060 = getelementptr inbounds float, ptr %4053, i64 %4059
  %4061 = load float, ptr %4060, align 4, !tbaa !30
  %4062 = load float, ptr %139, align 4, !tbaa !30
  %4063 = fadd float %4062, %4061
  store float %4063, ptr %139, align 4, !tbaa !30
  br label %4064

4064:                                             ; preds = %4052, %4047
  %4065 = load float, ptr %139, align 4, !tbaa !30
  %4066 = load ptr, ptr %134, align 8, !tbaa !5
  %4067 = load i32, ptr %10, align 4, !tbaa !15
  %4068 = load i32, ptr %16, align 4, !tbaa !15
  %4069 = mul nsw i32 %4067, %4068
  %4070 = load i32, ptr %11, align 4, !tbaa !15
  %4071 = add nsw i32 %4069, %4070
  %4072 = sext i32 %4071 to i64
  %4073 = getelementptr inbounds float, ptr %4066, i64 %4072
  store float %4065, ptr %4073, align 4, !tbaa !30
  br label %4074

4074:                                             ; preds = %4064, %4035
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #6
  br label %4075

4075:                                             ; preds = %4074
  %4076 = load i32, ptr %11, align 4, !tbaa !15
  %4077 = add nsw i32 %4076, 1
  store i32 %4077, ptr %11, align 4, !tbaa !15
  br label %3913, !llvm.loop !126

4078:                                             ; preds = %3913
  br label %4079

4079:                                             ; preds = %4078
  %4080 = load i32, ptr %10, align 4, !tbaa !15
  %4081 = add nsw i32 %4080, 1
  store i32 %4081, ptr %10, align 4, !tbaa !15
  br label %3908, !llvm.loop !127

4082:                                             ; preds = %3908
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %137) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #6
  br label %8144

4083:                                             ; preds = %3898, %3888, %3883
  %4084 = load ptr, ptr %5, align 8, !tbaa !5
  %4085 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4084, i32 0, i32 0
  %4086 = load i32, ptr %4085, align 8, !tbaa !26
  %4087 = icmp eq i32 %4086, 4
  br i1 %4087, label %4088, label %4382

4088:                                             ; preds = %4083
  %4089 = load ptr, ptr %5, align 8, !tbaa !5
  %4090 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4089, i32 0, i32 1
  %4091 = load i32, ptr %4090, align 4, !tbaa !27
  %4092 = icmp eq i32 %4091, 3
  br i1 %4092, label %4093, label %4382

4093:                                             ; preds = %4088
  %4094 = load ptr, ptr %5, align 8, !tbaa !5
  %4095 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4094, i32 0, i32 2
  %4096 = load i32, ptr %4095, align 8, !tbaa !29
  %4097 = icmp eq i32 %4096, 3
  br i1 %4097, label %4103, label %4098

4098:                                             ; preds = %4093
  %4099 = load ptr, ptr %5, align 8, !tbaa !5
  %4100 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4099, i32 0, i32 2
  %4101 = load i32, ptr %4100, align 8, !tbaa !29
  %4102 = icmp eq i32 %4101, 1
  br i1 %4102, label %4103, label %4382

4103:                                             ; preds = %4098, %4093
  %4104 = load ptr, ptr %5, align 8, !tbaa !5
  %4105 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4104, i32 0, i32 3
  %4106 = load i32, ptr %4105, align 4, !tbaa !62
  %4107 = icmp eq i32 %4106, 3
  br i1 %4107, label %4118, label %4108

4108:                                             ; preds = %4103
  %4109 = load ptr, ptr %5, align 8, !tbaa !5
  %4110 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4109, i32 0, i32 3
  %4111 = load i32, ptr %4110, align 4, !tbaa !62
  %4112 = icmp eq i32 %4111, 1
  br i1 %4112, label %4118, label %4113

4113:                                             ; preds = %4108
  %4114 = load ptr, ptr %5, align 8, !tbaa !5
  %4115 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4114, i32 0, i32 3
  %4116 = load i32, ptr %4115, align 4, !tbaa !62
  %4117 = icmp eq i32 %4116, 14
  br i1 %4117, label %4118, label %4382

4118:                                             ; preds = %4113, %4108, %4103
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #6
  %4119 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %4119, ptr %144, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #6
  %4120 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %4120, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #6
  %4121 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %4121, ptr %146, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #6
  %4122 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %4122, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %148) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %149) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #6
  %4123 = load ptr, ptr %5, align 8, !tbaa !5
  %4124 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4123, i32 0, i32 16
  %4125 = load i32, ptr %4124, align 8, !tbaa !128
  %4126 = icmp ne i32 %4125, 0
  br i1 %4126, label %4127, label %4132

4127:                                             ; preds = %4118
  %4128 = load ptr, ptr %5, align 8, !tbaa !5
  %4129 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4128, i32 0, i32 1
  %4130 = load i32, ptr %4129, align 4, !tbaa !27
  %4131 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %4130)
  br label %4133

4132:                                             ; preds = %4118
  br label %4133

4133:                                             ; preds = %4132, %4127
  %4134 = phi i32 [ %4131, %4127 ], [ 1, %4132 ]
  store i32 %4134, ptr %151, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #6
  %4135 = call ptr @getenv(ptr noundef @.str.2) #6
  store ptr %4135, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #6
  %4136 = load ptr, ptr %152, align 8, !tbaa !5
  %4137 = icmp eq ptr %4136, null
  br i1 %4137, label %4138, label %4139

4138:                                             ; preds = %4133
  br label %4152

4139:                                             ; preds = %4133
  %4140 = load ptr, ptr %152, align 8, !tbaa !5
  %4141 = load ptr, ptr %152, align 8, !tbaa !5
  %4142 = call ptr @strstr(ptr noundef %4141, ptr noundef @.str.3) #7
  %4143 = icmp eq ptr %4140, %4142
  br i1 %4143, label %4149, label %4144

4144:                                             ; preds = %4139
  %4145 = load ptr, ptr %152, align 8, !tbaa !5
  %4146 = load ptr, ptr %152, align 8, !tbaa !5
  %4147 = call ptr @strstr(ptr noundef %4146, ptr noundef @.str.4) #7
  %4148 = icmp eq ptr %4145, %4147
  br label %4149

4149:                                             ; preds = %4144, %4139
  %4150 = phi i1 [ true, %4139 ], [ %4148, %4144 ]
  %4151 = zext i1 %4150 to i32
  br label %4152

4152:                                             ; preds = %4149, %4138
  %4153 = phi i32 [ 0, %4138 ], [ %4151, %4149 ]
  store i32 %4153, ptr %153, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #6
  %4154 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %4154, ptr %154, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #6
  %4155 = load i32, ptr %153, align 4, !tbaa !15
  %4156 = icmp sgt i32 %4155, 0
  br i1 %4156, label %4157, label %4158

4157:                                             ; preds = %4152
  br label %4168

4158:                                             ; preds = %4152
  %4159 = load ptr, ptr %152, align 8, !tbaa !5
  %4160 = icmp eq ptr %4159, null
  br i1 %4160, label %4161, label %4164

4161:                                             ; preds = %4158
  %4162 = load i32, ptr %154, align 4, !tbaa !15
  %4163 = icmp sge i32 %4162, 1104
  br label %4164

4164:                                             ; preds = %4161, %4158
  %4165 = phi i1 [ false, %4158 ], [ %4163, %4161 ]
  %4166 = zext i1 %4165 to i64
  %4167 = select i1 %4165, i32 1, i32 0
  br label %4168

4168:                                             ; preds = %4164, %4157
  %4169 = phi i32 [ 1, %4157 ], [ %4167, %4164 ]
  store i32 %4169, ptr %155, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #6
  %4170 = load ptr, ptr %5, align 8, !tbaa !5
  %4171 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4170, i32 0, i32 3
  %4172 = load i32, ptr %4171, align 4, !tbaa !62
  %4173 = icmp eq i32 %4172, 3
  br i1 %4173, label %4184, label %4174

4174:                                             ; preds = %4168
  %4175 = load ptr, ptr %5, align 8, !tbaa !5
  %4176 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4175, i32 0, i32 3
  %4177 = load i32, ptr %4176, align 4, !tbaa !62
  %4178 = icmp eq i32 %4177, 14
  br i1 %4178, label %4179, label %4182

4179:                                             ; preds = %4174
  %4180 = load i32, ptr %155, align 4, !tbaa !15
  %4181 = icmp sgt i32 %4180, 0
  br label %4182

4182:                                             ; preds = %4179, %4174
  %4183 = phi i1 [ false, %4174 ], [ %4181, %4179 ]
  br label %4184

4184:                                             ; preds = %4182, %4168
  %4185 = phi i1 [ true, %4168 ], [ %4183, %4182 ]
  %4186 = zext i1 %4185 to i64
  %4187 = select i1 %4185, i32 1, i32 0
  store i32 %4187, ptr %156, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %4188

4188:                                             ; preds = %4378, %4184
  %4189 = load i32, ptr %10, align 4, !tbaa !15
  %4190 = load i32, ptr %18, align 4, !tbaa !15
  %4191 = icmp slt i32 %4189, %4190
  br i1 %4191, label %4192, label %4381

4192:                                             ; preds = %4188
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %4193

4193:                                             ; preds = %4374, %4192
  %4194 = load i32, ptr %11, align 4, !tbaa !15
  %4195 = load i32, ptr %17, align 4, !tbaa !15
  %4196 = icmp slt i32 %4194, %4195
  br i1 %4196, label %4197, label %4377

4197:                                             ; preds = %4193
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #6
  store float 0.000000e+00, ptr %157, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %4198

4198:                                             ; preds = %4306, %4197
  %4199 = load i32, ptr %9, align 4, !tbaa !15
  %4200 = load ptr, ptr %5, align 8, !tbaa !5
  %4201 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4200, i32 0, i32 26
  %4202 = load i32, ptr %4201, align 8, !tbaa !45
  %4203 = icmp slt i32 %4199, %4202
  br i1 %4203, label %4204, label %4309

4204:                                             ; preds = %4198
  %4205 = load i32, ptr %9, align 4, !tbaa !15
  %4206 = sext i32 %4205 to i64
  %4207 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %144, ptr noundef %147, ptr noundef %20, ptr noundef %21, i64 noundef %4206, ptr noundef %4207)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %4208

4208:                                             ; preds = %4302, %4204
  %4209 = load i32, ptr %12, align 4, !tbaa !15
  %4210 = load i32, ptr %19, align 4, !tbaa !15
  %4211 = load i32, ptr %151, align 4, !tbaa !15
  %4212 = sdiv i32 %4210, %4211
  %4213 = icmp slt i32 %4209, %4212
  br i1 %4213, label %4214, label %4305

4214:                                             ; preds = %4208
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %4215

4215:                                             ; preds = %4298, %4214
  %4216 = load i32, ptr %13, align 4, !tbaa !15
  %4217 = load i32, ptr %151, align 4, !tbaa !15
  %4218 = icmp slt i32 %4216, %4217
  br i1 %4218, label %4219, label %4301

4219:                                             ; preds = %4215
  call void @llvm.lifetime.start.p0(i64 2, ptr %159) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #6
  %4220 = getelementptr inbounds [2 x i8], ptr %159, i64 0, i64 0
  store i8 0, ptr %4220, align 2, !tbaa !22
  %4221 = load ptr, ptr %144, align 8, !tbaa !5
  %4222 = load i64, ptr %20, align 8, !tbaa !21
  %4223 = load i32, ptr %12, align 4, !tbaa !15
  %4224 = load i32, ptr %14, align 4, !tbaa !15
  %4225 = load i32, ptr %151, align 4, !tbaa !15
  %4226 = mul nsw i32 %4224, %4225
  %4227 = mul nsw i32 %4223, %4226
  %4228 = sext i32 %4227 to i64
  %4229 = add nsw i64 %4222, %4228
  %4230 = load i32, ptr %11, align 4, !tbaa !15
  %4231 = load i32, ptr %151, align 4, !tbaa !15
  %4232 = mul nsw i32 %4230, %4231
  %4233 = sext i32 %4232 to i64
  %4234 = add nsw i64 %4229, %4233
  %4235 = load i32, ptr %13, align 4, !tbaa !15
  %4236 = sext i32 %4235 to i64
  %4237 = add nsw i64 %4234, %4236
  %4238 = getelementptr inbounds i8, ptr %4221, i64 %4237
  %4239 = load i8, ptr %4238, align 1, !tbaa !22
  %4240 = getelementptr inbounds [2 x i8], ptr %159, i64 0, i64 1
  store i8 %4239, ptr %4240, align 1, !tbaa !22
  %4241 = load i16, ptr %159, align 2, !tbaa !22
  %4242 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4241)
  store float %4242, ptr %160, align 4, !tbaa !30
  %4243 = load ptr, ptr %5, align 8, !tbaa !5
  %4244 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4243, i32 0, i32 15
  %4245 = load i32, ptr %4244, align 4, !tbaa !64
  %4246 = icmp eq i32 %4245, 0
  br i1 %4246, label %4247, label %4265

4247:                                             ; preds = %4219
  %4248 = load ptr, ptr %147, align 8, !tbaa !5
  %4249 = load i64, ptr %21, align 8, !tbaa !21
  %4250 = load i32, ptr %10, align 4, !tbaa !15
  %4251 = load i32, ptr %15, align 4, !tbaa !15
  %4252 = mul nsw i32 %4250, %4251
  %4253 = sext i32 %4252 to i64
  %4254 = add nsw i64 %4249, %4253
  %4255 = load i32, ptr %12, align 4, !tbaa !15
  %4256 = load i32, ptr %151, align 4, !tbaa !15
  %4257 = mul nsw i32 %4255, %4256
  %4258 = sext i32 %4257 to i64
  %4259 = add nsw i64 %4254, %4258
  %4260 = load i32, ptr %13, align 4, !tbaa !15
  %4261 = sext i32 %4260 to i64
  %4262 = add nsw i64 %4259, %4261
  %4263 = getelementptr inbounds i16, ptr %4248, i64 %4262
  %4264 = load i16, ptr %4263, align 2, !tbaa !33
  store i16 %4264, ptr %149, align 2, !tbaa !33
  br label %4283

4265:                                             ; preds = %4219
  %4266 = load ptr, ptr %147, align 8, !tbaa !5
  %4267 = load i64, ptr %21, align 8, !tbaa !21
  %4268 = load i32, ptr %12, align 4, !tbaa !15
  %4269 = load i32, ptr %151, align 4, !tbaa !15
  %4270 = mul nsw i32 %4268, %4269
  %4271 = load i32, ptr %13, align 4, !tbaa !15
  %4272 = add nsw i32 %4270, %4271
  %4273 = sext i32 %4272 to i64
  %4274 = load i32, ptr %15, align 4, !tbaa !15
  %4275 = sext i32 %4274 to i64
  %4276 = mul nsw i64 %4273, %4275
  %4277 = add nsw i64 %4267, %4276
  %4278 = load i32, ptr %10, align 4, !tbaa !15
  %4279 = sext i32 %4278 to i64
  %4280 = add nsw i64 %4277, %4279
  %4281 = getelementptr inbounds i16, ptr %4266, i64 %4280
  %4282 = load i16, ptr %4281, align 2, !tbaa !33
  store i16 %4282, ptr %149, align 2, !tbaa !33
  br label %4283

4283:                                             ; preds = %4265, %4247
  %4284 = load i16, ptr %149, align 2, !tbaa !33
  %4285 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4284)
  store float %4285, ptr %158, align 4, !tbaa !30
  %4286 = load float, ptr %160, align 4, !tbaa !30
  %4287 = load float, ptr %158, align 4, !tbaa !30
  %4288 = load float, ptr %157, align 4, !tbaa !30
  %4289 = call float @llvm.fmuladd.f32(float %4286, float %4287, float %4288)
  store float %4289, ptr %157, align 4, !tbaa !30
  %4290 = load i32, ptr %156, align 4, !tbaa !15
  %4291 = icmp sgt i32 %4290, 0
  br i1 %4291, label %4292, label %4297

4292:                                             ; preds = %4283
  %4293 = load float, ptr %157, align 4, !tbaa !30
  %4294 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4293)
  store i16 %4294, ptr %148, align 2, !tbaa !33
  %4295 = load i16, ptr %148, align 2, !tbaa !33
  %4296 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4295)
  store float %4296, ptr %157, align 4, !tbaa !30
  br label %4297

4297:                                             ; preds = %4292, %4283
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %159) #6
  br label %4298

4298:                                             ; preds = %4297
  %4299 = load i32, ptr %13, align 4, !tbaa !15
  %4300 = add nsw i32 %4299, 1
  store i32 %4300, ptr %13, align 4, !tbaa !15
  br label %4215, !llvm.loop !129

4301:                                             ; preds = %4215
  br label %4302

4302:                                             ; preds = %4301
  %4303 = load i32, ptr %12, align 4, !tbaa !15
  %4304 = add nsw i32 %4303, 1
  store i32 %4304, ptr %12, align 4, !tbaa !15
  br label %4208, !llvm.loop !130

4305:                                             ; preds = %4208
  br label %4306

4306:                                             ; preds = %4305
  %4307 = load i32, ptr %9, align 4, !tbaa !15
  %4308 = add nsw i32 %4307, 1
  store i32 %4308, ptr %9, align 4, !tbaa !15
  br label %4198, !llvm.loop !131

4309:                                             ; preds = %4198
  %4310 = load ptr, ptr %5, align 8, !tbaa !5
  %4311 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4310, i32 0, i32 2
  %4312 = load i32, ptr %4311, align 8, !tbaa !29
  %4313 = icmp eq i32 %4312, 3
  br i1 %4313, label %4314, label %4346

4314:                                             ; preds = %4309
  %4315 = load ptr, ptr %5, align 8, !tbaa !5
  %4316 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4315, i32 0, i32 13
  %4317 = load double, ptr %4316, align 8, !tbaa !28
  %4318 = fcmp oeq double %4317, 1.000000e+00
  br i1 %4318, label %4319, label %4334

4319:                                             ; preds = %4314
  %4320 = load ptr, ptr %145, align 8, !tbaa !5
  %4321 = load i32, ptr %10, align 4, !tbaa !15
  %4322 = load i32, ptr %16, align 4, !tbaa !15
  %4323 = mul nsw i32 %4321, %4322
  %4324 = load i32, ptr %11, align 4, !tbaa !15
  %4325 = add nsw i32 %4323, %4324
  %4326 = sext i32 %4325 to i64
  %4327 = getelementptr inbounds i16, ptr %4320, i64 %4326
  %4328 = load i16, ptr %4327, align 2, !tbaa !33
  store i16 %4328, ptr %148, align 2, !tbaa !33
  %4329 = load i16, ptr %148, align 2, !tbaa !33
  %4330 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4329)
  store float %4330, ptr %150, align 4, !tbaa !30
  %4331 = load float, ptr %150, align 4, !tbaa !30
  %4332 = load float, ptr %157, align 4, !tbaa !30
  %4333 = fadd float %4332, %4331
  store float %4333, ptr %157, align 4, !tbaa !30
  br label %4334

4334:                                             ; preds = %4319, %4314
  %4335 = load float, ptr %157, align 4, !tbaa !30
  %4336 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4335)
  store i16 %4336, ptr %148, align 2, !tbaa !33
  %4337 = load i16, ptr %148, align 2, !tbaa !33
  %4338 = load ptr, ptr %145, align 8, !tbaa !5
  %4339 = load i32, ptr %10, align 4, !tbaa !15
  %4340 = load i32, ptr %16, align 4, !tbaa !15
  %4341 = mul nsw i32 %4339, %4340
  %4342 = load i32, ptr %11, align 4, !tbaa !15
  %4343 = add nsw i32 %4341, %4342
  %4344 = sext i32 %4343 to i64
  %4345 = getelementptr inbounds i16, ptr %4338, i64 %4344
  store i16 %4337, ptr %4345, align 2, !tbaa !33
  br label %4373

4346:                                             ; preds = %4309
  %4347 = load ptr, ptr %5, align 8, !tbaa !5
  %4348 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4347, i32 0, i32 13
  %4349 = load double, ptr %4348, align 8, !tbaa !28
  %4350 = fcmp oeq double %4349, 1.000000e+00
  br i1 %4350, label %4351, label %4363

4351:                                             ; preds = %4346
  %4352 = load ptr, ptr %146, align 8, !tbaa !5
  %4353 = load i32, ptr %10, align 4, !tbaa !15
  %4354 = load i32, ptr %16, align 4, !tbaa !15
  %4355 = mul nsw i32 %4353, %4354
  %4356 = load i32, ptr %11, align 4, !tbaa !15
  %4357 = add nsw i32 %4355, %4356
  %4358 = sext i32 %4357 to i64
  %4359 = getelementptr inbounds float, ptr %4352, i64 %4358
  %4360 = load float, ptr %4359, align 4, !tbaa !30
  %4361 = load float, ptr %157, align 4, !tbaa !30
  %4362 = fadd float %4361, %4360
  store float %4362, ptr %157, align 4, !tbaa !30
  br label %4363

4363:                                             ; preds = %4351, %4346
  %4364 = load float, ptr %157, align 4, !tbaa !30
  %4365 = load ptr, ptr %146, align 8, !tbaa !5
  %4366 = load i32, ptr %10, align 4, !tbaa !15
  %4367 = load i32, ptr %16, align 4, !tbaa !15
  %4368 = mul nsw i32 %4366, %4367
  %4369 = load i32, ptr %11, align 4, !tbaa !15
  %4370 = add nsw i32 %4368, %4369
  %4371 = sext i32 %4370 to i64
  %4372 = getelementptr inbounds float, ptr %4365, i64 %4371
  store float %4364, ptr %4372, align 4, !tbaa !30
  br label %4373

4373:                                             ; preds = %4363, %4334
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #6
  br label %4374

4374:                                             ; preds = %4373
  %4375 = load i32, ptr %11, align 4, !tbaa !15
  %4376 = add nsw i32 %4375, 1
  store i32 %4376, ptr %11, align 4, !tbaa !15
  br label %4193, !llvm.loop !132

4377:                                             ; preds = %4193
  br label %4378

4378:                                             ; preds = %4377
  %4379 = load i32, ptr %10, align 4, !tbaa !15
  %4380 = add nsw i32 %4379, 1
  store i32 %4380, ptr %10, align 4, !tbaa !15
  br label %4188, !llvm.loop !133

4381:                                             ; preds = %4188
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %149) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %148) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #6
  br label %8143

4382:                                             ; preds = %4113, %4098, %4088, %4083
  %4383 = load ptr, ptr %5, align 8, !tbaa !5
  %4384 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4383, i32 0, i32 43
  %4385 = load i32, ptr %4384, align 4, !tbaa !134
  %4386 = icmp ugt i32 %4385, 0
  br i1 %4386, label %4387, label %4740

4387:                                             ; preds = %4382
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #6
  %4388 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %4388, ptr %161, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #6
  %4389 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %4389, ptr %162, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #6
  %4390 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %4390, ptr %163, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %164) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %165) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %166) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #6
  %4391 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %4391, ptr %167, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %168) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %169) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %170) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %171) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #6
  store i32 2, ptr %172, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #6
  %4392 = call ptr @getenv(ptr noundef @.str.2) #6
  store ptr %4392, ptr %173, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #6
  %4393 = load ptr, ptr %173, align 8, !tbaa !5
  %4394 = icmp eq ptr %4393, null
  br i1 %4394, label %4395, label %4396

4395:                                             ; preds = %4387
  br label %4409

4396:                                             ; preds = %4387
  %4397 = load ptr, ptr %173, align 8, !tbaa !5
  %4398 = load ptr, ptr %173, align 8, !tbaa !5
  %4399 = call ptr @strstr(ptr noundef %4398, ptr noundef @.str.3) #7
  %4400 = icmp eq ptr %4397, %4399
  br i1 %4400, label %4406, label %4401

4401:                                             ; preds = %4396
  %4402 = load ptr, ptr %173, align 8, !tbaa !5
  %4403 = load ptr, ptr %173, align 8, !tbaa !5
  %4404 = call ptr @strstr(ptr noundef %4403, ptr noundef @.str.4) #7
  %4405 = icmp eq ptr %4402, %4404
  br label %4406

4406:                                             ; preds = %4401, %4396
  %4407 = phi i1 [ true, %4396 ], [ %4405, %4401 ]
  %4408 = zext i1 %4407 to i32
  br label %4409

4409:                                             ; preds = %4406, %4395
  %4410 = phi i32 [ 0, %4395 ], [ %4408, %4406 ]
  store i32 %4410, ptr %174, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %175) #6
  %4411 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %4411, ptr %175, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #6
  %4412 = load i32, ptr %174, align 4, !tbaa !15
  %4413 = icmp sgt i32 %4412, 0
  br i1 %4413, label %4414, label %4415

4414:                                             ; preds = %4409
  br label %4425

4415:                                             ; preds = %4409
  %4416 = load ptr, ptr %173, align 8, !tbaa !5
  %4417 = icmp eq ptr %4416, null
  br i1 %4417, label %4418, label %4421

4418:                                             ; preds = %4415
  %4419 = load i32, ptr %175, align 4, !tbaa !15
  %4420 = icmp sge i32 %4419, 1104
  br label %4421

4421:                                             ; preds = %4418, %4415
  %4422 = phi i1 [ false, %4415 ], [ %4420, %4418 ]
  %4423 = zext i1 %4422 to i64
  %4424 = select i1 %4422, i32 1, i32 0
  br label %4425

4425:                                             ; preds = %4421, %4414
  %4426 = phi i32 [ 1, %4414 ], [ %4424, %4421 ]
  store i32 %4426, ptr %176, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #6
  %4427 = load ptr, ptr %5, align 8, !tbaa !5
  %4428 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4427, i32 0, i32 3
  %4429 = load i32, ptr %4428, align 4, !tbaa !62
  %4430 = icmp eq i32 %4429, 3
  br i1 %4430, label %4441, label %4431

4431:                                             ; preds = %4425
  %4432 = load ptr, ptr %5, align 8, !tbaa !5
  %4433 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4432, i32 0, i32 3
  %4434 = load i32, ptr %4433, align 4, !tbaa !62
  %4435 = icmp eq i32 %4434, 14
  br i1 %4435, label %4436, label %4439

4436:                                             ; preds = %4431
  %4437 = load i32, ptr %176, align 4, !tbaa !15
  %4438 = icmp sgt i32 %4437, 0
  br label %4439

4439:                                             ; preds = %4436, %4431
  %4440 = phi i1 [ false, %4431 ], [ %4438, %4436 ]
  br label %4441

4441:                                             ; preds = %4439, %4425
  %4442 = phi i1 [ true, %4425 ], [ %4440, %4439 ]
  %4443 = zext i1 %4442 to i64
  %4444 = select i1 %4442, i32 1, i32 0
  store i32 %4444, ptr %177, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %4445

4445:                                             ; preds = %4736, %4441
  %4446 = load i32, ptr %10, align 4, !tbaa !15
  %4447 = load i32, ptr %18, align 4, !tbaa !15
  %4448 = icmp slt i32 %4446, %4447
  br i1 %4448, label %4449, label %4739

4449:                                             ; preds = %4445
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %4450

4450:                                             ; preds = %4732, %4449
  %4451 = load i32, ptr %11, align 4, !tbaa !15
  %4452 = load i32, ptr %17, align 4, !tbaa !15
  %4453 = icmp slt i32 %4451, %4452
  br i1 %4453, label %4454, label %4735

4454:                                             ; preds = %4450
  call void @llvm.lifetime.start.p0(i64 4, ptr %178) #6
  store float 0.000000e+00, ptr %178, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %179) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %4455

4455:                                             ; preds = %4659, %4454
  %4456 = load i32, ptr %9, align 4, !tbaa !15
  %4457 = load ptr, ptr %5, align 8, !tbaa !5
  %4458 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4457, i32 0, i32 26
  %4459 = load i32, ptr %4458, align 8, !tbaa !45
  %4460 = icmp slt i32 %4456, %4459
  br i1 %4460, label %4461, label %4662

4461:                                             ; preds = %4455
  %4462 = load i32, ptr %9, align 4, !tbaa !15
  %4463 = sext i32 %4462 to i64
  %4464 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %161, ptr noundef %163, ptr noundef %20, ptr noundef %21, i64 noundef %4463, ptr noundef %4464)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %4465

4465:                                             ; preds = %4655, %4461
  %4466 = load i32, ptr %12, align 4, !tbaa !15
  %4467 = load i32, ptr %19, align 4, !tbaa !15
  %4468 = load i32, ptr %172, align 4, !tbaa !15
  %4469 = sdiv i32 %4467, %4468
  %4470 = icmp slt i32 %4466, %4469
  br i1 %4470, label %4471, label %4658

4471:                                             ; preds = %4465
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %4472

4472:                                             ; preds = %4651, %4471
  %4473 = load i32, ptr %13, align 4, !tbaa !15
  %4474 = load i32, ptr %172, align 4, !tbaa !15
  %4475 = icmp slt i32 %4473, %4474
  br i1 %4475, label %4476, label %4654

4476:                                             ; preds = %4472
  call void @llvm.lifetime.start.p0(i64 1, ptr %181) #6
  %4477 = load ptr, ptr %161, align 8, !tbaa !5
  %4478 = load i64, ptr %20, align 8, !tbaa !21
  %4479 = load i32, ptr %12, align 4, !tbaa !15
  %4480 = load i32, ptr %14, align 4, !tbaa !15
  %4481 = mul nsw i32 %4479, %4480
  %4482 = sext i32 %4481 to i64
  %4483 = add nsw i64 %4478, %4482
  %4484 = load i32, ptr %11, align 4, !tbaa !15
  %4485 = sext i32 %4484 to i64
  %4486 = add nsw i64 %4483, %4485
  %4487 = getelementptr inbounds i8, ptr %4477, i64 %4486
  %4488 = load i8, ptr %4487, align 1, !tbaa !22
  store i8 %4488, ptr %181, align 1, !tbaa !22
  %4489 = load ptr, ptr %5, align 8, !tbaa !5
  %4490 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4489, i32 0, i32 0
  %4491 = load i32, ptr %4490, align 8, !tbaa !26
  %4492 = icmp eq i32 %4491, 12
  br i1 %4492, label %4493, label %4519

4493:                                             ; preds = %4476
  %4494 = load ptr, ptr %5, align 8, !tbaa !5
  %4495 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4494, i32 0, i32 19
  %4496 = load i32, ptr %4495, align 4, !tbaa !79
  %4497 = icmp eq i32 %4496, 0
  br i1 %4497, label %4498, label %4519

4498:                                             ; preds = %4493
  %4499 = load i32, ptr %13, align 4, !tbaa !15
  %4500 = icmp eq i32 %4499, 0
  br i1 %4500, label %4501, label %4509

4501:                                             ; preds = %4498
  %4502 = load i8, ptr %181, align 1, !tbaa !22
  %4503 = sext i8 %4502 to i32
  %4504 = and i32 %4503, 15
  %4505 = shl i32 %4504, 4
  %4506 = trunc i32 %4505 to i8
  %4507 = sext i8 %4506 to i32
  %4508 = ashr i32 %4507, 4
  br label %4516

4509:                                             ; preds = %4498
  %4510 = load i8, ptr %181, align 1, !tbaa !22
  %4511 = sext i8 %4510 to i32
  %4512 = and i32 %4511, 240
  %4513 = trunc i32 %4512 to i8
  %4514 = sext i8 %4513 to i32
  %4515 = ashr i32 %4514, 4
  br label %4516

4516:                                             ; preds = %4509, %4501
  %4517 = phi i32 [ %4508, %4501 ], [ %4515, %4509 ]
  %4518 = trunc i32 %4517 to i8
  store i8 %4518, ptr %168, align 1, !tbaa !22
  br label %4535

4519:                                             ; preds = %4493, %4476
  %4520 = load i32, ptr %13, align 4, !tbaa !15
  %4521 = icmp eq i32 %4520, 0
  br i1 %4521, label %4522, label %4526

4522:                                             ; preds = %4519
  %4523 = load i8, ptr %181, align 1, !tbaa !22
  %4524 = sext i8 %4523 to i32
  %4525 = and i32 %4524, 15
  br label %4532

4526:                                             ; preds = %4519
  %4527 = load i8, ptr %181, align 1, !tbaa !22
  %4528 = sext i8 %4527 to i32
  %4529 = and i32 %4528, 240
  %4530 = ashr i32 %4529, 4
  %4531 = and i32 %4530, 15
  br label %4532

4532:                                             ; preds = %4526, %4522
  %4533 = phi i32 [ %4525, %4522 ], [ %4531, %4526 ]
  %4534 = trunc i32 %4533 to i8
  store i8 %4534, ptr %168, align 1, !tbaa !22
  br label %4535

4535:                                             ; preds = %4532, %4516
  %4536 = load i8, ptr %168, align 1, !tbaa !22
  %4537 = sext i8 %4536 to i16
  store i16 %4537, ptr %169, align 2, !tbaa !33
  %4538 = load i8, ptr %168, align 1, !tbaa !22
  %4539 = sext i8 %4538 to i32
  store i32 %4539, ptr %170, align 4, !tbaa !15
  %4540 = load i32, ptr %177, align 4, !tbaa !15
  %4541 = icmp sgt i32 %4540, 0
  br i1 %4541, label %4542, label %4549

4542:                                             ; preds = %4535
  %4543 = load i16, ptr %169, align 2, !tbaa !33
  %4544 = sitofp i16 %4543 to float
  store float %4544, ptr %179, align 4, !tbaa !30
  %4545 = load float, ptr %179, align 4, !tbaa !30
  %4546 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4545)
  store i16 %4546, ptr %165, align 2, !tbaa !33
  %4547 = load i16, ptr %165, align 2, !tbaa !33
  %4548 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4547)
  store float %4548, ptr %179, align 4, !tbaa !30
  br label %4552

4549:                                             ; preds = %4535
  %4550 = load i32, ptr %170, align 4, !tbaa !15
  %4551 = sitofp i32 %4550 to float
  store float %4551, ptr %179, align 4, !tbaa !30
  br label %4552

4552:                                             ; preds = %4549, %4542
  %4553 = load ptr, ptr %5, align 8, !tbaa !5
  %4554 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4553, i32 0, i32 52
  %4555 = load i32, ptr %4554, align 8, !tbaa !135
  %4556 = icmp ugt i32 %4555, 0
  br i1 %4556, label %4557, label %4577

4557:                                             ; preds = %4552
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #6
  %4558 = load ptr, ptr %5, align 8, !tbaa !5
  %4559 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4558, i32 0, i32 34
  %4560 = load ptr, ptr %4559, align 8, !tbaa !136
  %4561 = load i32, ptr %11, align 4, !tbaa !15
  %4562 = sext i32 %4561 to i64
  %4563 = getelementptr inbounds i16, ptr %4560, i64 %4562
  %4564 = load i16, ptr %4563, align 2, !tbaa !33
  %4565 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4564)
  store float %4565, ptr %182, align 4, !tbaa !30
  %4566 = load float, ptr %179, align 4, !tbaa !30
  %4567 = load float, ptr %182, align 4, !tbaa !30
  %4568 = fsub float %4566, %4567
  store float %4568, ptr %179, align 4, !tbaa !30
  %4569 = load i32, ptr %177, align 4, !tbaa !15
  %4570 = icmp sgt i32 %4569, 0
  br i1 %4570, label %4571, label %4576

4571:                                             ; preds = %4557
  %4572 = load float, ptr %179, align 4, !tbaa !30
  %4573 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4572)
  store i16 %4573, ptr %165, align 2, !tbaa !33
  %4574 = load i16, ptr %165, align 2, !tbaa !33
  %4575 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4574)
  store float %4575, ptr %179, align 4, !tbaa !30
  br label %4576

4576:                                             ; preds = %4571, %4557
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #6
  br label %4577

4577:                                             ; preds = %4576, %4552
  %4578 = load float, ptr %179, align 4, !tbaa !30
  %4579 = load ptr, ptr %5, align 8, !tbaa !5
  %4580 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4579, i32 0, i32 39
  %4581 = load ptr, ptr %4580, align 8, !tbaa !137
  %4582 = load i32, ptr %11, align 4, !tbaa !15
  %4583 = sext i32 %4582 to i64
  %4584 = getelementptr inbounds i16, ptr %4581, i64 %4583
  %4585 = load i16, ptr %4584, align 2, !tbaa !33
  %4586 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4585)
  %4587 = fmul float %4578, %4586
  store float %4587, ptr %179, align 4, !tbaa !30
  %4588 = load i32, ptr %177, align 4, !tbaa !15
  %4589 = icmp sgt i32 %4588, 0
  br i1 %4589, label %4590, label %4595

4590:                                             ; preds = %4577
  %4591 = load float, ptr %179, align 4, !tbaa !30
  %4592 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4591)
  store i16 %4592, ptr %164, align 2, !tbaa !33
  %4593 = load i16, ptr %164, align 2, !tbaa !33
  %4594 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4593)
  store float %4594, ptr %179, align 4, !tbaa !30
  br label %4595

4595:                                             ; preds = %4590, %4577
  %4596 = load ptr, ptr %5, align 8, !tbaa !5
  %4597 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4596, i32 0, i32 15
  %4598 = load i32, ptr %4597, align 4, !tbaa !64
  %4599 = icmp eq i32 %4598, 0
  br i1 %4599, label %4600, label %4618

4600:                                             ; preds = %4595
  %4601 = load ptr, ptr %163, align 8, !tbaa !5
  %4602 = load i64, ptr %21, align 8, !tbaa !21
  %4603 = load i32, ptr %10, align 4, !tbaa !15
  %4604 = load i32, ptr %15, align 4, !tbaa !15
  %4605 = mul nsw i32 %4603, %4604
  %4606 = sext i32 %4605 to i64
  %4607 = add nsw i64 %4602, %4606
  %4608 = load i32, ptr %12, align 4, !tbaa !15
  %4609 = load i32, ptr %172, align 4, !tbaa !15
  %4610 = mul nsw i32 %4608, %4609
  %4611 = sext i32 %4610 to i64
  %4612 = add nsw i64 %4607, %4611
  %4613 = load i32, ptr %13, align 4, !tbaa !15
  %4614 = sext i32 %4613 to i64
  %4615 = add nsw i64 %4612, %4614
  %4616 = getelementptr inbounds i16, ptr %4601, i64 %4615
  %4617 = load i16, ptr %4616, align 2, !tbaa !33
  store i16 %4617, ptr %166, align 2, !tbaa !33
  br label %4636

4618:                                             ; preds = %4595
  %4619 = load ptr, ptr %163, align 8, !tbaa !5
  %4620 = load i64, ptr %21, align 8, !tbaa !21
  %4621 = load i32, ptr %12, align 4, !tbaa !15
  %4622 = load i32, ptr %172, align 4, !tbaa !15
  %4623 = mul nsw i32 %4621, %4622
  %4624 = load i32, ptr %13, align 4, !tbaa !15
  %4625 = add nsw i32 %4623, %4624
  %4626 = sext i32 %4625 to i64
  %4627 = load i32, ptr %15, align 4, !tbaa !15
  %4628 = sext i32 %4627 to i64
  %4629 = mul nsw i64 %4626, %4628
  %4630 = add nsw i64 %4620, %4629
  %4631 = load i32, ptr %10, align 4, !tbaa !15
  %4632 = sext i32 %4631 to i64
  %4633 = add nsw i64 %4630, %4632
  %4634 = getelementptr inbounds i16, ptr %4619, i64 %4633
  %4635 = load i16, ptr %4634, align 2, !tbaa !33
  store i16 %4635, ptr %166, align 2, !tbaa !33
  br label %4636

4636:                                             ; preds = %4618, %4600
  %4637 = load i16, ptr %166, align 2, !tbaa !33
  %4638 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4637)
  store float %4638, ptr %180, align 4, !tbaa !30
  %4639 = load float, ptr %179, align 4, !tbaa !30
  %4640 = load float, ptr %180, align 4, !tbaa !30
  %4641 = load float, ptr %178, align 4, !tbaa !30
  %4642 = call float @llvm.fmuladd.f32(float %4639, float %4640, float %4641)
  store float %4642, ptr %178, align 4, !tbaa !30
  %4643 = load i32, ptr %177, align 4, !tbaa !15
  %4644 = icmp sgt i32 %4643, 0
  br i1 %4644, label %4645, label %4650

4645:                                             ; preds = %4636
  %4646 = load float, ptr %178, align 4, !tbaa !30
  %4647 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4646)
  store i16 %4647, ptr %164, align 2, !tbaa !33
  %4648 = load i16, ptr %164, align 2, !tbaa !33
  %4649 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4648)
  store float %4649, ptr %178, align 4, !tbaa !30
  br label %4650

4650:                                             ; preds = %4645, %4636
  call void @llvm.lifetime.end.p0(i64 1, ptr %181) #6
  br label %4651

4651:                                             ; preds = %4650
  %4652 = load i32, ptr %13, align 4, !tbaa !15
  %4653 = add nsw i32 %4652, 1
  store i32 %4653, ptr %13, align 4, !tbaa !15
  br label %4472, !llvm.loop !138

4654:                                             ; preds = %4472
  br label %4655

4655:                                             ; preds = %4654
  %4656 = load i32, ptr %12, align 4, !tbaa !15
  %4657 = add nsw i32 %4656, 1
  store i32 %4657, ptr %12, align 4, !tbaa !15
  br label %4465, !llvm.loop !139

4658:                                             ; preds = %4465
  br label %4659

4659:                                             ; preds = %4658
  %4660 = load i32, ptr %9, align 4, !tbaa !15
  %4661 = add nsw i32 %4660, 1
  store i32 %4661, ptr %9, align 4, !tbaa !15
  br label %4455, !llvm.loop !140

4662:                                             ; preds = %4455
  %4663 = load ptr, ptr %5, align 8, !tbaa !5
  %4664 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4663, i32 0, i32 2
  %4665 = load i32, ptr %4664, align 8, !tbaa !29
  %4666 = icmp eq i32 %4665, 3
  br i1 %4666, label %4667, label %4699

4667:                                             ; preds = %4662
  %4668 = load ptr, ptr %5, align 8, !tbaa !5
  %4669 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4668, i32 0, i32 13
  %4670 = load double, ptr %4669, align 8, !tbaa !28
  %4671 = fcmp oeq double %4670, 1.000000e+00
  br i1 %4671, label %4672, label %4687

4672:                                             ; preds = %4667
  %4673 = load ptr, ptr %162, align 8, !tbaa !5
  %4674 = load i32, ptr %10, align 4, !tbaa !15
  %4675 = load i32, ptr %16, align 4, !tbaa !15
  %4676 = mul nsw i32 %4674, %4675
  %4677 = load i32, ptr %11, align 4, !tbaa !15
  %4678 = add nsw i32 %4676, %4677
  %4679 = sext i32 %4678 to i64
  %4680 = getelementptr inbounds i16, ptr %4673, i64 %4679
  %4681 = load i16, ptr %4680, align 2, !tbaa !33
  store i16 %4681, ptr %164, align 2, !tbaa !33
  %4682 = load i16, ptr %164, align 2, !tbaa !33
  %4683 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4682)
  store float %4683, ptr %171, align 4, !tbaa !30
  %4684 = load float, ptr %171, align 4, !tbaa !30
  %4685 = load float, ptr %178, align 4, !tbaa !30
  %4686 = fadd float %4685, %4684
  store float %4686, ptr %178, align 4, !tbaa !30
  br label %4687

4687:                                             ; preds = %4672, %4667
  %4688 = load float, ptr %178, align 4, !tbaa !30
  %4689 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4688)
  store i16 %4689, ptr %164, align 2, !tbaa !33
  %4690 = load i16, ptr %164, align 2, !tbaa !33
  %4691 = load ptr, ptr %162, align 8, !tbaa !5
  %4692 = load i32, ptr %10, align 4, !tbaa !15
  %4693 = load i32, ptr %16, align 4, !tbaa !15
  %4694 = mul nsw i32 %4692, %4693
  %4695 = load i32, ptr %11, align 4, !tbaa !15
  %4696 = add nsw i32 %4694, %4695
  %4697 = sext i32 %4696 to i64
  %4698 = getelementptr inbounds i16, ptr %4691, i64 %4697
  store i16 %4690, ptr %4698, align 2, !tbaa !33
  br label %4731

4699:                                             ; preds = %4662
  %4700 = load ptr, ptr %5, align 8, !tbaa !5
  %4701 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4700, i32 0, i32 13
  %4702 = load double, ptr %4701, align 8, !tbaa !28
  %4703 = fcmp oeq double %4702, 1.000000e+00
  br i1 %4703, label %4704, label %4721

4704:                                             ; preds = %4699
  %4705 = load ptr, ptr %167, align 8, !tbaa !5
  %4706 = load i32, ptr %10, align 4, !tbaa !15
  %4707 = load i32, ptr %16, align 4, !tbaa !15
  %4708 = mul nsw i32 %4706, %4707
  %4709 = load i32, ptr %11, align 4, !tbaa !15
  %4710 = add nsw i32 %4708, %4709
  %4711 = sext i32 %4710 to i64
  %4712 = getelementptr inbounds float, ptr %4705, i64 %4711
  %4713 = load float, ptr %4712, align 4, !tbaa !30
  store float %4713, ptr %171, align 4, !tbaa !30
  %4714 = load float, ptr %171, align 4, !tbaa !30
  %4715 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4714)
  store i16 %4715, ptr %164, align 2, !tbaa !33
  %4716 = load i16, ptr %164, align 2, !tbaa !33
  %4717 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4716)
  store float %4717, ptr %171, align 4, !tbaa !30
  %4718 = load float, ptr %171, align 4, !tbaa !30
  %4719 = load float, ptr %178, align 4, !tbaa !30
  %4720 = fadd float %4719, %4718
  store float %4720, ptr %178, align 4, !tbaa !30
  br label %4721

4721:                                             ; preds = %4704, %4699
  %4722 = load float, ptr %178, align 4, !tbaa !30
  %4723 = load ptr, ptr %167, align 8, !tbaa !5
  %4724 = load i32, ptr %10, align 4, !tbaa !15
  %4725 = load i32, ptr %16, align 4, !tbaa !15
  %4726 = mul nsw i32 %4724, %4725
  %4727 = load i32, ptr %11, align 4, !tbaa !15
  %4728 = add nsw i32 %4726, %4727
  %4729 = sext i32 %4728 to i64
  %4730 = getelementptr inbounds float, ptr %4723, i64 %4729
  store float %4722, ptr %4730, align 4, !tbaa !30
  br label %4731

4731:                                             ; preds = %4721, %4687
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %178) #6
  br label %4732

4732:                                             ; preds = %4731
  %4733 = load i32, ptr %11, align 4, !tbaa !15
  %4734 = add nsw i32 %4733, 1
  store i32 %4734, ptr %11, align 4, !tbaa !15
  br label %4450, !llvm.loop !141

4735:                                             ; preds = %4450
  br label %4736

4736:                                             ; preds = %4735
  %4737 = load i32, ptr %10, align 4, !tbaa !15
  %4738 = add nsw i32 %4737, 1
  store i32 %4738, ptr %10, align 4, !tbaa !15
  br label %4445, !llvm.loop !142

4739:                                             ; preds = %4445
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %175) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %171) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %170) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %169) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %168) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %166) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %165) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %164) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #6
  br label %8142

4740:                                             ; preds = %4382
  %4741 = load ptr, ptr %5, align 8, !tbaa !5
  %4742 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4741, i32 0, i32 0
  %4743 = load i32, ptr %4742, align 8, !tbaa !26
  %4744 = icmp eq i32 %4743, 12
  br i1 %4744, label %4745, label %5044

4745:                                             ; preds = %4740
  %4746 = load ptr, ptr %5, align 8, !tbaa !5
  %4747 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4746, i32 0, i32 1
  %4748 = load i32, ptr %4747, align 4, !tbaa !27
  %4749 = icmp eq i32 %4748, 3
  br i1 %4749, label %4750, label %5044

4750:                                             ; preds = %4745
  %4751 = load ptr, ptr %5, align 8, !tbaa !5
  %4752 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4751, i32 0, i32 2
  %4753 = load i32, ptr %4752, align 8, !tbaa !29
  %4754 = icmp eq i32 %4753, 3
  br i1 %4754, label %4755, label %5044

4755:                                             ; preds = %4750
  %4756 = load ptr, ptr %5, align 8, !tbaa !5
  %4757 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4756, i32 0, i32 3
  %4758 = load i32, ptr %4757, align 4, !tbaa !62
  %4759 = icmp eq i32 %4758, 3
  br i1 %4759, label %4770, label %4760

4760:                                             ; preds = %4755
  %4761 = load ptr, ptr %5, align 8, !tbaa !5
  %4762 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4761, i32 0, i32 3
  %4763 = load i32, ptr %4762, align 4, !tbaa !62
  %4764 = icmp eq i32 %4763, 1
  br i1 %4764, label %4770, label %4765

4765:                                             ; preds = %4760
  %4766 = load ptr, ptr %5, align 8, !tbaa !5
  %4767 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4766, i32 0, i32 3
  %4768 = load i32, ptr %4767, align 4, !tbaa !62
  %4769 = icmp eq i32 %4768, 14
  br i1 %4769, label %4770, label %5044

4770:                                             ; preds = %4765, %4760, %4755
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #6
  %4771 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %4771, ptr %183, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #6
  %4772 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %4772, ptr %184, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #6
  %4773 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %4773, ptr %185, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %186) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %187) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %188) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #6
  store i32 1, ptr %190, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #6
  %4774 = call ptr @getenv(ptr noundef @.str.2) #6
  store ptr %4774, ptr %191, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %192) #6
  %4775 = load ptr, ptr %191, align 8, !tbaa !5
  %4776 = icmp eq ptr %4775, null
  br i1 %4776, label %4777, label %4778

4777:                                             ; preds = %4770
  br label %4791

4778:                                             ; preds = %4770
  %4779 = load ptr, ptr %191, align 8, !tbaa !5
  %4780 = load ptr, ptr %191, align 8, !tbaa !5
  %4781 = call ptr @strstr(ptr noundef %4780, ptr noundef @.str.3) #7
  %4782 = icmp eq ptr %4779, %4781
  br i1 %4782, label %4788, label %4783

4783:                                             ; preds = %4778
  %4784 = load ptr, ptr %191, align 8, !tbaa !5
  %4785 = load ptr, ptr %191, align 8, !tbaa !5
  %4786 = call ptr @strstr(ptr noundef %4785, ptr noundef @.str.4) #7
  %4787 = icmp eq ptr %4784, %4786
  br label %4788

4788:                                             ; preds = %4783, %4778
  %4789 = phi i1 [ true, %4778 ], [ %4787, %4783 ]
  %4790 = zext i1 %4789 to i32
  br label %4791

4791:                                             ; preds = %4788, %4777
  %4792 = phi i32 [ 0, %4777 ], [ %4790, %4788 ]
  store i32 %4792, ptr %192, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %193) #6
  %4793 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %4793, ptr %193, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %194) #6
  %4794 = load i32, ptr %192, align 4, !tbaa !15
  %4795 = icmp sgt i32 %4794, 0
  br i1 %4795, label %4796, label %4797

4796:                                             ; preds = %4791
  br label %4807

4797:                                             ; preds = %4791
  %4798 = load ptr, ptr %191, align 8, !tbaa !5
  %4799 = icmp eq ptr %4798, null
  br i1 %4799, label %4800, label %4803

4800:                                             ; preds = %4797
  %4801 = load i32, ptr %193, align 4, !tbaa !15
  %4802 = icmp sge i32 %4801, 1104
  br label %4803

4803:                                             ; preds = %4800, %4797
  %4804 = phi i1 [ false, %4797 ], [ %4802, %4800 ]
  %4805 = zext i1 %4804 to i64
  %4806 = select i1 %4804, i32 1, i32 0
  br label %4807

4807:                                             ; preds = %4803, %4796
  %4808 = phi i32 [ 1, %4796 ], [ %4806, %4803 ]
  store i32 %4808, ptr %194, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %195) #6
  %4809 = load ptr, ptr %5, align 8, !tbaa !5
  %4810 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4809, i32 0, i32 3
  %4811 = load i32, ptr %4810, align 4, !tbaa !62
  %4812 = icmp eq i32 %4811, 3
  br i1 %4812, label %4823, label %4813

4813:                                             ; preds = %4807
  %4814 = load ptr, ptr %5, align 8, !tbaa !5
  %4815 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4814, i32 0, i32 3
  %4816 = load i32, ptr %4815, align 4, !tbaa !62
  %4817 = icmp eq i32 %4816, 14
  br i1 %4817, label %4818, label %4821

4818:                                             ; preds = %4813
  %4819 = load i32, ptr %194, align 4, !tbaa !15
  %4820 = icmp sgt i32 %4819, 0
  br label %4821

4821:                                             ; preds = %4818, %4813
  %4822 = phi i1 [ false, %4813 ], [ %4820, %4818 ]
  br label %4823

4823:                                             ; preds = %4821, %4807
  %4824 = phi i1 [ true, %4807 ], [ %4822, %4821 ]
  %4825 = zext i1 %4824 to i64
  %4826 = select i1 %4824, i32 1, i32 0
  store i32 %4826, ptr %195, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %4827

4827:                                             ; preds = %5040, %4823
  %4828 = load i32, ptr %10, align 4, !tbaa !15
  %4829 = load i32, ptr %18, align 4, !tbaa !15
  %4830 = icmp slt i32 %4828, %4829
  br i1 %4830, label %4831, label %5043

4831:                                             ; preds = %4827
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %4832

4832:                                             ; preds = %5036, %4831
  %4833 = load i32, ptr %11, align 4, !tbaa !15
  %4834 = load i32, ptr %17, align 4, !tbaa !15
  %4835 = icmp slt i32 %4833, %4834
  br i1 %4835, label %4836, label %5039

4836:                                             ; preds = %4832
  call void @llvm.lifetime.start.p0(i64 4, ptr %196) #6
  store float 0.000000e+00, ptr %196, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %197) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %198) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %4837

4837:                                             ; preds = %5001, %4836
  %4838 = load i32, ptr %9, align 4, !tbaa !15
  %4839 = load ptr, ptr %5, align 8, !tbaa !5
  %4840 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4839, i32 0, i32 26
  %4841 = load i32, ptr %4840, align 8, !tbaa !45
  %4842 = icmp slt i32 %4838, %4841
  br i1 %4842, label %4843, label %5004

4843:                                             ; preds = %4837
  %4844 = load i32, ptr %9, align 4, !tbaa !15
  %4845 = sext i32 %4844 to i64
  %4846 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %183, ptr noundef %185, ptr noundef %20, ptr noundef %21, i64 noundef %4845, ptr noundef %4846)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %4847

4847:                                             ; preds = %4997, %4843
  %4848 = load i32, ptr %12, align 4, !tbaa !15
  %4849 = load i32, ptr %19, align 4, !tbaa !15
  %4850 = load i32, ptr %190, align 4, !tbaa !15
  %4851 = sdiv i32 %4849, %4850
  %4852 = icmp slt i32 %4848, %4851
  br i1 %4852, label %4853, label %5000

4853:                                             ; preds = %4847
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %4854

4854:                                             ; preds = %4993, %4853
  %4855 = load i32, ptr %13, align 4, !tbaa !15
  %4856 = load i32, ptr %190, align 4, !tbaa !15
  %4857 = icmp slt i32 %4855, %4856
  br i1 %4857, label %4858, label %4996

4858:                                             ; preds = %4854
  call void @llvm.lifetime.start.p0(i64 1, ptr %199) #6
  %4859 = load ptr, ptr %183, align 8, !tbaa !5
  %4860 = load i64, ptr %20, align 8, !tbaa !21
  %4861 = load i32, ptr %12, align 4, !tbaa !15
  %4862 = load i32, ptr %14, align 4, !tbaa !15
  %4863 = load i32, ptr %190, align 4, !tbaa !15
  %4864 = mul nsw i32 %4862, %4863
  %4865 = mul nsw i32 %4861, %4864
  %4866 = sext i32 %4865 to i64
  %4867 = add nsw i64 %4860, %4866
  %4868 = load i32, ptr %11, align 4, !tbaa !15
  %4869 = load i32, ptr %190, align 4, !tbaa !15
  %4870 = mul nsw i32 %4868, %4869
  %4871 = sext i32 %4870 to i64
  %4872 = add nsw i64 %4867, %4871
  %4873 = load i32, ptr %13, align 4, !tbaa !15
  %4874 = sext i32 %4873 to i64
  %4875 = add nsw i64 %4872, %4874
  %4876 = getelementptr inbounds i8, ptr %4859, i64 %4875
  %4877 = load i8, ptr %4876, align 1, !tbaa !22
  store i8 %4877, ptr %199, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %200) #6
  %4878 = load i8, ptr %199, align 1, !tbaa !22
  %4879 = sext i8 %4878 to i16
  store i16 %4879, ptr %200, align 2, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %201) #6
  %4880 = load i8, ptr %199, align 1, !tbaa !22
  %4881 = sext i8 %4880 to i32
  store i32 %4881, ptr %201, align 4, !tbaa !15
  %4882 = load i32, ptr %195, align 4, !tbaa !15
  %4883 = icmp sgt i32 %4882, 0
  br i1 %4883, label %4884, label %4891

4884:                                             ; preds = %4858
  %4885 = load i16, ptr %200, align 2, !tbaa !33
  %4886 = sitofp i16 %4885 to float
  store float %4886, ptr %197, align 4, !tbaa !30
  %4887 = load float, ptr %197, align 4, !tbaa !30
  %4888 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4887)
  store i16 %4888, ptr %187, align 2, !tbaa !33
  %4889 = load i16, ptr %187, align 2, !tbaa !33
  %4890 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4889)
  store float %4890, ptr %197, align 4, !tbaa !30
  br label %4894

4891:                                             ; preds = %4858
  %4892 = load i32, ptr %201, align 4, !tbaa !15
  %4893 = sitofp i32 %4892 to float
  store float %4893, ptr %197, align 4, !tbaa !30
  br label %4894

4894:                                             ; preds = %4891, %4884
  %4895 = load ptr, ptr %5, align 8, !tbaa !5
  %4896 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4895, i32 0, i32 52
  %4897 = load i32, ptr %4896, align 8, !tbaa !135
  %4898 = icmp ugt i32 %4897, 0
  br i1 %4898, label %4899, label %4919

4899:                                             ; preds = %4894
  call void @llvm.lifetime.start.p0(i64 4, ptr %202) #6
  %4900 = load ptr, ptr %5, align 8, !tbaa !5
  %4901 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4900, i32 0, i32 34
  %4902 = load ptr, ptr %4901, align 8, !tbaa !136
  %4903 = load i32, ptr %11, align 4, !tbaa !15
  %4904 = sext i32 %4903 to i64
  %4905 = getelementptr inbounds i16, ptr %4902, i64 %4904
  %4906 = load i16, ptr %4905, align 2, !tbaa !33
  %4907 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4906)
  store float %4907, ptr %202, align 4, !tbaa !30
  %4908 = load float, ptr %197, align 4, !tbaa !30
  %4909 = load float, ptr %202, align 4, !tbaa !30
  %4910 = fsub float %4908, %4909
  store float %4910, ptr %197, align 4, !tbaa !30
  %4911 = load i32, ptr %195, align 4, !tbaa !15
  %4912 = icmp sgt i32 %4911, 0
  br i1 %4912, label %4913, label %4918

4913:                                             ; preds = %4899
  %4914 = load float, ptr %197, align 4, !tbaa !30
  %4915 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4914)
  store i16 %4915, ptr %187, align 2, !tbaa !33
  %4916 = load i16, ptr %187, align 2, !tbaa !33
  %4917 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4916)
  store float %4917, ptr %197, align 4, !tbaa !30
  br label %4918

4918:                                             ; preds = %4913, %4899
  call void @llvm.lifetime.end.p0(i64 4, ptr %202) #6
  br label %4919

4919:                                             ; preds = %4918, %4894
  %4920 = load float, ptr %197, align 4, !tbaa !30
  %4921 = load ptr, ptr %5, align 8, !tbaa !5
  %4922 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4921, i32 0, i32 39
  %4923 = load ptr, ptr %4922, align 8, !tbaa !137
  %4924 = load i32, ptr %11, align 4, !tbaa !15
  %4925 = sext i32 %4924 to i64
  %4926 = getelementptr inbounds i16, ptr %4923, i64 %4925
  %4927 = load i16, ptr %4926, align 2, !tbaa !33
  %4928 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4927)
  %4929 = fmul float %4920, %4928
  store float %4929, ptr %197, align 4, !tbaa !30
  %4930 = load i32, ptr %195, align 4, !tbaa !15
  %4931 = icmp sgt i32 %4930, 0
  br i1 %4931, label %4932, label %4937

4932:                                             ; preds = %4919
  %4933 = load float, ptr %197, align 4, !tbaa !30
  %4934 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4933)
  store i16 %4934, ptr %186, align 2, !tbaa !33
  %4935 = load i16, ptr %186, align 2, !tbaa !33
  %4936 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4935)
  store float %4936, ptr %197, align 4, !tbaa !30
  br label %4937

4937:                                             ; preds = %4932, %4919
  %4938 = load ptr, ptr %5, align 8, !tbaa !5
  %4939 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %4938, i32 0, i32 15
  %4940 = load i32, ptr %4939, align 4, !tbaa !64
  %4941 = icmp eq i32 %4940, 0
  br i1 %4941, label %4942, label %4960

4942:                                             ; preds = %4937
  %4943 = load ptr, ptr %185, align 8, !tbaa !5
  %4944 = load i64, ptr %21, align 8, !tbaa !21
  %4945 = load i32, ptr %10, align 4, !tbaa !15
  %4946 = load i32, ptr %15, align 4, !tbaa !15
  %4947 = mul nsw i32 %4945, %4946
  %4948 = sext i32 %4947 to i64
  %4949 = add nsw i64 %4944, %4948
  %4950 = load i32, ptr %12, align 4, !tbaa !15
  %4951 = load i32, ptr %190, align 4, !tbaa !15
  %4952 = mul nsw i32 %4950, %4951
  %4953 = sext i32 %4952 to i64
  %4954 = add nsw i64 %4949, %4953
  %4955 = load i32, ptr %13, align 4, !tbaa !15
  %4956 = sext i32 %4955 to i64
  %4957 = add nsw i64 %4954, %4956
  %4958 = getelementptr inbounds i16, ptr %4943, i64 %4957
  %4959 = load i16, ptr %4958, align 2, !tbaa !33
  store i16 %4959, ptr %188, align 2, !tbaa !33
  br label %4978

4960:                                             ; preds = %4937
  %4961 = load ptr, ptr %185, align 8, !tbaa !5
  %4962 = load i64, ptr %21, align 8, !tbaa !21
  %4963 = load i32, ptr %12, align 4, !tbaa !15
  %4964 = load i32, ptr %190, align 4, !tbaa !15
  %4965 = mul nsw i32 %4963, %4964
  %4966 = load i32, ptr %13, align 4, !tbaa !15
  %4967 = add nsw i32 %4965, %4966
  %4968 = sext i32 %4967 to i64
  %4969 = load i32, ptr %15, align 4, !tbaa !15
  %4970 = sext i32 %4969 to i64
  %4971 = mul nsw i64 %4968, %4970
  %4972 = add nsw i64 %4962, %4971
  %4973 = load i32, ptr %10, align 4, !tbaa !15
  %4974 = sext i32 %4973 to i64
  %4975 = add nsw i64 %4972, %4974
  %4976 = getelementptr inbounds i16, ptr %4961, i64 %4975
  %4977 = load i16, ptr %4976, align 2, !tbaa !33
  store i16 %4977, ptr %188, align 2, !tbaa !33
  br label %4978

4978:                                             ; preds = %4960, %4942
  %4979 = load i16, ptr %188, align 2, !tbaa !33
  %4980 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4979)
  store float %4980, ptr %198, align 4, !tbaa !30
  %4981 = load float, ptr %197, align 4, !tbaa !30
  %4982 = load float, ptr %198, align 4, !tbaa !30
  %4983 = load float, ptr %196, align 4, !tbaa !30
  %4984 = call float @llvm.fmuladd.f32(float %4981, float %4982, float %4983)
  store float %4984, ptr %196, align 4, !tbaa !30
  %4985 = load i32, ptr %195, align 4, !tbaa !15
  %4986 = icmp sgt i32 %4985, 0
  br i1 %4986, label %4987, label %4992

4987:                                             ; preds = %4978
  %4988 = load float, ptr %196, align 4, !tbaa !30
  %4989 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %4988)
  store i16 %4989, ptr %186, align 2, !tbaa !33
  %4990 = load i16, ptr %186, align 2, !tbaa !33
  %4991 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %4990)
  store float %4991, ptr %196, align 4, !tbaa !30
  br label %4992

4992:                                             ; preds = %4987, %4978
  call void @llvm.lifetime.end.p0(i64 4, ptr %201) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %200) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %199) #6
  br label %4993

4993:                                             ; preds = %4992
  %4994 = load i32, ptr %13, align 4, !tbaa !15
  %4995 = add nsw i32 %4994, 1
  store i32 %4995, ptr %13, align 4, !tbaa !15
  br label %4854, !llvm.loop !143

4996:                                             ; preds = %4854
  br label %4997

4997:                                             ; preds = %4996
  %4998 = load i32, ptr %12, align 4, !tbaa !15
  %4999 = add nsw i32 %4998, 1
  store i32 %4999, ptr %12, align 4, !tbaa !15
  br label %4847, !llvm.loop !144

5000:                                             ; preds = %4847
  br label %5001

5001:                                             ; preds = %5000
  %5002 = load i32, ptr %9, align 4, !tbaa !15
  %5003 = add nsw i32 %5002, 1
  store i32 %5003, ptr %9, align 4, !tbaa !15
  br label %4837, !llvm.loop !145

5004:                                             ; preds = %4837
  %5005 = load ptr, ptr %5, align 8, !tbaa !5
  %5006 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5005, i32 0, i32 13
  %5007 = load double, ptr %5006, align 8, !tbaa !28
  %5008 = fcmp oeq double %5007, 1.000000e+00
  br i1 %5008, label %5009, label %5024

5009:                                             ; preds = %5004
  %5010 = load ptr, ptr %184, align 8, !tbaa !5
  %5011 = load i32, ptr %10, align 4, !tbaa !15
  %5012 = load i32, ptr %16, align 4, !tbaa !15
  %5013 = mul nsw i32 %5011, %5012
  %5014 = load i32, ptr %11, align 4, !tbaa !15
  %5015 = add nsw i32 %5013, %5014
  %5016 = sext i32 %5015 to i64
  %5017 = getelementptr inbounds i16, ptr %5010, i64 %5016
  %5018 = load i16, ptr %5017, align 2, !tbaa !33
  store i16 %5018, ptr %186, align 2, !tbaa !33
  %5019 = load i16, ptr %186, align 2, !tbaa !33
  %5020 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5019)
  store float %5020, ptr %189, align 4, !tbaa !30
  %5021 = load float, ptr %189, align 4, !tbaa !30
  %5022 = load float, ptr %196, align 4, !tbaa !30
  %5023 = fadd float %5022, %5021
  store float %5023, ptr %196, align 4, !tbaa !30
  br label %5024

5024:                                             ; preds = %5009, %5004
  %5025 = load float, ptr %196, align 4, !tbaa !30
  %5026 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5025)
  store i16 %5026, ptr %186, align 2, !tbaa !33
  %5027 = load i16, ptr %186, align 2, !tbaa !33
  %5028 = load ptr, ptr %184, align 8, !tbaa !5
  %5029 = load i32, ptr %10, align 4, !tbaa !15
  %5030 = load i32, ptr %16, align 4, !tbaa !15
  %5031 = mul nsw i32 %5029, %5030
  %5032 = load i32, ptr %11, align 4, !tbaa !15
  %5033 = add nsw i32 %5031, %5032
  %5034 = sext i32 %5033 to i64
  %5035 = getelementptr inbounds i16, ptr %5028, i64 %5034
  store i16 %5027, ptr %5035, align 2, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 4, ptr %198) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %197) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %196) #6
  br label %5036

5036:                                             ; preds = %5024
  %5037 = load i32, ptr %11, align 4, !tbaa !15
  %5038 = add nsw i32 %5037, 1
  store i32 %5038, ptr %11, align 4, !tbaa !15
  br label %4832, !llvm.loop !146

5039:                                             ; preds = %4832
  br label %5040

5040:                                             ; preds = %5039
  %5041 = load i32, ptr %10, align 4, !tbaa !15
  %5042 = add nsw i32 %5041, 1
  store i32 %5042, ptr %10, align 4, !tbaa !15
  br label %4827, !llvm.loop !147

5043:                                             ; preds = %4827
  call void @llvm.lifetime.end.p0(i64 4, ptr %195) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %193) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %192) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %188) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %187) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %186) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #6
  br label %8141

5044:                                             ; preds = %4765, %4750, %4745, %4740
  %5045 = load ptr, ptr %5, align 8, !tbaa !5
  %5046 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5045, i32 0, i32 0
  %5047 = load i32, ptr %5046, align 8, !tbaa !26
  %5048 = icmp eq i32 %5047, 12
  br i1 %5048, label %5049, label %5350

5049:                                             ; preds = %5044
  %5050 = load ptr, ptr %5, align 8, !tbaa !5
  %5051 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5050, i32 0, i32 1
  %5052 = load i32, ptr %5051, align 4, !tbaa !27
  %5053 = icmp eq i32 %5052, 3
  br i1 %5053, label %5054, label %5350

5054:                                             ; preds = %5049
  %5055 = load ptr, ptr %5, align 8, !tbaa !5
  %5056 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5055, i32 0, i32 2
  %5057 = load i32, ptr %5056, align 8, !tbaa !29
  %5058 = icmp eq i32 %5057, 1
  br i1 %5058, label %5059, label %5350

5059:                                             ; preds = %5054
  %5060 = load ptr, ptr %5, align 8, !tbaa !5
  %5061 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5060, i32 0, i32 3
  %5062 = load i32, ptr %5061, align 4, !tbaa !62
  %5063 = icmp eq i32 %5062, 3
  br i1 %5063, label %5074, label %5064

5064:                                             ; preds = %5059
  %5065 = load ptr, ptr %5, align 8, !tbaa !5
  %5066 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5065, i32 0, i32 3
  %5067 = load i32, ptr %5066, align 4, !tbaa !62
  %5068 = icmp eq i32 %5067, 1
  br i1 %5068, label %5074, label %5069

5069:                                             ; preds = %5064
  %5070 = load ptr, ptr %5, align 8, !tbaa !5
  %5071 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5070, i32 0, i32 3
  %5072 = load i32, ptr %5071, align 4, !tbaa !62
  %5073 = icmp eq i32 %5072, 14
  br i1 %5073, label %5074, label %5350

5074:                                             ; preds = %5069, %5064, %5059
  call void @llvm.lifetime.start.p0(i64 8, ptr %203) #6
  %5075 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %5075, ptr %203, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #6
  %5076 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %5076, ptr %204, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #6
  %5077 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %5077, ptr %205, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %206) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %207) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %208) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %209) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %210) #6
  store i32 1, ptr %210, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #6
  %5078 = call ptr @getenv(ptr noundef @.str.2) #6
  store ptr %5078, ptr %211, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %212) #6
  %5079 = load ptr, ptr %211, align 8, !tbaa !5
  %5080 = icmp eq ptr %5079, null
  br i1 %5080, label %5081, label %5082

5081:                                             ; preds = %5074
  br label %5095

5082:                                             ; preds = %5074
  %5083 = load ptr, ptr %211, align 8, !tbaa !5
  %5084 = load ptr, ptr %211, align 8, !tbaa !5
  %5085 = call ptr @strstr(ptr noundef %5084, ptr noundef @.str.3) #7
  %5086 = icmp eq ptr %5083, %5085
  br i1 %5086, label %5092, label %5087

5087:                                             ; preds = %5082
  %5088 = load ptr, ptr %211, align 8, !tbaa !5
  %5089 = load ptr, ptr %211, align 8, !tbaa !5
  %5090 = call ptr @strstr(ptr noundef %5089, ptr noundef @.str.4) #7
  %5091 = icmp eq ptr %5088, %5090
  br label %5092

5092:                                             ; preds = %5087, %5082
  %5093 = phi i1 [ true, %5082 ], [ %5091, %5087 ]
  %5094 = zext i1 %5093 to i32
  br label %5095

5095:                                             ; preds = %5092, %5081
  %5096 = phi i32 [ 0, %5081 ], [ %5094, %5092 ]
  store i32 %5096, ptr %212, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %213) #6
  %5097 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %5097, ptr %213, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %214) #6
  %5098 = load i32, ptr %212, align 4, !tbaa !15
  %5099 = icmp sgt i32 %5098, 0
  br i1 %5099, label %5100, label %5101

5100:                                             ; preds = %5095
  br label %5111

5101:                                             ; preds = %5095
  %5102 = load ptr, ptr %211, align 8, !tbaa !5
  %5103 = icmp eq ptr %5102, null
  br i1 %5103, label %5104, label %5107

5104:                                             ; preds = %5101
  %5105 = load i32, ptr %213, align 4, !tbaa !15
  %5106 = icmp sge i32 %5105, 1104
  br label %5107

5107:                                             ; preds = %5104, %5101
  %5108 = phi i1 [ false, %5101 ], [ %5106, %5104 ]
  %5109 = zext i1 %5108 to i64
  %5110 = select i1 %5108, i32 1, i32 0
  br label %5111

5111:                                             ; preds = %5107, %5100
  %5112 = phi i32 [ 1, %5100 ], [ %5110, %5107 ]
  store i32 %5112, ptr %214, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %215) #6
  %5113 = load ptr, ptr %5, align 8, !tbaa !5
  %5114 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5113, i32 0, i32 3
  %5115 = load i32, ptr %5114, align 4, !tbaa !62
  %5116 = icmp eq i32 %5115, 3
  br i1 %5116, label %5127, label %5117

5117:                                             ; preds = %5111
  %5118 = load ptr, ptr %5, align 8, !tbaa !5
  %5119 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5118, i32 0, i32 3
  %5120 = load i32, ptr %5119, align 4, !tbaa !62
  %5121 = icmp eq i32 %5120, 14
  br i1 %5121, label %5122, label %5125

5122:                                             ; preds = %5117
  %5123 = load i32, ptr %214, align 4, !tbaa !15
  %5124 = icmp sgt i32 %5123, 0
  br label %5125

5125:                                             ; preds = %5122, %5117
  %5126 = phi i1 [ false, %5117 ], [ %5124, %5122 ]
  br label %5127

5127:                                             ; preds = %5125, %5111
  %5128 = phi i1 [ true, %5111 ], [ %5126, %5125 ]
  %5129 = zext i1 %5128 to i64
  %5130 = select i1 %5128, i32 1, i32 0
  store i32 %5130, ptr %215, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %5131

5131:                                             ; preds = %5346, %5127
  %5132 = load i32, ptr %10, align 4, !tbaa !15
  %5133 = load i32, ptr %18, align 4, !tbaa !15
  %5134 = icmp slt i32 %5132, %5133
  br i1 %5134, label %5135, label %5349

5135:                                             ; preds = %5131
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %5136

5136:                                             ; preds = %5342, %5135
  %5137 = load i32, ptr %11, align 4, !tbaa !15
  %5138 = load i32, ptr %17, align 4, !tbaa !15
  %5139 = icmp slt i32 %5137, %5138
  br i1 %5139, label %5140, label %5345

5140:                                             ; preds = %5136
  call void @llvm.lifetime.start.p0(i64 4, ptr %216) #6
  store float 0.000000e+00, ptr %216, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %217) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %218) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %5141

5141:                                             ; preds = %5307, %5140
  %5142 = load i32, ptr %9, align 4, !tbaa !15
  %5143 = load ptr, ptr %5, align 8, !tbaa !5
  %5144 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5143, i32 0, i32 26
  %5145 = load i32, ptr %5144, align 8, !tbaa !45
  %5146 = icmp slt i32 %5142, %5145
  br i1 %5146, label %5147, label %5310

5147:                                             ; preds = %5141
  %5148 = load i32, ptr %9, align 4, !tbaa !15
  %5149 = sext i32 %5148 to i64
  %5150 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %203, ptr noundef %205, ptr noundef %20, ptr noundef %21, i64 noundef %5149, ptr noundef %5150)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %5151

5151:                                             ; preds = %5303, %5147
  %5152 = load i32, ptr %12, align 4, !tbaa !15
  %5153 = load i32, ptr %19, align 4, !tbaa !15
  %5154 = load i32, ptr %210, align 4, !tbaa !15
  %5155 = sdiv i32 %5153, %5154
  %5156 = icmp slt i32 %5152, %5155
  br i1 %5156, label %5157, label %5306

5157:                                             ; preds = %5151
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %5158

5158:                                             ; preds = %5299, %5157
  %5159 = load i32, ptr %13, align 4, !tbaa !15
  %5160 = load i32, ptr %210, align 4, !tbaa !15
  %5161 = icmp slt i32 %5159, %5160
  br i1 %5161, label %5162, label %5302

5162:                                             ; preds = %5158
  call void @llvm.lifetime.start.p0(i64 1, ptr %219) #6
  %5163 = load ptr, ptr %203, align 8, !tbaa !5
  %5164 = load i64, ptr %20, align 8, !tbaa !21
  %5165 = load i32, ptr %12, align 4, !tbaa !15
  %5166 = load i32, ptr %14, align 4, !tbaa !15
  %5167 = load i32, ptr %210, align 4, !tbaa !15
  %5168 = mul nsw i32 %5166, %5167
  %5169 = mul nsw i32 %5165, %5168
  %5170 = sext i32 %5169 to i64
  %5171 = add nsw i64 %5164, %5170
  %5172 = load i32, ptr %11, align 4, !tbaa !15
  %5173 = load i32, ptr %210, align 4, !tbaa !15
  %5174 = mul nsw i32 %5172, %5173
  %5175 = sext i32 %5174 to i64
  %5176 = add nsw i64 %5171, %5175
  %5177 = load i32, ptr %13, align 4, !tbaa !15
  %5178 = sext i32 %5177 to i64
  %5179 = add nsw i64 %5176, %5178
  %5180 = getelementptr inbounds i8, ptr %5163, i64 %5179
  %5181 = load i8, ptr %5180, align 1, !tbaa !22
  store i8 %5181, ptr %219, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %220) #6
  %5182 = load i8, ptr %219, align 1, !tbaa !22
  %5183 = sext i8 %5182 to i16
  store i16 %5183, ptr %220, align 2, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %221) #6
  %5184 = load i8, ptr %219, align 1, !tbaa !22
  %5185 = sext i8 %5184 to i32
  store i32 %5185, ptr %221, align 4, !tbaa !15
  %5186 = load i32, ptr %215, align 4, !tbaa !15
  %5187 = icmp sgt i32 %5186, 0
  br i1 %5187, label %5188, label %5195

5188:                                             ; preds = %5162
  %5189 = load i16, ptr %220, align 2, !tbaa !33
  %5190 = sitofp i16 %5189 to float
  store float %5190, ptr %217, align 4, !tbaa !30
  %5191 = load float, ptr %217, align 4, !tbaa !30
  %5192 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5191)
  store i16 %5192, ptr %208, align 2, !tbaa !33
  %5193 = load i16, ptr %208, align 2, !tbaa !33
  %5194 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5193)
  store float %5194, ptr %217, align 4, !tbaa !30
  br label %5198

5195:                                             ; preds = %5162
  %5196 = load i32, ptr %221, align 4, !tbaa !15
  %5197 = sitofp i32 %5196 to float
  store float %5197, ptr %217, align 4, !tbaa !30
  br label %5198

5198:                                             ; preds = %5195, %5188
  %5199 = load ptr, ptr %5, align 8, !tbaa !5
  %5200 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5199, i32 0, i32 52
  %5201 = load i32, ptr %5200, align 8, !tbaa !135
  %5202 = icmp ugt i32 %5201, 0
  br i1 %5202, label %5203, label %5223

5203:                                             ; preds = %5198
  call void @llvm.lifetime.start.p0(i64 4, ptr %222) #6
  %5204 = load ptr, ptr %5, align 8, !tbaa !5
  %5205 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5204, i32 0, i32 34
  %5206 = load ptr, ptr %5205, align 8, !tbaa !136
  %5207 = load i32, ptr %11, align 4, !tbaa !15
  %5208 = sext i32 %5207 to i64
  %5209 = getelementptr inbounds i16, ptr %5206, i64 %5208
  %5210 = load i16, ptr %5209, align 2, !tbaa !33
  %5211 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5210)
  store float %5211, ptr %222, align 4, !tbaa !30
  %5212 = load float, ptr %217, align 4, !tbaa !30
  %5213 = load float, ptr %222, align 4, !tbaa !30
  %5214 = fsub float %5212, %5213
  store float %5214, ptr %217, align 4, !tbaa !30
  %5215 = load i32, ptr %215, align 4, !tbaa !15
  %5216 = icmp sgt i32 %5215, 0
  br i1 %5216, label %5217, label %5222

5217:                                             ; preds = %5203
  %5218 = load float, ptr %217, align 4, !tbaa !30
  %5219 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5218)
  store i16 %5219, ptr %208, align 2, !tbaa !33
  %5220 = load i16, ptr %208, align 2, !tbaa !33
  %5221 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5220)
  store float %5221, ptr %217, align 4, !tbaa !30
  br label %5222

5222:                                             ; preds = %5217, %5203
  call void @llvm.lifetime.end.p0(i64 4, ptr %222) #6
  br label %5223

5223:                                             ; preds = %5222, %5198
  %5224 = load float, ptr %217, align 4, !tbaa !30
  %5225 = load ptr, ptr %5, align 8, !tbaa !5
  %5226 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5225, i32 0, i32 39
  %5227 = load ptr, ptr %5226, align 8, !tbaa !137
  %5228 = load i32, ptr %11, align 4, !tbaa !15
  %5229 = sext i32 %5228 to i64
  %5230 = getelementptr inbounds i16, ptr %5227, i64 %5229
  %5231 = load i16, ptr %5230, align 2, !tbaa !33
  %5232 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5231)
  %5233 = fmul float %5224, %5232
  store float %5233, ptr %217, align 4, !tbaa !30
  %5234 = load i32, ptr %215, align 4, !tbaa !15
  %5235 = icmp sgt i32 %5234, 0
  br i1 %5235, label %5236, label %5241

5236:                                             ; preds = %5223
  %5237 = load float, ptr %217, align 4, !tbaa !30
  %5238 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5237)
  store i16 %5238, ptr %206, align 2, !tbaa !33
  %5239 = load i16, ptr %206, align 2, !tbaa !33
  %5240 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5239)
  store float %5240, ptr %217, align 4, !tbaa !30
  br label %5241

5241:                                             ; preds = %5236, %5223
  %5242 = load ptr, ptr %5, align 8, !tbaa !5
  %5243 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5242, i32 0, i32 15
  %5244 = load i32, ptr %5243, align 4, !tbaa !64
  %5245 = icmp eq i32 %5244, 0
  br i1 %5245, label %5246, label %5264

5246:                                             ; preds = %5241
  %5247 = load ptr, ptr %205, align 8, !tbaa !5
  %5248 = load i64, ptr %21, align 8, !tbaa !21
  %5249 = load i32, ptr %10, align 4, !tbaa !15
  %5250 = load i32, ptr %15, align 4, !tbaa !15
  %5251 = mul nsw i32 %5249, %5250
  %5252 = sext i32 %5251 to i64
  %5253 = add nsw i64 %5248, %5252
  %5254 = load i32, ptr %12, align 4, !tbaa !15
  %5255 = load i32, ptr %210, align 4, !tbaa !15
  %5256 = mul nsw i32 %5254, %5255
  %5257 = sext i32 %5256 to i64
  %5258 = add nsw i64 %5253, %5257
  %5259 = load i32, ptr %13, align 4, !tbaa !15
  %5260 = sext i32 %5259 to i64
  %5261 = add nsw i64 %5258, %5260
  %5262 = getelementptr inbounds i16, ptr %5247, i64 %5261
  %5263 = load i16, ptr %5262, align 2, !tbaa !33
  store i16 %5263, ptr %209, align 2, !tbaa !33
  br label %5284

5264:                                             ; preds = %5241
  %5265 = load ptr, ptr %205, align 8, !tbaa !5
  %5266 = load i64, ptr %21, align 8, !tbaa !21
  %5267 = load i32, ptr %12, align 4, !tbaa !15
  %5268 = sext i32 %5267 to i64
  %5269 = load i32, ptr %210, align 4, !tbaa !15
  %5270 = sext i32 %5269 to i64
  %5271 = mul nsw i64 %5268, %5270
  %5272 = load i32, ptr %13, align 4, !tbaa !15
  %5273 = sext i32 %5272 to i64
  %5274 = add nsw i64 %5271, %5273
  %5275 = load i32, ptr %15, align 4, !tbaa !15
  %5276 = sext i32 %5275 to i64
  %5277 = mul nsw i64 %5274, %5276
  %5278 = add nsw i64 %5266, %5277
  %5279 = load i32, ptr %10, align 4, !tbaa !15
  %5280 = sext i32 %5279 to i64
  %5281 = add nsw i64 %5278, %5280
  %5282 = getelementptr inbounds i16, ptr %5265, i64 %5281
  %5283 = load i16, ptr %5282, align 2, !tbaa !33
  store i16 %5283, ptr %209, align 2, !tbaa !33
  br label %5284

5284:                                             ; preds = %5264, %5246
  %5285 = load i16, ptr %209, align 2, !tbaa !33
  %5286 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5285)
  store float %5286, ptr %218, align 4, !tbaa !30
  %5287 = load float, ptr %217, align 4, !tbaa !30
  %5288 = load float, ptr %218, align 4, !tbaa !30
  %5289 = load float, ptr %216, align 4, !tbaa !30
  %5290 = call float @llvm.fmuladd.f32(float %5287, float %5288, float %5289)
  store float %5290, ptr %216, align 4, !tbaa !30
  %5291 = load i32, ptr %215, align 4, !tbaa !15
  %5292 = icmp sgt i32 %5291, 0
  br i1 %5292, label %5293, label %5298

5293:                                             ; preds = %5284
  %5294 = load float, ptr %216, align 4, !tbaa !30
  %5295 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5294)
  store i16 %5295, ptr %206, align 2, !tbaa !33
  %5296 = load i16, ptr %206, align 2, !tbaa !33
  %5297 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5296)
  store float %5297, ptr %216, align 4, !tbaa !30
  br label %5298

5298:                                             ; preds = %5293, %5284
  call void @llvm.lifetime.end.p0(i64 4, ptr %221) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %220) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %219) #6
  br label %5299

5299:                                             ; preds = %5298
  %5300 = load i32, ptr %13, align 4, !tbaa !15
  %5301 = add nsw i32 %5300, 1
  store i32 %5301, ptr %13, align 4, !tbaa !15
  br label %5158, !llvm.loop !148

5302:                                             ; preds = %5158
  br label %5303

5303:                                             ; preds = %5302
  %5304 = load i32, ptr %12, align 4, !tbaa !15
  %5305 = add nsw i32 %5304, 1
  store i32 %5305, ptr %12, align 4, !tbaa !15
  br label %5151, !llvm.loop !149

5306:                                             ; preds = %5151
  br label %5307

5307:                                             ; preds = %5306
  %5308 = load i32, ptr %9, align 4, !tbaa !15
  %5309 = add nsw i32 %5308, 1
  store i32 %5309, ptr %9, align 4, !tbaa !15
  br label %5141, !llvm.loop !150

5310:                                             ; preds = %5141
  %5311 = load ptr, ptr %5, align 8, !tbaa !5
  %5312 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5311, i32 0, i32 13
  %5313 = load double, ptr %5312, align 8, !tbaa !28
  %5314 = fcmp oeq double %5313, 1.000000e+00
  br i1 %5314, label %5315, label %5332

5315:                                             ; preds = %5310
  %5316 = load ptr, ptr %204, align 8, !tbaa !5
  %5317 = load i32, ptr %10, align 4, !tbaa !15
  %5318 = load i32, ptr %16, align 4, !tbaa !15
  %5319 = mul nsw i32 %5317, %5318
  %5320 = load i32, ptr %11, align 4, !tbaa !15
  %5321 = add nsw i32 %5319, %5320
  %5322 = sext i32 %5321 to i64
  %5323 = getelementptr inbounds float, ptr %5316, i64 %5322
  %5324 = load float, ptr %5323, align 4, !tbaa !30
  store float %5324, ptr %207, align 4, !tbaa !30
  %5325 = load float, ptr %207, align 4, !tbaa !30
  %5326 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5325)
  store i16 %5326, ptr %206, align 2, !tbaa !33
  %5327 = load i16, ptr %206, align 2, !tbaa !33
  %5328 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5327)
  store float %5328, ptr %207, align 4, !tbaa !30
  %5329 = load float, ptr %207, align 4, !tbaa !30
  %5330 = load float, ptr %216, align 4, !tbaa !30
  %5331 = fadd float %5330, %5329
  store float %5331, ptr %216, align 4, !tbaa !30
  br label %5332

5332:                                             ; preds = %5315, %5310
  %5333 = load float, ptr %216, align 4, !tbaa !30
  %5334 = load ptr, ptr %204, align 8, !tbaa !5
  %5335 = load i32, ptr %10, align 4, !tbaa !15
  %5336 = load i32, ptr %16, align 4, !tbaa !15
  %5337 = mul nsw i32 %5335, %5336
  %5338 = load i32, ptr %11, align 4, !tbaa !15
  %5339 = add nsw i32 %5337, %5338
  %5340 = sext i32 %5339 to i64
  %5341 = getelementptr inbounds float, ptr %5334, i64 %5340
  store float %5333, ptr %5341, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %218) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %217) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %216) #6
  br label %5342

5342:                                             ; preds = %5332
  %5343 = load i32, ptr %11, align 4, !tbaa !15
  %5344 = add nsw i32 %5343, 1
  store i32 %5344, ptr %11, align 4, !tbaa !15
  br label %5136, !llvm.loop !151

5345:                                             ; preds = %5136
  br label %5346

5346:                                             ; preds = %5345
  %5347 = load i32, ptr %10, align 4, !tbaa !15
  %5348 = add nsw i32 %5347, 1
  store i32 %5348, ptr %10, align 4, !tbaa !15
  br label %5131, !llvm.loop !152

5349:                                             ; preds = %5131
  call void @llvm.lifetime.end.p0(i64 4, ptr %215) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %214) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %213) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %212) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %210) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %209) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %208) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %207) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %206) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #6
  br label %8140

5350:                                             ; preds = %5069, %5054, %5049, %5044
  %5351 = load ptr, ptr %5, align 8, !tbaa !5
  %5352 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5351, i32 0, i32 0
  %5353 = load i32, ptr %5352, align 8, !tbaa !26
  %5354 = icmp eq i32 %5353, 3
  br i1 %5354, label %5355, label %5610

5355:                                             ; preds = %5350
  %5356 = load ptr, ptr %5, align 8, !tbaa !5
  %5357 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5356, i32 0, i32 1
  %5358 = load i32, ptr %5357, align 4, !tbaa !27
  %5359 = icmp eq i32 %5358, 3
  br i1 %5359, label %5360, label %5610

5360:                                             ; preds = %5355
  %5361 = load ptr, ptr %5, align 8, !tbaa !5
  %5362 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5361, i32 0, i32 2
  %5363 = load i32, ptr %5362, align 8, !tbaa !29
  %5364 = icmp eq i32 %5363, 3
  br i1 %5364, label %5365, label %5610

5365:                                             ; preds = %5360
  %5366 = load ptr, ptr %5, align 8, !tbaa !5
  %5367 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5366, i32 0, i32 3
  %5368 = load i32, ptr %5367, align 4, !tbaa !62
  %5369 = icmp eq i32 %5368, 3
  br i1 %5369, label %5380, label %5370

5370:                                             ; preds = %5365
  %5371 = load ptr, ptr %5, align 8, !tbaa !5
  %5372 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5371, i32 0, i32 3
  %5373 = load i32, ptr %5372, align 4, !tbaa !62
  %5374 = icmp eq i32 %5373, 1
  br i1 %5374, label %5380, label %5375

5375:                                             ; preds = %5370
  %5376 = load ptr, ptr %5, align 8, !tbaa !5
  %5377 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5376, i32 0, i32 3
  %5378 = load i32, ptr %5377, align 4, !tbaa !62
  %5379 = icmp eq i32 %5378, 14
  br i1 %5379, label %5380, label %5610

5380:                                             ; preds = %5375, %5370, %5365
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #6
  %5381 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %5381, ptr %223, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #6
  %5382 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %5382, ptr %224, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #6
  %5383 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %5383, ptr %225, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %226) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %227) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %228) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %229) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %230) #6
  %5384 = load ptr, ptr %5, align 8, !tbaa !5
  %5385 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5384, i32 0, i32 16
  %5386 = load i32, ptr %5385, align 8, !tbaa !128
  %5387 = icmp ne i32 %5386, 0
  br i1 %5387, label %5388, label %5393

5388:                                             ; preds = %5380
  %5389 = load ptr, ptr %5, align 8, !tbaa !5
  %5390 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5389, i32 0, i32 0
  %5391 = load i32, ptr %5390, align 8, !tbaa !26
  %5392 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %5391)
  br label %5394

5393:                                             ; preds = %5380
  br label %5394

5394:                                             ; preds = %5393, %5388
  %5395 = phi i32 [ %5392, %5388 ], [ 1, %5393 ]
  store i32 %5395, ptr %230, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #6
  %5396 = call ptr @getenv(ptr noundef @.str.2) #6
  store ptr %5396, ptr %231, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %232) #6
  %5397 = load ptr, ptr %231, align 8, !tbaa !5
  %5398 = icmp eq ptr %5397, null
  br i1 %5398, label %5399, label %5400

5399:                                             ; preds = %5394
  br label %5413

5400:                                             ; preds = %5394
  %5401 = load ptr, ptr %231, align 8, !tbaa !5
  %5402 = load ptr, ptr %231, align 8, !tbaa !5
  %5403 = call ptr @strstr(ptr noundef %5402, ptr noundef @.str.3) #7
  %5404 = icmp eq ptr %5401, %5403
  br i1 %5404, label %5410, label %5405

5405:                                             ; preds = %5400
  %5406 = load ptr, ptr %231, align 8, !tbaa !5
  %5407 = load ptr, ptr %231, align 8, !tbaa !5
  %5408 = call ptr @strstr(ptr noundef %5407, ptr noundef @.str.4) #7
  %5409 = icmp eq ptr %5406, %5408
  br label %5410

5410:                                             ; preds = %5405, %5400
  %5411 = phi i1 [ true, %5400 ], [ %5409, %5405 ]
  %5412 = zext i1 %5411 to i32
  br label %5413

5413:                                             ; preds = %5410, %5399
  %5414 = phi i32 [ 0, %5399 ], [ %5412, %5410 ]
  store i32 %5414, ptr %232, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %233) #6
  %5415 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %5415, ptr %233, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %234) #6
  %5416 = load i32, ptr %232, align 4, !tbaa !15
  %5417 = icmp sgt i32 %5416, 0
  br i1 %5417, label %5418, label %5419

5418:                                             ; preds = %5413
  br label %5429

5419:                                             ; preds = %5413
  %5420 = load ptr, ptr %231, align 8, !tbaa !5
  %5421 = icmp eq ptr %5420, null
  br i1 %5421, label %5422, label %5425

5422:                                             ; preds = %5419
  %5423 = load i32, ptr %233, align 4, !tbaa !15
  %5424 = icmp sge i32 %5423, 1104
  br label %5425

5425:                                             ; preds = %5422, %5419
  %5426 = phi i1 [ false, %5419 ], [ %5424, %5422 ]
  %5427 = zext i1 %5426 to i64
  %5428 = select i1 %5426, i32 1, i32 0
  br label %5429

5429:                                             ; preds = %5425, %5418
  %5430 = phi i32 [ 1, %5418 ], [ %5428, %5425 ]
  store i32 %5430, ptr %234, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %235) #6
  %5431 = load ptr, ptr %5, align 8, !tbaa !5
  %5432 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5431, i32 0, i32 3
  %5433 = load i32, ptr %5432, align 4, !tbaa !62
  %5434 = icmp eq i32 %5433, 3
  br i1 %5434, label %5445, label %5435

5435:                                             ; preds = %5429
  %5436 = load ptr, ptr %5, align 8, !tbaa !5
  %5437 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5436, i32 0, i32 3
  %5438 = load i32, ptr %5437, align 4, !tbaa !62
  %5439 = icmp eq i32 %5438, 14
  br i1 %5439, label %5440, label %5443

5440:                                             ; preds = %5435
  %5441 = load i32, ptr %234, align 4, !tbaa !15
  %5442 = icmp sgt i32 %5441, 0
  br label %5443

5443:                                             ; preds = %5440, %5435
  %5444 = phi i1 [ false, %5435 ], [ %5442, %5440 ]
  br label %5445

5445:                                             ; preds = %5443, %5429
  %5446 = phi i1 [ true, %5429 ], [ %5444, %5443 ]
  %5447 = zext i1 %5446 to i64
  %5448 = select i1 %5446, i32 1, i32 0
  store i32 %5448, ptr %235, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %5449

5449:                                             ; preds = %5606, %5445
  %5450 = load i32, ptr %10, align 4, !tbaa !15
  %5451 = load i32, ptr %18, align 4, !tbaa !15
  %5452 = icmp slt i32 %5450, %5451
  br i1 %5452, label %5453, label %5609

5453:                                             ; preds = %5449
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %5454

5454:                                             ; preds = %5602, %5453
  %5455 = load i32, ptr %11, align 4, !tbaa !15
  %5456 = load i32, ptr %17, align 4, !tbaa !15
  %5457 = icmp slt i32 %5455, %5456
  br i1 %5457, label %5458, label %5605

5458:                                             ; preds = %5454
  call void @llvm.lifetime.start.p0(i64 4, ptr %236) #6
  store float 0.000000e+00, ptr %236, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %237) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %238) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %5459

5459:                                             ; preds = %5567, %5458
  %5460 = load i32, ptr %9, align 4, !tbaa !15
  %5461 = load ptr, ptr %5, align 8, !tbaa !5
  %5462 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5461, i32 0, i32 26
  %5463 = load i32, ptr %5462, align 8, !tbaa !45
  %5464 = icmp slt i32 %5460, %5463
  br i1 %5464, label %5465, label %5570

5465:                                             ; preds = %5459
  %5466 = load i32, ptr %9, align 4, !tbaa !15
  %5467 = sext i32 %5466 to i64
  %5468 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %223, ptr noundef %225, ptr noundef %20, ptr noundef %21, i64 noundef %5467, ptr noundef %5468)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %5469

5469:                                             ; preds = %5563, %5465
  %5470 = load i32, ptr %12, align 4, !tbaa !15
  %5471 = load i32, ptr %19, align 4, !tbaa !15
  %5472 = load i32, ptr %230, align 4, !tbaa !15
  %5473 = sdiv i32 %5471, %5472
  %5474 = icmp slt i32 %5470, %5473
  br i1 %5474, label %5475, label %5566

5475:                                             ; preds = %5469
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %5476

5476:                                             ; preds = %5559, %5475
  %5477 = load i32, ptr %13, align 4, !tbaa !15
  %5478 = load i32, ptr %230, align 4, !tbaa !15
  %5479 = icmp slt i32 %5477, %5478
  br i1 %5479, label %5480, label %5562

5480:                                             ; preds = %5476
  %5481 = load ptr, ptr %223, align 8, !tbaa !5
  %5482 = load i64, ptr %20, align 8, !tbaa !21
  %5483 = load i32, ptr %12, align 4, !tbaa !15
  %5484 = load i32, ptr %14, align 4, !tbaa !15
  %5485 = load i32, ptr %230, align 4, !tbaa !15
  %5486 = mul nsw i32 %5484, %5485
  %5487 = mul nsw i32 %5483, %5486
  %5488 = sext i32 %5487 to i64
  %5489 = add nsw i64 %5482, %5488
  %5490 = load i32, ptr %11, align 4, !tbaa !15
  %5491 = load i32, ptr %230, align 4, !tbaa !15
  %5492 = mul nsw i32 %5490, %5491
  %5493 = sext i32 %5492 to i64
  %5494 = add nsw i64 %5489, %5493
  %5495 = load i32, ptr %13, align 4, !tbaa !15
  %5496 = sext i32 %5495 to i64
  %5497 = add nsw i64 %5494, %5496
  %5498 = getelementptr inbounds i16, ptr %5481, i64 %5497
  %5499 = load i16, ptr %5498, align 2, !tbaa !33
  store i16 %5499, ptr %227, align 2, !tbaa !33
  %5500 = load i16, ptr %227, align 2, !tbaa !33
  %5501 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5500)
  store float %5501, ptr %237, align 4, !tbaa !30
  %5502 = load ptr, ptr %5, align 8, !tbaa !5
  %5503 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5502, i32 0, i32 15
  %5504 = load i32, ptr %5503, align 4, !tbaa !64
  %5505 = icmp eq i32 %5504, 0
  br i1 %5505, label %5506, label %5524

5506:                                             ; preds = %5480
  %5507 = load ptr, ptr %225, align 8, !tbaa !5
  %5508 = load i64, ptr %21, align 8, !tbaa !21
  %5509 = load i32, ptr %10, align 4, !tbaa !15
  %5510 = load i32, ptr %15, align 4, !tbaa !15
  %5511 = mul nsw i32 %5509, %5510
  %5512 = sext i32 %5511 to i64
  %5513 = add nsw i64 %5508, %5512
  %5514 = load i32, ptr %12, align 4, !tbaa !15
  %5515 = load i32, ptr %230, align 4, !tbaa !15
  %5516 = mul nsw i32 %5514, %5515
  %5517 = sext i32 %5516 to i64
  %5518 = add nsw i64 %5513, %5517
  %5519 = load i32, ptr %13, align 4, !tbaa !15
  %5520 = sext i32 %5519 to i64
  %5521 = add nsw i64 %5518, %5520
  %5522 = getelementptr inbounds i16, ptr %5507, i64 %5521
  %5523 = load i16, ptr %5522, align 2, !tbaa !33
  store i16 %5523, ptr %228, align 2, !tbaa !33
  br label %5544

5524:                                             ; preds = %5480
  %5525 = load ptr, ptr %225, align 8, !tbaa !5
  %5526 = load i64, ptr %21, align 8, !tbaa !21
  %5527 = load i32, ptr %12, align 4, !tbaa !15
  %5528 = sext i32 %5527 to i64
  %5529 = load i32, ptr %230, align 4, !tbaa !15
  %5530 = sext i32 %5529 to i64
  %5531 = mul nsw i64 %5528, %5530
  %5532 = load i32, ptr %13, align 4, !tbaa !15
  %5533 = sext i32 %5532 to i64
  %5534 = add nsw i64 %5531, %5533
  %5535 = load i32, ptr %15, align 4, !tbaa !15
  %5536 = sext i32 %5535 to i64
  %5537 = mul nsw i64 %5534, %5536
  %5538 = add nsw i64 %5526, %5537
  %5539 = load i32, ptr %10, align 4, !tbaa !15
  %5540 = sext i32 %5539 to i64
  %5541 = add nsw i64 %5538, %5540
  %5542 = getelementptr inbounds i16, ptr %5525, i64 %5541
  %5543 = load i16, ptr %5542, align 2, !tbaa !33
  store i16 %5543, ptr %228, align 2, !tbaa !33
  br label %5544

5544:                                             ; preds = %5524, %5506
  %5545 = load i16, ptr %228, align 2, !tbaa !33
  %5546 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5545)
  store float %5546, ptr %238, align 4, !tbaa !30
  %5547 = load float, ptr %237, align 4, !tbaa !30
  %5548 = load float, ptr %238, align 4, !tbaa !30
  %5549 = load float, ptr %236, align 4, !tbaa !30
  %5550 = call float @llvm.fmuladd.f32(float %5547, float %5548, float %5549)
  store float %5550, ptr %236, align 4, !tbaa !30
  %5551 = load i32, ptr %235, align 4, !tbaa !15
  %5552 = icmp sgt i32 %5551, 0
  br i1 %5552, label %5553, label %5558

5553:                                             ; preds = %5544
  %5554 = load float, ptr %236, align 4, !tbaa !30
  %5555 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5554)
  store i16 %5555, ptr %226, align 2, !tbaa !33
  %5556 = load i16, ptr %226, align 2, !tbaa !33
  %5557 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5556)
  store float %5557, ptr %236, align 4, !tbaa !30
  br label %5558

5558:                                             ; preds = %5553, %5544
  br label %5559

5559:                                             ; preds = %5558
  %5560 = load i32, ptr %13, align 4, !tbaa !15
  %5561 = add nsw i32 %5560, 1
  store i32 %5561, ptr %13, align 4, !tbaa !15
  br label %5476, !llvm.loop !153

5562:                                             ; preds = %5476
  br label %5563

5563:                                             ; preds = %5562
  %5564 = load i32, ptr %12, align 4, !tbaa !15
  %5565 = add nsw i32 %5564, 1
  store i32 %5565, ptr %12, align 4, !tbaa !15
  br label %5469, !llvm.loop !154

5566:                                             ; preds = %5469
  br label %5567

5567:                                             ; preds = %5566
  %5568 = load i32, ptr %9, align 4, !tbaa !15
  %5569 = add nsw i32 %5568, 1
  store i32 %5569, ptr %9, align 4, !tbaa !15
  br label %5459, !llvm.loop !155

5570:                                             ; preds = %5459
  %5571 = load ptr, ptr %5, align 8, !tbaa !5
  %5572 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5571, i32 0, i32 13
  %5573 = load double, ptr %5572, align 8, !tbaa !28
  %5574 = fcmp oeq double %5573, 1.000000e+00
  br i1 %5574, label %5575, label %5590

5575:                                             ; preds = %5570
  %5576 = load ptr, ptr %224, align 8, !tbaa !5
  %5577 = load i32, ptr %10, align 4, !tbaa !15
  %5578 = load i32, ptr %16, align 4, !tbaa !15
  %5579 = mul nsw i32 %5577, %5578
  %5580 = load i32, ptr %11, align 4, !tbaa !15
  %5581 = add nsw i32 %5579, %5580
  %5582 = sext i32 %5581 to i64
  %5583 = getelementptr inbounds i16, ptr %5576, i64 %5582
  %5584 = load i16, ptr %5583, align 2, !tbaa !33
  store i16 %5584, ptr %226, align 2, !tbaa !33
  %5585 = load i16, ptr %226, align 2, !tbaa !33
  %5586 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5585)
  store float %5586, ptr %229, align 4, !tbaa !30
  %5587 = load float, ptr %229, align 4, !tbaa !30
  %5588 = load float, ptr %236, align 4, !tbaa !30
  %5589 = fadd float %5588, %5587
  store float %5589, ptr %236, align 4, !tbaa !30
  br label %5590

5590:                                             ; preds = %5575, %5570
  %5591 = load float, ptr %236, align 4, !tbaa !30
  %5592 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5591)
  store i16 %5592, ptr %226, align 2, !tbaa !33
  %5593 = load i16, ptr %226, align 2, !tbaa !33
  %5594 = load ptr, ptr %224, align 8, !tbaa !5
  %5595 = load i32, ptr %10, align 4, !tbaa !15
  %5596 = load i32, ptr %16, align 4, !tbaa !15
  %5597 = mul nsw i32 %5595, %5596
  %5598 = load i32, ptr %11, align 4, !tbaa !15
  %5599 = add nsw i32 %5597, %5598
  %5600 = sext i32 %5599 to i64
  %5601 = getelementptr inbounds i16, ptr %5594, i64 %5600
  store i16 %5593, ptr %5601, align 2, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 4, ptr %238) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %237) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %236) #6
  br label %5602

5602:                                             ; preds = %5590
  %5603 = load i32, ptr %11, align 4, !tbaa !15
  %5604 = add nsw i32 %5603, 1
  store i32 %5604, ptr %11, align 4, !tbaa !15
  br label %5454, !llvm.loop !156

5605:                                             ; preds = %5454
  br label %5606

5606:                                             ; preds = %5605
  %5607 = load i32, ptr %10, align 4, !tbaa !15
  %5608 = add nsw i32 %5607, 1
  store i32 %5608, ptr %10, align 4, !tbaa !15
  br label %5449, !llvm.loop !157

5609:                                             ; preds = %5449
  call void @llvm.lifetime.end.p0(i64 4, ptr %235) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %234) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %233) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %232) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %230) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %229) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %228) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %227) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %226) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #6
  br label %8139

5610:                                             ; preds = %5375, %5360, %5355, %5350
  %5611 = load ptr, ptr %5, align 8, !tbaa !5
  %5612 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5611, i32 0, i32 0
  %5613 = load i32, ptr %5612, align 8, !tbaa !26
  %5614 = icmp eq i32 %5613, 3
  br i1 %5614, label %5615, label %5870

5615:                                             ; preds = %5610
  %5616 = load ptr, ptr %5, align 8, !tbaa !5
  %5617 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5616, i32 0, i32 1
  %5618 = load i32, ptr %5617, align 4, !tbaa !27
  %5619 = icmp eq i32 %5618, 3
  br i1 %5619, label %5620, label %5870

5620:                                             ; preds = %5615
  %5621 = load ptr, ptr %5, align 8, !tbaa !5
  %5622 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5621, i32 0, i32 2
  %5623 = load i32, ptr %5622, align 8, !tbaa !29
  %5624 = icmp eq i32 %5623, 1
  br i1 %5624, label %5625, label %5870

5625:                                             ; preds = %5620
  %5626 = load ptr, ptr %5, align 8, !tbaa !5
  %5627 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5626, i32 0, i32 3
  %5628 = load i32, ptr %5627, align 4, !tbaa !62
  %5629 = icmp eq i32 %5628, 3
  br i1 %5629, label %5640, label %5630

5630:                                             ; preds = %5625
  %5631 = load ptr, ptr %5, align 8, !tbaa !5
  %5632 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5631, i32 0, i32 3
  %5633 = load i32, ptr %5632, align 4, !tbaa !62
  %5634 = icmp eq i32 %5633, 1
  br i1 %5634, label %5640, label %5635

5635:                                             ; preds = %5630
  %5636 = load ptr, ptr %5, align 8, !tbaa !5
  %5637 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5636, i32 0, i32 3
  %5638 = load i32, ptr %5637, align 4, !tbaa !62
  %5639 = icmp eq i32 %5638, 14
  br i1 %5639, label %5640, label %5870

5640:                                             ; preds = %5635, %5630, %5625
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #6
  %5641 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %5641, ptr %239, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #6
  %5642 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %5642, ptr %240, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #6
  %5643 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %5643, ptr %241, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %242) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %243) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %244) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %245) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %246) #6
  %5644 = load ptr, ptr %5, align 8, !tbaa !5
  %5645 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5644, i32 0, i32 16
  %5646 = load i32, ptr %5645, align 8, !tbaa !128
  %5647 = icmp ne i32 %5646, 0
  br i1 %5647, label %5648, label %5653

5648:                                             ; preds = %5640
  %5649 = load ptr, ptr %5, align 8, !tbaa !5
  %5650 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5649, i32 0, i32 0
  %5651 = load i32, ptr %5650, align 8, !tbaa !26
  %5652 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %5651)
  br label %5654

5653:                                             ; preds = %5640
  br label %5654

5654:                                             ; preds = %5653, %5648
  %5655 = phi i32 [ %5652, %5648 ], [ 1, %5653 ]
  store i32 %5655, ptr %246, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %247) #6
  %5656 = call ptr @getenv(ptr noundef @.str.2) #6
  store ptr %5656, ptr %247, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %248) #6
  %5657 = load ptr, ptr %247, align 8, !tbaa !5
  %5658 = icmp eq ptr %5657, null
  br i1 %5658, label %5659, label %5660

5659:                                             ; preds = %5654
  br label %5673

5660:                                             ; preds = %5654
  %5661 = load ptr, ptr %247, align 8, !tbaa !5
  %5662 = load ptr, ptr %247, align 8, !tbaa !5
  %5663 = call ptr @strstr(ptr noundef %5662, ptr noundef @.str.3) #7
  %5664 = icmp eq ptr %5661, %5663
  br i1 %5664, label %5670, label %5665

5665:                                             ; preds = %5660
  %5666 = load ptr, ptr %247, align 8, !tbaa !5
  %5667 = load ptr, ptr %247, align 8, !tbaa !5
  %5668 = call ptr @strstr(ptr noundef %5667, ptr noundef @.str.4) #7
  %5669 = icmp eq ptr %5666, %5668
  br label %5670

5670:                                             ; preds = %5665, %5660
  %5671 = phi i1 [ true, %5660 ], [ %5669, %5665 ]
  %5672 = zext i1 %5671 to i32
  br label %5673

5673:                                             ; preds = %5670, %5659
  %5674 = phi i32 [ 0, %5659 ], [ %5672, %5670 ]
  store i32 %5674, ptr %248, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %249) #6
  %5675 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %5675, ptr %249, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %250) #6
  %5676 = load i32, ptr %248, align 4, !tbaa !15
  %5677 = icmp sgt i32 %5676, 0
  br i1 %5677, label %5678, label %5679

5678:                                             ; preds = %5673
  br label %5689

5679:                                             ; preds = %5673
  %5680 = load ptr, ptr %247, align 8, !tbaa !5
  %5681 = icmp eq ptr %5680, null
  br i1 %5681, label %5682, label %5685

5682:                                             ; preds = %5679
  %5683 = load i32, ptr %249, align 4, !tbaa !15
  %5684 = icmp sge i32 %5683, 1104
  br label %5685

5685:                                             ; preds = %5682, %5679
  %5686 = phi i1 [ false, %5679 ], [ %5684, %5682 ]
  %5687 = zext i1 %5686 to i64
  %5688 = select i1 %5686, i32 1, i32 0
  br label %5689

5689:                                             ; preds = %5685, %5678
  %5690 = phi i32 [ 1, %5678 ], [ %5688, %5685 ]
  store i32 %5690, ptr %250, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %251) #6
  %5691 = load ptr, ptr %5, align 8, !tbaa !5
  %5692 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5691, i32 0, i32 3
  %5693 = load i32, ptr %5692, align 4, !tbaa !62
  %5694 = icmp eq i32 %5693, 3
  br i1 %5694, label %5705, label %5695

5695:                                             ; preds = %5689
  %5696 = load ptr, ptr %5, align 8, !tbaa !5
  %5697 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5696, i32 0, i32 3
  %5698 = load i32, ptr %5697, align 4, !tbaa !62
  %5699 = icmp eq i32 %5698, 14
  br i1 %5699, label %5700, label %5703

5700:                                             ; preds = %5695
  %5701 = load i32, ptr %250, align 4, !tbaa !15
  %5702 = icmp sgt i32 %5701, 0
  br label %5703

5703:                                             ; preds = %5700, %5695
  %5704 = phi i1 [ false, %5695 ], [ %5702, %5700 ]
  br label %5705

5705:                                             ; preds = %5703, %5689
  %5706 = phi i1 [ true, %5689 ], [ %5704, %5703 ]
  %5707 = zext i1 %5706 to i64
  %5708 = select i1 %5706, i32 1, i32 0
  store i32 %5708, ptr %251, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %5709

5709:                                             ; preds = %5866, %5705
  %5710 = load i32, ptr %10, align 4, !tbaa !15
  %5711 = load i32, ptr %18, align 4, !tbaa !15
  %5712 = icmp slt i32 %5710, %5711
  br i1 %5712, label %5713, label %5869

5713:                                             ; preds = %5709
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %5714

5714:                                             ; preds = %5862, %5713
  %5715 = load i32, ptr %11, align 4, !tbaa !15
  %5716 = load i32, ptr %17, align 4, !tbaa !15
  %5717 = icmp slt i32 %5715, %5716
  br i1 %5717, label %5718, label %5865

5718:                                             ; preds = %5714
  call void @llvm.lifetime.start.p0(i64 4, ptr %252) #6
  store float 0.000000e+00, ptr %252, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %253) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %254) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %5719

5719:                                             ; preds = %5827, %5718
  %5720 = load i32, ptr %9, align 4, !tbaa !15
  %5721 = load ptr, ptr %5, align 8, !tbaa !5
  %5722 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5721, i32 0, i32 26
  %5723 = load i32, ptr %5722, align 8, !tbaa !45
  %5724 = icmp slt i32 %5720, %5723
  br i1 %5724, label %5725, label %5830

5725:                                             ; preds = %5719
  %5726 = load i32, ptr %9, align 4, !tbaa !15
  %5727 = sext i32 %5726 to i64
  %5728 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %239, ptr noundef %241, ptr noundef %20, ptr noundef %21, i64 noundef %5727, ptr noundef %5728)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %5729

5729:                                             ; preds = %5823, %5725
  %5730 = load i32, ptr %12, align 4, !tbaa !15
  %5731 = load i32, ptr %19, align 4, !tbaa !15
  %5732 = load i32, ptr %246, align 4, !tbaa !15
  %5733 = sdiv i32 %5731, %5732
  %5734 = icmp slt i32 %5730, %5733
  br i1 %5734, label %5735, label %5826

5735:                                             ; preds = %5729
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %5736

5736:                                             ; preds = %5819, %5735
  %5737 = load i32, ptr %13, align 4, !tbaa !15
  %5738 = load i32, ptr %246, align 4, !tbaa !15
  %5739 = icmp slt i32 %5737, %5738
  br i1 %5739, label %5740, label %5822

5740:                                             ; preds = %5736
  %5741 = load ptr, ptr %239, align 8, !tbaa !5
  %5742 = load i64, ptr %20, align 8, !tbaa !21
  %5743 = load i32, ptr %12, align 4, !tbaa !15
  %5744 = load i32, ptr %14, align 4, !tbaa !15
  %5745 = load i32, ptr %246, align 4, !tbaa !15
  %5746 = mul nsw i32 %5744, %5745
  %5747 = mul nsw i32 %5743, %5746
  %5748 = sext i32 %5747 to i64
  %5749 = add nsw i64 %5742, %5748
  %5750 = load i32, ptr %11, align 4, !tbaa !15
  %5751 = load i32, ptr %246, align 4, !tbaa !15
  %5752 = mul nsw i32 %5750, %5751
  %5753 = sext i32 %5752 to i64
  %5754 = add nsw i64 %5749, %5753
  %5755 = load i32, ptr %13, align 4, !tbaa !15
  %5756 = sext i32 %5755 to i64
  %5757 = add nsw i64 %5754, %5756
  %5758 = getelementptr inbounds i16, ptr %5741, i64 %5757
  %5759 = load i16, ptr %5758, align 2, !tbaa !33
  store i16 %5759, ptr %244, align 2, !tbaa !33
  %5760 = load i16, ptr %244, align 2, !tbaa !33
  %5761 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5760)
  store float %5761, ptr %253, align 4, !tbaa !30
  %5762 = load ptr, ptr %5, align 8, !tbaa !5
  %5763 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5762, i32 0, i32 15
  %5764 = load i32, ptr %5763, align 4, !tbaa !64
  %5765 = icmp eq i32 %5764, 0
  br i1 %5765, label %5766, label %5784

5766:                                             ; preds = %5740
  %5767 = load ptr, ptr %241, align 8, !tbaa !5
  %5768 = load i64, ptr %21, align 8, !tbaa !21
  %5769 = load i32, ptr %10, align 4, !tbaa !15
  %5770 = load i32, ptr %15, align 4, !tbaa !15
  %5771 = mul nsw i32 %5769, %5770
  %5772 = sext i32 %5771 to i64
  %5773 = add nsw i64 %5768, %5772
  %5774 = load i32, ptr %12, align 4, !tbaa !15
  %5775 = load i32, ptr %246, align 4, !tbaa !15
  %5776 = mul nsw i32 %5774, %5775
  %5777 = sext i32 %5776 to i64
  %5778 = add nsw i64 %5773, %5777
  %5779 = load i32, ptr %13, align 4, !tbaa !15
  %5780 = sext i32 %5779 to i64
  %5781 = add nsw i64 %5778, %5780
  %5782 = getelementptr inbounds i16, ptr %5767, i64 %5781
  %5783 = load i16, ptr %5782, align 2, !tbaa !33
  store i16 %5783, ptr %245, align 2, !tbaa !33
  br label %5804

5784:                                             ; preds = %5740
  %5785 = load ptr, ptr %241, align 8, !tbaa !5
  %5786 = load i64, ptr %21, align 8, !tbaa !21
  %5787 = load i32, ptr %12, align 4, !tbaa !15
  %5788 = sext i32 %5787 to i64
  %5789 = load i32, ptr %246, align 4, !tbaa !15
  %5790 = sext i32 %5789 to i64
  %5791 = mul nsw i64 %5788, %5790
  %5792 = load i32, ptr %13, align 4, !tbaa !15
  %5793 = sext i32 %5792 to i64
  %5794 = add nsw i64 %5791, %5793
  %5795 = load i32, ptr %15, align 4, !tbaa !15
  %5796 = sext i32 %5795 to i64
  %5797 = mul nsw i64 %5794, %5796
  %5798 = add nsw i64 %5786, %5797
  %5799 = load i32, ptr %10, align 4, !tbaa !15
  %5800 = sext i32 %5799 to i64
  %5801 = add nsw i64 %5798, %5800
  %5802 = getelementptr inbounds i16, ptr %5785, i64 %5801
  %5803 = load i16, ptr %5802, align 2, !tbaa !33
  store i16 %5803, ptr %245, align 2, !tbaa !33
  br label %5804

5804:                                             ; preds = %5784, %5766
  %5805 = load i16, ptr %245, align 2, !tbaa !33
  %5806 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5805)
  store float %5806, ptr %254, align 4, !tbaa !30
  %5807 = load float, ptr %253, align 4, !tbaa !30
  %5808 = load float, ptr %254, align 4, !tbaa !30
  %5809 = load float, ptr %252, align 4, !tbaa !30
  %5810 = call float @llvm.fmuladd.f32(float %5807, float %5808, float %5809)
  store float %5810, ptr %252, align 4, !tbaa !30
  %5811 = load i32, ptr %251, align 4, !tbaa !15
  %5812 = icmp sgt i32 %5811, 0
  br i1 %5812, label %5813, label %5818

5813:                                             ; preds = %5804
  %5814 = load float, ptr %252, align 4, !tbaa !30
  %5815 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5814)
  store i16 %5815, ptr %242, align 2, !tbaa !33
  %5816 = load i16, ptr %242, align 2, !tbaa !33
  %5817 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5816)
  store float %5817, ptr %252, align 4, !tbaa !30
  br label %5818

5818:                                             ; preds = %5813, %5804
  br label %5819

5819:                                             ; preds = %5818
  %5820 = load i32, ptr %13, align 4, !tbaa !15
  %5821 = add nsw i32 %5820, 1
  store i32 %5821, ptr %13, align 4, !tbaa !15
  br label %5736, !llvm.loop !158

5822:                                             ; preds = %5736
  br label %5823

5823:                                             ; preds = %5822
  %5824 = load i32, ptr %12, align 4, !tbaa !15
  %5825 = add nsw i32 %5824, 1
  store i32 %5825, ptr %12, align 4, !tbaa !15
  br label %5729, !llvm.loop !159

5826:                                             ; preds = %5729
  br label %5827

5827:                                             ; preds = %5826
  %5828 = load i32, ptr %9, align 4, !tbaa !15
  %5829 = add nsw i32 %5828, 1
  store i32 %5829, ptr %9, align 4, !tbaa !15
  br label %5719, !llvm.loop !160

5830:                                             ; preds = %5719
  %5831 = load ptr, ptr %5, align 8, !tbaa !5
  %5832 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5831, i32 0, i32 13
  %5833 = load double, ptr %5832, align 8, !tbaa !28
  %5834 = fcmp oeq double %5833, 1.000000e+00
  br i1 %5834, label %5835, label %5852

5835:                                             ; preds = %5830
  %5836 = load ptr, ptr %240, align 8, !tbaa !5
  %5837 = load i32, ptr %10, align 4, !tbaa !15
  %5838 = load i32, ptr %16, align 4, !tbaa !15
  %5839 = mul nsw i32 %5837, %5838
  %5840 = load i32, ptr %11, align 4, !tbaa !15
  %5841 = add nsw i32 %5839, %5840
  %5842 = sext i32 %5841 to i64
  %5843 = getelementptr inbounds float, ptr %5836, i64 %5842
  %5844 = load float, ptr %5843, align 4, !tbaa !30
  store float %5844, ptr %243, align 4, !tbaa !30
  %5845 = load float, ptr %243, align 4, !tbaa !30
  %5846 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %5845)
  store i16 %5846, ptr %242, align 2, !tbaa !33
  %5847 = load i16, ptr %242, align 2, !tbaa !33
  %5848 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %5847)
  store float %5848, ptr %243, align 4, !tbaa !30
  %5849 = load float, ptr %243, align 4, !tbaa !30
  %5850 = load float, ptr %252, align 4, !tbaa !30
  %5851 = fadd float %5850, %5849
  store float %5851, ptr %252, align 4, !tbaa !30
  br label %5852

5852:                                             ; preds = %5835, %5830
  %5853 = load float, ptr %252, align 4, !tbaa !30
  %5854 = load ptr, ptr %240, align 8, !tbaa !5
  %5855 = load i32, ptr %10, align 4, !tbaa !15
  %5856 = load i32, ptr %16, align 4, !tbaa !15
  %5857 = mul nsw i32 %5855, %5856
  %5858 = load i32, ptr %11, align 4, !tbaa !15
  %5859 = add nsw i32 %5857, %5858
  %5860 = sext i32 %5859 to i64
  %5861 = getelementptr inbounds float, ptr %5854, i64 %5860
  store float %5853, ptr %5861, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %254) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %253) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %252) #6
  br label %5862

5862:                                             ; preds = %5852
  %5863 = load i32, ptr %11, align 4, !tbaa !15
  %5864 = add nsw i32 %5863, 1
  store i32 %5864, ptr %11, align 4, !tbaa !15
  br label %5714, !llvm.loop !161

5865:                                             ; preds = %5714
  br label %5866

5866:                                             ; preds = %5865
  %5867 = load i32, ptr %10, align 4, !tbaa !15
  %5868 = add nsw i32 %5867, 1
  store i32 %5868, ptr %10, align 4, !tbaa !15
  br label %5709, !llvm.loop !162

5869:                                             ; preds = %5709
  call void @llvm.lifetime.end.p0(i64 4, ptr %251) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %250) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %249) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %248) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %246) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %245) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %244) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %243) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %242) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #6
  br label %8138

5870:                                             ; preds = %5635, %5620, %5615, %5610
  %5871 = load ptr, ptr %5, align 8, !tbaa !5
  %5872 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5871, i32 0, i32 0
  %5873 = load i32, ptr %5872, align 8, !tbaa !26
  %5874 = icmp eq i32 %5873, 2
  br i1 %5874, label %5875, label %6135

5875:                                             ; preds = %5870
  %5876 = load ptr, ptr %5, align 8, !tbaa !5
  %5877 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5876, i32 0, i32 1
  %5878 = load i32, ptr %5877, align 4, !tbaa !27
  %5879 = icmp eq i32 %5878, 2
  br i1 %5879, label %5880, label %6135

5880:                                             ; preds = %5875
  %5881 = load ptr, ptr %5, align 8, !tbaa !5
  %5882 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5881, i32 0, i32 2
  %5883 = load i32, ptr %5882, align 8, !tbaa !29
  %5884 = icmp eq i32 %5883, 1
  br i1 %5884, label %5885, label %6135

5885:                                             ; preds = %5880
  %5886 = load ptr, ptr %5, align 8, !tbaa !5
  %5887 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5886, i32 0, i32 3
  %5888 = load i32, ptr %5887, align 4, !tbaa !62
  %5889 = icmp eq i32 %5888, 1
  br i1 %5889, label %5890, label %6135

5890:                                             ; preds = %5885
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #6
  %5891 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %5891, ptr %255, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %256) #6
  %5892 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %5892, ptr %256, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #6
  %5893 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %5893, ptr %257, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %258) #6
  %5894 = load ptr, ptr %5, align 8, !tbaa !5
  %5895 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5894, i32 0, i32 16
  %5896 = load i32, ptr %5895, align 8, !tbaa !128
  %5897 = icmp ne i32 %5896, 0
  br i1 %5897, label %5898, label %5903

5898:                                             ; preds = %5890
  %5899 = load ptr, ptr %5, align 8, !tbaa !5
  %5900 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5899, i32 0, i32 0
  %5901 = load i32, ptr %5900, align 8, !tbaa !26
  %5902 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %5901)
  br label %5904

5903:                                             ; preds = %5890
  br label %5904

5904:                                             ; preds = %5903, %5898
  %5905 = phi i32 [ %5902, %5898 ], [ 1, %5903 ]
  store i32 %5905, ptr %258, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %5906

5906:                                             ; preds = %6131, %5904
  %5907 = load i32, ptr %10, align 4, !tbaa !15
  %5908 = load i32, ptr %18, align 4, !tbaa !15
  %5909 = icmp slt i32 %5907, %5908
  br i1 %5909, label %5910, label %6134

5910:                                             ; preds = %5906
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %5911

5911:                                             ; preds = %6127, %5910
  %5912 = load i32, ptr %11, align 4, !tbaa !15
  %5913 = load i32, ptr %17, align 4, !tbaa !15
  %5914 = icmp slt i32 %5912, %5913
  br i1 %5914, label %5915, label %6130

5915:                                             ; preds = %5911
  %5916 = load ptr, ptr %5, align 8, !tbaa !5
  %5917 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5916, i32 0, i32 13
  %5918 = load double, ptr %5917, align 8, !tbaa !28
  %5919 = fcmp oeq double %5918, 0.000000e+00
  br i1 %5919, label %5920, label %5929

5920:                                             ; preds = %5915
  %5921 = load ptr, ptr %257, align 8, !tbaa !5
  %5922 = load i32, ptr %10, align 4, !tbaa !15
  %5923 = load i32, ptr %16, align 4, !tbaa !15
  %5924 = mul nsw i32 %5922, %5923
  %5925 = load i32, ptr %11, align 4, !tbaa !15
  %5926 = add nsw i32 %5924, %5925
  %5927 = sext i32 %5926 to i64
  %5928 = getelementptr inbounds float, ptr %5921, i64 %5927
  store float 0.000000e+00, ptr %5928, align 4, !tbaa !30
  br label %5929

5929:                                             ; preds = %5920, %5915
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %5930

5930:                                             ; preds = %6123, %5929
  %5931 = load i32, ptr %9, align 4, !tbaa !15
  %5932 = load ptr, ptr %5, align 8, !tbaa !5
  %5933 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5932, i32 0, i32 26
  %5934 = load i32, ptr %5933, align 8, !tbaa !45
  %5935 = icmp slt i32 %5931, %5934
  br i1 %5935, label %5936, label %6126

5936:                                             ; preds = %5930
  %5937 = load i32, ptr %9, align 4, !tbaa !15
  %5938 = sext i32 %5937 to i64
  %5939 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %255, ptr noundef %256, ptr noundef %20, ptr noundef %21, i64 noundef %5938, ptr noundef %5939)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %5940

5940:                                             ; preds = %6119, %5936
  %5941 = load i32, ptr %12, align 4, !tbaa !15
  %5942 = load i32, ptr %19, align 4, !tbaa !15
  %5943 = load i32, ptr %258, align 4, !tbaa !15
  %5944 = sdiv i32 %5942, %5943
  %5945 = icmp slt i32 %5941, %5944
  br i1 %5945, label %5946, label %6122

5946:                                             ; preds = %5940
  %5947 = load i32, ptr %258, align 4, !tbaa !15
  %5948 = sub nsw i32 %5947, 1
  store i32 %5948, ptr %13, align 4, !tbaa !15
  br label %5949

5949:                                             ; preds = %6115, %5946
  %5950 = load i32, ptr %13, align 4, !tbaa !15
  %5951 = icmp sge i32 %5950, 0
  br i1 %5951, label %5952, label %6118

5952:                                             ; preds = %5949
  call void @llvm.lifetime.start.p0(i64 4, ptr %259) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %260) #6
  %5953 = getelementptr inbounds [2 x i16], ptr %259, i64 0, i64 0
  store i16 0, ptr %5953, align 4, !tbaa !22
  %5954 = load ptr, ptr %5, align 8, !tbaa !5
  %5955 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5954, i32 0, i32 14
  %5956 = load i32, ptr %5955, align 8, !tbaa !65
  %5957 = icmp eq i32 %5956, 0
  br i1 %5957, label %5958, label %5979

5958:                                             ; preds = %5952
  %5959 = load ptr, ptr %255, align 8, !tbaa !5
  %5960 = load i64, ptr %20, align 8, !tbaa !21
  %5961 = load i32, ptr %12, align 4, !tbaa !15
  %5962 = load i32, ptr %14, align 4, !tbaa !15
  %5963 = load i32, ptr %258, align 4, !tbaa !15
  %5964 = mul nsw i32 %5962, %5963
  %5965 = mul nsw i32 %5961, %5964
  %5966 = sext i32 %5965 to i64
  %5967 = add nsw i64 %5960, %5966
  %5968 = load i32, ptr %11, align 4, !tbaa !15
  %5969 = load i32, ptr %258, align 4, !tbaa !15
  %5970 = mul nsw i32 %5968, %5969
  %5971 = sext i32 %5970 to i64
  %5972 = add nsw i64 %5967, %5971
  %5973 = load i32, ptr %13, align 4, !tbaa !15
  %5974 = sext i32 %5973 to i64
  %5975 = add nsw i64 %5972, %5974
  %5976 = getelementptr inbounds i16, ptr %5959, i64 %5975
  %5977 = load i16, ptr %5976, align 2, !tbaa !33
  %5978 = getelementptr inbounds [2 x i16], ptr %259, i64 0, i64 1
  store i16 %5977, ptr %5978, align 2, !tbaa !22
  br label %6010

5979:                                             ; preds = %5952
  %5980 = load ptr, ptr %5, align 8, !tbaa !5
  %5981 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5980, i32 0, i32 14
  %5982 = load i32, ptr %5981, align 8, !tbaa !65
  %5983 = icmp sgt i32 %5982, 0
  br i1 %5983, label %5984, label %6008

5984:                                             ; preds = %5979
  %5985 = load ptr, ptr %5, align 8, !tbaa !5
  %5986 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %5985, i32 0, i32 16
  %5987 = load i32, ptr %5986, align 8, !tbaa !128
  %5988 = icmp eq i32 %5987, 0
  br i1 %5988, label %5989, label %6008

5989:                                             ; preds = %5984
  %5990 = load ptr, ptr %255, align 8, !tbaa !5
  %5991 = load i64, ptr %20, align 8, !tbaa !21
  %5992 = load i32, ptr %11, align 4, !tbaa !15
  %5993 = load i32, ptr %14, align 4, !tbaa !15
  %5994 = mul nsw i32 %5992, %5993
  %5995 = sext i32 %5994 to i64
  %5996 = add nsw i64 %5991, %5995
  %5997 = load i32, ptr %12, align 4, !tbaa !15
  %5998 = load i32, ptr %258, align 4, !tbaa !15
  %5999 = mul nsw i32 %5997, %5998
  %6000 = sext i32 %5999 to i64
  %6001 = add nsw i64 %5996, %6000
  %6002 = load i32, ptr %13, align 4, !tbaa !15
  %6003 = sext i32 %6002 to i64
  %6004 = add nsw i64 %6001, %6003
  %6005 = getelementptr inbounds i16, ptr %5990, i64 %6004
  %6006 = load i16, ptr %6005, align 2, !tbaa !33
  %6007 = getelementptr inbounds [2 x i16], ptr %259, i64 0, i64 1
  store i16 %6006, ptr %6007, align 2, !tbaa !22
  br label %6009

6008:                                             ; preds = %5984, %5979
  br label %6009

6009:                                             ; preds = %6008, %5989
  br label %6010

6010:                                             ; preds = %6009, %5958
  %6011 = getelementptr inbounds [2 x i16], ptr %260, i64 0, i64 0
  store i16 0, ptr %6011, align 4, !tbaa !22
  %6012 = load ptr, ptr %5, align 8, !tbaa !5
  %6013 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6012, i32 0, i32 15
  %6014 = load i32, ptr %6013, align 4, !tbaa !64
  %6015 = icmp sgt i32 %6014, 0
  br i1 %6015, label %6016, label %6042

6016:                                             ; preds = %6010
  %6017 = load ptr, ptr %5, align 8, !tbaa !5
  %6018 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6017, i32 0, i32 17
  %6019 = load i32, ptr %6018, align 4, !tbaa !163
  %6020 = icmp sgt i32 %6019, 0
  br i1 %6020, label %6021, label %6042

6021:                                             ; preds = %6016
  %6022 = load ptr, ptr %256, align 8, !tbaa !5
  %6023 = load i64, ptr %21, align 8, !tbaa !21
  %6024 = load i32, ptr %10, align 4, !tbaa !15
  %6025 = load i32, ptr %258, align 4, !tbaa !15
  %6026 = mul nsw i32 %6024, %6025
  %6027 = sext i32 %6026 to i64
  %6028 = add nsw i64 %6023, %6027
  %6029 = load i32, ptr %12, align 4, !tbaa !15
  %6030 = load i32, ptr %15, align 4, !tbaa !15
  %6031 = load i32, ptr %258, align 4, !tbaa !15
  %6032 = mul nsw i32 %6030, %6031
  %6033 = mul nsw i32 %6029, %6032
  %6034 = sext i32 %6033 to i64
  %6035 = add nsw i64 %6028, %6034
  %6036 = load i32, ptr %13, align 4, !tbaa !15
  %6037 = sext i32 %6036 to i64
  %6038 = add nsw i64 %6035, %6037
  %6039 = getelementptr inbounds i16, ptr %6022, i64 %6038
  %6040 = load i16, ptr %6039, align 2, !tbaa !33
  %6041 = getelementptr inbounds [2 x i16], ptr %260, i64 0, i64 1
  store i16 %6040, ptr %6041, align 2, !tbaa !22
  br label %6102

6042:                                             ; preds = %6016, %6010
  %6043 = load ptr, ptr %5, align 8, !tbaa !5
  %6044 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6043, i32 0, i32 15
  %6045 = load i32, ptr %6044, align 4, !tbaa !64
  %6046 = icmp sgt i32 %6045, 0
  br i1 %6046, label %6047, label %6070

6047:                                             ; preds = %6042
  %6048 = load ptr, ptr %5, align 8, !tbaa !5
  %6049 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6048, i32 0, i32 17
  %6050 = load i32, ptr %6049, align 4, !tbaa !163
  %6051 = icmp eq i32 %6050, 0
  br i1 %6051, label %6052, label %6070

6052:                                             ; preds = %6047
  %6053 = load ptr, ptr %256, align 8, !tbaa !5
  %6054 = load i64, ptr %21, align 8, !tbaa !21
  %6055 = load i32, ptr %12, align 4, !tbaa !15
  %6056 = load i32, ptr %258, align 4, !tbaa !15
  %6057 = mul nsw i32 %6055, %6056
  %6058 = load i32, ptr %13, align 4, !tbaa !15
  %6059 = add nsw i32 %6057, %6058
  %6060 = load i32, ptr %15, align 4, !tbaa !15
  %6061 = mul nsw i32 %6059, %6060
  %6062 = sext i32 %6061 to i64
  %6063 = add nsw i64 %6054, %6062
  %6064 = load i32, ptr %10, align 4, !tbaa !15
  %6065 = sext i32 %6064 to i64
  %6066 = add nsw i64 %6063, %6065
  %6067 = getelementptr inbounds i16, ptr %6053, i64 %6066
  %6068 = load i16, ptr %6067, align 2, !tbaa !33
  %6069 = getelementptr inbounds [2 x i16], ptr %260, i64 0, i64 1
  store i16 %6068, ptr %6069, align 2, !tbaa !22
  br label %6101

6070:                                             ; preds = %6047, %6042
  %6071 = load ptr, ptr %5, align 8, !tbaa !5
  %6072 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6071, i32 0, i32 15
  %6073 = load i32, ptr %6072, align 4, !tbaa !64
  %6074 = icmp eq i32 %6073, 0
  br i1 %6074, label %6075, label %6099

6075:                                             ; preds = %6070
  %6076 = load ptr, ptr %5, align 8, !tbaa !5
  %6077 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6076, i32 0, i32 17
  %6078 = load i32, ptr %6077, align 4, !tbaa !163
  %6079 = icmp eq i32 %6078, 0
  br i1 %6079, label %6080, label %6099

6080:                                             ; preds = %6075
  %6081 = load ptr, ptr %256, align 8, !tbaa !5
  %6082 = load i64, ptr %21, align 8, !tbaa !21
  %6083 = load i32, ptr %10, align 4, !tbaa !15
  %6084 = load i32, ptr %15, align 4, !tbaa !15
  %6085 = mul nsw i32 %6083, %6084
  %6086 = sext i32 %6085 to i64
  %6087 = add nsw i64 %6082, %6086
  %6088 = load i32, ptr %12, align 4, !tbaa !15
  %6089 = load i32, ptr %258, align 4, !tbaa !15
  %6090 = mul nsw i32 %6088, %6089
  %6091 = sext i32 %6090 to i64
  %6092 = add nsw i64 %6087, %6091
  %6093 = load i32, ptr %13, align 4, !tbaa !15
  %6094 = sext i32 %6093 to i64
  %6095 = add nsw i64 %6092, %6094
  %6096 = getelementptr inbounds i16, ptr %6081, i64 %6095
  %6097 = load i16, ptr %6096, align 2, !tbaa !33
  %6098 = getelementptr inbounds [2 x i16], ptr %260, i64 0, i64 1
  store i16 %6097, ptr %6098, align 2, !tbaa !22
  br label %6100

6099:                                             ; preds = %6075, %6070
  br label %6100

6100:                                             ; preds = %6099, %6080
  br label %6101

6101:                                             ; preds = %6100, %6052
  br label %6102

6102:                                             ; preds = %6101, %6021
  %6103 = load float, ptr %259, align 4, !tbaa !22
  %6104 = load float, ptr %260, align 4, !tbaa !22
  %6105 = load ptr, ptr %257, align 8, !tbaa !5
  %6106 = load i32, ptr %10, align 4, !tbaa !15
  %6107 = load i32, ptr %16, align 4, !tbaa !15
  %6108 = mul nsw i32 %6106, %6107
  %6109 = load i32, ptr %11, align 4, !tbaa !15
  %6110 = add nsw i32 %6108, %6109
  %6111 = sext i32 %6110 to i64
  %6112 = getelementptr inbounds float, ptr %6105, i64 %6111
  %6113 = load float, ptr %6112, align 4, !tbaa !30
  %6114 = call float @llvm.fmuladd.f32(float %6103, float %6104, float %6113)
  store float %6114, ptr %6112, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %260) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %259) #6
  br label %6115

6115:                                             ; preds = %6102
  %6116 = load i32, ptr %13, align 4, !tbaa !15
  %6117 = add nsw i32 %6116, -1
  store i32 %6117, ptr %13, align 4, !tbaa !15
  br label %5949, !llvm.loop !164

6118:                                             ; preds = %5949
  br label %6119

6119:                                             ; preds = %6118
  %6120 = load i32, ptr %12, align 4, !tbaa !15
  %6121 = add nsw i32 %6120, 1
  store i32 %6121, ptr %12, align 4, !tbaa !15
  br label %5940, !llvm.loop !165

6122:                                             ; preds = %5940
  br label %6123

6123:                                             ; preds = %6122
  %6124 = load i32, ptr %9, align 4, !tbaa !15
  %6125 = add nsw i32 %6124, 1
  store i32 %6125, ptr %9, align 4, !tbaa !15
  br label %5930, !llvm.loop !166

6126:                                             ; preds = %5930
  br label %6127

6127:                                             ; preds = %6126
  %6128 = load i32, ptr %11, align 4, !tbaa !15
  %6129 = add nsw i32 %6128, 1
  store i32 %6129, ptr %11, align 4, !tbaa !15
  br label %5911, !llvm.loop !167

6130:                                             ; preds = %5911
  br label %6131

6131:                                             ; preds = %6130
  %6132 = load i32, ptr %10, align 4, !tbaa !15
  %6133 = add nsw i32 %6132, 1
  store i32 %6133, ptr %10, align 4, !tbaa !15
  br label %5906, !llvm.loop !168

6134:                                             ; preds = %5906
  call void @llvm.lifetime.end.p0(i64 4, ptr %258) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #6
  br label %8137

6135:                                             ; preds = %5885, %5880, %5875, %5870
  %6136 = load ptr, ptr %5, align 8, !tbaa !5
  %6137 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6136, i32 0, i32 0
  %6138 = load i32, ptr %6137, align 8, !tbaa !26
  %6139 = icmp eq i32 %6138, 4
  br i1 %6139, label %6140, label %6402

6140:                                             ; preds = %6135
  %6141 = load ptr, ptr %5, align 8, !tbaa !5
  %6142 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6141, i32 0, i32 1
  %6143 = load i32, ptr %6142, align 4, !tbaa !27
  %6144 = icmp eq i32 %6143, 2
  br i1 %6144, label %6145, label %6402

6145:                                             ; preds = %6140
  %6146 = load ptr, ptr %5, align 8, !tbaa !5
  %6147 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6146, i32 0, i32 2
  %6148 = load i32, ptr %6147, align 8, !tbaa !29
  %6149 = icmp eq i32 %6148, 1
  br i1 %6149, label %6150, label %6402

6150:                                             ; preds = %6145
  %6151 = load ptr, ptr %5, align 8, !tbaa !5
  %6152 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6151, i32 0, i32 3
  %6153 = load i32, ptr %6152, align 4, !tbaa !62
  %6154 = icmp eq i32 %6153, 1
  br i1 %6154, label %6155, label %6402

6155:                                             ; preds = %6150
  call void @llvm.lifetime.start.p0(i64 8, ptr %261) #6
  %6156 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %6156, ptr %261, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %262) #6
  %6157 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %6157, ptr %262, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %263) #6
  %6158 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %6158, ptr %263, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %264) #6
  %6159 = load ptr, ptr %5, align 8, !tbaa !5
  %6160 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6159, i32 0, i32 16
  %6161 = load i32, ptr %6160, align 8, !tbaa !128
  %6162 = icmp ne i32 %6161, 0
  br i1 %6162, label %6163, label %6168

6163:                                             ; preds = %6155
  %6164 = load ptr, ptr %5, align 8, !tbaa !5
  %6165 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6164, i32 0, i32 1
  %6166 = load i32, ptr %6165, align 4, !tbaa !27
  %6167 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %6166)
  br label %6169

6168:                                             ; preds = %6155
  br label %6169

6169:                                             ; preds = %6168, %6163
  %6170 = phi i32 [ %6167, %6163 ], [ 1, %6168 ]
  store i32 %6170, ptr %264, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %6171

6171:                                             ; preds = %6398, %6169
  %6172 = load i32, ptr %10, align 4, !tbaa !15
  %6173 = load i32, ptr %18, align 4, !tbaa !15
  %6174 = icmp slt i32 %6172, %6173
  br i1 %6174, label %6175, label %6401

6175:                                             ; preds = %6171
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %6176

6176:                                             ; preds = %6394, %6175
  %6177 = load i32, ptr %11, align 4, !tbaa !15
  %6178 = load i32, ptr %17, align 4, !tbaa !15
  %6179 = icmp slt i32 %6177, %6178
  br i1 %6179, label %6180, label %6397

6180:                                             ; preds = %6176
  %6181 = load ptr, ptr %5, align 8, !tbaa !5
  %6182 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6181, i32 0, i32 13
  %6183 = load double, ptr %6182, align 8, !tbaa !28
  %6184 = fcmp oeq double %6183, 0.000000e+00
  br i1 %6184, label %6185, label %6194

6185:                                             ; preds = %6180
  %6186 = load ptr, ptr %263, align 8, !tbaa !5
  %6187 = load i32, ptr %10, align 4, !tbaa !15
  %6188 = load i32, ptr %16, align 4, !tbaa !15
  %6189 = mul nsw i32 %6187, %6188
  %6190 = load i32, ptr %11, align 4, !tbaa !15
  %6191 = add nsw i32 %6189, %6190
  %6192 = sext i32 %6191 to i64
  %6193 = getelementptr inbounds float, ptr %6186, i64 %6192
  store float 0.000000e+00, ptr %6193, align 4, !tbaa !30
  br label %6194

6194:                                             ; preds = %6185, %6180
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %6195

6195:                                             ; preds = %6390, %6194
  %6196 = load i32, ptr %9, align 4, !tbaa !15
  %6197 = load ptr, ptr %5, align 8, !tbaa !5
  %6198 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6197, i32 0, i32 26
  %6199 = load i32, ptr %6198, align 8, !tbaa !45
  %6200 = icmp slt i32 %6196, %6199
  br i1 %6200, label %6201, label %6393

6201:                                             ; preds = %6195
  %6202 = load i32, ptr %9, align 4, !tbaa !15
  %6203 = sext i32 %6202 to i64
  %6204 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %261, ptr noundef %262, ptr noundef %20, ptr noundef %21, i64 noundef %6203, ptr noundef %6204)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %6205

6205:                                             ; preds = %6386, %6201
  %6206 = load i32, ptr %12, align 4, !tbaa !15
  %6207 = load i32, ptr %19, align 4, !tbaa !15
  %6208 = load i32, ptr %264, align 4, !tbaa !15
  %6209 = sdiv i32 %6207, %6208
  %6210 = icmp slt i32 %6206, %6209
  br i1 %6210, label %6211, label %6389

6211:                                             ; preds = %6205
  %6212 = load i32, ptr %264, align 4, !tbaa !15
  %6213 = sub nsw i32 %6212, 1
  store i32 %6213, ptr %13, align 4, !tbaa !15
  br label %6214

6214:                                             ; preds = %6382, %6211
  %6215 = load i32, ptr %13, align 4, !tbaa !15
  %6216 = icmp sge i32 %6215, 0
  br i1 %6216, label %6217, label %6385

6217:                                             ; preds = %6214
  call void @llvm.lifetime.start.p0(i64 2, ptr %265) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %266) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %267) #6
  %6218 = getelementptr inbounds [2 x i8], ptr %265, i64 0, i64 0
  store i8 0, ptr %6218, align 2, !tbaa !22
  %6219 = load ptr, ptr %5, align 8, !tbaa !5
  %6220 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6219, i32 0, i32 14
  %6221 = load i32, ptr %6220, align 8, !tbaa !65
  %6222 = icmp eq i32 %6221, 0
  br i1 %6222, label %6223, label %6244

6223:                                             ; preds = %6217
  %6224 = load ptr, ptr %261, align 8, !tbaa !5
  %6225 = load i64, ptr %20, align 8, !tbaa !21
  %6226 = load i32, ptr %12, align 4, !tbaa !15
  %6227 = load i32, ptr %14, align 4, !tbaa !15
  %6228 = load i32, ptr %264, align 4, !tbaa !15
  %6229 = mul nsw i32 %6227, %6228
  %6230 = mul nsw i32 %6226, %6229
  %6231 = sext i32 %6230 to i64
  %6232 = add nsw i64 %6225, %6231
  %6233 = load i32, ptr %11, align 4, !tbaa !15
  %6234 = load i32, ptr %264, align 4, !tbaa !15
  %6235 = mul nsw i32 %6233, %6234
  %6236 = sext i32 %6235 to i64
  %6237 = add nsw i64 %6232, %6236
  %6238 = load i32, ptr %13, align 4, !tbaa !15
  %6239 = sext i32 %6238 to i64
  %6240 = add nsw i64 %6237, %6239
  %6241 = getelementptr inbounds i8, ptr %6224, i64 %6240
  %6242 = load i8, ptr %6241, align 1, !tbaa !22
  %6243 = getelementptr inbounds [2 x i8], ptr %265, i64 0, i64 1
  store i8 %6242, ptr %6243, align 1, !tbaa !22
  br label %6275

6244:                                             ; preds = %6217
  %6245 = load ptr, ptr %5, align 8, !tbaa !5
  %6246 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6245, i32 0, i32 14
  %6247 = load i32, ptr %6246, align 8, !tbaa !65
  %6248 = icmp sgt i32 %6247, 0
  br i1 %6248, label %6249, label %6273

6249:                                             ; preds = %6244
  %6250 = load ptr, ptr %5, align 8, !tbaa !5
  %6251 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6250, i32 0, i32 16
  %6252 = load i32, ptr %6251, align 8, !tbaa !128
  %6253 = icmp eq i32 %6252, 0
  br i1 %6253, label %6254, label %6273

6254:                                             ; preds = %6249
  %6255 = load ptr, ptr %261, align 8, !tbaa !5
  %6256 = load i64, ptr %20, align 8, !tbaa !21
  %6257 = load i32, ptr %11, align 4, !tbaa !15
  %6258 = load i32, ptr %14, align 4, !tbaa !15
  %6259 = mul nsw i32 %6257, %6258
  %6260 = sext i32 %6259 to i64
  %6261 = add nsw i64 %6256, %6260
  %6262 = load i32, ptr %12, align 4, !tbaa !15
  %6263 = load i32, ptr %264, align 4, !tbaa !15
  %6264 = mul nsw i32 %6262, %6263
  %6265 = sext i32 %6264 to i64
  %6266 = add nsw i64 %6261, %6265
  %6267 = load i32, ptr %13, align 4, !tbaa !15
  %6268 = sext i32 %6267 to i64
  %6269 = add nsw i64 %6266, %6268
  %6270 = getelementptr inbounds i8, ptr %6255, i64 %6269
  %6271 = load i8, ptr %6270, align 1, !tbaa !22
  %6272 = getelementptr inbounds [2 x i8], ptr %265, i64 0, i64 1
  store i8 %6271, ptr %6272, align 1, !tbaa !22
  br label %6274

6273:                                             ; preds = %6249, %6244
  br label %6274

6274:                                             ; preds = %6273, %6254
  br label %6275

6275:                                             ; preds = %6274, %6223
  %6276 = load i16, ptr %265, align 2, !tbaa !22
  %6277 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %6276)
  store float %6277, ptr %266, align 4, !tbaa !30
  %6278 = getelementptr inbounds [2 x i16], ptr %267, i64 0, i64 0
  store i16 0, ptr %6278, align 4, !tbaa !22
  %6279 = load ptr, ptr %5, align 8, !tbaa !5
  %6280 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6279, i32 0, i32 15
  %6281 = load i32, ptr %6280, align 4, !tbaa !64
  %6282 = icmp sgt i32 %6281, 0
  br i1 %6282, label %6283, label %6309

6283:                                             ; preds = %6275
  %6284 = load ptr, ptr %5, align 8, !tbaa !5
  %6285 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6284, i32 0, i32 17
  %6286 = load i32, ptr %6285, align 4, !tbaa !163
  %6287 = icmp sgt i32 %6286, 0
  br i1 %6287, label %6288, label %6309

6288:                                             ; preds = %6283
  %6289 = load ptr, ptr %262, align 8, !tbaa !5
  %6290 = load i64, ptr %21, align 8, !tbaa !21
  %6291 = load i32, ptr %10, align 4, !tbaa !15
  %6292 = load i32, ptr %264, align 4, !tbaa !15
  %6293 = mul nsw i32 %6291, %6292
  %6294 = sext i32 %6293 to i64
  %6295 = add nsw i64 %6290, %6294
  %6296 = load i32, ptr %12, align 4, !tbaa !15
  %6297 = load i32, ptr %15, align 4, !tbaa !15
  %6298 = load i32, ptr %264, align 4, !tbaa !15
  %6299 = mul nsw i32 %6297, %6298
  %6300 = mul nsw i32 %6296, %6299
  %6301 = sext i32 %6300 to i64
  %6302 = add nsw i64 %6295, %6301
  %6303 = load i32, ptr %13, align 4, !tbaa !15
  %6304 = sext i32 %6303 to i64
  %6305 = add nsw i64 %6302, %6304
  %6306 = getelementptr inbounds i16, ptr %6289, i64 %6305
  %6307 = load i16, ptr %6306, align 2, !tbaa !33
  %6308 = getelementptr inbounds [2 x i16], ptr %267, i64 0, i64 1
  store i16 %6307, ptr %6308, align 2, !tbaa !22
  br label %6369

6309:                                             ; preds = %6283, %6275
  %6310 = load ptr, ptr %5, align 8, !tbaa !5
  %6311 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6310, i32 0, i32 15
  %6312 = load i32, ptr %6311, align 4, !tbaa !64
  %6313 = icmp sgt i32 %6312, 0
  br i1 %6313, label %6314, label %6337

6314:                                             ; preds = %6309
  %6315 = load ptr, ptr %5, align 8, !tbaa !5
  %6316 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6315, i32 0, i32 17
  %6317 = load i32, ptr %6316, align 4, !tbaa !163
  %6318 = icmp eq i32 %6317, 0
  br i1 %6318, label %6319, label %6337

6319:                                             ; preds = %6314
  %6320 = load ptr, ptr %262, align 8, !tbaa !5
  %6321 = load i64, ptr %21, align 8, !tbaa !21
  %6322 = load i32, ptr %12, align 4, !tbaa !15
  %6323 = load i32, ptr %264, align 4, !tbaa !15
  %6324 = mul nsw i32 %6322, %6323
  %6325 = load i32, ptr %13, align 4, !tbaa !15
  %6326 = add nsw i32 %6324, %6325
  %6327 = load i32, ptr %15, align 4, !tbaa !15
  %6328 = mul nsw i32 %6326, %6327
  %6329 = sext i32 %6328 to i64
  %6330 = add nsw i64 %6321, %6329
  %6331 = load i32, ptr %10, align 4, !tbaa !15
  %6332 = sext i32 %6331 to i64
  %6333 = add nsw i64 %6330, %6332
  %6334 = getelementptr inbounds i16, ptr %6320, i64 %6333
  %6335 = load i16, ptr %6334, align 2, !tbaa !33
  %6336 = getelementptr inbounds [2 x i16], ptr %267, i64 0, i64 1
  store i16 %6335, ptr %6336, align 2, !tbaa !22
  br label %6368

6337:                                             ; preds = %6314, %6309
  %6338 = load ptr, ptr %5, align 8, !tbaa !5
  %6339 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6338, i32 0, i32 15
  %6340 = load i32, ptr %6339, align 4, !tbaa !64
  %6341 = icmp eq i32 %6340, 0
  br i1 %6341, label %6342, label %6366

6342:                                             ; preds = %6337
  %6343 = load ptr, ptr %5, align 8, !tbaa !5
  %6344 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6343, i32 0, i32 17
  %6345 = load i32, ptr %6344, align 4, !tbaa !163
  %6346 = icmp eq i32 %6345, 0
  br i1 %6346, label %6347, label %6366

6347:                                             ; preds = %6342
  %6348 = load ptr, ptr %262, align 8, !tbaa !5
  %6349 = load i64, ptr %21, align 8, !tbaa !21
  %6350 = load i32, ptr %10, align 4, !tbaa !15
  %6351 = load i32, ptr %15, align 4, !tbaa !15
  %6352 = mul nsw i32 %6350, %6351
  %6353 = sext i32 %6352 to i64
  %6354 = add nsw i64 %6349, %6353
  %6355 = load i32, ptr %12, align 4, !tbaa !15
  %6356 = load i32, ptr %264, align 4, !tbaa !15
  %6357 = mul nsw i32 %6355, %6356
  %6358 = sext i32 %6357 to i64
  %6359 = add nsw i64 %6354, %6358
  %6360 = load i32, ptr %13, align 4, !tbaa !15
  %6361 = sext i32 %6360 to i64
  %6362 = add nsw i64 %6359, %6361
  %6363 = getelementptr inbounds i16, ptr %6348, i64 %6362
  %6364 = load i16, ptr %6363, align 2, !tbaa !33
  %6365 = getelementptr inbounds [2 x i16], ptr %267, i64 0, i64 1
  store i16 %6364, ptr %6365, align 2, !tbaa !22
  br label %6367

6366:                                             ; preds = %6342, %6337
  br label %6367

6367:                                             ; preds = %6366, %6347
  br label %6368

6368:                                             ; preds = %6367, %6319
  br label %6369

6369:                                             ; preds = %6368, %6288
  %6370 = load float, ptr %266, align 4, !tbaa !30
  %6371 = load float, ptr %267, align 4, !tbaa !22
  %6372 = load ptr, ptr %263, align 8, !tbaa !5
  %6373 = load i32, ptr %10, align 4, !tbaa !15
  %6374 = load i32, ptr %16, align 4, !tbaa !15
  %6375 = mul nsw i32 %6373, %6374
  %6376 = load i32, ptr %11, align 4, !tbaa !15
  %6377 = add nsw i32 %6375, %6376
  %6378 = sext i32 %6377 to i64
  %6379 = getelementptr inbounds float, ptr %6372, i64 %6378
  %6380 = load float, ptr %6379, align 4, !tbaa !30
  %6381 = call float @llvm.fmuladd.f32(float %6370, float %6371, float %6380)
  store float %6381, ptr %6379, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %267) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %266) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %265) #6
  br label %6382

6382:                                             ; preds = %6369
  %6383 = load i32, ptr %13, align 4, !tbaa !15
  %6384 = add nsw i32 %6383, -1
  store i32 %6384, ptr %13, align 4, !tbaa !15
  br label %6214, !llvm.loop !169

6385:                                             ; preds = %6214
  br label %6386

6386:                                             ; preds = %6385
  %6387 = load i32, ptr %12, align 4, !tbaa !15
  %6388 = add nsw i32 %6387, 1
  store i32 %6388, ptr %12, align 4, !tbaa !15
  br label %6205, !llvm.loop !170

6389:                                             ; preds = %6205
  br label %6390

6390:                                             ; preds = %6389
  %6391 = load i32, ptr %9, align 4, !tbaa !15
  %6392 = add nsw i32 %6391, 1
  store i32 %6392, ptr %9, align 4, !tbaa !15
  br label %6195, !llvm.loop !171

6393:                                             ; preds = %6195
  br label %6394

6394:                                             ; preds = %6393
  %6395 = load i32, ptr %11, align 4, !tbaa !15
  %6396 = add nsw i32 %6395, 1
  store i32 %6396, ptr %11, align 4, !tbaa !15
  br label %6176, !llvm.loop !172

6397:                                             ; preds = %6176
  br label %6398

6398:                                             ; preds = %6397
  %6399 = load i32, ptr %10, align 4, !tbaa !15
  %6400 = add nsw i32 %6399, 1
  store i32 %6400, ptr %10, align 4, !tbaa !15
  br label %6171, !llvm.loop !173

6401:                                             ; preds = %6171
  call void @llvm.lifetime.end.p0(i64 4, ptr %264) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %262) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #6
  br label %8136

6402:                                             ; preds = %6150, %6145, %6140, %6135
  %6403 = load ptr, ptr %5, align 8, !tbaa !5
  %6404 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6403, i32 0, i32 0
  %6405 = load i32, ptr %6404, align 8, !tbaa !26
  %6406 = icmp eq i32 %6405, 5
  br i1 %6406, label %6407, label %6666

6407:                                             ; preds = %6402
  %6408 = load ptr, ptr %5, align 8, !tbaa !5
  %6409 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6408, i32 0, i32 1
  %6410 = load i32, ptr %6409, align 4, !tbaa !27
  %6411 = icmp eq i32 %6410, 2
  br i1 %6411, label %6412, label %6666

6412:                                             ; preds = %6407
  %6413 = load ptr, ptr %5, align 8, !tbaa !5
  %6414 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6413, i32 0, i32 2
  %6415 = load i32, ptr %6414, align 8, !tbaa !29
  %6416 = icmp eq i32 %6415, 1
  br i1 %6416, label %6417, label %6666

6417:                                             ; preds = %6412
  %6418 = load ptr, ptr %5, align 8, !tbaa !5
  %6419 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6418, i32 0, i32 3
  %6420 = load i32, ptr %6419, align 4, !tbaa !62
  %6421 = icmp eq i32 %6420, 1
  br i1 %6421, label %6422, label %6666

6422:                                             ; preds = %6417
  call void @llvm.lifetime.start.p0(i64 8, ptr %268) #6
  %6423 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %6423, ptr %268, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %269) #6
  %6424 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %6424, ptr %269, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %270) #6
  %6425 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %6425, ptr %270, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %271) #6
  %6426 = load ptr, ptr %5, align 8, !tbaa !5
  %6427 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6426, i32 0, i32 16
  %6428 = load i32, ptr %6427, align 8, !tbaa !128
  %6429 = icmp ne i32 %6428, 0
  br i1 %6429, label %6430, label %6435

6430:                                             ; preds = %6422
  %6431 = load ptr, ptr %5, align 8, !tbaa !5
  %6432 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6431, i32 0, i32 1
  %6433 = load i32, ptr %6432, align 4, !tbaa !27
  %6434 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %6433)
  br label %6436

6435:                                             ; preds = %6422
  br label %6436

6436:                                             ; preds = %6435, %6430
  %6437 = phi i32 [ %6434, %6430 ], [ 1, %6435 ]
  store i32 %6437, ptr %271, align 4, !tbaa !15
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %6438

6438:                                             ; preds = %6662, %6436
  %6439 = load i32, ptr %10, align 4, !tbaa !15
  %6440 = load i32, ptr %18, align 4, !tbaa !15
  %6441 = icmp slt i32 %6439, %6440
  br i1 %6441, label %6442, label %6665

6442:                                             ; preds = %6438
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %6443

6443:                                             ; preds = %6658, %6442
  %6444 = load i32, ptr %11, align 4, !tbaa !15
  %6445 = load i32, ptr %17, align 4, !tbaa !15
  %6446 = icmp slt i32 %6444, %6445
  br i1 %6446, label %6447, label %6661

6447:                                             ; preds = %6443
  %6448 = load ptr, ptr %5, align 8, !tbaa !5
  %6449 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6448, i32 0, i32 13
  %6450 = load double, ptr %6449, align 8, !tbaa !28
  %6451 = fcmp oeq double %6450, 0.000000e+00
  br i1 %6451, label %6452, label %6461

6452:                                             ; preds = %6447
  %6453 = load ptr, ptr %270, align 8, !tbaa !5
  %6454 = load i32, ptr %10, align 4, !tbaa !15
  %6455 = load i32, ptr %16, align 4, !tbaa !15
  %6456 = mul nsw i32 %6454, %6455
  %6457 = load i32, ptr %11, align 4, !tbaa !15
  %6458 = add nsw i32 %6456, %6457
  %6459 = sext i32 %6458 to i64
  %6460 = getelementptr inbounds float, ptr %6453, i64 %6459
  store float 0.000000e+00, ptr %6460, align 4, !tbaa !30
  br label %6461

6461:                                             ; preds = %6452, %6447
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %6462

6462:                                             ; preds = %6654, %6461
  %6463 = load i32, ptr %9, align 4, !tbaa !15
  %6464 = load ptr, ptr %5, align 8, !tbaa !5
  %6465 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6464, i32 0, i32 26
  %6466 = load i32, ptr %6465, align 8, !tbaa !45
  %6467 = icmp slt i32 %6463, %6466
  br i1 %6467, label %6468, label %6657

6468:                                             ; preds = %6462
  %6469 = load i32, ptr %9, align 4, !tbaa !15
  %6470 = sext i32 %6469 to i64
  %6471 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %268, ptr noundef %269, ptr noundef %20, ptr noundef %21, i64 noundef %6470, ptr noundef %6471)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %6472

6472:                                             ; preds = %6650, %6468
  %6473 = load i32, ptr %12, align 4, !tbaa !15
  %6474 = load i32, ptr %19, align 4, !tbaa !15
  %6475 = load i32, ptr %271, align 4, !tbaa !15
  %6476 = sdiv i32 %6474, %6475
  %6477 = icmp slt i32 %6473, %6476
  br i1 %6477, label %6478, label %6653

6478:                                             ; preds = %6472
  %6479 = load i32, ptr %271, align 4, !tbaa !15
  %6480 = sub nsw i32 %6479, 1
  store i32 %6480, ptr %13, align 4, !tbaa !15
  br label %6481

6481:                                             ; preds = %6646, %6478
  %6482 = load i32, ptr %13, align 4, !tbaa !15
  %6483 = icmp sge i32 %6482, 0
  br i1 %6483, label %6484, label %6649

6484:                                             ; preds = %6481
  call void @llvm.lifetime.start.p0(i64 4, ptr %272) #6
  store float 0.000000e+00, ptr %272, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %273) #6
  %6485 = load ptr, ptr %5, align 8, !tbaa !5
  %6486 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6485, i32 0, i32 14
  %6487 = load i32, ptr %6486, align 8, !tbaa !65
  %6488 = icmp eq i32 %6487, 0
  br i1 %6488, label %6489, label %6510

6489:                                             ; preds = %6484
  %6490 = load ptr, ptr %268, align 8, !tbaa !5
  %6491 = load i64, ptr %20, align 8, !tbaa !21
  %6492 = load i32, ptr %12, align 4, !tbaa !15
  %6493 = load i32, ptr %14, align 4, !tbaa !15
  %6494 = load i32, ptr %271, align 4, !tbaa !15
  %6495 = mul nsw i32 %6493, %6494
  %6496 = mul nsw i32 %6492, %6495
  %6497 = sext i32 %6496 to i64
  %6498 = add nsw i64 %6491, %6497
  %6499 = load i32, ptr %11, align 4, !tbaa !15
  %6500 = load i32, ptr %271, align 4, !tbaa !15
  %6501 = mul nsw i32 %6499, %6500
  %6502 = sext i32 %6501 to i64
  %6503 = add nsw i64 %6498, %6502
  %6504 = load i32, ptr %13, align 4, !tbaa !15
  %6505 = sext i32 %6504 to i64
  %6506 = add nsw i64 %6503, %6505
  %6507 = getelementptr inbounds i8, ptr %6490, i64 %6506
  %6508 = load i8, ptr %6507, align 1, !tbaa !22
  %6509 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %6508)
  store float %6509, ptr %272, align 4, !tbaa !30
  br label %6541

6510:                                             ; preds = %6484
  %6511 = load ptr, ptr %5, align 8, !tbaa !5
  %6512 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6511, i32 0, i32 14
  %6513 = load i32, ptr %6512, align 8, !tbaa !65
  %6514 = icmp sgt i32 %6513, 0
  br i1 %6514, label %6515, label %6539

6515:                                             ; preds = %6510
  %6516 = load ptr, ptr %5, align 8, !tbaa !5
  %6517 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6516, i32 0, i32 16
  %6518 = load i32, ptr %6517, align 8, !tbaa !128
  %6519 = icmp eq i32 %6518, 0
  br i1 %6519, label %6520, label %6539

6520:                                             ; preds = %6515
  %6521 = load ptr, ptr %268, align 8, !tbaa !5
  %6522 = load i64, ptr %20, align 8, !tbaa !21
  %6523 = load i32, ptr %11, align 4, !tbaa !15
  %6524 = load i32, ptr %14, align 4, !tbaa !15
  %6525 = mul nsw i32 %6523, %6524
  %6526 = sext i32 %6525 to i64
  %6527 = add nsw i64 %6522, %6526
  %6528 = load i32, ptr %12, align 4, !tbaa !15
  %6529 = load i32, ptr %271, align 4, !tbaa !15
  %6530 = mul nsw i32 %6528, %6529
  %6531 = sext i32 %6530 to i64
  %6532 = add nsw i64 %6527, %6531
  %6533 = load i32, ptr %13, align 4, !tbaa !15
  %6534 = sext i32 %6533 to i64
  %6535 = add nsw i64 %6532, %6534
  %6536 = getelementptr inbounds i8, ptr %6521, i64 %6535
  %6537 = load i8, ptr %6536, align 1, !tbaa !22
  %6538 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %6537)
  store float %6538, ptr %272, align 4, !tbaa !30
  br label %6540

6539:                                             ; preds = %6515, %6510
  br label %6540

6540:                                             ; preds = %6539, %6520
  br label %6541

6541:                                             ; preds = %6540, %6489
  %6542 = getelementptr inbounds [2 x i16], ptr %273, i64 0, i64 0
  store i16 0, ptr %6542, align 4, !tbaa !22
  %6543 = load ptr, ptr %5, align 8, !tbaa !5
  %6544 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6543, i32 0, i32 15
  %6545 = load i32, ptr %6544, align 4, !tbaa !64
  %6546 = icmp sgt i32 %6545, 0
  br i1 %6546, label %6547, label %6573

6547:                                             ; preds = %6541
  %6548 = load ptr, ptr %5, align 8, !tbaa !5
  %6549 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6548, i32 0, i32 17
  %6550 = load i32, ptr %6549, align 4, !tbaa !163
  %6551 = icmp sgt i32 %6550, 0
  br i1 %6551, label %6552, label %6573

6552:                                             ; preds = %6547
  %6553 = load ptr, ptr %269, align 8, !tbaa !5
  %6554 = load i64, ptr %21, align 8, !tbaa !21
  %6555 = load i32, ptr %10, align 4, !tbaa !15
  %6556 = load i32, ptr %271, align 4, !tbaa !15
  %6557 = mul nsw i32 %6555, %6556
  %6558 = sext i32 %6557 to i64
  %6559 = add nsw i64 %6554, %6558
  %6560 = load i32, ptr %12, align 4, !tbaa !15
  %6561 = load i32, ptr %15, align 4, !tbaa !15
  %6562 = load i32, ptr %271, align 4, !tbaa !15
  %6563 = mul nsw i32 %6561, %6562
  %6564 = mul nsw i32 %6560, %6563
  %6565 = sext i32 %6564 to i64
  %6566 = add nsw i64 %6559, %6565
  %6567 = load i32, ptr %13, align 4, !tbaa !15
  %6568 = sext i32 %6567 to i64
  %6569 = add nsw i64 %6566, %6568
  %6570 = getelementptr inbounds i16, ptr %6553, i64 %6569
  %6571 = load i16, ptr %6570, align 2, !tbaa !33
  %6572 = getelementptr inbounds [2 x i16], ptr %273, i64 0, i64 1
  store i16 %6571, ptr %6572, align 2, !tbaa !22
  br label %6633

6573:                                             ; preds = %6547, %6541
  %6574 = load ptr, ptr %5, align 8, !tbaa !5
  %6575 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6574, i32 0, i32 15
  %6576 = load i32, ptr %6575, align 4, !tbaa !64
  %6577 = icmp sgt i32 %6576, 0
  br i1 %6577, label %6578, label %6601

6578:                                             ; preds = %6573
  %6579 = load ptr, ptr %5, align 8, !tbaa !5
  %6580 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6579, i32 0, i32 17
  %6581 = load i32, ptr %6580, align 4, !tbaa !163
  %6582 = icmp eq i32 %6581, 0
  br i1 %6582, label %6583, label %6601

6583:                                             ; preds = %6578
  %6584 = load ptr, ptr %269, align 8, !tbaa !5
  %6585 = load i64, ptr %21, align 8, !tbaa !21
  %6586 = load i32, ptr %12, align 4, !tbaa !15
  %6587 = load i32, ptr %271, align 4, !tbaa !15
  %6588 = mul nsw i32 %6586, %6587
  %6589 = load i32, ptr %13, align 4, !tbaa !15
  %6590 = add nsw i32 %6588, %6589
  %6591 = load i32, ptr %15, align 4, !tbaa !15
  %6592 = mul nsw i32 %6590, %6591
  %6593 = sext i32 %6592 to i64
  %6594 = add nsw i64 %6585, %6593
  %6595 = load i32, ptr %10, align 4, !tbaa !15
  %6596 = sext i32 %6595 to i64
  %6597 = add nsw i64 %6594, %6596
  %6598 = getelementptr inbounds i16, ptr %6584, i64 %6597
  %6599 = load i16, ptr %6598, align 2, !tbaa !33
  %6600 = getelementptr inbounds [2 x i16], ptr %273, i64 0, i64 1
  store i16 %6599, ptr %6600, align 2, !tbaa !22
  br label %6632

6601:                                             ; preds = %6578, %6573
  %6602 = load ptr, ptr %5, align 8, !tbaa !5
  %6603 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6602, i32 0, i32 15
  %6604 = load i32, ptr %6603, align 4, !tbaa !64
  %6605 = icmp eq i32 %6604, 0
  br i1 %6605, label %6606, label %6630

6606:                                             ; preds = %6601
  %6607 = load ptr, ptr %5, align 8, !tbaa !5
  %6608 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6607, i32 0, i32 17
  %6609 = load i32, ptr %6608, align 4, !tbaa !163
  %6610 = icmp eq i32 %6609, 0
  br i1 %6610, label %6611, label %6630

6611:                                             ; preds = %6606
  %6612 = load ptr, ptr %269, align 8, !tbaa !5
  %6613 = load i64, ptr %21, align 8, !tbaa !21
  %6614 = load i32, ptr %10, align 4, !tbaa !15
  %6615 = load i32, ptr %15, align 4, !tbaa !15
  %6616 = mul nsw i32 %6614, %6615
  %6617 = sext i32 %6616 to i64
  %6618 = add nsw i64 %6613, %6617
  %6619 = load i32, ptr %12, align 4, !tbaa !15
  %6620 = load i32, ptr %271, align 4, !tbaa !15
  %6621 = mul nsw i32 %6619, %6620
  %6622 = sext i32 %6621 to i64
  %6623 = add nsw i64 %6618, %6622
  %6624 = load i32, ptr %13, align 4, !tbaa !15
  %6625 = sext i32 %6624 to i64
  %6626 = add nsw i64 %6623, %6625
  %6627 = getelementptr inbounds i16, ptr %6612, i64 %6626
  %6628 = load i16, ptr %6627, align 2, !tbaa !33
  %6629 = getelementptr inbounds [2 x i16], ptr %273, i64 0, i64 1
  store i16 %6628, ptr %6629, align 2, !tbaa !22
  br label %6631

6630:                                             ; preds = %6606, %6601
  br label %6631

6631:                                             ; preds = %6630, %6611
  br label %6632

6632:                                             ; preds = %6631, %6583
  br label %6633

6633:                                             ; preds = %6632, %6552
  %6634 = load float, ptr %272, align 4, !tbaa !30
  %6635 = load float, ptr %273, align 4, !tbaa !22
  %6636 = load ptr, ptr %270, align 8, !tbaa !5
  %6637 = load i32, ptr %10, align 4, !tbaa !15
  %6638 = load i32, ptr %16, align 4, !tbaa !15
  %6639 = mul nsw i32 %6637, %6638
  %6640 = load i32, ptr %11, align 4, !tbaa !15
  %6641 = add nsw i32 %6639, %6640
  %6642 = sext i32 %6641 to i64
  %6643 = getelementptr inbounds float, ptr %6636, i64 %6642
  %6644 = load float, ptr %6643, align 4, !tbaa !30
  %6645 = call float @llvm.fmuladd.f32(float %6634, float %6635, float %6644)
  store float %6645, ptr %6643, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %273) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %272) #6
  br label %6646

6646:                                             ; preds = %6633
  %6647 = load i32, ptr %13, align 4, !tbaa !15
  %6648 = add nsw i32 %6647, -1
  store i32 %6648, ptr %13, align 4, !tbaa !15
  br label %6481, !llvm.loop !174

6649:                                             ; preds = %6481
  br label %6650

6650:                                             ; preds = %6649
  %6651 = load i32, ptr %12, align 4, !tbaa !15
  %6652 = add nsw i32 %6651, 1
  store i32 %6652, ptr %12, align 4, !tbaa !15
  br label %6472, !llvm.loop !175

6653:                                             ; preds = %6472
  br label %6654

6654:                                             ; preds = %6653
  %6655 = load i32, ptr %9, align 4, !tbaa !15
  %6656 = add nsw i32 %6655, 1
  store i32 %6656, ptr %9, align 4, !tbaa !15
  br label %6462, !llvm.loop !176

6657:                                             ; preds = %6462
  br label %6658

6658:                                             ; preds = %6657
  %6659 = load i32, ptr %11, align 4, !tbaa !15
  %6660 = add nsw i32 %6659, 1
  store i32 %6660, ptr %11, align 4, !tbaa !15
  br label %6443, !llvm.loop !177

6661:                                             ; preds = %6443
  br label %6662

6662:                                             ; preds = %6661
  %6663 = load i32, ptr %10, align 4, !tbaa !15
  %6664 = add nsw i32 %6663, 1
  store i32 %6664, ptr %10, align 4, !tbaa !15
  br label %6438, !llvm.loop !178

6665:                                             ; preds = %6438
  call void @llvm.lifetime.end.p0(i64 4, ptr %271) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %270) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %268) #6
  br label %8135

6666:                                             ; preds = %6417, %6412, %6407, %6402
  %6667 = load ptr, ptr %5, align 8, !tbaa !5
  %6668 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6667, i32 0, i32 0
  %6669 = load i32, ptr %6668, align 8, !tbaa !26
  %6670 = icmp eq i32 %6669, 5
  br i1 %6670, label %6671, label %6938

6671:                                             ; preds = %6666
  %6672 = load ptr, ptr %5, align 8, !tbaa !5
  %6673 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6672, i32 0, i32 1
  %6674 = load i32, ptr %6673, align 4, !tbaa !27
  %6675 = icmp eq i32 %6674, 2
  br i1 %6675, label %6676, label %6938

6676:                                             ; preds = %6671
  %6677 = load ptr, ptr %5, align 8, !tbaa !5
  %6678 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6677, i32 0, i32 2
  %6679 = load i32, ptr %6678, align 8, !tbaa !29
  %6680 = icmp eq i32 %6679, 2
  br i1 %6680, label %6681, label %6938

6681:                                             ; preds = %6676
  %6682 = load ptr, ptr %5, align 8, !tbaa !5
  %6683 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6682, i32 0, i32 3
  %6684 = load i32, ptr %6683, align 4, !tbaa !62
  %6685 = icmp eq i32 %6684, 1
  br i1 %6685, label %6686, label %6938

6686:                                             ; preds = %6681
  call void @llvm.lifetime.start.p0(i64 8, ptr %274) #6
  %6687 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %6687, ptr %274, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %275) #6
  %6688 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %6688, ptr %275, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %276) #6
  %6689 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %6689, ptr %276, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %277) #6
  %6690 = load ptr, ptr %5, align 8, !tbaa !5
  %6691 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6690, i32 0, i32 16
  %6692 = load i32, ptr %6691, align 8, !tbaa !128
  %6693 = icmp ne i32 %6692, 0
  br i1 %6693, label %6694, label %6699

6694:                                             ; preds = %6686
  %6695 = load ptr, ptr %5, align 8, !tbaa !5
  %6696 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6695, i32 0, i32 1
  %6697 = load i32, ptr %6696, align 4, !tbaa !27
  %6698 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %6697)
  br label %6700

6699:                                             ; preds = %6686
  br label %6700

6700:                                             ; preds = %6699, %6694
  %6701 = phi i32 [ %6698, %6694 ], [ 1, %6699 ]
  store i32 %6701, ptr %277, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %278) #6
  store float 0.000000e+00, ptr %278, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 2, ptr %279) #6
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %6702

6702:                                             ; preds = %6934, %6700
  %6703 = load i32, ptr %10, align 4, !tbaa !15
  %6704 = load i32, ptr %18, align 4, !tbaa !15
  %6705 = icmp slt i32 %6703, %6704
  br i1 %6705, label %6706, label %6937

6706:                                             ; preds = %6702
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %6707

6707:                                             ; preds = %6930, %6706
  %6708 = load i32, ptr %11, align 4, !tbaa !15
  %6709 = load i32, ptr %17, align 4, !tbaa !15
  %6710 = icmp slt i32 %6708, %6709
  br i1 %6710, label %6711, label %6933

6711:                                             ; preds = %6707
  %6712 = load ptr, ptr %5, align 8, !tbaa !5
  %6713 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6712, i32 0, i32 13
  %6714 = load double, ptr %6713, align 8, !tbaa !28
  %6715 = fcmp oeq double %6714, 0.000000e+00
  br i1 %6715, label %6716, label %6717

6716:                                             ; preds = %6711
  store float 0.000000e+00, ptr %278, align 4, !tbaa !30
  br label %6730

6717:                                             ; preds = %6711
  call void @llvm.lifetime.start.p0(i64 4, ptr %280) #6
  %6718 = getelementptr inbounds [2 x i16], ptr %280, i64 0, i64 0
  store i16 0, ptr %6718, align 4, !tbaa !22
  %6719 = load ptr, ptr %276, align 8, !tbaa !5
  %6720 = load i32, ptr %10, align 4, !tbaa !15
  %6721 = load i32, ptr %16, align 4, !tbaa !15
  %6722 = mul nsw i32 %6720, %6721
  %6723 = load i32, ptr %11, align 4, !tbaa !15
  %6724 = add nsw i32 %6722, %6723
  %6725 = sext i32 %6724 to i64
  %6726 = getelementptr inbounds i16, ptr %6719, i64 %6725
  %6727 = load i16, ptr %6726, align 2, !tbaa !33
  %6728 = getelementptr inbounds [2 x i16], ptr %280, i64 0, i64 1
  store i16 %6727, ptr %6728, align 2, !tbaa !22
  %6729 = load float, ptr %280, align 4, !tbaa !22
  store float %6729, ptr %278, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %280) #6
  br label %6730

6730:                                             ; preds = %6717, %6716
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %6731

6731:                                             ; preds = %6915, %6730
  %6732 = load i32, ptr %9, align 4, !tbaa !15
  %6733 = load ptr, ptr %5, align 8, !tbaa !5
  %6734 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6733, i32 0, i32 26
  %6735 = load i32, ptr %6734, align 8, !tbaa !45
  %6736 = icmp slt i32 %6732, %6735
  br i1 %6736, label %6737, label %6918

6737:                                             ; preds = %6731
  %6738 = load i32, ptr %9, align 4, !tbaa !15
  %6739 = sext i32 %6738 to i64
  %6740 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %274, ptr noundef %275, ptr noundef %20, ptr noundef %21, i64 noundef %6739, ptr noundef %6740)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %6741

6741:                                             ; preds = %6911, %6737
  %6742 = load i32, ptr %12, align 4, !tbaa !15
  %6743 = load i32, ptr %19, align 4, !tbaa !15
  %6744 = load i32, ptr %277, align 4, !tbaa !15
  %6745 = sdiv i32 %6743, %6744
  %6746 = icmp slt i32 %6742, %6745
  br i1 %6746, label %6747, label %6914

6747:                                             ; preds = %6741
  %6748 = load i32, ptr %277, align 4, !tbaa !15
  %6749 = sub nsw i32 %6748, 1
  store i32 %6749, ptr %13, align 4, !tbaa !15
  br label %6750

6750:                                             ; preds = %6907, %6747
  %6751 = load i32, ptr %13, align 4, !tbaa !15
  %6752 = icmp sge i32 %6751, 0
  br i1 %6752, label %6753, label %6910

6753:                                             ; preds = %6750
  call void @llvm.lifetime.start.p0(i64 4, ptr %281) #6
  store float 0.000000e+00, ptr %281, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %282) #6
  %6754 = load ptr, ptr %5, align 8, !tbaa !5
  %6755 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6754, i32 0, i32 14
  %6756 = load i32, ptr %6755, align 8, !tbaa !65
  %6757 = icmp eq i32 %6756, 0
  br i1 %6757, label %6758, label %6779

6758:                                             ; preds = %6753
  %6759 = load ptr, ptr %274, align 8, !tbaa !5
  %6760 = load i64, ptr %20, align 8, !tbaa !21
  %6761 = load i32, ptr %12, align 4, !tbaa !15
  %6762 = load i32, ptr %14, align 4, !tbaa !15
  %6763 = load i32, ptr %277, align 4, !tbaa !15
  %6764 = mul nsw i32 %6762, %6763
  %6765 = mul nsw i32 %6761, %6764
  %6766 = sext i32 %6765 to i64
  %6767 = add nsw i64 %6760, %6766
  %6768 = load i32, ptr %11, align 4, !tbaa !15
  %6769 = load i32, ptr %277, align 4, !tbaa !15
  %6770 = mul nsw i32 %6768, %6769
  %6771 = sext i32 %6770 to i64
  %6772 = add nsw i64 %6767, %6771
  %6773 = load i32, ptr %13, align 4, !tbaa !15
  %6774 = sext i32 %6773 to i64
  %6775 = add nsw i64 %6772, %6774
  %6776 = getelementptr inbounds i8, ptr %6759, i64 %6775
  %6777 = load i8, ptr %6776, align 1, !tbaa !22
  %6778 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %6777)
  store float %6778, ptr %281, align 4, !tbaa !30
  br label %6810

6779:                                             ; preds = %6753
  %6780 = load ptr, ptr %5, align 8, !tbaa !5
  %6781 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6780, i32 0, i32 14
  %6782 = load i32, ptr %6781, align 8, !tbaa !65
  %6783 = icmp sgt i32 %6782, 0
  br i1 %6783, label %6784, label %6808

6784:                                             ; preds = %6779
  %6785 = load ptr, ptr %5, align 8, !tbaa !5
  %6786 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6785, i32 0, i32 16
  %6787 = load i32, ptr %6786, align 8, !tbaa !128
  %6788 = icmp eq i32 %6787, 0
  br i1 %6788, label %6789, label %6808

6789:                                             ; preds = %6784
  %6790 = load ptr, ptr %274, align 8, !tbaa !5
  %6791 = load i64, ptr %20, align 8, !tbaa !21
  %6792 = load i32, ptr %11, align 4, !tbaa !15
  %6793 = load i32, ptr %14, align 4, !tbaa !15
  %6794 = mul nsw i32 %6792, %6793
  %6795 = sext i32 %6794 to i64
  %6796 = add nsw i64 %6791, %6795
  %6797 = load i32, ptr %12, align 4, !tbaa !15
  %6798 = load i32, ptr %277, align 4, !tbaa !15
  %6799 = mul nsw i32 %6797, %6798
  %6800 = sext i32 %6799 to i64
  %6801 = add nsw i64 %6796, %6800
  %6802 = load i32, ptr %13, align 4, !tbaa !15
  %6803 = sext i32 %6802 to i64
  %6804 = add nsw i64 %6801, %6803
  %6805 = getelementptr inbounds i8, ptr %6790, i64 %6804
  %6806 = load i8, ptr %6805, align 1, !tbaa !22
  %6807 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %6806)
  store float %6807, ptr %281, align 4, !tbaa !30
  br label %6809

6808:                                             ; preds = %6784, %6779
  br label %6809

6809:                                             ; preds = %6808, %6789
  br label %6810

6810:                                             ; preds = %6809, %6758
  %6811 = getelementptr inbounds [2 x i16], ptr %282, i64 0, i64 0
  store i16 0, ptr %6811, align 4, !tbaa !22
  %6812 = load ptr, ptr %5, align 8, !tbaa !5
  %6813 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6812, i32 0, i32 15
  %6814 = load i32, ptr %6813, align 4, !tbaa !64
  %6815 = icmp sgt i32 %6814, 0
  br i1 %6815, label %6816, label %6842

6816:                                             ; preds = %6810
  %6817 = load ptr, ptr %5, align 8, !tbaa !5
  %6818 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6817, i32 0, i32 17
  %6819 = load i32, ptr %6818, align 4, !tbaa !163
  %6820 = icmp sgt i32 %6819, 0
  br i1 %6820, label %6821, label %6842

6821:                                             ; preds = %6816
  %6822 = load ptr, ptr %275, align 8, !tbaa !5
  %6823 = load i64, ptr %21, align 8, !tbaa !21
  %6824 = load i32, ptr %10, align 4, !tbaa !15
  %6825 = load i32, ptr %277, align 4, !tbaa !15
  %6826 = mul nsw i32 %6824, %6825
  %6827 = sext i32 %6826 to i64
  %6828 = add nsw i64 %6823, %6827
  %6829 = load i32, ptr %12, align 4, !tbaa !15
  %6830 = load i32, ptr %15, align 4, !tbaa !15
  %6831 = load i32, ptr %277, align 4, !tbaa !15
  %6832 = mul nsw i32 %6830, %6831
  %6833 = mul nsw i32 %6829, %6832
  %6834 = sext i32 %6833 to i64
  %6835 = add nsw i64 %6828, %6834
  %6836 = load i32, ptr %13, align 4, !tbaa !15
  %6837 = sext i32 %6836 to i64
  %6838 = add nsw i64 %6835, %6837
  %6839 = getelementptr inbounds i16, ptr %6822, i64 %6838
  %6840 = load i16, ptr %6839, align 2, !tbaa !33
  %6841 = getelementptr inbounds [2 x i16], ptr %282, i64 0, i64 1
  store i16 %6840, ptr %6841, align 2, !tbaa !22
  br label %6902

6842:                                             ; preds = %6816, %6810
  %6843 = load ptr, ptr %5, align 8, !tbaa !5
  %6844 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6843, i32 0, i32 15
  %6845 = load i32, ptr %6844, align 4, !tbaa !64
  %6846 = icmp sgt i32 %6845, 0
  br i1 %6846, label %6847, label %6870

6847:                                             ; preds = %6842
  %6848 = load ptr, ptr %5, align 8, !tbaa !5
  %6849 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6848, i32 0, i32 17
  %6850 = load i32, ptr %6849, align 4, !tbaa !163
  %6851 = icmp eq i32 %6850, 0
  br i1 %6851, label %6852, label %6870

6852:                                             ; preds = %6847
  %6853 = load ptr, ptr %275, align 8, !tbaa !5
  %6854 = load i64, ptr %21, align 8, !tbaa !21
  %6855 = load i32, ptr %12, align 4, !tbaa !15
  %6856 = load i32, ptr %277, align 4, !tbaa !15
  %6857 = mul nsw i32 %6855, %6856
  %6858 = load i32, ptr %13, align 4, !tbaa !15
  %6859 = add nsw i32 %6857, %6858
  %6860 = load i32, ptr %15, align 4, !tbaa !15
  %6861 = mul nsw i32 %6859, %6860
  %6862 = sext i32 %6861 to i64
  %6863 = add nsw i64 %6854, %6862
  %6864 = load i32, ptr %10, align 4, !tbaa !15
  %6865 = sext i32 %6864 to i64
  %6866 = add nsw i64 %6863, %6865
  %6867 = getelementptr inbounds i16, ptr %6853, i64 %6866
  %6868 = load i16, ptr %6867, align 2, !tbaa !33
  %6869 = getelementptr inbounds [2 x i16], ptr %282, i64 0, i64 1
  store i16 %6868, ptr %6869, align 2, !tbaa !22
  br label %6901

6870:                                             ; preds = %6847, %6842
  %6871 = load ptr, ptr %5, align 8, !tbaa !5
  %6872 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6871, i32 0, i32 15
  %6873 = load i32, ptr %6872, align 4, !tbaa !64
  %6874 = icmp eq i32 %6873, 0
  br i1 %6874, label %6875, label %6899

6875:                                             ; preds = %6870
  %6876 = load ptr, ptr %5, align 8, !tbaa !5
  %6877 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6876, i32 0, i32 17
  %6878 = load i32, ptr %6877, align 4, !tbaa !163
  %6879 = icmp eq i32 %6878, 0
  br i1 %6879, label %6880, label %6899

6880:                                             ; preds = %6875
  %6881 = load ptr, ptr %275, align 8, !tbaa !5
  %6882 = load i64, ptr %21, align 8, !tbaa !21
  %6883 = load i32, ptr %10, align 4, !tbaa !15
  %6884 = load i32, ptr %15, align 4, !tbaa !15
  %6885 = mul nsw i32 %6883, %6884
  %6886 = sext i32 %6885 to i64
  %6887 = add nsw i64 %6882, %6886
  %6888 = load i32, ptr %12, align 4, !tbaa !15
  %6889 = load i32, ptr %277, align 4, !tbaa !15
  %6890 = mul nsw i32 %6888, %6889
  %6891 = sext i32 %6890 to i64
  %6892 = add nsw i64 %6887, %6891
  %6893 = load i32, ptr %13, align 4, !tbaa !15
  %6894 = sext i32 %6893 to i64
  %6895 = add nsw i64 %6892, %6894
  %6896 = getelementptr inbounds i16, ptr %6881, i64 %6895
  %6897 = load i16, ptr %6896, align 2, !tbaa !33
  %6898 = getelementptr inbounds [2 x i16], ptr %282, i64 0, i64 1
  store i16 %6897, ptr %6898, align 2, !tbaa !22
  br label %6900

6899:                                             ; preds = %6875, %6870
  br label %6900

6900:                                             ; preds = %6899, %6880
  br label %6901

6901:                                             ; preds = %6900, %6852
  br label %6902

6902:                                             ; preds = %6901, %6821
  %6903 = load float, ptr %281, align 4, !tbaa !30
  %6904 = load float, ptr %282, align 4, !tbaa !22
  %6905 = load float, ptr %278, align 4, !tbaa !30
  %6906 = call float @llvm.fmuladd.f32(float %6903, float %6904, float %6905)
  store float %6906, ptr %278, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %282) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %281) #6
  br label %6907

6907:                                             ; preds = %6902
  %6908 = load i32, ptr %13, align 4, !tbaa !15
  %6909 = add nsw i32 %6908, -1
  store i32 %6909, ptr %13, align 4, !tbaa !15
  br label %6750, !llvm.loop !179

6910:                                             ; preds = %6750
  br label %6911

6911:                                             ; preds = %6910
  %6912 = load i32, ptr %12, align 4, !tbaa !15
  %6913 = add nsw i32 %6912, 1
  store i32 %6913, ptr %12, align 4, !tbaa !15
  br label %6741, !llvm.loop !180

6914:                                             ; preds = %6741
  br label %6915

6915:                                             ; preds = %6914
  %6916 = load i32, ptr %9, align 4, !tbaa !15
  %6917 = add nsw i32 %6916, 1
  store i32 %6917, ptr %9, align 4, !tbaa !15
  br label %6731, !llvm.loop !181

6918:                                             ; preds = %6731
  %6919 = load float, ptr %278, align 4, !tbaa !30
  %6920 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %6919)
  store i16 %6920, ptr %279, align 2, !tbaa !33
  %6921 = load i16, ptr %279, align 2, !tbaa !33
  %6922 = load ptr, ptr %276, align 8, !tbaa !5
  %6923 = load i32, ptr %10, align 4, !tbaa !15
  %6924 = load i32, ptr %16, align 4, !tbaa !15
  %6925 = mul nsw i32 %6923, %6924
  %6926 = load i32, ptr %11, align 4, !tbaa !15
  %6927 = add nsw i32 %6925, %6926
  %6928 = sext i32 %6927 to i64
  %6929 = getelementptr inbounds i16, ptr %6922, i64 %6928
  store i16 %6921, ptr %6929, align 2, !tbaa !33
  br label %6930

6930:                                             ; preds = %6918
  %6931 = load i32, ptr %11, align 4, !tbaa !15
  %6932 = add nsw i32 %6931, 1
  store i32 %6932, ptr %11, align 4, !tbaa !15
  br label %6707, !llvm.loop !182

6933:                                             ; preds = %6707
  br label %6934

6934:                                             ; preds = %6933
  %6935 = load i32, ptr %10, align 4, !tbaa !15
  %6936 = add nsw i32 %6935, 1
  store i32 %6936, ptr %10, align 4, !tbaa !15
  br label %6702, !llvm.loop !183

6937:                                             ; preds = %6702
  call void @llvm.lifetime.end.p0(i64 2, ptr %279) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %278) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %277) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #6
  br label %8134

6938:                                             ; preds = %6681, %6676, %6671, %6666
  %6939 = load ptr, ptr %5, align 8, !tbaa !5
  %6940 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6939, i32 0, i32 0
  %6941 = load i32, ptr %6940, align 8, !tbaa !26
  %6942 = icmp eq i32 %6941, 4
  br i1 %6942, label %6943, label %7213

6943:                                             ; preds = %6938
  %6944 = load ptr, ptr %5, align 8, !tbaa !5
  %6945 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6944, i32 0, i32 1
  %6946 = load i32, ptr %6945, align 4, !tbaa !27
  %6947 = icmp eq i32 %6946, 2
  br i1 %6947, label %6948, label %7213

6948:                                             ; preds = %6943
  %6949 = load ptr, ptr %5, align 8, !tbaa !5
  %6950 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6949, i32 0, i32 2
  %6951 = load i32, ptr %6950, align 8, !tbaa !29
  %6952 = icmp eq i32 %6951, 2
  br i1 %6952, label %6953, label %7213

6953:                                             ; preds = %6948
  %6954 = load ptr, ptr %5, align 8, !tbaa !5
  %6955 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6954, i32 0, i32 3
  %6956 = load i32, ptr %6955, align 4, !tbaa !62
  %6957 = icmp eq i32 %6956, 1
  br i1 %6957, label %6958, label %7213

6958:                                             ; preds = %6953
  call void @llvm.lifetime.start.p0(i64 8, ptr %283) #6
  %6959 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %6959, ptr %283, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #6
  %6960 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %6960, ptr %284, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #6
  %6961 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %6961, ptr %285, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %286) #6
  %6962 = load ptr, ptr %5, align 8, !tbaa !5
  %6963 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6962, i32 0, i32 16
  %6964 = load i32, ptr %6963, align 8, !tbaa !128
  %6965 = icmp ne i32 %6964, 0
  br i1 %6965, label %6966, label %6971

6966:                                             ; preds = %6958
  %6967 = load ptr, ptr %5, align 8, !tbaa !5
  %6968 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6967, i32 0, i32 1
  %6969 = load i32, ptr %6968, align 4, !tbaa !27
  %6970 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %6969)
  br label %6972

6971:                                             ; preds = %6958
  br label %6972

6972:                                             ; preds = %6971, %6966
  %6973 = phi i32 [ %6970, %6966 ], [ 1, %6971 ]
  store i32 %6973, ptr %286, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %287) #6
  store float 0.000000e+00, ptr %287, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 2, ptr %288) #6
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %6974

6974:                                             ; preds = %7209, %6972
  %6975 = load i32, ptr %10, align 4, !tbaa !15
  %6976 = load i32, ptr %18, align 4, !tbaa !15
  %6977 = icmp slt i32 %6975, %6976
  br i1 %6977, label %6978, label %7212

6978:                                             ; preds = %6974
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %6979

6979:                                             ; preds = %7205, %6978
  %6980 = load i32, ptr %11, align 4, !tbaa !15
  %6981 = load i32, ptr %17, align 4, !tbaa !15
  %6982 = icmp slt i32 %6980, %6981
  br i1 %6982, label %6983, label %7208

6983:                                             ; preds = %6979
  %6984 = load ptr, ptr %5, align 8, !tbaa !5
  %6985 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %6984, i32 0, i32 13
  %6986 = load double, ptr %6985, align 8, !tbaa !28
  %6987 = fcmp oeq double %6986, 0.000000e+00
  br i1 %6987, label %6988, label %6989

6988:                                             ; preds = %6983
  store float 0.000000e+00, ptr %287, align 4, !tbaa !30
  br label %7002

6989:                                             ; preds = %6983
  call void @llvm.lifetime.start.p0(i64 4, ptr %289) #6
  %6990 = getelementptr inbounds [2 x i16], ptr %289, i64 0, i64 0
  store i16 0, ptr %6990, align 4, !tbaa !22
  %6991 = load ptr, ptr %285, align 8, !tbaa !5
  %6992 = load i32, ptr %10, align 4, !tbaa !15
  %6993 = load i32, ptr %16, align 4, !tbaa !15
  %6994 = mul nsw i32 %6992, %6993
  %6995 = load i32, ptr %11, align 4, !tbaa !15
  %6996 = add nsw i32 %6994, %6995
  %6997 = sext i32 %6996 to i64
  %6998 = getelementptr inbounds i16, ptr %6991, i64 %6997
  %6999 = load i16, ptr %6998, align 2, !tbaa !33
  %7000 = getelementptr inbounds [2 x i16], ptr %289, i64 0, i64 1
  store i16 %6999, ptr %7000, align 2, !tbaa !22
  %7001 = load float, ptr %289, align 4, !tbaa !22
  store float %7001, ptr %287, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %289) #6
  br label %7002

7002:                                             ; preds = %6989, %6988
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %7003

7003:                                             ; preds = %7190, %7002
  %7004 = load i32, ptr %9, align 4, !tbaa !15
  %7005 = load ptr, ptr %5, align 8, !tbaa !5
  %7006 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7005, i32 0, i32 26
  %7007 = load i32, ptr %7006, align 8, !tbaa !45
  %7008 = icmp slt i32 %7004, %7007
  br i1 %7008, label %7009, label %7193

7009:                                             ; preds = %7003
  %7010 = load i32, ptr %9, align 4, !tbaa !15
  %7011 = sext i32 %7010 to i64
  %7012 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %283, ptr noundef %284, ptr noundef %20, ptr noundef %21, i64 noundef %7011, ptr noundef %7012)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %7013

7013:                                             ; preds = %7186, %7009
  %7014 = load i32, ptr %12, align 4, !tbaa !15
  %7015 = load i32, ptr %19, align 4, !tbaa !15
  %7016 = load i32, ptr %286, align 4, !tbaa !15
  %7017 = sdiv i32 %7015, %7016
  %7018 = icmp slt i32 %7014, %7017
  br i1 %7018, label %7019, label %7189

7019:                                             ; preds = %7013
  %7020 = load i32, ptr %286, align 4, !tbaa !15
  %7021 = sub nsw i32 %7020, 1
  store i32 %7021, ptr %13, align 4, !tbaa !15
  br label %7022

7022:                                             ; preds = %7182, %7019
  %7023 = load i32, ptr %13, align 4, !tbaa !15
  %7024 = icmp sge i32 %7023, 0
  br i1 %7024, label %7025, label %7185

7025:                                             ; preds = %7022
  call void @llvm.lifetime.start.p0(i64 2, ptr %290) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %291) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %292) #6
  %7026 = getelementptr inbounds [2 x i8], ptr %290, i64 0, i64 0
  store i8 0, ptr %7026, align 2, !tbaa !22
  %7027 = load ptr, ptr %5, align 8, !tbaa !5
  %7028 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7027, i32 0, i32 14
  %7029 = load i32, ptr %7028, align 8, !tbaa !65
  %7030 = icmp eq i32 %7029, 0
  br i1 %7030, label %7031, label %7052

7031:                                             ; preds = %7025
  %7032 = load ptr, ptr %283, align 8, !tbaa !5
  %7033 = load i64, ptr %20, align 8, !tbaa !21
  %7034 = load i32, ptr %12, align 4, !tbaa !15
  %7035 = load i32, ptr %14, align 4, !tbaa !15
  %7036 = load i32, ptr %286, align 4, !tbaa !15
  %7037 = mul nsw i32 %7035, %7036
  %7038 = mul nsw i32 %7034, %7037
  %7039 = sext i32 %7038 to i64
  %7040 = add nsw i64 %7033, %7039
  %7041 = load i32, ptr %11, align 4, !tbaa !15
  %7042 = load i32, ptr %286, align 4, !tbaa !15
  %7043 = mul nsw i32 %7041, %7042
  %7044 = sext i32 %7043 to i64
  %7045 = add nsw i64 %7040, %7044
  %7046 = load i32, ptr %13, align 4, !tbaa !15
  %7047 = sext i32 %7046 to i64
  %7048 = add nsw i64 %7045, %7047
  %7049 = getelementptr inbounds i8, ptr %7032, i64 %7048
  %7050 = load i8, ptr %7049, align 1, !tbaa !22
  %7051 = getelementptr inbounds [2 x i8], ptr %290, i64 0, i64 1
  store i8 %7050, ptr %7051, align 1, !tbaa !22
  br label %7083

7052:                                             ; preds = %7025
  %7053 = load ptr, ptr %5, align 8, !tbaa !5
  %7054 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7053, i32 0, i32 14
  %7055 = load i32, ptr %7054, align 8, !tbaa !65
  %7056 = icmp sgt i32 %7055, 0
  br i1 %7056, label %7057, label %7081

7057:                                             ; preds = %7052
  %7058 = load ptr, ptr %5, align 8, !tbaa !5
  %7059 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7058, i32 0, i32 16
  %7060 = load i32, ptr %7059, align 8, !tbaa !128
  %7061 = icmp eq i32 %7060, 0
  br i1 %7061, label %7062, label %7081

7062:                                             ; preds = %7057
  %7063 = load ptr, ptr %283, align 8, !tbaa !5
  %7064 = load i64, ptr %20, align 8, !tbaa !21
  %7065 = load i32, ptr %11, align 4, !tbaa !15
  %7066 = load i32, ptr %14, align 4, !tbaa !15
  %7067 = mul nsw i32 %7065, %7066
  %7068 = sext i32 %7067 to i64
  %7069 = add nsw i64 %7064, %7068
  %7070 = load i32, ptr %12, align 4, !tbaa !15
  %7071 = load i32, ptr %286, align 4, !tbaa !15
  %7072 = mul nsw i32 %7070, %7071
  %7073 = sext i32 %7072 to i64
  %7074 = add nsw i64 %7069, %7073
  %7075 = load i32, ptr %13, align 4, !tbaa !15
  %7076 = sext i32 %7075 to i64
  %7077 = add nsw i64 %7074, %7076
  %7078 = getelementptr inbounds i8, ptr %7063, i64 %7077
  %7079 = load i8, ptr %7078, align 1, !tbaa !22
  %7080 = getelementptr inbounds [2 x i8], ptr %290, i64 0, i64 1
  store i8 %7079, ptr %7080, align 1, !tbaa !22
  br label %7082

7081:                                             ; preds = %7057, %7052
  br label %7082

7082:                                             ; preds = %7081, %7062
  br label %7083

7083:                                             ; preds = %7082, %7031
  %7084 = load i16, ptr %290, align 2, !tbaa !22
  %7085 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %7084)
  store float %7085, ptr %291, align 4, !tbaa !30
  %7086 = getelementptr inbounds [2 x i16], ptr %292, i64 0, i64 0
  store i16 0, ptr %7086, align 4, !tbaa !22
  %7087 = load ptr, ptr %5, align 8, !tbaa !5
  %7088 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7087, i32 0, i32 15
  %7089 = load i32, ptr %7088, align 4, !tbaa !64
  %7090 = icmp sgt i32 %7089, 0
  br i1 %7090, label %7091, label %7117

7091:                                             ; preds = %7083
  %7092 = load ptr, ptr %5, align 8, !tbaa !5
  %7093 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7092, i32 0, i32 17
  %7094 = load i32, ptr %7093, align 4, !tbaa !163
  %7095 = icmp sgt i32 %7094, 0
  br i1 %7095, label %7096, label %7117

7096:                                             ; preds = %7091
  %7097 = load ptr, ptr %284, align 8, !tbaa !5
  %7098 = load i64, ptr %21, align 8, !tbaa !21
  %7099 = load i32, ptr %10, align 4, !tbaa !15
  %7100 = load i32, ptr %286, align 4, !tbaa !15
  %7101 = mul nsw i32 %7099, %7100
  %7102 = sext i32 %7101 to i64
  %7103 = add nsw i64 %7098, %7102
  %7104 = load i32, ptr %12, align 4, !tbaa !15
  %7105 = load i32, ptr %15, align 4, !tbaa !15
  %7106 = load i32, ptr %286, align 4, !tbaa !15
  %7107 = mul nsw i32 %7105, %7106
  %7108 = mul nsw i32 %7104, %7107
  %7109 = sext i32 %7108 to i64
  %7110 = add nsw i64 %7103, %7109
  %7111 = load i32, ptr %13, align 4, !tbaa !15
  %7112 = sext i32 %7111 to i64
  %7113 = add nsw i64 %7110, %7112
  %7114 = getelementptr inbounds i16, ptr %7097, i64 %7113
  %7115 = load i16, ptr %7114, align 2, !tbaa !33
  %7116 = getelementptr inbounds [2 x i16], ptr %292, i64 0, i64 1
  store i16 %7115, ptr %7116, align 2, !tbaa !22
  br label %7177

7117:                                             ; preds = %7091, %7083
  %7118 = load ptr, ptr %5, align 8, !tbaa !5
  %7119 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7118, i32 0, i32 15
  %7120 = load i32, ptr %7119, align 4, !tbaa !64
  %7121 = icmp sgt i32 %7120, 0
  br i1 %7121, label %7122, label %7145

7122:                                             ; preds = %7117
  %7123 = load ptr, ptr %5, align 8, !tbaa !5
  %7124 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7123, i32 0, i32 17
  %7125 = load i32, ptr %7124, align 4, !tbaa !163
  %7126 = icmp eq i32 %7125, 0
  br i1 %7126, label %7127, label %7145

7127:                                             ; preds = %7122
  %7128 = load ptr, ptr %284, align 8, !tbaa !5
  %7129 = load i64, ptr %21, align 8, !tbaa !21
  %7130 = load i32, ptr %12, align 4, !tbaa !15
  %7131 = load i32, ptr %286, align 4, !tbaa !15
  %7132 = mul nsw i32 %7130, %7131
  %7133 = load i32, ptr %13, align 4, !tbaa !15
  %7134 = add nsw i32 %7132, %7133
  %7135 = load i32, ptr %15, align 4, !tbaa !15
  %7136 = mul nsw i32 %7134, %7135
  %7137 = sext i32 %7136 to i64
  %7138 = add nsw i64 %7129, %7137
  %7139 = load i32, ptr %10, align 4, !tbaa !15
  %7140 = sext i32 %7139 to i64
  %7141 = add nsw i64 %7138, %7140
  %7142 = getelementptr inbounds i16, ptr %7128, i64 %7141
  %7143 = load i16, ptr %7142, align 2, !tbaa !33
  %7144 = getelementptr inbounds [2 x i16], ptr %292, i64 0, i64 1
  store i16 %7143, ptr %7144, align 2, !tbaa !22
  br label %7176

7145:                                             ; preds = %7122, %7117
  %7146 = load ptr, ptr %5, align 8, !tbaa !5
  %7147 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7146, i32 0, i32 15
  %7148 = load i32, ptr %7147, align 4, !tbaa !64
  %7149 = icmp eq i32 %7148, 0
  br i1 %7149, label %7150, label %7174

7150:                                             ; preds = %7145
  %7151 = load ptr, ptr %5, align 8, !tbaa !5
  %7152 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7151, i32 0, i32 17
  %7153 = load i32, ptr %7152, align 4, !tbaa !163
  %7154 = icmp eq i32 %7153, 0
  br i1 %7154, label %7155, label %7174

7155:                                             ; preds = %7150
  %7156 = load ptr, ptr %284, align 8, !tbaa !5
  %7157 = load i64, ptr %21, align 8, !tbaa !21
  %7158 = load i32, ptr %10, align 4, !tbaa !15
  %7159 = load i32, ptr %15, align 4, !tbaa !15
  %7160 = mul nsw i32 %7158, %7159
  %7161 = sext i32 %7160 to i64
  %7162 = add nsw i64 %7157, %7161
  %7163 = load i32, ptr %12, align 4, !tbaa !15
  %7164 = load i32, ptr %286, align 4, !tbaa !15
  %7165 = mul nsw i32 %7163, %7164
  %7166 = sext i32 %7165 to i64
  %7167 = add nsw i64 %7162, %7166
  %7168 = load i32, ptr %13, align 4, !tbaa !15
  %7169 = sext i32 %7168 to i64
  %7170 = add nsw i64 %7167, %7169
  %7171 = getelementptr inbounds i16, ptr %7156, i64 %7170
  %7172 = load i16, ptr %7171, align 2, !tbaa !33
  %7173 = getelementptr inbounds [2 x i16], ptr %292, i64 0, i64 1
  store i16 %7172, ptr %7173, align 2, !tbaa !22
  br label %7175

7174:                                             ; preds = %7150, %7145
  br label %7175

7175:                                             ; preds = %7174, %7155
  br label %7176

7176:                                             ; preds = %7175, %7127
  br label %7177

7177:                                             ; preds = %7176, %7096
  %7178 = load float, ptr %291, align 4, !tbaa !30
  %7179 = load float, ptr %292, align 4, !tbaa !22
  %7180 = load float, ptr %287, align 4, !tbaa !30
  %7181 = call float @llvm.fmuladd.f32(float %7178, float %7179, float %7180)
  store float %7181, ptr %287, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %292) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %291) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %290) #6
  br label %7182

7182:                                             ; preds = %7177
  %7183 = load i32, ptr %13, align 4, !tbaa !15
  %7184 = add nsw i32 %7183, -1
  store i32 %7184, ptr %13, align 4, !tbaa !15
  br label %7022, !llvm.loop !184

7185:                                             ; preds = %7022
  br label %7186

7186:                                             ; preds = %7185
  %7187 = load i32, ptr %12, align 4, !tbaa !15
  %7188 = add nsw i32 %7187, 1
  store i32 %7188, ptr %12, align 4, !tbaa !15
  br label %7013, !llvm.loop !185

7189:                                             ; preds = %7013
  br label %7190

7190:                                             ; preds = %7189
  %7191 = load i32, ptr %9, align 4, !tbaa !15
  %7192 = add nsw i32 %7191, 1
  store i32 %7192, ptr %9, align 4, !tbaa !15
  br label %7003, !llvm.loop !186

7193:                                             ; preds = %7003
  %7194 = load float, ptr %287, align 4, !tbaa !30
  %7195 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %7194)
  store i16 %7195, ptr %288, align 2, !tbaa !33
  %7196 = load i16, ptr %288, align 2, !tbaa !33
  %7197 = load ptr, ptr %285, align 8, !tbaa !5
  %7198 = load i32, ptr %10, align 4, !tbaa !15
  %7199 = load i32, ptr %16, align 4, !tbaa !15
  %7200 = mul nsw i32 %7198, %7199
  %7201 = load i32, ptr %11, align 4, !tbaa !15
  %7202 = add nsw i32 %7200, %7201
  %7203 = sext i32 %7202 to i64
  %7204 = getelementptr inbounds i16, ptr %7197, i64 %7203
  store i16 %7196, ptr %7204, align 2, !tbaa !33
  br label %7205

7205:                                             ; preds = %7193
  %7206 = load i32, ptr %11, align 4, !tbaa !15
  %7207 = add nsw i32 %7206, 1
  store i32 %7207, ptr %11, align 4, !tbaa !15
  br label %6979, !llvm.loop !187

7208:                                             ; preds = %6979
  br label %7209

7209:                                             ; preds = %7208
  %7210 = load i32, ptr %10, align 4, !tbaa !15
  %7211 = add nsw i32 %7210, 1
  store i32 %7211, ptr %10, align 4, !tbaa !15
  br label %6974, !llvm.loop !188

7212:                                             ; preds = %6974
  call void @llvm.lifetime.end.p0(i64 2, ptr %288) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %287) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %286) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #6
  br label %8133

7213:                                             ; preds = %6953, %6948, %6943, %6938
  %7214 = load ptr, ptr %5, align 8, !tbaa !5
  %7215 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7214, i32 0, i32 0
  %7216 = load i32, ptr %7215, align 8, !tbaa !26
  %7217 = icmp eq i32 %7216, 2
  br i1 %7217, label %7218, label %7486

7218:                                             ; preds = %7213
  %7219 = load ptr, ptr %5, align 8, !tbaa !5
  %7220 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7219, i32 0, i32 1
  %7221 = load i32, ptr %7220, align 4, !tbaa !27
  %7222 = icmp eq i32 %7221, 2
  br i1 %7222, label %7223, label %7486

7223:                                             ; preds = %7218
  %7224 = load ptr, ptr %5, align 8, !tbaa !5
  %7225 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7224, i32 0, i32 2
  %7226 = load i32, ptr %7225, align 8, !tbaa !29
  %7227 = icmp eq i32 %7226, 2
  br i1 %7227, label %7228, label %7486

7228:                                             ; preds = %7223
  %7229 = load ptr, ptr %5, align 8, !tbaa !5
  %7230 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7229, i32 0, i32 3
  %7231 = load i32, ptr %7230, align 4, !tbaa !62
  %7232 = icmp eq i32 %7231, 1
  br i1 %7232, label %7233, label %7486

7233:                                             ; preds = %7228
  call void @llvm.lifetime.start.p0(i64 8, ptr %293) #6
  %7234 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %7234, ptr %293, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #6
  %7235 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %7235, ptr %294, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #6
  %7236 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %7236, ptr %295, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %296) #6
  %7237 = load ptr, ptr %5, align 8, !tbaa !5
  %7238 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7237, i32 0, i32 16
  %7239 = load i32, ptr %7238, align 8, !tbaa !128
  %7240 = icmp ne i32 %7239, 0
  br i1 %7240, label %7241, label %7246

7241:                                             ; preds = %7233
  %7242 = load ptr, ptr %5, align 8, !tbaa !5
  %7243 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7242, i32 0, i32 0
  %7244 = load i32, ptr %7243, align 8, !tbaa !26
  %7245 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %7244)
  br label %7247

7246:                                             ; preds = %7233
  br label %7247

7247:                                             ; preds = %7246, %7241
  %7248 = phi i32 [ %7245, %7241 ], [ 1, %7246 ]
  store i32 %7248, ptr %296, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %297) #6
  store float 0.000000e+00, ptr %297, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 2, ptr %298) #6
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %7249

7249:                                             ; preds = %7482, %7247
  %7250 = load i32, ptr %10, align 4, !tbaa !15
  %7251 = load i32, ptr %18, align 4, !tbaa !15
  %7252 = icmp slt i32 %7250, %7251
  br i1 %7252, label %7253, label %7485

7253:                                             ; preds = %7249
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %7254

7254:                                             ; preds = %7478, %7253
  %7255 = load i32, ptr %11, align 4, !tbaa !15
  %7256 = load i32, ptr %17, align 4, !tbaa !15
  %7257 = icmp slt i32 %7255, %7256
  br i1 %7257, label %7258, label %7481

7258:                                             ; preds = %7254
  %7259 = load ptr, ptr %5, align 8, !tbaa !5
  %7260 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7259, i32 0, i32 13
  %7261 = load double, ptr %7260, align 8, !tbaa !28
  %7262 = fcmp oeq double %7261, 0.000000e+00
  br i1 %7262, label %7263, label %7264

7263:                                             ; preds = %7258
  store float 0.000000e+00, ptr %297, align 4, !tbaa !30
  br label %7277

7264:                                             ; preds = %7258
  call void @llvm.lifetime.start.p0(i64 4, ptr %299) #6
  %7265 = getelementptr inbounds [2 x i16], ptr %299, i64 0, i64 0
  store i16 0, ptr %7265, align 4, !tbaa !22
  %7266 = load ptr, ptr %295, align 8, !tbaa !5
  %7267 = load i32, ptr %10, align 4, !tbaa !15
  %7268 = load i32, ptr %16, align 4, !tbaa !15
  %7269 = mul nsw i32 %7267, %7268
  %7270 = load i32, ptr %11, align 4, !tbaa !15
  %7271 = add nsw i32 %7269, %7270
  %7272 = sext i32 %7271 to i64
  %7273 = getelementptr inbounds i16, ptr %7266, i64 %7272
  %7274 = load i16, ptr %7273, align 2, !tbaa !33
  %7275 = getelementptr inbounds [2 x i16], ptr %299, i64 0, i64 1
  store i16 %7274, ptr %7275, align 2, !tbaa !22
  %7276 = load float, ptr %299, align 4, !tbaa !22
  store float %7276, ptr %297, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %299) #6
  br label %7277

7277:                                             ; preds = %7264, %7263
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %7278

7278:                                             ; preds = %7463, %7277
  %7279 = load i32, ptr %9, align 4, !tbaa !15
  %7280 = load ptr, ptr %5, align 8, !tbaa !5
  %7281 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7280, i32 0, i32 26
  %7282 = load i32, ptr %7281, align 8, !tbaa !45
  %7283 = icmp slt i32 %7279, %7282
  br i1 %7283, label %7284, label %7466

7284:                                             ; preds = %7278
  %7285 = load i32, ptr %9, align 4, !tbaa !15
  %7286 = sext i32 %7285 to i64
  %7287 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %293, ptr noundef %294, ptr noundef %20, ptr noundef %21, i64 noundef %7286, ptr noundef %7287)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %7288

7288:                                             ; preds = %7459, %7284
  %7289 = load i32, ptr %12, align 4, !tbaa !15
  %7290 = load i32, ptr %19, align 4, !tbaa !15
  %7291 = load i32, ptr %296, align 4, !tbaa !15
  %7292 = sdiv i32 %7290, %7291
  %7293 = icmp slt i32 %7289, %7292
  br i1 %7293, label %7294, label %7462

7294:                                             ; preds = %7288
  %7295 = load i32, ptr %296, align 4, !tbaa !15
  %7296 = sub nsw i32 %7295, 1
  store i32 %7296, ptr %13, align 4, !tbaa !15
  br label %7297

7297:                                             ; preds = %7455, %7294
  %7298 = load i32, ptr %13, align 4, !tbaa !15
  %7299 = icmp sge i32 %7298, 0
  br i1 %7299, label %7300, label %7458

7300:                                             ; preds = %7297
  call void @llvm.lifetime.start.p0(i64 4, ptr %300) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %301) #6
  %7301 = getelementptr inbounds [2 x i16], ptr %300, i64 0, i64 0
  store i16 0, ptr %7301, align 4, !tbaa !22
  %7302 = load ptr, ptr %5, align 8, !tbaa !5
  %7303 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7302, i32 0, i32 14
  %7304 = load i32, ptr %7303, align 8, !tbaa !65
  %7305 = icmp eq i32 %7304, 0
  br i1 %7305, label %7306, label %7327

7306:                                             ; preds = %7300
  %7307 = load ptr, ptr %293, align 8, !tbaa !5
  %7308 = load i64, ptr %20, align 8, !tbaa !21
  %7309 = load i32, ptr %12, align 4, !tbaa !15
  %7310 = load i32, ptr %14, align 4, !tbaa !15
  %7311 = load i32, ptr %296, align 4, !tbaa !15
  %7312 = mul nsw i32 %7310, %7311
  %7313 = mul nsw i32 %7309, %7312
  %7314 = sext i32 %7313 to i64
  %7315 = add nsw i64 %7308, %7314
  %7316 = load i32, ptr %11, align 4, !tbaa !15
  %7317 = load i32, ptr %296, align 4, !tbaa !15
  %7318 = mul nsw i32 %7316, %7317
  %7319 = sext i32 %7318 to i64
  %7320 = add nsw i64 %7315, %7319
  %7321 = load i32, ptr %13, align 4, !tbaa !15
  %7322 = sext i32 %7321 to i64
  %7323 = add nsw i64 %7320, %7322
  %7324 = getelementptr inbounds i16, ptr %7307, i64 %7323
  %7325 = load i16, ptr %7324, align 2, !tbaa !33
  %7326 = getelementptr inbounds [2 x i16], ptr %300, i64 0, i64 1
  store i16 %7325, ptr %7326, align 2, !tbaa !22
  br label %7358

7327:                                             ; preds = %7300
  %7328 = load ptr, ptr %5, align 8, !tbaa !5
  %7329 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7328, i32 0, i32 14
  %7330 = load i32, ptr %7329, align 8, !tbaa !65
  %7331 = icmp sgt i32 %7330, 0
  br i1 %7331, label %7332, label %7356

7332:                                             ; preds = %7327
  %7333 = load ptr, ptr %5, align 8, !tbaa !5
  %7334 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7333, i32 0, i32 16
  %7335 = load i32, ptr %7334, align 8, !tbaa !128
  %7336 = icmp eq i32 %7335, 0
  br i1 %7336, label %7337, label %7356

7337:                                             ; preds = %7332
  %7338 = load ptr, ptr %293, align 8, !tbaa !5
  %7339 = load i64, ptr %20, align 8, !tbaa !21
  %7340 = load i32, ptr %11, align 4, !tbaa !15
  %7341 = load i32, ptr %14, align 4, !tbaa !15
  %7342 = mul nsw i32 %7340, %7341
  %7343 = sext i32 %7342 to i64
  %7344 = add nsw i64 %7339, %7343
  %7345 = load i32, ptr %12, align 4, !tbaa !15
  %7346 = load i32, ptr %296, align 4, !tbaa !15
  %7347 = mul nsw i32 %7345, %7346
  %7348 = sext i32 %7347 to i64
  %7349 = add nsw i64 %7344, %7348
  %7350 = load i32, ptr %13, align 4, !tbaa !15
  %7351 = sext i32 %7350 to i64
  %7352 = add nsw i64 %7349, %7351
  %7353 = getelementptr inbounds i16, ptr %7338, i64 %7352
  %7354 = load i16, ptr %7353, align 2, !tbaa !33
  %7355 = getelementptr inbounds [2 x i16], ptr %300, i64 0, i64 1
  store i16 %7354, ptr %7355, align 2, !tbaa !22
  br label %7357

7356:                                             ; preds = %7332, %7327
  br label %7357

7357:                                             ; preds = %7356, %7337
  br label %7358

7358:                                             ; preds = %7357, %7306
  %7359 = getelementptr inbounds [2 x i16], ptr %301, i64 0, i64 0
  store i16 0, ptr %7359, align 4, !tbaa !22
  %7360 = load ptr, ptr %5, align 8, !tbaa !5
  %7361 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7360, i32 0, i32 15
  %7362 = load i32, ptr %7361, align 4, !tbaa !64
  %7363 = icmp sgt i32 %7362, 0
  br i1 %7363, label %7364, label %7390

7364:                                             ; preds = %7358
  %7365 = load ptr, ptr %5, align 8, !tbaa !5
  %7366 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7365, i32 0, i32 17
  %7367 = load i32, ptr %7366, align 4, !tbaa !163
  %7368 = icmp sgt i32 %7367, 0
  br i1 %7368, label %7369, label %7390

7369:                                             ; preds = %7364
  %7370 = load ptr, ptr %294, align 8, !tbaa !5
  %7371 = load i64, ptr %21, align 8, !tbaa !21
  %7372 = load i32, ptr %10, align 4, !tbaa !15
  %7373 = load i32, ptr %296, align 4, !tbaa !15
  %7374 = mul nsw i32 %7372, %7373
  %7375 = sext i32 %7374 to i64
  %7376 = add nsw i64 %7371, %7375
  %7377 = load i32, ptr %12, align 4, !tbaa !15
  %7378 = load i32, ptr %15, align 4, !tbaa !15
  %7379 = load i32, ptr %296, align 4, !tbaa !15
  %7380 = mul nsw i32 %7378, %7379
  %7381 = mul nsw i32 %7377, %7380
  %7382 = sext i32 %7381 to i64
  %7383 = add nsw i64 %7376, %7382
  %7384 = load i32, ptr %13, align 4, !tbaa !15
  %7385 = sext i32 %7384 to i64
  %7386 = add nsw i64 %7383, %7385
  %7387 = getelementptr inbounds i16, ptr %7370, i64 %7386
  %7388 = load i16, ptr %7387, align 2, !tbaa !33
  %7389 = getelementptr inbounds [2 x i16], ptr %301, i64 0, i64 1
  store i16 %7388, ptr %7389, align 2, !tbaa !22
  br label %7450

7390:                                             ; preds = %7364, %7358
  %7391 = load ptr, ptr %5, align 8, !tbaa !5
  %7392 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7391, i32 0, i32 15
  %7393 = load i32, ptr %7392, align 4, !tbaa !64
  %7394 = icmp sgt i32 %7393, 0
  br i1 %7394, label %7395, label %7418

7395:                                             ; preds = %7390
  %7396 = load ptr, ptr %5, align 8, !tbaa !5
  %7397 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7396, i32 0, i32 17
  %7398 = load i32, ptr %7397, align 4, !tbaa !163
  %7399 = icmp eq i32 %7398, 0
  br i1 %7399, label %7400, label %7418

7400:                                             ; preds = %7395
  %7401 = load ptr, ptr %294, align 8, !tbaa !5
  %7402 = load i64, ptr %21, align 8, !tbaa !21
  %7403 = load i32, ptr %12, align 4, !tbaa !15
  %7404 = load i32, ptr %296, align 4, !tbaa !15
  %7405 = mul nsw i32 %7403, %7404
  %7406 = load i32, ptr %13, align 4, !tbaa !15
  %7407 = add nsw i32 %7405, %7406
  %7408 = load i32, ptr %15, align 4, !tbaa !15
  %7409 = mul nsw i32 %7407, %7408
  %7410 = sext i32 %7409 to i64
  %7411 = add nsw i64 %7402, %7410
  %7412 = load i32, ptr %10, align 4, !tbaa !15
  %7413 = sext i32 %7412 to i64
  %7414 = add nsw i64 %7411, %7413
  %7415 = getelementptr inbounds i16, ptr %7401, i64 %7414
  %7416 = load i16, ptr %7415, align 2, !tbaa !33
  %7417 = getelementptr inbounds [2 x i16], ptr %301, i64 0, i64 1
  store i16 %7416, ptr %7417, align 2, !tbaa !22
  br label %7449

7418:                                             ; preds = %7395, %7390
  %7419 = load ptr, ptr %5, align 8, !tbaa !5
  %7420 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7419, i32 0, i32 15
  %7421 = load i32, ptr %7420, align 4, !tbaa !64
  %7422 = icmp eq i32 %7421, 0
  br i1 %7422, label %7423, label %7447

7423:                                             ; preds = %7418
  %7424 = load ptr, ptr %5, align 8, !tbaa !5
  %7425 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7424, i32 0, i32 17
  %7426 = load i32, ptr %7425, align 4, !tbaa !163
  %7427 = icmp eq i32 %7426, 0
  br i1 %7427, label %7428, label %7447

7428:                                             ; preds = %7423
  %7429 = load ptr, ptr %294, align 8, !tbaa !5
  %7430 = load i64, ptr %21, align 8, !tbaa !21
  %7431 = load i32, ptr %10, align 4, !tbaa !15
  %7432 = load i32, ptr %15, align 4, !tbaa !15
  %7433 = mul nsw i32 %7431, %7432
  %7434 = sext i32 %7433 to i64
  %7435 = add nsw i64 %7430, %7434
  %7436 = load i32, ptr %12, align 4, !tbaa !15
  %7437 = load i32, ptr %296, align 4, !tbaa !15
  %7438 = mul nsw i32 %7436, %7437
  %7439 = sext i32 %7438 to i64
  %7440 = add nsw i64 %7435, %7439
  %7441 = load i32, ptr %13, align 4, !tbaa !15
  %7442 = sext i32 %7441 to i64
  %7443 = add nsw i64 %7440, %7442
  %7444 = getelementptr inbounds i16, ptr %7429, i64 %7443
  %7445 = load i16, ptr %7444, align 2, !tbaa !33
  %7446 = getelementptr inbounds [2 x i16], ptr %301, i64 0, i64 1
  store i16 %7445, ptr %7446, align 2, !tbaa !22
  br label %7448

7447:                                             ; preds = %7423, %7418
  br label %7448

7448:                                             ; preds = %7447, %7428
  br label %7449

7449:                                             ; preds = %7448, %7400
  br label %7450

7450:                                             ; preds = %7449, %7369
  %7451 = load float, ptr %300, align 4, !tbaa !22
  %7452 = load float, ptr %301, align 4, !tbaa !22
  %7453 = load float, ptr %297, align 4, !tbaa !30
  %7454 = call float @llvm.fmuladd.f32(float %7451, float %7452, float %7453)
  store float %7454, ptr %297, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %301) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %300) #6
  br label %7455

7455:                                             ; preds = %7450
  %7456 = load i32, ptr %13, align 4, !tbaa !15
  %7457 = add nsw i32 %7456, -1
  store i32 %7457, ptr %13, align 4, !tbaa !15
  br label %7297, !llvm.loop !189

7458:                                             ; preds = %7297
  br label %7459

7459:                                             ; preds = %7458
  %7460 = load i32, ptr %12, align 4, !tbaa !15
  %7461 = add nsw i32 %7460, 1
  store i32 %7461, ptr %12, align 4, !tbaa !15
  br label %7288, !llvm.loop !190

7462:                                             ; preds = %7288
  br label %7463

7463:                                             ; preds = %7462
  %7464 = load i32, ptr %9, align 4, !tbaa !15
  %7465 = add nsw i32 %7464, 1
  store i32 %7465, ptr %9, align 4, !tbaa !15
  br label %7278, !llvm.loop !191

7466:                                             ; preds = %7278
  %7467 = load float, ptr %297, align 4, !tbaa !30
  %7468 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %7467)
  store i16 %7468, ptr %298, align 2, !tbaa !33
  %7469 = load i16, ptr %298, align 2, !tbaa !33
  %7470 = load ptr, ptr %295, align 8, !tbaa !5
  %7471 = load i32, ptr %10, align 4, !tbaa !15
  %7472 = load i32, ptr %16, align 4, !tbaa !15
  %7473 = mul nsw i32 %7471, %7472
  %7474 = load i32, ptr %11, align 4, !tbaa !15
  %7475 = add nsw i32 %7473, %7474
  %7476 = sext i32 %7475 to i64
  %7477 = getelementptr inbounds i16, ptr %7470, i64 %7476
  store i16 %7469, ptr %7477, align 2, !tbaa !33
  br label %7478

7478:                                             ; preds = %7466
  %7479 = load i32, ptr %11, align 4, !tbaa !15
  %7480 = add nsw i32 %7479, 1
  store i32 %7480, ptr %11, align 4, !tbaa !15
  br label %7254, !llvm.loop !192

7481:                                             ; preds = %7254
  br label %7482

7482:                                             ; preds = %7481
  %7483 = load i32, ptr %10, align 4, !tbaa !15
  %7484 = add nsw i32 %7483, 1
  store i32 %7484, ptr %10, align 4, !tbaa !15
  br label %7249, !llvm.loop !193

7485:                                             ; preds = %7249
  call void @llvm.lifetime.end.p0(i64 2, ptr %298) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %297) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %296) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #6
  br label %8132

7486:                                             ; preds = %7228, %7223, %7218, %7213
  %7487 = load ptr, ptr %5, align 8, !tbaa !5
  %7488 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7487, i32 0, i32 0
  %7489 = load i32, ptr %7488, align 8, !tbaa !26
  %7490 = icmp eq i32 %7489, 4
  br i1 %7490, label %7491, label %7647

7491:                                             ; preds = %7486
  %7492 = load ptr, ptr %5, align 8, !tbaa !5
  %7493 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7492, i32 0, i32 1
  %7494 = load i32, ptr %7493, align 4, !tbaa !27
  %7495 = icmp eq i32 %7494, 4
  br i1 %7495, label %7496, label %7647

7496:                                             ; preds = %7491
  %7497 = load ptr, ptr %5, align 8, !tbaa !5
  %7498 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7497, i32 0, i32 2
  %7499 = load i32, ptr %7498, align 8, !tbaa !29
  %7500 = icmp eq i32 %7499, 1
  br i1 %7500, label %7501, label %7647

7501:                                             ; preds = %7496
  %7502 = load ptr, ptr %5, align 8, !tbaa !5
  %7503 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7502, i32 0, i32 3
  %7504 = load i32, ptr %7503, align 4, !tbaa !62
  %7505 = icmp eq i32 %7504, 1
  br i1 %7505, label %7506, label %7647

7506:                                             ; preds = %7501
  call void @llvm.lifetime.start.p0(i64 8, ptr %302) #6
  %7507 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %7507, ptr %302, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %303) #6
  %7508 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %7508, ptr %303, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %304) #6
  %7509 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %7509, ptr %304, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %305) #6
  %7510 = load ptr, ptr %5, align 8, !tbaa !5
  %7511 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7510, i32 0, i32 16
  %7512 = load i32, ptr %7511, align 8, !tbaa !128
  %7513 = icmp ne i32 %7512, 0
  br i1 %7513, label %7514, label %7519

7514:                                             ; preds = %7506
  %7515 = load ptr, ptr %5, align 8, !tbaa !5
  %7516 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7515, i32 0, i32 0
  %7517 = load i32, ptr %7516, align 8, !tbaa !26
  %7518 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %7517)
  br label %7520

7519:                                             ; preds = %7506
  br label %7520

7520:                                             ; preds = %7519, %7514
  %7521 = phi i32 [ %7518, %7514 ], [ 1, %7519 ]
  store i32 %7521, ptr %305, align 4, !tbaa !15
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %7522

7522:                                             ; preds = %7643, %7520
  %7523 = load i32, ptr %9, align 4, !tbaa !15
  %7524 = load ptr, ptr %5, align 8, !tbaa !5
  %7525 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7524, i32 0, i32 26
  %7526 = load i32, ptr %7525, align 8, !tbaa !45
  %7527 = icmp slt i32 %7523, %7526
  br i1 %7527, label %7528, label %7646

7528:                                             ; preds = %7522
  %7529 = load i32, ptr %9, align 4, !tbaa !15
  %7530 = sext i32 %7529 to i64
  %7531 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %302, ptr noundef %303, ptr noundef %20, ptr noundef %21, i64 noundef %7530, ptr noundef %7531)
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %7532

7532:                                             ; preds = %7639, %7528
  %7533 = load i32, ptr %10, align 4, !tbaa !15
  %7534 = load i32, ptr %18, align 4, !tbaa !15
  %7535 = icmp slt i32 %7533, %7534
  br i1 %7535, label %7536, label %7642

7536:                                             ; preds = %7532
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %7537

7537:                                             ; preds = %7635, %7536
  %7538 = load i32, ptr %11, align 4, !tbaa !15
  %7539 = load i32, ptr %17, align 4, !tbaa !15
  %7540 = icmp slt i32 %7538, %7539
  br i1 %7540, label %7541, label %7638

7541:                                             ; preds = %7537
  %7542 = load ptr, ptr %5, align 8, !tbaa !5
  %7543 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7542, i32 0, i32 13
  %7544 = load double, ptr %7543, align 8, !tbaa !28
  %7545 = fcmp oeq double %7544, 0.000000e+00
  br i1 %7545, label %7546, label %7558

7546:                                             ; preds = %7541
  %7547 = load i32, ptr %9, align 4, !tbaa !15
  %7548 = icmp eq i32 %7547, 0
  br i1 %7548, label %7549, label %7558

7549:                                             ; preds = %7546
  %7550 = load ptr, ptr %304, align 8, !tbaa !5
  %7551 = load i32, ptr %10, align 4, !tbaa !15
  %7552 = load i32, ptr %16, align 4, !tbaa !15
  %7553 = mul nsw i32 %7551, %7552
  %7554 = load i32, ptr %11, align 4, !tbaa !15
  %7555 = add nsw i32 %7553, %7554
  %7556 = sext i32 %7555 to i64
  %7557 = getelementptr inbounds float, ptr %7550, i64 %7556
  store float 0.000000e+00, ptr %7557, align 4, !tbaa !30
  br label %7558

7558:                                             ; preds = %7549, %7546, %7541
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %7559

7559:                                             ; preds = %7631, %7558
  %7560 = load i32, ptr %12, align 4, !tbaa !15
  %7561 = load i32, ptr %19, align 4, !tbaa !15
  %7562 = load i32, ptr %305, align 4, !tbaa !15
  %7563 = sdiv i32 %7561, %7562
  %7564 = icmp slt i32 %7560, %7563
  br i1 %7564, label %7565, label %7634

7565:                                             ; preds = %7559
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %7566

7566:                                             ; preds = %7627, %7565
  %7567 = load i32, ptr %13, align 4, !tbaa !15
  %7568 = load i32, ptr %305, align 4, !tbaa !15
  %7569 = icmp slt i32 %7567, %7568
  br i1 %7569, label %7570, label %7630

7570:                                             ; preds = %7566
  call void @llvm.lifetime.start.p0(i64 2, ptr %306) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %307) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %308) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %309) #6
  %7571 = getelementptr inbounds [2 x i8], ptr %306, i64 0, i64 0
  store i8 0, ptr %7571, align 2, !tbaa !22
  %7572 = load ptr, ptr %302, align 8, !tbaa !5
  %7573 = load i64, ptr %20, align 8, !tbaa !21
  %7574 = load i32, ptr %12, align 4, !tbaa !15
  %7575 = load i32, ptr %14, align 4, !tbaa !15
  %7576 = load i32, ptr %305, align 4, !tbaa !15
  %7577 = mul nsw i32 %7575, %7576
  %7578 = mul nsw i32 %7574, %7577
  %7579 = sext i32 %7578 to i64
  %7580 = add nsw i64 %7573, %7579
  %7581 = load i32, ptr %11, align 4, !tbaa !15
  %7582 = load i32, ptr %305, align 4, !tbaa !15
  %7583 = mul nsw i32 %7581, %7582
  %7584 = sext i32 %7583 to i64
  %7585 = add nsw i64 %7580, %7584
  %7586 = load i32, ptr %13, align 4, !tbaa !15
  %7587 = sext i32 %7586 to i64
  %7588 = add nsw i64 %7585, %7587
  %7589 = getelementptr inbounds i8, ptr %7572, i64 %7588
  %7590 = load i8, ptr %7589, align 1, !tbaa !22
  %7591 = getelementptr inbounds [2 x i8], ptr %306, i64 0, i64 1
  store i8 %7590, ptr %7591, align 1, !tbaa !22
  %7592 = getelementptr inbounds [2 x i8], ptr %307, i64 0, i64 0
  store i8 0, ptr %7592, align 2, !tbaa !22
  %7593 = load ptr, ptr %303, align 8, !tbaa !5
  %7594 = load i64, ptr %21, align 8, !tbaa !21
  %7595 = load i32, ptr %10, align 4, !tbaa !15
  %7596 = load i32, ptr %15, align 4, !tbaa !15
  %7597 = mul nsw i32 %7595, %7596
  %7598 = sext i32 %7597 to i64
  %7599 = add nsw i64 %7594, %7598
  %7600 = load i32, ptr %12, align 4, !tbaa !15
  %7601 = load i32, ptr %305, align 4, !tbaa !15
  %7602 = mul nsw i32 %7600, %7601
  %7603 = sext i32 %7602 to i64
  %7604 = add nsw i64 %7599, %7603
  %7605 = load i32, ptr %13, align 4, !tbaa !15
  %7606 = sext i32 %7605 to i64
  %7607 = add nsw i64 %7604, %7606
  %7608 = getelementptr inbounds i8, ptr %7593, i64 %7607
  %7609 = load i8, ptr %7608, align 1, !tbaa !22
  %7610 = getelementptr inbounds [2 x i8], ptr %307, i64 0, i64 1
  store i8 %7609, ptr %7610, align 1, !tbaa !22
  %7611 = load i16, ptr %306, align 2, !tbaa !22
  %7612 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %7611)
  store float %7612, ptr %308, align 4, !tbaa !30
  %7613 = load i16, ptr %307, align 2, !tbaa !22
  %7614 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %7613)
  store float %7614, ptr %309, align 4, !tbaa !30
  %7615 = load float, ptr %308, align 4, !tbaa !30
  %7616 = load float, ptr %309, align 4, !tbaa !30
  %7617 = load ptr, ptr %304, align 8, !tbaa !5
  %7618 = load i32, ptr %10, align 4, !tbaa !15
  %7619 = load i32, ptr %16, align 4, !tbaa !15
  %7620 = mul nsw i32 %7618, %7619
  %7621 = load i32, ptr %11, align 4, !tbaa !15
  %7622 = add nsw i32 %7620, %7621
  %7623 = sext i32 %7622 to i64
  %7624 = getelementptr inbounds float, ptr %7617, i64 %7623
  %7625 = load float, ptr %7624, align 4, !tbaa !30
  %7626 = call float @llvm.fmuladd.f32(float %7615, float %7616, float %7625)
  store float %7626, ptr %7624, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %309) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %308) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %307) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %306) #6
  br label %7627

7627:                                             ; preds = %7570
  %7628 = load i32, ptr %13, align 4, !tbaa !15
  %7629 = add nsw i32 %7628, 1
  store i32 %7629, ptr %13, align 4, !tbaa !15
  br label %7566, !llvm.loop !194

7630:                                             ; preds = %7566
  br label %7631

7631:                                             ; preds = %7630
  %7632 = load i32, ptr %12, align 4, !tbaa !15
  %7633 = add nsw i32 %7632, 1
  store i32 %7633, ptr %12, align 4, !tbaa !15
  br label %7559, !llvm.loop !195

7634:                                             ; preds = %7559
  br label %7635

7635:                                             ; preds = %7634
  %7636 = load i32, ptr %11, align 4, !tbaa !15
  %7637 = add nsw i32 %7636, 1
  store i32 %7637, ptr %11, align 4, !tbaa !15
  br label %7537, !llvm.loop !196

7638:                                             ; preds = %7537
  br label %7639

7639:                                             ; preds = %7638
  %7640 = load i32, ptr %10, align 4, !tbaa !15
  %7641 = add nsw i32 %7640, 1
  store i32 %7641, ptr %10, align 4, !tbaa !15
  br label %7532, !llvm.loop !197

7642:                                             ; preds = %7532
  br label %7643

7643:                                             ; preds = %7642
  %7644 = load i32, ptr %9, align 4, !tbaa !15
  %7645 = add nsw i32 %7644, 1
  store i32 %7645, ptr %9, align 4, !tbaa !15
  br label %7522, !llvm.loop !198

7646:                                             ; preds = %7522
  call void @llvm.lifetime.end.p0(i64 4, ptr %305) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #6
  br label %8131

7647:                                             ; preds = %7501, %7496, %7491, %7486
  %7648 = load ptr, ptr %5, align 8, !tbaa !5
  %7649 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7648, i32 0, i32 0
  %7650 = load i32, ptr %7649, align 8, !tbaa !26
  %7651 = icmp eq i32 %7650, 5
  br i1 %7651, label %7652, label %7802

7652:                                             ; preds = %7647
  %7653 = load ptr, ptr %5, align 8, !tbaa !5
  %7654 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7653, i32 0, i32 1
  %7655 = load i32, ptr %7654, align 4, !tbaa !27
  %7656 = icmp eq i32 %7655, 5
  br i1 %7656, label %7657, label %7802

7657:                                             ; preds = %7652
  %7658 = load ptr, ptr %5, align 8, !tbaa !5
  %7659 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7658, i32 0, i32 2
  %7660 = load i32, ptr %7659, align 8, !tbaa !29
  %7661 = icmp eq i32 %7660, 1
  br i1 %7661, label %7662, label %7802

7662:                                             ; preds = %7657
  %7663 = load ptr, ptr %5, align 8, !tbaa !5
  %7664 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7663, i32 0, i32 3
  %7665 = load i32, ptr %7664, align 4, !tbaa !62
  %7666 = icmp eq i32 %7665, 1
  br i1 %7666, label %7667, label %7802

7667:                                             ; preds = %7662
  call void @llvm.lifetime.start.p0(i64 8, ptr %310) #6
  %7668 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %7668, ptr %310, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %311) #6
  %7669 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %7669, ptr %311, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %312) #6
  %7670 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %7670, ptr %312, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %313) #6
  %7671 = load ptr, ptr %5, align 8, !tbaa !5
  %7672 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7671, i32 0, i32 16
  %7673 = load i32, ptr %7672, align 8, !tbaa !128
  %7674 = icmp ne i32 %7673, 0
  br i1 %7674, label %7675, label %7680

7675:                                             ; preds = %7667
  %7676 = load ptr, ptr %5, align 8, !tbaa !5
  %7677 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7676, i32 0, i32 0
  %7678 = load i32, ptr %7677, align 8, !tbaa !26
  %7679 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %7678)
  br label %7681

7680:                                             ; preds = %7667
  br label %7681

7681:                                             ; preds = %7680, %7675
  %7682 = phi i32 [ %7679, %7675 ], [ 1, %7680 ]
  store i32 %7682, ptr %313, align 4, !tbaa !15
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %7683

7683:                                             ; preds = %7798, %7681
  %7684 = load i32, ptr %9, align 4, !tbaa !15
  %7685 = load ptr, ptr %5, align 8, !tbaa !5
  %7686 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7685, i32 0, i32 26
  %7687 = load i32, ptr %7686, align 8, !tbaa !45
  %7688 = icmp slt i32 %7684, %7687
  br i1 %7688, label %7689, label %7801

7689:                                             ; preds = %7683
  %7690 = load i32, ptr %9, align 4, !tbaa !15
  %7691 = sext i32 %7690 to i64
  %7692 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %310, ptr noundef %311, ptr noundef %20, ptr noundef %21, i64 noundef %7691, ptr noundef %7692)
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %7693

7693:                                             ; preds = %7794, %7689
  %7694 = load i32, ptr %10, align 4, !tbaa !15
  %7695 = load i32, ptr %18, align 4, !tbaa !15
  %7696 = icmp slt i32 %7694, %7695
  br i1 %7696, label %7697, label %7797

7697:                                             ; preds = %7693
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %7698

7698:                                             ; preds = %7790, %7697
  %7699 = load i32, ptr %11, align 4, !tbaa !15
  %7700 = load i32, ptr %17, align 4, !tbaa !15
  %7701 = icmp slt i32 %7699, %7700
  br i1 %7701, label %7702, label %7793

7702:                                             ; preds = %7698
  %7703 = load ptr, ptr %5, align 8, !tbaa !5
  %7704 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7703, i32 0, i32 13
  %7705 = load double, ptr %7704, align 8, !tbaa !28
  %7706 = fcmp oeq double %7705, 0.000000e+00
  br i1 %7706, label %7707, label %7719

7707:                                             ; preds = %7702
  %7708 = load i32, ptr %9, align 4, !tbaa !15
  %7709 = icmp eq i32 %7708, 0
  br i1 %7709, label %7710, label %7719

7710:                                             ; preds = %7707
  %7711 = load ptr, ptr %312, align 8, !tbaa !5
  %7712 = load i32, ptr %10, align 4, !tbaa !15
  %7713 = load i32, ptr %16, align 4, !tbaa !15
  %7714 = mul nsw i32 %7712, %7713
  %7715 = load i32, ptr %11, align 4, !tbaa !15
  %7716 = add nsw i32 %7714, %7715
  %7717 = sext i32 %7716 to i64
  %7718 = getelementptr inbounds float, ptr %7711, i64 %7717
  store float 0.000000e+00, ptr %7718, align 4, !tbaa !30
  br label %7719

7719:                                             ; preds = %7710, %7707, %7702
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %7720

7720:                                             ; preds = %7786, %7719
  %7721 = load i32, ptr %12, align 4, !tbaa !15
  %7722 = load i32, ptr %19, align 4, !tbaa !15
  %7723 = load i32, ptr %313, align 4, !tbaa !15
  %7724 = sdiv i32 %7722, %7723
  %7725 = icmp slt i32 %7721, %7724
  br i1 %7725, label %7726, label %7789

7726:                                             ; preds = %7720
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %7727

7727:                                             ; preds = %7782, %7726
  %7728 = load i32, ptr %13, align 4, !tbaa !15
  %7729 = load i32, ptr %313, align 4, !tbaa !15
  %7730 = icmp slt i32 %7728, %7729
  br i1 %7730, label %7731, label %7785

7731:                                             ; preds = %7727
  call void @llvm.lifetime.start.p0(i64 4, ptr %314) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %315) #6
  %7732 = load ptr, ptr %310, align 8, !tbaa !5
  %7733 = load i64, ptr %20, align 8, !tbaa !21
  %7734 = load i32, ptr %12, align 4, !tbaa !15
  %7735 = load i32, ptr %14, align 4, !tbaa !15
  %7736 = load i32, ptr %313, align 4, !tbaa !15
  %7737 = mul nsw i32 %7735, %7736
  %7738 = mul nsw i32 %7734, %7737
  %7739 = sext i32 %7738 to i64
  %7740 = add nsw i64 %7733, %7739
  %7741 = load i32, ptr %11, align 4, !tbaa !15
  %7742 = load i32, ptr %313, align 4, !tbaa !15
  %7743 = mul nsw i32 %7741, %7742
  %7744 = sext i32 %7743 to i64
  %7745 = add nsw i64 %7740, %7744
  %7746 = load i32, ptr %13, align 4, !tbaa !15
  %7747 = sext i32 %7746 to i64
  %7748 = add nsw i64 %7745, %7747
  %7749 = getelementptr inbounds i8, ptr %7732, i64 %7748
  %7750 = load i8, ptr %7749, align 1, !tbaa !22
  %7751 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %7750)
  store float %7751, ptr %314, align 4, !tbaa !30
  %7752 = load ptr, ptr %311, align 8, !tbaa !5
  %7753 = load i64, ptr %21, align 8, !tbaa !21
  %7754 = load i32, ptr %10, align 4, !tbaa !15
  %7755 = load i32, ptr %15, align 4, !tbaa !15
  %7756 = mul nsw i32 %7754, %7755
  %7757 = sext i32 %7756 to i64
  %7758 = add nsw i64 %7753, %7757
  %7759 = load i32, ptr %12, align 4, !tbaa !15
  %7760 = load i32, ptr %313, align 4, !tbaa !15
  %7761 = mul nsw i32 %7759, %7760
  %7762 = sext i32 %7761 to i64
  %7763 = add nsw i64 %7758, %7762
  %7764 = load i32, ptr %13, align 4, !tbaa !15
  %7765 = sext i32 %7764 to i64
  %7766 = add nsw i64 %7763, %7765
  %7767 = getelementptr inbounds i8, ptr %7752, i64 %7766
  %7768 = load i8, ptr %7767, align 1, !tbaa !22
  %7769 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %7768)
  store float %7769, ptr %315, align 4, !tbaa !30
  %7770 = load float, ptr %314, align 4, !tbaa !30
  %7771 = load float, ptr %315, align 4, !tbaa !30
  %7772 = load ptr, ptr %312, align 8, !tbaa !5
  %7773 = load i32, ptr %10, align 4, !tbaa !15
  %7774 = load i32, ptr %16, align 4, !tbaa !15
  %7775 = mul nsw i32 %7773, %7774
  %7776 = load i32, ptr %11, align 4, !tbaa !15
  %7777 = add nsw i32 %7775, %7776
  %7778 = sext i32 %7777 to i64
  %7779 = getelementptr inbounds float, ptr %7772, i64 %7778
  %7780 = load float, ptr %7779, align 4, !tbaa !30
  %7781 = call float @llvm.fmuladd.f32(float %7770, float %7771, float %7780)
  store float %7781, ptr %7779, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %315) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %314) #6
  br label %7782

7782:                                             ; preds = %7731
  %7783 = load i32, ptr %13, align 4, !tbaa !15
  %7784 = add nsw i32 %7783, 1
  store i32 %7784, ptr %13, align 4, !tbaa !15
  br label %7727, !llvm.loop !199

7785:                                             ; preds = %7727
  br label %7786

7786:                                             ; preds = %7785
  %7787 = load i32, ptr %12, align 4, !tbaa !15
  %7788 = add nsw i32 %7787, 1
  store i32 %7788, ptr %12, align 4, !tbaa !15
  br label %7720, !llvm.loop !200

7789:                                             ; preds = %7720
  br label %7790

7790:                                             ; preds = %7789
  %7791 = load i32, ptr %11, align 4, !tbaa !15
  %7792 = add nsw i32 %7791, 1
  store i32 %7792, ptr %11, align 4, !tbaa !15
  br label %7698, !llvm.loop !201

7793:                                             ; preds = %7698
  br label %7794

7794:                                             ; preds = %7793
  %7795 = load i32, ptr %10, align 4, !tbaa !15
  %7796 = add nsw i32 %7795, 1
  store i32 %7796, ptr %10, align 4, !tbaa !15
  br label %7693, !llvm.loop !202

7797:                                             ; preds = %7693
  br label %7798

7798:                                             ; preds = %7797
  %7799 = load i32, ptr %9, align 4, !tbaa !15
  %7800 = add nsw i32 %7799, 1
  store i32 %7800, ptr %9, align 4, !tbaa !15
  br label %7683, !llvm.loop !203

7801:                                             ; preds = %7683
  call void @llvm.lifetime.end.p0(i64 4, ptr %313) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %312) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %311) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %310) #6
  br label %8130

7802:                                             ; preds = %7662, %7657, %7652, %7647
  %7803 = load ptr, ptr %5, align 8, !tbaa !5
  %7804 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7803, i32 0, i32 0
  %7805 = load i32, ptr %7804, align 8, !tbaa !26
  %7806 = icmp eq i32 %7805, 4
  br i1 %7806, label %7807, label %7969

7807:                                             ; preds = %7802
  %7808 = load ptr, ptr %5, align 8, !tbaa !5
  %7809 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7808, i32 0, i32 1
  %7810 = load i32, ptr %7809, align 4, !tbaa !27
  %7811 = icmp eq i32 %7810, 4
  br i1 %7811, label %7812, label %7969

7812:                                             ; preds = %7807
  %7813 = load ptr, ptr %5, align 8, !tbaa !5
  %7814 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7813, i32 0, i32 2
  %7815 = load i32, ptr %7814, align 8, !tbaa !29
  %7816 = icmp eq i32 %7815, 4
  br i1 %7816, label %7817, label %7969

7817:                                             ; preds = %7812
  %7818 = load ptr, ptr %5, align 8, !tbaa !5
  %7819 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7818, i32 0, i32 3
  %7820 = load i32, ptr %7819, align 4, !tbaa !62
  %7821 = icmp eq i32 %7820, 1
  br i1 %7821, label %7822, label %7969

7822:                                             ; preds = %7817
  call void @llvm.lifetime.start.p0(i64 8, ptr %316) #6
  %7823 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %7823, ptr %316, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %317) #6
  %7824 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %7824, ptr %317, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %318) #6
  %7825 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %7825, ptr %318, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %319) #6
  %7826 = load ptr, ptr %5, align 8, !tbaa !5
  %7827 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7826, i32 0, i32 16
  %7828 = load i32, ptr %7827, align 8, !tbaa !128
  %7829 = icmp ne i32 %7828, 0
  br i1 %7829, label %7830, label %7835

7830:                                             ; preds = %7822
  %7831 = load ptr, ptr %5, align 8, !tbaa !5
  %7832 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7831, i32 0, i32 0
  %7833 = load i32, ptr %7832, align 8, !tbaa !26
  %7834 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %7833)
  br label %7836

7835:                                             ; preds = %7822
  br label %7836

7836:                                             ; preds = %7835, %7830
  %7837 = phi i32 [ %7834, %7830 ], [ 1, %7835 ]
  store i32 %7837, ptr %319, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %320) #6
  store float 0.000000e+00, ptr %320, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %321) #6
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %7838

7838:                                             ; preds = %7965, %7836
  %7839 = load i32, ptr %10, align 4, !tbaa !15
  %7840 = load i32, ptr %18, align 4, !tbaa !15
  %7841 = icmp slt i32 %7839, %7840
  br i1 %7841, label %7842, label %7968

7842:                                             ; preds = %7838
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %7843

7843:                                             ; preds = %7961, %7842
  %7844 = load i32, ptr %11, align 4, !tbaa !15
  %7845 = load i32, ptr %17, align 4, !tbaa !15
  %7846 = icmp slt i32 %7844, %7845
  br i1 %7846, label %7847, label %7964

7847:                                             ; preds = %7843
  %7848 = load ptr, ptr %5, align 8, !tbaa !5
  %7849 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7848, i32 0, i32 13
  %7850 = load double, ptr %7849, align 8, !tbaa !28
  %7851 = fcmp oeq double %7850, 0.000000e+00
  br i1 %7851, label %7852, label %7853

7852:                                             ; preds = %7847
  store float 0.000000e+00, ptr %320, align 4, !tbaa !30
  br label %7867

7853:                                             ; preds = %7847
  call void @llvm.lifetime.start.p0(i64 2, ptr %322) #6
  %7854 = getelementptr inbounds [2 x i8], ptr %322, i64 0, i64 0
  store i8 0, ptr %7854, align 2, !tbaa !22
  %7855 = load ptr, ptr %318, align 8, !tbaa !5
  %7856 = load i32, ptr %10, align 4, !tbaa !15
  %7857 = load i32, ptr %16, align 4, !tbaa !15
  %7858 = mul nsw i32 %7856, %7857
  %7859 = load i32, ptr %11, align 4, !tbaa !15
  %7860 = add nsw i32 %7858, %7859
  %7861 = sext i32 %7860 to i64
  %7862 = getelementptr inbounds i8, ptr %7855, i64 %7861
  %7863 = load i8, ptr %7862, align 1, !tbaa !22
  %7864 = getelementptr inbounds [2 x i8], ptr %322, i64 0, i64 1
  store i8 %7863, ptr %7864, align 1, !tbaa !22
  %7865 = load i16, ptr %322, align 2, !tbaa !22
  %7866 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %7865)
  store float %7866, ptr %320, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 2, ptr %322) #6
  br label %7867

7867:                                             ; preds = %7853, %7852
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %7868

7868:                                             ; preds = %7946, %7867
  %7869 = load i32, ptr %9, align 4, !tbaa !15
  %7870 = load ptr, ptr %5, align 8, !tbaa !5
  %7871 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7870, i32 0, i32 26
  %7872 = load i32, ptr %7871, align 8, !tbaa !45
  %7873 = icmp slt i32 %7869, %7872
  br i1 %7873, label %7874, label %7949

7874:                                             ; preds = %7868
  %7875 = load i32, ptr %9, align 4, !tbaa !15
  %7876 = sext i32 %7875 to i64
  %7877 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %316, ptr noundef %317, ptr noundef %20, ptr noundef %21, i64 noundef %7876, ptr noundef %7877)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %7878

7878:                                             ; preds = %7942, %7874
  %7879 = load i32, ptr %12, align 4, !tbaa !15
  %7880 = load i32, ptr %19, align 4, !tbaa !15
  %7881 = load i32, ptr %319, align 4, !tbaa !15
  %7882 = sdiv i32 %7880, %7881
  %7883 = icmp slt i32 %7879, %7882
  br i1 %7883, label %7884, label %7945

7884:                                             ; preds = %7878
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %7885

7885:                                             ; preds = %7938, %7884
  %7886 = load i32, ptr %13, align 4, !tbaa !15
  %7887 = load i32, ptr %319, align 4, !tbaa !15
  %7888 = icmp slt i32 %7886, %7887
  br i1 %7888, label %7889, label %7941

7889:                                             ; preds = %7885
  call void @llvm.lifetime.start.p0(i64 2, ptr %323) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr %324) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %325) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %326) #6
  %7890 = getelementptr inbounds [2 x i8], ptr %323, i64 0, i64 0
  store i8 0, ptr %7890, align 2, !tbaa !22
  %7891 = load ptr, ptr %316, align 8, !tbaa !5
  %7892 = load i64, ptr %20, align 8, !tbaa !21
  %7893 = load i32, ptr %12, align 4, !tbaa !15
  %7894 = load i32, ptr %14, align 4, !tbaa !15
  %7895 = load i32, ptr %319, align 4, !tbaa !15
  %7896 = mul nsw i32 %7894, %7895
  %7897 = mul nsw i32 %7893, %7896
  %7898 = sext i32 %7897 to i64
  %7899 = add nsw i64 %7892, %7898
  %7900 = load i32, ptr %11, align 4, !tbaa !15
  %7901 = load i32, ptr %319, align 4, !tbaa !15
  %7902 = mul nsw i32 %7900, %7901
  %7903 = sext i32 %7902 to i64
  %7904 = add nsw i64 %7899, %7903
  %7905 = load i32, ptr %13, align 4, !tbaa !15
  %7906 = sext i32 %7905 to i64
  %7907 = add nsw i64 %7904, %7906
  %7908 = getelementptr inbounds i8, ptr %7891, i64 %7907
  %7909 = load i8, ptr %7908, align 1, !tbaa !22
  %7910 = getelementptr inbounds [2 x i8], ptr %323, i64 0, i64 1
  store i8 %7909, ptr %7910, align 1, !tbaa !22
  %7911 = getelementptr inbounds [2 x i8], ptr %324, i64 0, i64 0
  store i8 0, ptr %7911, align 2, !tbaa !22
  %7912 = load ptr, ptr %317, align 8, !tbaa !5
  %7913 = load i64, ptr %21, align 8, !tbaa !21
  %7914 = load i32, ptr %10, align 4, !tbaa !15
  %7915 = load i32, ptr %15, align 4, !tbaa !15
  %7916 = mul nsw i32 %7914, %7915
  %7917 = sext i32 %7916 to i64
  %7918 = add nsw i64 %7913, %7917
  %7919 = load i32, ptr %12, align 4, !tbaa !15
  %7920 = load i32, ptr %319, align 4, !tbaa !15
  %7921 = mul nsw i32 %7919, %7920
  %7922 = sext i32 %7921 to i64
  %7923 = add nsw i64 %7918, %7922
  %7924 = load i32, ptr %13, align 4, !tbaa !15
  %7925 = sext i32 %7924 to i64
  %7926 = add nsw i64 %7923, %7925
  %7927 = getelementptr inbounds i8, ptr %7912, i64 %7926
  %7928 = load i8, ptr %7927, align 1, !tbaa !22
  %7929 = getelementptr inbounds [2 x i8], ptr %324, i64 0, i64 1
  store i8 %7928, ptr %7929, align 1, !tbaa !22
  %7930 = load i16, ptr %323, align 2, !tbaa !22
  %7931 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %7930)
  store float %7931, ptr %325, align 4, !tbaa !30
  %7932 = load i16, ptr %324, align 2, !tbaa !22
  %7933 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %7932)
  store float %7933, ptr %326, align 4, !tbaa !30
  %7934 = load float, ptr %325, align 4, !tbaa !30
  %7935 = load float, ptr %326, align 4, !tbaa !30
  %7936 = load float, ptr %320, align 4, !tbaa !30
  %7937 = call float @llvm.fmuladd.f32(float %7934, float %7935, float %7936)
  store float %7937, ptr %320, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %326) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %325) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %324) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %323) #6
  br label %7938

7938:                                             ; preds = %7889
  %7939 = load i32, ptr %13, align 4, !tbaa !15
  %7940 = add nsw i32 %7939, 1
  store i32 %7940, ptr %13, align 4, !tbaa !15
  br label %7885, !llvm.loop !204

7941:                                             ; preds = %7885
  br label %7942

7942:                                             ; preds = %7941
  %7943 = load i32, ptr %12, align 4, !tbaa !15
  %7944 = add nsw i32 %7943, 1
  store i32 %7944, ptr %12, align 4, !tbaa !15
  br label %7878, !llvm.loop !205

7945:                                             ; preds = %7878
  br label %7946

7946:                                             ; preds = %7945
  %7947 = load i32, ptr %9, align 4, !tbaa !15
  %7948 = add nsw i32 %7947, 1
  store i32 %7948, ptr %9, align 4, !tbaa !15
  br label %7868, !llvm.loop !206

7949:                                             ; preds = %7868
  %7950 = load float, ptr %320, align 4, !tbaa !30
  %7951 = call zeroext i8 @libxsmm_convert_f32_to_bf8_rne(float noundef %7950)
  store i8 %7951, ptr %321, align 1, !tbaa !22
  %7952 = load i8, ptr %321, align 1, !tbaa !22
  %7953 = load ptr, ptr %318, align 8, !tbaa !5
  %7954 = load i32, ptr %10, align 4, !tbaa !15
  %7955 = load i32, ptr %16, align 4, !tbaa !15
  %7956 = mul nsw i32 %7954, %7955
  %7957 = load i32, ptr %11, align 4, !tbaa !15
  %7958 = add nsw i32 %7956, %7957
  %7959 = sext i32 %7958 to i64
  %7960 = getelementptr inbounds i8, ptr %7953, i64 %7959
  store i8 %7952, ptr %7960, align 1, !tbaa !22
  br label %7961

7961:                                             ; preds = %7949
  %7962 = load i32, ptr %11, align 4, !tbaa !15
  %7963 = add nsw i32 %7962, 1
  store i32 %7963, ptr %11, align 4, !tbaa !15
  br label %7843, !llvm.loop !207

7964:                                             ; preds = %7843
  br label %7965

7965:                                             ; preds = %7964
  %7966 = load i32, ptr %10, align 4, !tbaa !15
  %7967 = add nsw i32 %7966, 1
  store i32 %7967, ptr %10, align 4, !tbaa !15
  br label %7838, !llvm.loop !208

7968:                                             ; preds = %7838
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %320) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %319) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %318) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #6
  br label %8129

7969:                                             ; preds = %7817, %7812, %7807, %7802
  %7970 = load ptr, ptr %5, align 8, !tbaa !5
  %7971 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7970, i32 0, i32 0
  %7972 = load i32, ptr %7971, align 8, !tbaa !26
  %7973 = icmp eq i32 %7972, 5
  br i1 %7973, label %7974, label %8128

7974:                                             ; preds = %7969
  %7975 = load ptr, ptr %5, align 8, !tbaa !5
  %7976 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7975, i32 0, i32 1
  %7977 = load i32, ptr %7976, align 4, !tbaa !27
  %7978 = icmp eq i32 %7977, 5
  br i1 %7978, label %7979, label %8128

7979:                                             ; preds = %7974
  %7980 = load ptr, ptr %5, align 8, !tbaa !5
  %7981 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7980, i32 0, i32 2
  %7982 = load i32, ptr %7981, align 8, !tbaa !29
  %7983 = icmp eq i32 %7982, 5
  br i1 %7983, label %7984, label %8128

7984:                                             ; preds = %7979
  %7985 = load ptr, ptr %5, align 8, !tbaa !5
  %7986 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7985, i32 0, i32 3
  %7987 = load i32, ptr %7986, align 4, !tbaa !62
  %7988 = icmp eq i32 %7987, 1
  br i1 %7988, label %7989, label %8128

7989:                                             ; preds = %7984
  call void @llvm.lifetime.start.p0(i64 8, ptr %327) #6
  %7990 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %7990, ptr %327, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %328) #6
  %7991 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %7991, ptr %328, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %329) #6
  %7992 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %7992, ptr %329, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %330) #6
  %7993 = load ptr, ptr %5, align 8, !tbaa !5
  %7994 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7993, i32 0, i32 16
  %7995 = load i32, ptr %7994, align 8, !tbaa !128
  %7996 = icmp ne i32 %7995, 0
  br i1 %7996, label %7997, label %8002

7997:                                             ; preds = %7989
  %7998 = load ptr, ptr %5, align 8, !tbaa !5
  %7999 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7998, i32 0, i32 0
  %8000 = load i32, ptr %7999, align 8, !tbaa !26
  %8001 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %8000)
  br label %8003

8002:                                             ; preds = %7989
  br label %8003

8003:                                             ; preds = %8002, %7997
  %8004 = phi i32 [ %8001, %7997 ], [ 1, %8002 ]
  store i32 %8004, ptr %330, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %331) #6
  store float 0.000000e+00, ptr %331, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %332) #6
  store i32 0, ptr %10, align 4, !tbaa !15
  br label %8005

8005:                                             ; preds = %8124, %8003
  %8006 = load i32, ptr %10, align 4, !tbaa !15
  %8007 = load i32, ptr %18, align 4, !tbaa !15
  %8008 = icmp slt i32 %8006, %8007
  br i1 %8008, label %8009, label %8127

8009:                                             ; preds = %8005
  store i32 0, ptr %11, align 4, !tbaa !15
  br label %8010

8010:                                             ; preds = %8120, %8009
  %8011 = load i32, ptr %11, align 4, !tbaa !15
  %8012 = load i32, ptr %17, align 4, !tbaa !15
  %8013 = icmp slt i32 %8011, %8012
  br i1 %8013, label %8014, label %8123

8014:                                             ; preds = %8010
  %8015 = load ptr, ptr %5, align 8, !tbaa !5
  %8016 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %8015, i32 0, i32 13
  %8017 = load double, ptr %8016, align 8, !tbaa !28
  %8018 = fcmp oeq double %8017, 0.000000e+00
  br i1 %8018, label %8019, label %8020

8019:                                             ; preds = %8014
  store float 0.000000e+00, ptr %331, align 4, !tbaa !30
  br label %8032

8020:                                             ; preds = %8014
  call void @llvm.lifetime.start.p0(i64 4, ptr %333) #6
  %8021 = load ptr, ptr %329, align 8, !tbaa !5
  %8022 = load i32, ptr %10, align 4, !tbaa !15
  %8023 = load i32, ptr %16, align 4, !tbaa !15
  %8024 = mul nsw i32 %8022, %8023
  %8025 = load i32, ptr %11, align 4, !tbaa !15
  %8026 = add nsw i32 %8024, %8025
  %8027 = sext i32 %8026 to i64
  %8028 = getelementptr inbounds i8, ptr %8021, i64 %8027
  %8029 = load i8, ptr %8028, align 1, !tbaa !22
  %8030 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %8029)
  store float %8030, ptr %333, align 4, !tbaa !30
  %8031 = load float, ptr %333, align 4, !tbaa !30
  store float %8031, ptr %331, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %333) #6
  br label %8032

8032:                                             ; preds = %8020, %8019
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %8033

8033:                                             ; preds = %8105, %8032
  %8034 = load i32, ptr %9, align 4, !tbaa !15
  %8035 = load ptr, ptr %5, align 8, !tbaa !5
  %8036 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %8035, i32 0, i32 26
  %8037 = load i32, ptr %8036, align 8, !tbaa !45
  %8038 = icmp slt i32 %8034, %8037
  br i1 %8038, label %8039, label %8108

8039:                                             ; preds = %8033
  %8040 = load i32, ptr %9, align 4, !tbaa !15
  %8041 = sext i32 %8040 to i64
  %8042 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef %327, ptr noundef %328, ptr noundef %20, ptr noundef %21, i64 noundef %8041, ptr noundef %8042)
  store i32 0, ptr %12, align 4, !tbaa !15
  br label %8043

8043:                                             ; preds = %8101, %8039
  %8044 = load i32, ptr %12, align 4, !tbaa !15
  %8045 = load i32, ptr %19, align 4, !tbaa !15
  %8046 = load i32, ptr %330, align 4, !tbaa !15
  %8047 = sdiv i32 %8045, %8046
  %8048 = icmp slt i32 %8044, %8047
  br i1 %8048, label %8049, label %8104

8049:                                             ; preds = %8043
  store i32 0, ptr %13, align 4, !tbaa !15
  br label %8050

8050:                                             ; preds = %8097, %8049
  %8051 = load i32, ptr %13, align 4, !tbaa !15
  %8052 = load i32, ptr %330, align 4, !tbaa !15
  %8053 = icmp slt i32 %8051, %8052
  br i1 %8053, label %8054, label %8100

8054:                                             ; preds = %8050
  call void @llvm.lifetime.start.p0(i64 4, ptr %334) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %335) #6
  %8055 = load ptr, ptr %327, align 8, !tbaa !5
  %8056 = load i64, ptr %20, align 8, !tbaa !21
  %8057 = load i32, ptr %12, align 4, !tbaa !15
  %8058 = load i32, ptr %14, align 4, !tbaa !15
  %8059 = load i32, ptr %330, align 4, !tbaa !15
  %8060 = mul nsw i32 %8058, %8059
  %8061 = mul nsw i32 %8057, %8060
  %8062 = sext i32 %8061 to i64
  %8063 = add nsw i64 %8056, %8062
  %8064 = load i32, ptr %11, align 4, !tbaa !15
  %8065 = load i32, ptr %330, align 4, !tbaa !15
  %8066 = mul nsw i32 %8064, %8065
  %8067 = sext i32 %8066 to i64
  %8068 = add nsw i64 %8063, %8067
  %8069 = load i32, ptr %13, align 4, !tbaa !15
  %8070 = sext i32 %8069 to i64
  %8071 = add nsw i64 %8068, %8070
  %8072 = getelementptr inbounds i8, ptr %8055, i64 %8071
  %8073 = load i8, ptr %8072, align 1, !tbaa !22
  %8074 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %8073)
  store float %8074, ptr %334, align 4, !tbaa !30
  %8075 = load ptr, ptr %328, align 8, !tbaa !5
  %8076 = load i64, ptr %21, align 8, !tbaa !21
  %8077 = load i32, ptr %10, align 4, !tbaa !15
  %8078 = load i32, ptr %15, align 4, !tbaa !15
  %8079 = mul nsw i32 %8077, %8078
  %8080 = sext i32 %8079 to i64
  %8081 = add nsw i64 %8076, %8080
  %8082 = load i32, ptr %12, align 4, !tbaa !15
  %8083 = load i32, ptr %330, align 4, !tbaa !15
  %8084 = mul nsw i32 %8082, %8083
  %8085 = sext i32 %8084 to i64
  %8086 = add nsw i64 %8081, %8085
  %8087 = load i32, ptr %13, align 4, !tbaa !15
  %8088 = sext i32 %8087 to i64
  %8089 = add nsw i64 %8086, %8088
  %8090 = getelementptr inbounds i8, ptr %8075, i64 %8089
  %8091 = load i8, ptr %8090, align 1, !tbaa !22
  %8092 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %8091)
  store float %8092, ptr %335, align 4, !tbaa !30
  %8093 = load float, ptr %334, align 4, !tbaa !30
  %8094 = load float, ptr %335, align 4, !tbaa !30
  %8095 = load float, ptr %331, align 4, !tbaa !30
  %8096 = call float @llvm.fmuladd.f32(float %8093, float %8094, float %8095)
  store float %8096, ptr %331, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %335) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %334) #6
  br label %8097

8097:                                             ; preds = %8054
  %8098 = load i32, ptr %13, align 4, !tbaa !15
  %8099 = add nsw i32 %8098, 1
  store i32 %8099, ptr %13, align 4, !tbaa !15
  br label %8050, !llvm.loop !209

8100:                                             ; preds = %8050
  br label %8101

8101:                                             ; preds = %8100
  %8102 = load i32, ptr %12, align 4, !tbaa !15
  %8103 = add nsw i32 %8102, 1
  store i32 %8103, ptr %12, align 4, !tbaa !15
  br label %8043, !llvm.loop !210

8104:                                             ; preds = %8043
  br label %8105

8105:                                             ; preds = %8104
  %8106 = load i32, ptr %9, align 4, !tbaa !15
  %8107 = add nsw i32 %8106, 1
  store i32 %8107, ptr %9, align 4, !tbaa !15
  br label %8033, !llvm.loop !211

8108:                                             ; preds = %8033
  %8109 = load float, ptr %331, align 4, !tbaa !30
  %8110 = call zeroext i8 @libxsmm_convert_f32_to_hf8_rne(float noundef %8109)
  store i8 %8110, ptr %332, align 1, !tbaa !22
  %8111 = load i8, ptr %332, align 1, !tbaa !22
  %8112 = load ptr, ptr %329, align 8, !tbaa !5
  %8113 = load i32, ptr %10, align 4, !tbaa !15
  %8114 = load i32, ptr %16, align 4, !tbaa !15
  %8115 = mul nsw i32 %8113, %8114
  %8116 = load i32, ptr %11, align 4, !tbaa !15
  %8117 = add nsw i32 %8115, %8116
  %8118 = sext i32 %8117 to i64
  %8119 = getelementptr inbounds i8, ptr %8112, i64 %8118
  store i8 %8111, ptr %8119, align 1, !tbaa !22
  br label %8120

8120:                                             ; preds = %8108
  %8121 = load i32, ptr %11, align 4, !tbaa !15
  %8122 = add nsw i32 %8121, 1
  store i32 %8122, ptr %11, align 4, !tbaa !15
  br label %8010, !llvm.loop !212

8123:                                             ; preds = %8010
  br label %8124

8124:                                             ; preds = %8123
  %8125 = load i32, ptr %10, align 4, !tbaa !15
  %8126 = add nsw i32 %8125, 1
  store i32 %8126, ptr %10, align 4, !tbaa !15
  br label %8005, !llvm.loop !213

8127:                                             ; preds = %8005
  call void @llvm.lifetime.end.p0(i64 1, ptr %332) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %331) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %330) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %329) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %328) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #6
  br label %8128

8128:                                             ; preds = %8127, %7984, %7979, %7974, %7969
  br label %8129

8129:                                             ; preds = %8128, %7968
  br label %8130

8130:                                             ; preds = %8129, %7801
  br label %8131

8131:                                             ; preds = %8130, %7646
  br label %8132

8132:                                             ; preds = %8131, %7485
  br label %8133

8133:                                             ; preds = %8132, %7212
  br label %8134

8134:                                             ; preds = %8133, %6937
  br label %8135

8135:                                             ; preds = %8134, %6665
  br label %8136

8136:                                             ; preds = %8135, %6401
  br label %8137

8137:                                             ; preds = %8136, %6134
  br label %8138

8138:                                             ; preds = %8137, %5869
  br label %8139

8139:                                             ; preds = %8138, %5609
  br label %8140

8140:                                             ; preds = %8139, %5349
  br label %8141

8141:                                             ; preds = %8140, %5043
  br label %8142

8142:                                             ; preds = %8141, %4739
  br label %8143

8143:                                             ; preds = %8142, %4381
  br label %8144

8144:                                             ; preds = %8143, %4082
  br label %8145

8145:                                             ; preds = %8144, %3882
  br label %8146

8146:                                             ; preds = %8145, %3718
  br label %8147

8147:                                             ; preds = %8146, %3554
  br label %8148

8148:                                             ; preds = %8147, %3390
  br label %8149

8149:                                             ; preds = %8148, %3226
  br label %8150

8150:                                             ; preds = %8149, %3073
  br label %8151

8151:                                             ; preds = %8150, %2920
  br label %8152

8152:                                             ; preds = %8151, %2767
  br label %8153

8153:                                             ; preds = %8152, %2614
  br label %8154

8154:                                             ; preds = %8153, %2471
  br label %8155

8155:                                             ; preds = %8154, %2235
  br label %8156

8156:                                             ; preds = %8155, %1999
  br label %8157

8157:                                             ; preds = %8156, %1578
  br label %8158

8158:                                             ; preds = %8157, %1076
  br label %8159

8159:                                             ; preds = %8158, %777
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  ret void
}

declare i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef) #2

declare float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext) #2

declare float @libxsmm_convert_f16_to_f32(i16 noundef zeroext) #2

declare zeroext i8 @libxsmm_extract_bit(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare float @libxsmm_convert_bf8_to_f32(i8 noundef zeroext) #2

declare float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext) #2

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

declare zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef) #2

declare zeroext i16 @libxsmm_convert_f32_to_f16(float noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #4

; Function Attrs: nounwind willreturn memory(read)
declare ptr @strstr(ptr noundef, ptr noundef) #5

declare i32 @libxsmm_cpuid(ptr noundef) #2

declare zeroext i8 @libxsmm_convert_f32_to_bf8_rne(float noundef) #2

declare zeroext i8 @libxsmm_convert_f32_to_hf8_rne(float noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 28}
!10 = !{!"libxsmm_gemm_def", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !12, i64 48, !12, i64 56, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !13, i64 124, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !11, i64 236, !11, i64 240, !11, i64 244, !11, i64 248, !11, i64 252, !11, i64 256, !14, i64 264, !14, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !11, i64 320, !11, i64 324, !11, i64 328, !11, i64 332, !11, i64 336, !11, i64 340, !6, i64 344, !6, i64 352}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{!"long long", !7, i64 0}
!15 = !{!11, !11, i64 0}
!16 = !{!10, !11, i64 32}
!17 = !{!10, !11, i64 36}
!18 = !{!10, !11, i64 16}
!19 = !{!10, !11, i64 20}
!20 = !{!10, !11, i64 24}
!21 = !{!14, !14, i64 0}
!22 = !{!7, !7, i64 0}
!23 = !{!10, !11, i64 252}
!24 = !{!10, !6, i64 344}
!25 = !{!10, !6, i64 312}
!26 = !{!10, !11, i64 0}
!27 = !{!10, !11, i64 4}
!28 = !{!10, !12, i64 56}
!29 = !{!10, !11, i64 8}
!30 = !{!13, !13, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!34, !34, i64 0}
!34 = !{!"short", !7, i64 0}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}
!40 = distinct !{!40, !32}
!41 = distinct !{!41, !32}
!42 = !{!10, !11, i64 224}
!43 = !{!10, !11, i64 228}
!44 = !{!10, !11, i64 216}
!45 = !{!10, !11, i64 112}
!46 = distinct !{!46, !32}
!47 = distinct !{!47, !32}
!48 = distinct !{!48, !32}
!49 = distinct !{!49, !32}
!50 = distinct !{!50, !32}
!51 = !{!10, !11, i64 232}
!52 = distinct !{!52, !32}
!53 = distinct !{!53, !32}
!54 = distinct !{!54, !32}
!55 = distinct !{!55, !32}
!56 = distinct !{!56, !32}
!57 = !{!10, !11, i64 236}
!58 = distinct !{!58, !32}
!59 = distinct !{!59, !32}
!60 = distinct !{!60, !32}
!61 = distinct !{!61, !32}
!62 = !{!10, !11, i64 12}
!63 = !{!12, !12, i64 0}
!64 = !{!10, !11, i64 68}
!65 = !{!10, !11, i64 64}
!66 = distinct !{!66, !32}
!67 = distinct !{!67, !32}
!68 = distinct !{!68, !32}
!69 = distinct !{!69, !32}
!70 = distinct !{!70, !32}
!71 = distinct !{!71, !32}
!72 = distinct !{!72, !32}
!73 = distinct !{!73, !32}
!74 = distinct !{!74, !32}
!75 = distinct !{!75, !32}
!76 = distinct !{!76, !32}
!77 = distinct !{!77, !32}
!78 = distinct !{!78, !32}
!79 = !{!10, !11, i64 84}
!80 = !{!10, !11, i64 88}
!81 = distinct !{!81, !32}
!82 = distinct !{!82, !32}
!83 = distinct !{!83, !32}
!84 = distinct !{!84, !32}
!85 = distinct !{!85, !32}
!86 = distinct !{!86, !32}
!87 = distinct !{!87, !32}
!88 = distinct !{!88, !32}
!89 = distinct !{!89, !32}
!90 = distinct !{!90, !32}
!91 = distinct !{!91, !32}
!92 = distinct !{!92, !32}
!93 = distinct !{!93, !32}
!94 = distinct !{!94, !32}
!95 = distinct !{!95, !32}
!96 = distinct !{!96, !32}
!97 = distinct !{!97, !32}
!98 = distinct !{!98, !32}
!99 = distinct !{!99, !32}
!100 = distinct !{!100, !32}
!101 = distinct !{!101, !32}
!102 = distinct !{!102, !32}
!103 = distinct !{!103, !32}
!104 = !{!10, !13, i64 124}
!105 = distinct !{!105, !32}
!106 = distinct !{!106, !32}
!107 = distinct !{!107, !32}
!108 = distinct !{!108, !32}
!109 = distinct !{!109, !32}
!110 = distinct !{!110, !32}
!111 = distinct !{!111, !32}
!112 = distinct !{!112, !32}
!113 = distinct !{!113, !32}
!114 = distinct !{!114, !32}
!115 = distinct !{!115, !32}
!116 = distinct !{!116, !32}
!117 = distinct !{!117, !32}
!118 = distinct !{!118, !32}
!119 = distinct !{!119, !32}
!120 = distinct !{!120, !32}
!121 = distinct !{!121, !32}
!122 = !{!10, !6, i64 128}
!123 = distinct !{!123, !32}
!124 = distinct !{!124, !32}
!125 = distinct !{!125, !32}
!126 = distinct !{!126, !32}
!127 = distinct !{!127, !32}
!128 = !{!10, !11, i64 72}
!129 = distinct !{!129, !32}
!130 = distinct !{!130, !32}
!131 = distinct !{!131, !32}
!132 = distinct !{!132, !32}
!133 = distinct !{!133, !32}
!134 = !{!10, !11, i64 220}
!135 = !{!10, !11, i64 256}
!136 = !{!10, !6, i64 160}
!137 = !{!10, !6, i64 200}
!138 = distinct !{!138, !32}
!139 = distinct !{!139, !32}
!140 = distinct !{!140, !32}
!141 = distinct !{!141, !32}
!142 = distinct !{!142, !32}
!143 = distinct !{!143, !32}
!144 = distinct !{!144, !32}
!145 = distinct !{!145, !32}
!146 = distinct !{!146, !32}
!147 = distinct !{!147, !32}
!148 = distinct !{!148, !32}
!149 = distinct !{!149, !32}
!150 = distinct !{!150, !32}
!151 = distinct !{!151, !32}
!152 = distinct !{!152, !32}
!153 = distinct !{!153, !32}
!154 = distinct !{!154, !32}
!155 = distinct !{!155, !32}
!156 = distinct !{!156, !32}
!157 = distinct !{!157, !32}
!158 = distinct !{!158, !32}
!159 = distinct !{!159, !32}
!160 = distinct !{!160, !32}
!161 = distinct !{!161, !32}
!162 = distinct !{!162, !32}
!163 = !{!10, !11, i64 76}
!164 = distinct !{!164, !32}
!165 = distinct !{!165, !32}
!166 = distinct !{!166, !32}
!167 = distinct !{!167, !32}
!168 = distinct !{!168, !32}
!169 = distinct !{!169, !32}
!170 = distinct !{!170, !32}
!171 = distinct !{!171, !32}
!172 = distinct !{!172, !32}
!173 = distinct !{!173, !32}
!174 = distinct !{!174, !32}
!175 = distinct !{!175, !32}
!176 = distinct !{!176, !32}
!177 = distinct !{!177, !32}
!178 = distinct !{!178, !32}
!179 = distinct !{!179, !32}
!180 = distinct !{!180, !32}
!181 = distinct !{!181, !32}
!182 = distinct !{!182, !32}
!183 = distinct !{!183, !32}
!184 = distinct !{!184, !32}
!185 = distinct !{!185, !32}
!186 = distinct !{!186, !32}
!187 = distinct !{!187, !32}
!188 = distinct !{!188, !32}
!189 = distinct !{!189, !32}
!190 = distinct !{!190, !32}
!191 = distinct !{!191, !32}
!192 = distinct !{!192, !32}
!193 = distinct !{!193, !32}
!194 = distinct !{!194, !32}
!195 = distinct !{!195, !32}
!196 = distinct !{!196, !32}
!197 = distinct !{!197, !32}
!198 = distinct !{!198, !32}
!199 = distinct !{!199, !32}
!200 = distinct !{!200, !32}
!201 = distinct !{!201, !32}
!202 = distinct !{!202, !32}
!203 = distinct !{!203, !32}
!204 = distinct !{!204, !32}
!205 = distinct !{!205, !32}
!206 = distinct !{!206, !32}
!207 = distinct !{!207, !32}
!208 = distinct !{!208, !32}
!209 = distinct !{!209, !32}
!210 = distinct !{!210, !32}
!211 = distinct !{!211, !32}
!212 = distinct !{!212, !32}
!213 = distinct !{!213, !32}


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

@.str.2 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local float @libxsmm_convert_mxfp4_to_float(i8 noundef zeroext) local_unnamed_addr #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_calculate_brgemm_offsets(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local float @libxsmm_calculate_mxfp4_scf(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local float @libxsmm_calculate_mxfp4_scf_b(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @libxsmm_calculate_zpt(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_ref_matmul(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #0 {
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = getelementptr inbounds i8, ptr %0, i64 28
  %71 = load i32, ptr %70, align 4, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %0, i64 32
  %73 = load i32, ptr %72, align 8, !tbaa !14
  %74 = getelementptr inbounds i8, ptr %0, i64 36
  %75 = load i32, ptr %74, align 4, !tbaa !15
  %76 = getelementptr inbounds i8, ptr %0, i64 16
  %77 = load i32, ptr %76, align 8, !tbaa !16
  %78 = getelementptr inbounds i8, ptr %0, i64 20
  %79 = load i32, ptr %78, align 4, !tbaa !17
  %80 = getelementptr inbounds i8, ptr %0, i64 24
  %81 = load i32, ptr %80, align 8, !tbaa !18
  %.fr4927 = freeze i32 %81
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  store i64 0, ptr %5, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  store i64 0, ptr %6, align 8, !tbaa !19
  %82 = getelementptr inbounds i8, ptr %0, i64 252
  %83 = load i32, ptr %82, align 4, !tbaa !20
  %.not = icmp eq i32 %83, 0
  br i1 %.not, label %238, label %84

84:                                               ; preds = %4
  %85 = getelementptr inbounds i8, ptr %0, i64 344
  %86 = load ptr, ptr %85, align 8, !tbaa !21
  %87 = getelementptr inbounds i8, ptr %0, i64 312
  %88 = load ptr, ptr %87, align 8, !tbaa !22
  %89 = load i32, ptr %0, align 8, !tbaa !23
  %.not2828 = icmp eq i32 %89, 1
  br i1 %.not2828, label %94, label %90

90:                                               ; preds = %84
  %91 = getelementptr inbounds i8, ptr %0, i64 4
  %92 = load i32, ptr %91, align 4, !tbaa !24
  %93 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %92) #8
  br label %94

94:                                               ; preds = %90, %84
  %.02648 = phi i32 [ %93, %90 ], [ 1, %84 ]
  %95 = sdiv i32 %.fr4927, %.02648
  %96 = icmp sgt i32 %95, 0
  br i1 %96, label %.preheader2980.lr.ph, label %._crit_edge3033

.preheader2980.lr.ph:                             ; preds = %94
  %97 = icmp sgt i32 %77, 0
  %98 = getelementptr inbounds i8, ptr %0, i64 56
  %99 = icmp sgt i32 %79, 0
  %100 = getelementptr inbounds i8, ptr %0, i64 8
  %101 = icmp slt i32 %79, 1
  %102 = icmp sgt i32 %.02648, 0
  %103 = mul nsw i32 %.02648, %77
  %104 = getelementptr inbounds i8, ptr %0, i64 4
  %105 = zext i32 %77 to i64
  %106 = sext i32 %75 to i64
  %107 = sext i32 %77 to i64
  %wide.trip.count = zext i32 %79 to i64
  %wide.trip.count5104 = zext nneg i32 %79 to i64
  %wide.trip.count5109 = zext nneg i32 %79 to i64
  %wide.trip.count5114 = zext nneg i32 %79 to i64
  %min.iters.check = icmp ugt i32 %79, 7
  %ident.check6910.not = icmp eq i32 %77, 1
  %or.cond7322 = select i1 %min.iters.check, i1 %ident.check6910.not, i1 false
  %n.vec6916 = and i64 %wide.trip.count, 2147483640
  %cmp.n6921 = icmp eq i64 %n.vec6916, %wide.trip.count
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %ident.check.not = icmp eq i32 %75, 1
  %or.cond7324 = select i1 %min.iters.check, i1 %ident.check.not, i1 false
  %n.vec = and i64 %wide.trip.count, 2147483640
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  %xtraiter7503 = and i64 %wide.trip.count, 3
  %lcmp.mod7504.not = icmp eq i64 %xtraiter7503, 0
  br label %.preheader2980

.preheader2980:                                   ; preds = %.preheader2980.lr.ph, %._crit_edge3029
  %.025833032 = phi i32 [ 0, %.preheader2980.lr.ph ], [ %215, %._crit_edge3029 ]
  %.026493031 = phi i64 [ 0, %.preheader2980.lr.ph ], [ %.12650.lcssa, %._crit_edge3029 ]
  br i1 %97, label %.lr.ph3028, label %._crit_edge3029

.lr.ph3028:                                       ; preds = %.preheader2980
  %108 = icmp eq i32 %.025833032, 0
  %109 = mul nsw i32 %.025833032, %.02648
  br label %110

110:                                              ; preds = %.lr.ph3028, %._crit_edge3022
  %indvars.iv5117 = phi i64 [ 0, %.lr.ph3028 ], [ %indvars.iv.next5118, %._crit_edge3022 ]
  %.126503023 = phi i64 [ %.026493031, %.lr.ph3028 ], [ %.22651.lcssa, %._crit_edge3022 ]
  %111 = load double, ptr %98, align 8, !tbaa !25
  %112 = fcmp oeq double %111, 0.000000e+00
  %or.cond = and i1 %108, %112
  %brmerge.not = select i1 %or.cond, i1 %99, i1 false
  br i1 %brmerge.not, label %.lr.ph, label %.loopexit2979

.lr.ph:                                           ; preds = %110
  %113 = load i32, ptr %100, align 8, !tbaa !26
  %.not2832 = icmp eq i32 %113, 1
  br i1 %.not2832, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %.lr.ph
  %invariant.gep = getelementptr inbounds float, ptr %86, i64 %indvars.iv5117
  br i1 %or.cond7322, label %vector.body6918, label %.lr.ph.split.preheader7501

.lr.ph.split.preheader7501:                       ; preds = %middle.block6911, %.lr.ph.split.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.split.preheader ], [ %n.vec6916, %middle.block6911 ]
  br i1 %lcmp.mod.not, label %.lr.ph.split.prol.loopexit, label %.lr.ph.split.prol

.lr.ph.split.prol:                                ; preds = %.lr.ph.split.preheader7501, %.lr.ph.split.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.split.prol ], [ %indvars.iv.ph, %.lr.ph.split.preheader7501 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.split.prol ], [ 0, %.lr.ph.split.preheader7501 ]
  %114 = mul nuw nsw i64 %indvars.iv.prol, %105
  %gep.prol = getelementptr inbounds float, ptr %invariant.gep, i64 %114
  store float 0.000000e+00, ptr %gep.prol, align 4, !tbaa !27
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.split.prol.loopexit, label %.lr.ph.split.prol, !llvm.loop !28

.lr.ph.split.prol.loopexit:                       ; preds = %.lr.ph.split.prol, %.lr.ph.split.preheader7501
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.split.preheader7501 ], [ %indvars.iv.next.prol, %.lr.ph.split.prol ]
  %115 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %116 = icmp ugt i64 %115, -4
  br i1 %116, label %.loopexit2979, label %.lr.ph.split

vector.body6918:                                  ; preds = %.lr.ph.split.preheader, %vector.body6918
  %index6919 = phi i64 [ %index.next6920, %vector.body6918 ], [ 0, %.lr.ph.split.preheader ]
  %117 = getelementptr inbounds float, ptr %invariant.gep, i64 %index6919
  %118 = getelementptr inbounds i8, ptr %117, i64 16
  store <4 x float> zeroinitializer, ptr %117, align 4, !tbaa !27
  store <4 x float> zeroinitializer, ptr %118, align 4, !tbaa !27
  %index.next6920 = add nuw i64 %index6919, 8
  %119 = icmp eq i64 %index.next6920, %n.vec6916
  br i1 %119, label %middle.block6911, label %vector.body6918, !llvm.loop !30

middle.block6911:                                 ; preds = %vector.body6918
  br i1 %cmp.n6921, label %.loopexit2979, label %.lr.ph.split.preheader7501

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %invariant.gep6560 = getelementptr float, ptr %3, i64 %indvars.iv5117
  br i1 %or.cond7324, label %vector.body, label %.lr.ph.split.us.preheader7500

vector.body:                                      ; preds = %.lr.ph.split.us.preheader, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.split.us.preheader ]
  %120 = getelementptr float, ptr %invariant.gep6560, i64 %index
  %121 = getelementptr i8, ptr %120, i64 16
  store <4 x float> zeroinitializer, ptr %120, align 4, !tbaa !27
  store <4 x float> zeroinitializer, ptr %121, align 4, !tbaa !27
  %index.next = add nuw i64 %index, 8
  %122 = icmp eq i64 %index.next, %n.vec
  br i1 %122, label %middle.block, label %vector.body, !llvm.loop !34

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %.loopexit2979, label %.lr.ph.split.us.preheader7500

.lr.ph.split.us.preheader7500:                    ; preds = %middle.block, %.lr.ph.split.us.preheader
  %indvars.iv5101.ph = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %n.vec, %middle.block ]
  br i1 %lcmp.mod7504.not, label %.lr.ph.split.us.prol.loopexit, label %.lr.ph.split.us.prol

.lr.ph.split.us.prol:                             ; preds = %.lr.ph.split.us.preheader7500, %.lr.ph.split.us.prol
  %indvars.iv5101.prol = phi i64 [ %indvars.iv.next5102.prol, %.lr.ph.split.us.prol ], [ %indvars.iv5101.ph, %.lr.ph.split.us.preheader7500 ]
  %prol.iter7505 = phi i64 [ %prol.iter7505.next, %.lr.ph.split.us.prol ], [ 0, %.lr.ph.split.us.preheader7500 ]
  %123 = mul nsw i64 %indvars.iv5101.prol, %106
  %gep6561.prol = getelementptr float, ptr %invariant.gep6560, i64 %123
  store float 0.000000e+00, ptr %gep6561.prol, align 4, !tbaa !27
  %indvars.iv.next5102.prol = add nuw nsw i64 %indvars.iv5101.prol, 1
  %prol.iter7505.next = add i64 %prol.iter7505, 1
  %prol.iter7505.cmp.not = icmp eq i64 %prol.iter7505.next, %xtraiter7503
  br i1 %prol.iter7505.cmp.not, label %.lr.ph.split.us.prol.loopexit, label %.lr.ph.split.us.prol, !llvm.loop !35

.lr.ph.split.us.prol.loopexit:                    ; preds = %.lr.ph.split.us.prol, %.lr.ph.split.us.preheader7500
  %indvars.iv5101.unr = phi i64 [ %indvars.iv5101.ph, %.lr.ph.split.us.preheader7500 ], [ %indvars.iv.next5102.prol, %.lr.ph.split.us.prol ]
  %124 = sub nsw i64 %indvars.iv5101.ph, %wide.trip.count
  %125 = icmp ugt i64 %124, -4
  br i1 %125, label %.loopexit2979, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %indvars.iv5101 = phi i64 [ %indvars.iv.next5102.3, %.lr.ph.split.us ], [ %indvars.iv5101.unr, %.lr.ph.split.us.prol.loopexit ]
  %126 = mul nsw i64 %indvars.iv5101, %106
  %gep6561 = getelementptr float, ptr %invariant.gep6560, i64 %126
  store float 0.000000e+00, ptr %gep6561, align 4, !tbaa !27
  %indvars.iv.next5102 = add nuw nsw i64 %indvars.iv5101, 1
  %127 = mul nsw i64 %indvars.iv.next5102, %106
  %gep6561.1 = getelementptr float, ptr %invariant.gep6560, i64 %127
  store float 0.000000e+00, ptr %gep6561.1, align 4, !tbaa !27
  %indvars.iv.next5102.1 = add nuw nsw i64 %indvars.iv5101, 2
  %128 = mul nsw i64 %indvars.iv.next5102.1, %106
  %gep6561.2 = getelementptr float, ptr %invariant.gep6560, i64 %128
  store float 0.000000e+00, ptr %gep6561.2, align 4, !tbaa !27
  %indvars.iv.next5102.2 = add nuw nsw i64 %indvars.iv5101, 3
  %129 = mul nsw i64 %indvars.iv.next5102.2, %106
  %gep6561.3 = getelementptr float, ptr %invariant.gep6560, i64 %129
  store float 0.000000e+00, ptr %gep6561.3, align 4, !tbaa !27
  %indvars.iv.next5102.3 = add nuw nsw i64 %indvars.iv5101, 4
  %exitcond5105.not.3 = icmp eq i64 %indvars.iv.next5102.3, %wide.trip.count5104
  br i1 %exitcond5105.not.3, label %.loopexit2979, label %.lr.ph.split.us, !llvm.loop !36

.lr.ph.split:                                     ; preds = %.lr.ph.split.prol.loopexit, %.lr.ph.split
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph.split ], [ %indvars.iv.unr, %.lr.ph.split.prol.loopexit ]
  %130 = mul nuw nsw i64 %indvars.iv, %105
  %gep = getelementptr inbounds float, ptr %invariant.gep, i64 %130
  store float 0.000000e+00, ptr %gep, align 4, !tbaa !27
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %131 = mul nuw nsw i64 %indvars.iv.next, %105
  %gep.1 = getelementptr inbounds float, ptr %invariant.gep, i64 %131
  store float 0.000000e+00, ptr %gep.1, align 4, !tbaa !27
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %132 = mul nuw nsw i64 %indvars.iv.next.1, %105
  %gep.2 = getelementptr inbounds float, ptr %invariant.gep, i64 %132
  store float 0.000000e+00, ptr %gep.2, align 4, !tbaa !27
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %133 = mul nuw nsw i64 %indvars.iv.next.2, %105
  %gep.3 = getelementptr inbounds float, ptr %invariant.gep, i64 %133
  store float 0.000000e+00, ptr %gep.3, align 4, !tbaa !27
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %.loopexit2979, label %.lr.ph.split, !llvm.loop !37

.loopexit2979:                                    ; preds = %.lr.ph.split.prol.loopexit, %.lr.ph.split, %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us, %middle.block6911, %middle.block, %110
  %134 = fcmp ogt double %111, 0.000000e+00
  %or.cond3 = and i1 %108, %134
  br i1 %or.cond3, label %135, label %.loopexit2977

135:                                              ; preds = %.loopexit2979
  %136 = load i32, ptr %100, align 8, !tbaa !26
  %.not2830 = icmp eq i32 %136, 1
  %brmerge4923 = select i1 %.not2830, i1 true, i1 %101
  br i1 %brmerge4923, label %.loopexit2977, label %.lr.ph3014.preheader

.lr.ph3014.preheader:                             ; preds = %135
  %invariant.gep6562 = getelementptr i16, ptr %3, i64 %indvars.iv5117
  %invariant.gep6564 = getelementptr float, ptr %86, i64 %indvars.iv5117
  %invariant.gep6566 = getelementptr i16, ptr %3, i64 %indvars.iv5117
  %invariant.gep6568 = getelementptr float, ptr %86, i64 %indvars.iv5117
  br label %.lr.ph3014

.lr.ph3014thread-pre-split:                       ; preds = %152
  %.pr6392 = load i32, ptr %100, align 8, !tbaa !26
  br label %.lr.ph3014

.lr.ph3014:                                       ; preds = %.lr.ph3014thread-pre-split, %.lr.ph3014.preheader
  %137 = phi i32 [ %.pr6392, %.lr.ph3014thread-pre-split ], [ %136, %.lr.ph3014.preheader ]
  %indvars.iv5106 = phi i64 [ %indvars.iv.next5107, %.lr.ph3014thread-pre-split ], [ 0, %.lr.ph3014.preheader ]
  %138 = icmp eq i32 %137, 2
  br i1 %138, label %139, label %144

139:                                              ; preds = %.lr.ph3014
  %140 = mul nsw i64 %indvars.iv5106, %106
  %gep6563 = getelementptr i16, ptr %invariant.gep6562, i64 %140
  %141 = load i16, ptr %gep6563, align 2, !tbaa !38
  %142 = tail call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %141) #8
  %143 = mul nuw nsw i64 %indvars.iv5106, %107
  %gep6565 = getelementptr float, ptr %invariant.gep6564, i64 %143
  store float %142, ptr %gep6565, align 4, !tbaa !27
  %.pr = load i32, ptr %100, align 8, !tbaa !26
  br label %144

144:                                              ; preds = %139, %.lr.ph3014
  %145 = phi i32 [ %.pr, %139 ], [ %137, %.lr.ph3014 ]
  %146 = icmp eq i32 %145, 3
  br i1 %146, label %147, label %152

147:                                              ; preds = %144
  %148 = mul nsw i64 %indvars.iv5106, %106
  %gep6567 = getelementptr i16, ptr %invariant.gep6566, i64 %148
  %149 = load i16, ptr %gep6567, align 2, !tbaa !38
  %150 = tail call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %149) #8
  %151 = mul nuw nsw i64 %indvars.iv5106, %107
  %gep6569 = getelementptr float, ptr %invariant.gep6568, i64 %151
  store float %150, ptr %gep6569, align 4, !tbaa !27
  br label %152

152:                                              ; preds = %144, %147
  %indvars.iv.next5107 = add nuw nsw i64 %indvars.iv5106, 1
  %exitcond5110.not = icmp eq i64 %indvars.iv.next5107, %wide.trip.count5109
  br i1 %exitcond5110.not, label %.loopexit2977, label %.lr.ph3014thread-pre-split, !llvm.loop !40

.loopexit2977:                                    ; preds = %152, %135, %.loopexit2979
  br i1 %102, label %.lr.ph3021, label %._crit_edge3022

.lr.ph3021:                                       ; preds = %.loopexit2977
  %153 = trunc i64 %indvars.iv5117 to i32
  %154 = mul i32 %.02648, %153
  br label %155

155:                                              ; preds = %.lr.ph3021, %213
  %.026193018 = phi i32 [ 0, %.lr.ph3021 ], [ %214, %213 ]
  %.226513017 = phi i64 [ %.126503023, %.lr.ph3021 ], [ %.32652, %213 ]
  %156 = add nuw nsw i32 %.026193018, %154
  %157 = tail call zeroext i8 @libxsmm_extract_bit(ptr noundef %88, i32 noundef %156, i32 noundef %.025833032, i32 noundef %103) #8
  %.not2831 = icmp eq i8 %157, 0
  br i1 %.not2831, label %213, label %158

158:                                              ; preds = %155
  %159 = load i32, ptr %0, align 8, !tbaa !23
  switch i32 %159, label %179 [
    i32 1, label %160
    i32 2, label %163
    i32 3, label %167
    i32 4, label %171
    i32 5, label %175
  ]

160:                                              ; preds = %158
  %161 = getelementptr inbounds float, ptr %1, i64 %.226513017
  %162 = load float, ptr %161, align 4, !tbaa !27
  br label %179

163:                                              ; preds = %158
  %164 = getelementptr inbounds i16, ptr %1, i64 %.226513017
  %165 = load i16, ptr %164, align 2, !tbaa !38
  %166 = tail call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %165) #8
  br label %179

167:                                              ; preds = %158
  %168 = getelementptr inbounds i16, ptr %1, i64 %.226513017
  %169 = load i16, ptr %168, align 2, !tbaa !38
  %170 = tail call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %169) #8
  br label %179

171:                                              ; preds = %158
  %172 = getelementptr inbounds i8, ptr %1, i64 %.226513017
  %173 = load i8, ptr %172, align 1, !tbaa !41
  %174 = tail call float @libxsmm_convert_bf8_to_f32(i8 noundef zeroext %173) #8
  br label %179

175:                                              ; preds = %158
  %176 = getelementptr inbounds i8, ptr %1, i64 %.226513017
  %177 = load i8, ptr %176, align 1, !tbaa !41
  %178 = tail call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %177) #8
  br label %179

179:                                              ; preds = %158, %163, %171, %175, %167, %160
  %.02653 = phi float [ %162, %160 ], [ %166, %163 ], [ %170, %167 ], [ %174, %171 ], [ %178, %175 ], [ 0.000000e+00, %158 ]
  br i1 %99, label %.lr.ph3016, label %._crit_edge

.lr.ph3016:                                       ; preds = %179
  %180 = add nuw i32 %.026193018, %109
  br label %181

181:                                              ; preds = %.lr.ph3016, %206
  %indvars.iv5111 = phi i64 [ 0, %.lr.ph3016 ], [ %indvars.iv.next5112, %206 ]
  %182 = load i32, ptr %104, align 4, !tbaa !24
  switch i32 %182, label %206 [
    i32 1, label %183
    i32 2, label %190
    i32 3, label %198
  ]

183:                                              ; preds = %181
  %184 = trunc i64 %indvars.iv5111 to i32
  %185 = mul i32 %73, %184
  %186 = add i32 %180, %185
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds float, ptr %2, i64 %187
  %189 = load float, ptr %188, align 4, !tbaa !27
  br label %206

190:                                              ; preds = %181
  %191 = trunc i64 %indvars.iv5111 to i32
  %192 = mul i32 %73, %191
  %193 = add i32 %180, %192
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i16, ptr %2, i64 %194
  %196 = load i16, ptr %195, align 2, !tbaa !38
  %197 = tail call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %196) #8
  br label %206

198:                                              ; preds = %181
  %199 = trunc i64 %indvars.iv5111 to i32
  %200 = mul i32 %73, %199
  %201 = add i32 %180, %200
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds i16, ptr %2, i64 %202
  %204 = load i16, ptr %203, align 2, !tbaa !38
  %205 = tail call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %204) #8
  br label %206

206:                                              ; preds = %181, %190, %198, %183
  %.02654 = phi float [ %189, %183 ], [ %197, %190 ], [ %205, %198 ], [ 0.000000e+00, %181 ]
  %207 = load i32, ptr %100, align 8, !tbaa !26
  %208 = icmp eq i32 %207, 1
  %. = select i1 %208, i64 %106, i64 %107
  %invariant.gep6572.invariant.gep6570.v = select i1 %208, ptr %3, ptr %86
  %invariant.gep6572.invariant.gep6570 = getelementptr float, ptr %invariant.gep6572.invariant.gep6570.v, i64 %indvars.iv5117
  %209 = mul nsw i64 %indvars.iv5111, %.
  %gep6571 = getelementptr float, ptr %invariant.gep6572.invariant.gep6570, i64 %209
  %210 = load float, ptr %gep6571, align 4, !tbaa !27
  %211 = tail call float @llvm.fmuladd.f32(float %.02653, float %.02654, float %210)
  store float %211, ptr %gep6571, align 4, !tbaa !27
  %indvars.iv.next5112 = add nuw nsw i64 %indvars.iv5111, 1
  %exitcond5115.not = icmp eq i64 %indvars.iv.next5112, %wide.trip.count5114
  br i1 %exitcond5115.not, label %._crit_edge, label %181, !llvm.loop !42

._crit_edge:                                      ; preds = %206, %179
  %212 = add i64 %.226513017, 1
  br label %213

213:                                              ; preds = %._crit_edge, %155
  %.32652 = phi i64 [ %212, %._crit_edge ], [ %.226513017, %155 ]
  %214 = add nuw nsw i32 %.026193018, 1
  %exitcond5116.not = icmp eq i32 %214, %.02648
  br i1 %exitcond5116.not, label %._crit_edge3022, label %155, !llvm.loop !43

._crit_edge3022:                                  ; preds = %213, %.loopexit2977
  %.22651.lcssa = phi i64 [ %.126503023, %.loopexit2977 ], [ %.32652, %213 ]
  %indvars.iv.next5118 = add nuw nsw i64 %indvars.iv5117, 1
  %exitcond5121.not = icmp eq i64 %indvars.iv.next5118, %105
  br i1 %exitcond5121.not, label %._crit_edge3029, label %110, !llvm.loop !44

._crit_edge3029:                                  ; preds = %._crit_edge3022, %.preheader2980
  %.12650.lcssa = phi i64 [ %.026493031, %.preheader2980 ], [ %.22651.lcssa, %._crit_edge3022 ]
  %215 = add nuw nsw i32 %.025833032, 1
  %exitcond5122.not = icmp eq i32 %215, %95
  br i1 %exitcond5122.not, label %._crit_edge3033, label %.preheader2980, !llvm.loop !45

._crit_edge3033:                                  ; preds = %._crit_edge3029, %94
  %216 = getelementptr inbounds i8, ptr %0, i64 8
  %217 = load i32, ptr %216, align 8, !tbaa !26
  %.not2829 = icmp ne i32 %217, 1
  %218 = icmp sgt i32 %77, 0
  %or.cond4924 = select i1 %.not2829, i1 %218, i1 false
  br i1 %or.cond4924, label %.preheader2974.lr.ph, label %.loopexit

.preheader2974.lr.ph:                             ; preds = %._crit_edge3033
  %219 = icmp sgt i32 %79, 0
  %220 = zext nneg i32 %77 to i64
  %221 = sext i32 %75 to i64
  %wide.trip.count5131 = zext nneg i32 %77 to i64
  %wide.trip.count5126 = zext nneg i32 %79 to i64
  br label %.preheader2974

.preheader2974:                                   ; preds = %.preheader2974.lr.ph, %._crit_edge3036
  %indvars.iv5128 = phi i64 [ 0, %.preheader2974.lr.ph ], [ %indvars.iv.next5129, %._crit_edge3036 ]
  br i1 %219, label %.lr.ph3035.preheader, label %._crit_edge3036

.lr.ph3035.preheader:                             ; preds = %.preheader2974
  %invariant.gep6574 = getelementptr inbounds float, ptr %86, i64 %indvars.iv5128
  %invariant.gep6576 = getelementptr i16, ptr %3, i64 %indvars.iv5128
  %invariant.gep6578 = getelementptr inbounds float, ptr %86, i64 %indvars.iv5128
  %invariant.gep6580 = getelementptr i16, ptr %3, i64 %indvars.iv5128
  br label %.lr.ph3035

.lr.ph3035:                                       ; preds = %.lr.ph3035.preheader, %237
  %indvars.iv5123 = phi i64 [ 0, %.lr.ph3035.preheader ], [ %indvars.iv.next5124, %237 ]
  %222 = load i32, ptr %216, align 8, !tbaa !26
  %223 = icmp eq i32 %222, 2
  br i1 %223, label %224, label %229

224:                                              ; preds = %.lr.ph3035
  %225 = mul nuw nsw i64 %indvars.iv5123, %220
  %gep6575 = getelementptr inbounds float, ptr %invariant.gep6574, i64 %225
  %226 = load float, ptr %gep6575, align 4, !tbaa !27
  %227 = tail call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %226) #8
  %228 = mul nsw i64 %indvars.iv5123, %221
  %gep6577 = getelementptr i16, ptr %invariant.gep6576, i64 %228
  store i16 %227, ptr %gep6577, align 2, !tbaa !38
  %.pr2833 = load i32, ptr %216, align 8, !tbaa !26
  br label %229

229:                                              ; preds = %224, %.lr.ph3035
  %230 = phi i32 [ %.pr2833, %224 ], [ %222, %.lr.ph3035 ]
  %231 = icmp eq i32 %230, 3
  br i1 %231, label %232, label %237

232:                                              ; preds = %229
  %233 = mul nuw nsw i64 %indvars.iv5123, %220
  %gep6579 = getelementptr inbounds float, ptr %invariant.gep6578, i64 %233
  %234 = load float, ptr %gep6579, align 4, !tbaa !27
  %235 = tail call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %234) #8
  %236 = mul nsw i64 %indvars.iv5123, %221
  %gep6581 = getelementptr i16, ptr %invariant.gep6580, i64 %236
  store i16 %235, ptr %gep6581, align 2, !tbaa !38
  br label %237

237:                                              ; preds = %229, %232
  %indvars.iv.next5124 = add nuw nsw i64 %indvars.iv5123, 1
  %exitcond5127.not = icmp eq i64 %indvars.iv.next5124, %wide.trip.count5126
  br i1 %exitcond5127.not, label %._crit_edge3036, label %.lr.ph3035, !llvm.loop !46

._crit_edge3036:                                  ; preds = %237, %.preheader2974
  %indvars.iv.next5129 = add nuw nsw i64 %indvars.iv5128, 1
  %exitcond5132.not = icmp eq i64 %indvars.iv.next5129, %wide.trip.count5131
  br i1 %exitcond5132.not, label %.loopexit, label %.preheader2974, !llvm.loop !47

238:                                              ; preds = %4
  %239 = getelementptr inbounds i8, ptr %0, i64 224
  %240 = load i32, ptr %239, align 8, !tbaa !48
  %.not2802 = icmp eq i32 %240, 0
  br i1 %.not2802, label %241, label %244

241:                                              ; preds = %238
  %242 = getelementptr inbounds i8, ptr %0, i64 228
  %243 = load i32, ptr %242, align 4, !tbaa !49
  %.not2803 = icmp eq i32 %243, 0
  br i1 %.not2803, label %385, label %244

244:                                              ; preds = %241, %238
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  store ptr %1, ptr %7, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store ptr %2, ptr %8, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  store ptr %2, ptr %9, align 8, !tbaa !50
  %245 = getelementptr inbounds i8, ptr %0, i64 216
  %246 = load i32, ptr %245, align 8, !tbaa !51
  %.fr4926 = freeze i32 %246
  %247 = icmp sgt i32 %79, 0
  br i1 %247, label %.preheader2973.lr.ph, label %._crit_edge3063

.preheader2973.lr.ph:                             ; preds = %244
  %248 = icmp sgt i32 %77, 0
  %249 = getelementptr inbounds i8, ptr %0, i64 56
  %250 = getelementptr inbounds i8, ptr %0, i64 8
  %251 = getelementptr inbounds i8, ptr %0, i64 112
  %252 = getelementptr inbounds i8, ptr %0, i64 4
  %253 = icmp sgt i32 %.fr4926, 0
  %254 = zext i32 %.fr4926 to i64
  %255 = sext i32 %75 to i64
  %256 = sext i32 %73 to i64
  %wide.trip.count5161 = zext nneg i32 %79 to i64
  %wide.trip.count5140 = zext nneg i32 %77 to i64
  %wide.trip.count5156 = zext nneg i32 %77 to i64
  br label %.preheader2973

.preheader2973:                                   ; preds = %.preheader2973.lr.ph, %._crit_edge3061
  %indvars.iv5158 = phi i64 [ 0, %.preheader2973.lr.ph ], [ %indvars.iv.next5159, %._crit_edge3061 ]
  br i1 %248, label %.lr.ph3060, label %._crit_edge3061

.lr.ph3060:                                       ; preds = %.preheader2973
  %257 = mul nsw i64 %indvars.iv5158, %255
  %258 = mul nsw i64 %indvars.iv5158, %256
  %invariant.gep6590 = getelementptr i16, ptr %3, i64 %257
  %invariant.gep6592 = getelementptr float, ptr %3, i64 %257
  %invariant.gep6594 = getelementptr i16, ptr %3, i64 %257
  %invariant.gep6596 = getelementptr float, ptr %3, i64 %257
  br i1 %253, label %.lr.ph3060.split.us, label %.lr.ph3060.split

.lr.ph3060.split.us:                              ; preds = %.lr.ph3060, %275
  %indvars.iv5153 = phi i64 [ %indvars.iv.next5154, %275 ], [ 0, %.lr.ph3060 ]
  %259 = load double, ptr %249, align 8, !tbaa !25
  %260 = fcmp oeq double %259, 0.000000e+00
  br i1 %260, label %261, label %264

261:                                              ; preds = %.lr.ph3060.split.us
  %262 = load i32, ptr %250, align 8, !tbaa !26
  switch i32 %262, label %264 [
    i32 1, label %.thread.us
    i32 2, label %263
  ]

263:                                              ; preds = %261
  %gep6591 = getelementptr i16, ptr %invariant.gep6590, i64 %indvars.iv5153
  store i16 0, ptr %gep6591, align 2, !tbaa !38
  br label %264

.thread.us:                                       ; preds = %261
  %gep6593 = getelementptr float, ptr %invariant.gep6592, i64 %indvars.iv5153
  store float 0.000000e+00, ptr %gep6593, align 4, !tbaa !27
  br label %264

264:                                              ; preds = %.thread.us, %263, %261, %.lr.ph3060.split.us
  %265 = load i32, ptr %251, align 8, !tbaa !52
  %266 = icmp sgt i32 %265, 0
  br i1 %266, label %.lr.ph3054.us, label %._crit_edge3055.split.us.us

._crit_edge3055.split.us.us:                      ; preds = %._crit_edge3048.split.us.us.us, %264
  %.02655.lcssa.us = phi float [ 0.000000e+00, %264 ], [ %.12656.lcssa.us.us, %._crit_edge3048.split.us.us.us ]
  %267 = load i32, ptr %250, align 8, !tbaa !26
  switch i32 %267, label %275 [
    i32 1, label %.thread2836.us
    i32 2, label %268
  ]

268:                                              ; preds = %._crit_edge3055.split.us.us
  %gep6595 = getelementptr i16, ptr %invariant.gep6594, i64 %indvars.iv5153
  %269 = load i16, ptr %gep6595, align 2, !tbaa !38
  %270 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %269) #8
  %271 = fadd float %.02655.lcssa.us, %270
  %272 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %271) #8
  store i16 %272, ptr %gep6595, align 2, !tbaa !38
  br label %275

.thread2836.us:                                   ; preds = %._crit_edge3055.split.us.us
  %gep6597 = getelementptr float, ptr %invariant.gep6596, i64 %indvars.iv5153
  %273 = load float, ptr %gep6597, align 4, !tbaa !27
  %274 = fadd float %.02655.lcssa.us, %273
  store float %274, ptr %gep6597, align 4, !tbaa !27
  br label %275

275:                                              ; preds = %.thread2836.us, %268, %._crit_edge3055.split.us.us
  %indvars.iv.next5154 = add nuw nsw i64 %indvars.iv5153, 1
  %exitcond5157.not = icmp eq i64 %indvars.iv.next5154, %wide.trip.count5156
  br i1 %exitcond5157.not, label %._crit_edge3061, label %.lr.ph3060.split.us, !llvm.loop !53

.lr.ph3054.us:                                    ; preds = %264
  %276 = trunc nuw nsw i64 %indvars.iv5153 to i32
  br label %277

277:                                              ; preds = %._crit_edge3048.split.us.us.us, %.lr.ph3054.us
  %indvars.iv5150 = phi i64 [ %indvars.iv.next5151, %._crit_edge3048.split.us.us.us ], [ 0, %.lr.ph3054.us ]
  %.026553050.us.us = phi float [ %.12656.lcssa.us.us, %._crit_edge3048.split.us.us.us ], [ 0.000000e+00, %.lr.ph3054.us ]
  %278 = load i32, ptr %252, align 4, !tbaa !24
  %279 = icmp eq i32 %278, 2
  br i1 %279, label %280, label %281

280:                                              ; preds = %277
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5150, ptr noundef nonnull %0)
  %.pr2834.us.us = load i32, ptr %252, align 4, !tbaa !24
  br label %281

281:                                              ; preds = %280, %277
  %282 = phi i32 [ %.pr2834.us.us, %280 ], [ %278, %277 ]
  %283 = icmp eq i32 %282, 1
  br i1 %283, label %284, label %285

284:                                              ; preds = %281
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5150, ptr noundef nonnull %0)
  br label %285

285:                                              ; preds = %284, %281
  %286 = sdiv i32 %.fr4927, %.fr4926
  %287 = icmp sgt i32 %286, 0
  br i1 %287, label %.lr.ph3041.us.us.us.preheader, label %._crit_edge3048.split.us.us.us

.lr.ph3041.us.us.us.preheader:                    ; preds = %285
  %wide.trip.count5148 = zext nneg i32 %286 to i64
  %288 = trunc nuw nsw i64 %indvars.iv5150 to i32
  br label %.lr.ph3041.us.us.us

._crit_edge3048.split.us.us.us:                   ; preds = %._crit_edge3042.us.us.us, %285
  %.12656.lcssa.us.us = phi float [ %.026553050.us.us, %285 ], [ %348, %._crit_edge3042.us.us.us ]
  %indvars.iv.next5151 = add nuw nsw i64 %indvars.iv5150, 1
  %289 = load i32, ptr %251, align 8, !tbaa !52
  %290 = sext i32 %289 to i64
  %291 = icmp slt i64 %indvars.iv.next5151, %290
  br i1 %291, label %277, label %._crit_edge3055.split.us.us, !llvm.loop !54

.lr.ph3041.us.us.us:                              ; preds = %.lr.ph3041.us.us.us.preheader, %._crit_edge3042.us.us.us
  %indvars.iv5145 = phi i64 [ 0, %.lr.ph3041.us.us.us.preheader ], [ %indvars.iv.next5146, %._crit_edge3042.us.us.us ]
  %.126563044.us.us.us = phi float [ %.026553050.us.us, %.lr.ph3041.us.us.us.preheader ], [ %348, %._crit_edge3042.us.us.us ]
  %292 = trunc nuw nsw i64 %indvars.iv5145 to i32
  %293 = call float @libxsmm_calculate_mxfp4_scf(i32 noundef %288, i32 noundef %292, i32 noundef %276, ptr noundef nonnull %0)
  %294 = mul nuw nsw i64 %indvars.iv5145, %254
  br label %295

295:                                              ; preds = %346, %.lr.ph3041.us.us.us
  %indvars.iv5142 = phi i64 [ %indvars.iv.next5143, %346 ], [ 0, %.lr.ph3041.us.us.us ]
  %.226573038.us.us.us = phi float [ %348, %346 ], [ %.126563044.us.us.us, %.lr.ph3041.us.us.us ]
  %296 = load ptr, ptr %7, align 8, !tbaa !50
  %297 = load i64, ptr %5, align 8, !tbaa !19
  %298 = add nuw nsw i64 %indvars.iv5142, %294
  %299 = trunc nuw i64 %298 to i32
  %300 = mul nsw i32 %71, %299
  %301 = sdiv i32 %300, 2
  %302 = sext i32 %301 to i64
  %303 = getelementptr i8, ptr %296, i64 %297
  %304 = getelementptr i8, ptr %303, i64 %302
  %305 = getelementptr i8, ptr %304, i64 %indvars.iv5153
  %306 = load i8, ptr %305, align 1, !tbaa !41
  %307 = and i8 %306, 15
  %308 = call float @libxsmm_convert_mxfp4_to_float(i8 noundef zeroext %307)
  %309 = fmul float %293, %308
  %310 = lshr i8 %306, 4
  %311 = call float @libxsmm_convert_mxfp4_to_float(i8 noundef zeroext %310)
  %312 = fmul float %293, %311
  %313 = load i32, ptr %252, align 4, !tbaa !24
  %314 = icmp eq i32 %313, 2
  br i1 %314, label %315, label %333

315:                                              ; preds = %295
  %316 = load ptr, ptr %9, align 8, !tbaa !50
  %317 = load i64, ptr %6, align 8, !tbaa !19
  %318 = getelementptr i16, ptr %316, i64 %317
  %319 = getelementptr i16, ptr %318, i64 %258
  %320 = getelementptr i16, ptr %319, i64 %294
  %321 = getelementptr i16, ptr %320, i64 %indvars.iv5142
  %322 = load i16, ptr %321, align 2, !tbaa !38
  %323 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %322) #8
  %324 = load ptr, ptr %9, align 8, !tbaa !50
  %325 = load i64, ptr %6, align 8, !tbaa !19
  %326 = getelementptr i16, ptr %324, i64 %325
  %327 = getelementptr i16, ptr %326, i64 %258
  %328 = getelementptr i16, ptr %327, i64 %294
  %329 = getelementptr i16, ptr %328, i64 %indvars.iv5142
  %330 = getelementptr i8, ptr %329, i64 2
  %331 = load i16, ptr %330, align 2, !tbaa !38
  %332 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %331) #8
  %.pr2835.us.us.us = load i32, ptr %252, align 4, !tbaa !24
  br label %333

333:                                              ; preds = %315, %295
  %334 = phi i32 [ %.pr2835.us.us.us, %315 ], [ %313, %295 ]
  %.02664.us.us.us = phi float [ %332, %315 ], [ 0.000000e+00, %295 ]
  %.02662.us.us.us = phi float [ %323, %315 ], [ 0.000000e+00, %295 ]
  %335 = icmp eq i32 %334, 1
  br i1 %335, label %336, label %346

336:                                              ; preds = %333
  %337 = load ptr, ptr %8, align 8, !tbaa !50
  %338 = load i64, ptr %6, align 8, !tbaa !19
  %339 = getelementptr float, ptr %337, i64 %338
  %340 = getelementptr float, ptr %339, i64 %258
  %341 = getelementptr float, ptr %340, i64 %294
  %342 = getelementptr float, ptr %341, i64 %indvars.iv5142
  %343 = load float, ptr %342, align 4, !tbaa !27
  %344 = getelementptr i8, ptr %342, i64 4
  %345 = load float, ptr %344, align 4, !tbaa !27
  br label %346

346:                                              ; preds = %336, %333
  %.12665.us.us.us = phi float [ %345, %336 ], [ %.02664.us.us.us, %333 ]
  %.12663.us.us.us = phi float [ %343, %336 ], [ %.02662.us.us.us, %333 ]
  %347 = call float @llvm.fmuladd.f32(float %309, float %.12663.us.us.us, float %.226573038.us.us.us)
  %348 = call float @llvm.fmuladd.f32(float %312, float %.12665.us.us.us, float %347)
  %indvars.iv.next5143 = add nuw nsw i64 %indvars.iv5142, 2
  %349 = trunc nuw i64 %indvars.iv.next5143 to i32
  %350 = icmp sgt i32 %.fr4926, %349
  br i1 %350, label %295, label %._crit_edge3042.us.us.us, !llvm.loop !55

._crit_edge3042.us.us.us:                         ; preds = %346
  %indvars.iv.next5146 = add nuw nsw i64 %indvars.iv5145, 1
  %exitcond5149.not = icmp eq i64 %indvars.iv.next5146, %wide.trip.count5148
  br i1 %exitcond5149.not, label %._crit_edge3048.split.us.us.us, label %.lr.ph3041.us.us.us, !llvm.loop !56

.lr.ph3060.split:                                 ; preds = %.lr.ph3060, %384
  %indvars.iv5137 = phi i64 [ %indvars.iv.next5138, %384 ], [ 0, %.lr.ph3060 ]
  %351 = load double, ptr %249, align 8, !tbaa !25
  %352 = fcmp oeq double %351, 0.000000e+00
  br i1 %352, label %353, label %356

353:                                              ; preds = %.lr.ph3060.split
  %354 = load i32, ptr %250, align 8, !tbaa !26
  switch i32 %354, label %356 [
    i32 1, label %.thread
    i32 2, label %355
  ]

.thread:                                          ; preds = %353
  %gep6585 = getelementptr float, ptr %invariant.gep6592, i64 %indvars.iv5137
  store float 0.000000e+00, ptr %gep6585, align 4, !tbaa !27
  br label %356

355:                                              ; preds = %353
  %gep6583 = getelementptr i16, ptr %invariant.gep6590, i64 %indvars.iv5137
  store i16 0, ptr %gep6583, align 2, !tbaa !38
  br label %356

356:                                              ; preds = %353, %.thread, %355, %.lr.ph3060.split
  %357 = load i32, ptr %251, align 8, !tbaa !52
  %358 = icmp sgt i32 %357, 0
  br i1 %358, label %.lr.ph3054.preheader, label %._crit_edge3055.split

.lr.ph3054.preheader:                             ; preds = %356
  %359 = trunc nuw nsw i64 %indvars.iv5137 to i32
  br label %.lr.ph3054

.lr.ph3054:                                       ; preds = %.lr.ph3054.preheader, %._crit_edge3048.split
  %indvars.iv5134 = phi i64 [ 0, %.lr.ph3054.preheader ], [ %indvars.iv.next5135, %._crit_edge3048.split ]
  %360 = load i32, ptr %252, align 4, !tbaa !24
  %361 = icmp eq i32 %360, 2
  br i1 %361, label %362, label %363

362:                                              ; preds = %.lr.ph3054
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5134, ptr noundef nonnull %0)
  %.pr2834 = load i32, ptr %252, align 4, !tbaa !24
  br label %363

363:                                              ; preds = %362, %.lr.ph3054
  %364 = phi i32 [ %.pr2834, %362 ], [ %360, %.lr.ph3054 ]
  %365 = icmp eq i32 %364, 1
  br i1 %365, label %366, label %367

366:                                              ; preds = %363
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5134, ptr noundef nonnull %0)
  br label %367

367:                                              ; preds = %366, %363
  %368 = sdiv i32 %.fr4927, %.fr4926
  %369 = icmp sgt i32 %368, 0
  br i1 %369, label %.lr.ph3047.preheader, label %._crit_edge3048.split

.lr.ph3047.preheader:                             ; preds = %367
  %370 = trunc nuw nsw i64 %indvars.iv5134 to i32
  br label %.lr.ph3047

.lr.ph3047:                                       ; preds = %.lr.ph3047.preheader, %.lr.ph3047
  %.125843045 = phi i32 [ %372, %.lr.ph3047 ], [ 0, %.lr.ph3047.preheader ]
  %371 = call float @libxsmm_calculate_mxfp4_scf(i32 noundef %370, i32 noundef %.125843045, i32 noundef %359, ptr noundef %0)
  %372 = add nuw nsw i32 %.125843045, 1
  %exitcond5133.not = icmp eq i32 %372, %368
  br i1 %exitcond5133.not, label %._crit_edge3048.split, label %.lr.ph3047, !llvm.loop !56

._crit_edge3048.split:                            ; preds = %.lr.ph3047, %367
  %indvars.iv.next5135 = add nuw nsw i64 %indvars.iv5134, 1
  %373 = load i32, ptr %251, align 8, !tbaa !52
  %374 = sext i32 %373 to i64
  %375 = icmp slt i64 %indvars.iv.next5135, %374
  br i1 %375, label %.lr.ph3054, label %._crit_edge3055.split, !llvm.loop !54

._crit_edge3055.split:                            ; preds = %._crit_edge3048.split, %356
  %376 = load i32, ptr %250, align 8, !tbaa !26
  switch i32 %376, label %384 [
    i32 1, label %.thread2836
    i32 2, label %379
  ]

.thread2836:                                      ; preds = %._crit_edge3055.split
  %gep6589 = getelementptr float, ptr %invariant.gep6596, i64 %indvars.iv5137
  %377 = load float, ptr %gep6589, align 4, !tbaa !27
  %378 = fadd float %377, 0.000000e+00
  store float %378, ptr %gep6589, align 4, !tbaa !27
  br label %384

379:                                              ; preds = %._crit_edge3055.split
  %gep6587 = getelementptr i16, ptr %invariant.gep6594, i64 %indvars.iv5137
  %380 = load i16, ptr %gep6587, align 2, !tbaa !38
  %381 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %380) #8
  %382 = fadd float %381, 0.000000e+00
  %383 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %382) #8
  store i16 %383, ptr %gep6587, align 2, !tbaa !38
  br label %384

384:                                              ; preds = %._crit_edge3055.split, %.thread2836, %379
  %indvars.iv.next5138 = add nuw nsw i64 %indvars.iv5137, 1
  %exitcond5141.not = icmp eq i64 %indvars.iv.next5138, %wide.trip.count5140
  br i1 %exitcond5141.not, label %._crit_edge3061, label %.lr.ph3060.split, !llvm.loop !53

._crit_edge3061:                                  ; preds = %384, %275, %.preheader2973
  %indvars.iv.next5159 = add nuw nsw i64 %indvars.iv5158, 1
  %exitcond5162.not = icmp eq i64 %indvars.iv.next5159, %wide.trip.count5161
  br i1 %exitcond5162.not, label %._crit_edge3063, label %.preheader2973, !llvm.loop !57

._crit_edge3063:                                  ; preds = %._crit_edge3061, %244
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %.loopexit

385:                                              ; preds = %241
  %386 = getelementptr inbounds i8, ptr %0, i64 232
  %387 = load i32, ptr %386, align 8, !tbaa !58
  %.not2804 = icmp eq i32 %387, 0
  br i1 %.not2804, label %587, label %388

388:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store ptr %1, ptr %10, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  store ptr %2, ptr %11, align 8, !tbaa !50
  %389 = getelementptr inbounds i8, ptr %0, i64 216
  %390 = load i32, ptr %389, align 8, !tbaa !51
  %.fr = freeze i32 %390
  %391 = icmp sgt i32 %79, 0
  br i1 %391, label %.preheader2972.lr.ph, label %._crit_edge3091

.preheader2972.lr.ph:                             ; preds = %388
  %392 = icmp sgt i32 %77, 0
  %393 = getelementptr inbounds i8, ptr %0, i64 56
  %394 = getelementptr inbounds i8, ptr %0, i64 8
  %395 = getelementptr inbounds i8, ptr %0, i64 112
  %396 = icmp sgt i32 %.fr, 0
  %397 = zext i32 %.fr to i64
  %398 = sext i32 %71 to i64
  %399 = shl nsw i64 %398, 2
  %400 = sext i32 %75 to i64
  %401 = sext i32 %73 to i64
  %wide.trip.count5191 = zext nneg i32 %79 to i64
  %wide.trip.count5170 = zext nneg i32 %77 to i64
  %wide.trip.count5186 = zext nneg i32 %77 to i64
  br label %.preheader2972

.preheader2972:                                   ; preds = %.preheader2972.lr.ph, %._crit_edge3088
  %indvars.iv5188 = phi i64 [ 0, %.preheader2972.lr.ph ], [ %indvars.iv.next5189, %._crit_edge3088 ]
  br i1 %392, label %.lr.ph3087, label %._crit_edge3088

.lr.ph3087:                                       ; preds = %.preheader2972
  %402 = mul nsw i64 %indvars.iv5188, %400
  %403 = mul nsw i64 %indvars.iv5188, %401
  %invariant.gep6606 = getelementptr i16, ptr %3, i64 %402
  %invariant.gep6608 = getelementptr float, ptr %3, i64 %402
  %404 = trunc nuw nsw i64 %indvars.iv5188 to i32
  %invariant.gep6610 = getelementptr i16, ptr %3, i64 %402
  %invariant.gep6612 = getelementptr float, ptr %3, i64 %402
  br i1 %396, label %.lr.ph3087.split.us, label %.lr.ph3087.split

.lr.ph3087.split.us:                              ; preds = %.lr.ph3087, %421
  %indvars.iv5183 = phi i64 [ %indvars.iv.next5184, %421 ], [ 0, %.lr.ph3087 ]
  %405 = load double, ptr %393, align 8, !tbaa !25
  %406 = fcmp oeq double %405, 0.000000e+00
  br i1 %406, label %407, label %410

407:                                              ; preds = %.lr.ph3087.split.us
  %408 = load i32, ptr %394, align 8, !tbaa !26
  switch i32 %408, label %410 [
    i32 1, label %.thread2837.us
    i32 2, label %409
  ]

409:                                              ; preds = %407
  %gep6607 = getelementptr i16, ptr %invariant.gep6606, i64 %indvars.iv5183
  store i16 0, ptr %gep6607, align 2, !tbaa !38
  br label %410

.thread2837.us:                                   ; preds = %407
  %gep6609 = getelementptr float, ptr %invariant.gep6608, i64 %indvars.iv5183
  store float 0.000000e+00, ptr %gep6609, align 4, !tbaa !27
  br label %410

410:                                              ; preds = %.thread2837.us, %409, %407, %.lr.ph3087.split.us
  %411 = load i32, ptr %395, align 8, !tbaa !52
  %412 = icmp sgt i32 %411, 0
  br i1 %412, label %.lr.ph3081.us, label %._crit_edge3082.split.us.us

._crit_edge3082.split.us.us:                      ; preds = %._crit_edge3074.split.us.us.us, %410
  %.02666.lcssa.us = phi float [ 0.000000e+00, %410 ], [ %.12667.lcssa.us.us, %._crit_edge3074.split.us.us.us ]
  %413 = load i32, ptr %394, align 8, !tbaa !26
  switch i32 %413, label %421 [
    i32 1, label %.thread2838.us
    i32 2, label %414
  ]

414:                                              ; preds = %._crit_edge3082.split.us.us
  %gep6611 = getelementptr i16, ptr %invariant.gep6610, i64 %indvars.iv5183
  %415 = load i16, ptr %gep6611, align 2, !tbaa !38
  %416 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %415) #8
  %417 = fadd float %.02666.lcssa.us, %416
  %418 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %417) #8
  store i16 %418, ptr %gep6611, align 2, !tbaa !38
  br label %421

.thread2838.us:                                   ; preds = %._crit_edge3082.split.us.us
  %gep6613 = getelementptr float, ptr %invariant.gep6612, i64 %indvars.iv5183
  %419 = load float, ptr %gep6613, align 4, !tbaa !27
  %420 = fadd float %.02666.lcssa.us, %419
  store float %420, ptr %gep6613, align 4, !tbaa !27
  br label %421

421:                                              ; preds = %.thread2838.us, %414, %._crit_edge3082.split.us.us
  %indvars.iv.next5184 = add nuw nsw i64 %indvars.iv5183, 1
  %exitcond5187.not = icmp eq i64 %indvars.iv.next5184, %wide.trip.count5186
  br i1 %exitcond5187.not, label %._crit_edge3088, label %.lr.ph3087.split.us, !llvm.loop !59

.lr.ph3081.us:                                    ; preds = %410
  %422 = shl nsw i64 %indvars.iv5183, 2
  %423 = trunc nuw nsw i64 %indvars.iv5183 to i32
  br label %424

424:                                              ; preds = %._crit_edge3074.split.us.us.us, %.lr.ph3081.us
  %indvars.iv5180 = phi i64 [ %indvars.iv.next5181, %._crit_edge3074.split.us.us.us ], [ 0, %.lr.ph3081.us ]
  %.026663077.us.us = phi float [ %.12667.lcssa.us.us, %._crit_edge3074.split.us.us.us ], [ 0.000000e+00, %.lr.ph3081.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5180, ptr noundef nonnull %0)
  %425 = sdiv i32 %.fr4927, %.fr
  %426 = icmp sgt i32 %425, 0
  br i1 %426, label %.lr.ph3067.us.us.us.preheader, label %._crit_edge3074.split.us.us.us

.lr.ph3067.us.us.us.preheader:                    ; preds = %424
  %wide.trip.count5178 = zext nneg i32 %425 to i64
  %427 = trunc nuw nsw i64 %indvars.iv5180 to i32
  br label %.lr.ph3067.us.us.us

._crit_edge3074.split.us.us.us:                   ; preds = %._crit_edge3068.us.us.us, %424
  %.12667.lcssa.us.us = phi float [ %.026663077.us.us, %424 ], [ %557, %._crit_edge3068.us.us.us ]
  %indvars.iv.next5181 = add nuw nsw i64 %indvars.iv5180, 1
  %428 = load i32, ptr %395, align 8, !tbaa !52
  %429 = sext i32 %428 to i64
  %430 = icmp slt i64 %indvars.iv.next5181, %429
  br i1 %430, label %424, label %._crit_edge3082.split.us.us, !llvm.loop !60

.lr.ph3067.us.us.us:                              ; preds = %.lr.ph3067.us.us.us.preheader, %._crit_edge3068.us.us.us
  %indvars.iv5175 = phi i64 [ 0, %.lr.ph3067.us.us.us.preheader ], [ %indvars.iv.next5176, %._crit_edge3068.us.us.us ]
  %.126673070.us.us.us = phi float [ %.026663077.us.us, %.lr.ph3067.us.us.us.preheader ], [ %557, %._crit_edge3068.us.us.us ]
  %431 = trunc nuw nsw i64 %indvars.iv5175 to i32
  %432 = call float @libxsmm_calculate_mxfp4_scf(i32 noundef %427, i32 noundef %431, i32 noundef %423, ptr noundef %0)
  %433 = call float @libxsmm_calculate_mxfp4_scf_b(i32 noundef %427, i32 noundef %431, i32 noundef %404, ptr noundef %0)
  %434 = mul nuw nsw i64 %indvars.iv5175, %397
  br label %435

435:                                              ; preds = %435, %.lr.ph3067.us.us.us
  %indvars.iv5172 = phi i64 [ %indvars.iv.next5173, %435 ], [ 0, %.lr.ph3067.us.us.us ]
  %.026683064.us.us.us = phi i32 [ %552, %435 ], [ 0, %.lr.ph3067.us.us.us ]
  %436 = load ptr, ptr %10, align 8, !tbaa !50
  %437 = load i64, ptr %5, align 8, !tbaa !19
  %438 = add nuw nsw i64 %434, %indvars.iv5172
  %439 = lshr i64 %438, 3
  %440 = mul i64 %399, %439
  %441 = getelementptr i8, ptr %436, i64 %437
  %442 = getelementptr i8, ptr %441, i64 %440
  %443 = getelementptr i8, ptr %442, i64 %422
  %444 = load i8, ptr %443, align 1, !tbaa !41
  %445 = and i8 %444, 15
  %446 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %445)
  %447 = lshr i8 %444, 4
  %448 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %447)
  %449 = load ptr, ptr %11, align 8, !tbaa !50
  %450 = load i64, ptr %6, align 8, !tbaa !19
  %451 = getelementptr i8, ptr %449, i64 %450
  %452 = getelementptr i8, ptr %451, i64 %403
  %453 = getelementptr i8, ptr %452, i64 %434
  %454 = getelementptr i8, ptr %453, i64 %indvars.iv5172
  %455 = load i8, ptr %454, align 1, !tbaa !41
  %456 = getelementptr i8, ptr %454, i64 4
  %457 = load i8, ptr %456, align 1, !tbaa !41
  %458 = sext i8 %446 to i32
  %459 = sext i8 %455 to i32
  %460 = mul nsw i32 %459, %458
  %461 = sext i8 %448 to i32
  %462 = sext i8 %457 to i32
  %463 = mul nsw i32 %462, %461
  %464 = load ptr, ptr %10, align 8, !tbaa !50
  %465 = load i64, ptr %5, align 8, !tbaa !19
  %466 = getelementptr i8, ptr %464, i64 %465
  %467 = getelementptr i8, ptr %466, i64 %440
  %468 = getelementptr i8, ptr %467, i64 %422
  %469 = getelementptr i8, ptr %468, i64 1
  %470 = load i8, ptr %469, align 1, !tbaa !41
  %471 = and i8 %470, 15
  %472 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %471)
  %473 = lshr i8 %470, 4
  %474 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %473)
  %475 = load ptr, ptr %11, align 8, !tbaa !50
  %476 = load i64, ptr %6, align 8, !tbaa !19
  %477 = getelementptr i8, ptr %475, i64 %476
  %478 = getelementptr i8, ptr %477, i64 %403
  %479 = getelementptr i8, ptr %478, i64 %434
  %480 = getelementptr i8, ptr %479, i64 %indvars.iv5172
  %481 = getelementptr i8, ptr %480, i64 1
  %482 = load i8, ptr %481, align 1, !tbaa !41
  %483 = getelementptr i8, ptr %480, i64 5
  %484 = load i8, ptr %483, align 1, !tbaa !41
  %485 = sext i8 %472 to i32
  %486 = sext i8 %482 to i32
  %487 = mul nsw i32 %486, %485
  %488 = sext i8 %474 to i32
  %489 = sext i8 %484 to i32
  %490 = mul nsw i32 %489, %488
  %491 = load ptr, ptr %10, align 8, !tbaa !50
  %492 = load i64, ptr %5, align 8, !tbaa !19
  %493 = getelementptr i8, ptr %491, i64 %492
  %494 = getelementptr i8, ptr %493, i64 %440
  %495 = getelementptr i8, ptr %494, i64 %422
  %496 = getelementptr i8, ptr %495, i64 2
  %497 = load i8, ptr %496, align 1, !tbaa !41
  %498 = and i8 %497, 15
  %499 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %498)
  %500 = lshr i8 %497, 4
  %501 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %500)
  %502 = load ptr, ptr %11, align 8, !tbaa !50
  %503 = load i64, ptr %6, align 8, !tbaa !19
  %504 = getelementptr i8, ptr %502, i64 %503
  %505 = getelementptr i8, ptr %504, i64 %403
  %506 = getelementptr i8, ptr %505, i64 %434
  %507 = getelementptr i8, ptr %506, i64 %indvars.iv5172
  %508 = getelementptr i8, ptr %507, i64 2
  %509 = load i8, ptr %508, align 1, !tbaa !41
  %510 = getelementptr i8, ptr %507, i64 6
  %511 = load i8, ptr %510, align 1, !tbaa !41
  %512 = sext i8 %499 to i32
  %513 = sext i8 %509 to i32
  %514 = mul nsw i32 %513, %512
  %515 = sext i8 %501 to i32
  %516 = sext i8 %511 to i32
  %517 = mul nsw i32 %516, %515
  %518 = load ptr, ptr %10, align 8, !tbaa !50
  %519 = load i64, ptr %5, align 8, !tbaa !19
  %520 = getelementptr i8, ptr %518, i64 %519
  %521 = getelementptr i8, ptr %520, i64 %440
  %522 = getelementptr i8, ptr %521, i64 %422
  %523 = getelementptr i8, ptr %522, i64 3
  %524 = load i8, ptr %523, align 1, !tbaa !41
  %525 = and i8 %524, 15
  %526 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %525)
  %527 = lshr i8 %524, 4
  %528 = call signext i8 @libxsmm_convert_mxfp4_to_char(i8 noundef zeroext %527)
  %529 = load ptr, ptr %11, align 8, !tbaa !50
  %530 = load i64, ptr %6, align 8, !tbaa !19
  %531 = getelementptr i8, ptr %529, i64 %530
  %532 = getelementptr i8, ptr %531, i64 %403
  %533 = getelementptr i8, ptr %532, i64 %434
  %534 = getelementptr i8, ptr %533, i64 %indvars.iv5172
  %535 = getelementptr i8, ptr %534, i64 3
  %536 = load i8, ptr %535, align 1, !tbaa !41
  %537 = getelementptr i8, ptr %534, i64 7
  %538 = load i8, ptr %537, align 1, !tbaa !41
  %539 = sext i8 %526 to i32
  %540 = sext i8 %536 to i32
  %541 = mul nsw i32 %540, %539
  %542 = sext i8 %528 to i32
  %543 = sext i8 %538 to i32
  %544 = mul nsw i32 %543, %542
  %545 = add i32 %460, %.026683064.us.us.us
  %546 = add i32 %545, %463
  %547 = add i32 %546, %487
  %548 = add i32 %547, %490
  %549 = add i32 %548, %514
  %550 = add i32 %549, %517
  %551 = add i32 %550, %541
  %552 = add i32 %551, %544
  %indvars.iv.next5173 = add nuw nsw i64 %indvars.iv5172, 8
  %553 = trunc nuw i64 %indvars.iv.next5173 to i32
  %554 = icmp sgt i32 %.fr, %553
  br i1 %554, label %435, label %._crit_edge3068.us.us.us, !llvm.loop !61

._crit_edge3068.us.us.us:                         ; preds = %435
  %555 = sitofp i32 %552 to float
  %556 = fmul float %432, %555
  %557 = call float @llvm.fmuladd.f32(float %556, float %433, float %.126673070.us.us.us)
  %indvars.iv.next5176 = add nuw nsw i64 %indvars.iv5175, 1
  %exitcond5179.not = icmp eq i64 %indvars.iv.next5176, %wide.trip.count5178
  br i1 %exitcond5179.not, label %._crit_edge3074.split.us.us.us, label %.lr.ph3067.us.us.us, !llvm.loop !62

.lr.ph3087.split:                                 ; preds = %.lr.ph3087, %586
  %indvars.iv5167 = phi i64 [ %indvars.iv.next5168, %586 ], [ 0, %.lr.ph3087 ]
  %558 = load double, ptr %393, align 8, !tbaa !25
  %559 = fcmp oeq double %558, 0.000000e+00
  br i1 %559, label %560, label %563

560:                                              ; preds = %.lr.ph3087.split
  %561 = load i32, ptr %394, align 8, !tbaa !26
  switch i32 %561, label %563 [
    i32 1, label %.thread2837
    i32 2, label %562
  ]

.thread2837:                                      ; preds = %560
  %gep6601 = getelementptr float, ptr %invariant.gep6608, i64 %indvars.iv5167
  store float 0.000000e+00, ptr %gep6601, align 4, !tbaa !27
  br label %563

562:                                              ; preds = %560
  %gep6599 = getelementptr i16, ptr %invariant.gep6606, i64 %indvars.iv5167
  store i16 0, ptr %gep6599, align 2, !tbaa !38
  br label %563

563:                                              ; preds = %560, %.thread2837, %562, %.lr.ph3087.split
  %564 = load i32, ptr %395, align 8, !tbaa !52
  %565 = icmp sgt i32 %564, 0
  br i1 %565, label %.lr.ph3081.preheader, label %._crit_edge3082.split

.lr.ph3081.preheader:                             ; preds = %563
  %566 = trunc nuw nsw i64 %indvars.iv5167 to i32
  br label %.lr.ph3081

.lr.ph3081:                                       ; preds = %.lr.ph3081.preheader, %._crit_edge3074.split
  %indvars.iv5164 = phi i64 [ 0, %.lr.ph3081.preheader ], [ %indvars.iv.next5165, %._crit_edge3074.split ]
  %.026663077 = phi float [ 0.000000e+00, %.lr.ph3081.preheader ], [ %.12667.lcssa, %._crit_edge3074.split ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5164, ptr noundef nonnull %0)
  %567 = sdiv i32 %.fr4927, %.fr
  %568 = icmp sgt i32 %567, 0
  br i1 %568, label %.lr.ph3073.preheader, label %._crit_edge3074.split

.lr.ph3073.preheader:                             ; preds = %.lr.ph3081
  %569 = trunc nuw nsw i64 %indvars.iv5164 to i32
  br label %.lr.ph3073

.lr.ph3073:                                       ; preds = %.lr.ph3073.preheader, %.lr.ph3073
  %.225853071 = phi i32 [ %574, %.lr.ph3073 ], [ 0, %.lr.ph3073.preheader ]
  %.126673070 = phi float [ %573, %.lr.ph3073 ], [ %.026663077, %.lr.ph3073.preheader ]
  %570 = call float @libxsmm_calculate_mxfp4_scf(i32 noundef %569, i32 noundef %.225853071, i32 noundef %566, ptr noundef %0)
  %571 = call float @libxsmm_calculate_mxfp4_scf_b(i32 noundef %569, i32 noundef %.225853071, i32 noundef %404, ptr noundef %0)
  %572 = fmul float %570, 0.000000e+00
  %573 = call float @llvm.fmuladd.f32(float %572, float %571, float %.126673070)
  %574 = add nuw nsw i32 %.225853071, 1
  %exitcond5163.not = icmp eq i32 %574, %567
  br i1 %exitcond5163.not, label %._crit_edge3074.split, label %.lr.ph3073, !llvm.loop !62

._crit_edge3074.split:                            ; preds = %.lr.ph3073, %.lr.ph3081
  %.12667.lcssa = phi float [ %.026663077, %.lr.ph3081 ], [ %573, %.lr.ph3073 ]
  %indvars.iv.next5165 = add nuw nsw i64 %indvars.iv5164, 1
  %575 = load i32, ptr %395, align 8, !tbaa !52
  %576 = sext i32 %575 to i64
  %577 = icmp slt i64 %indvars.iv.next5165, %576
  br i1 %577, label %.lr.ph3081, label %._crit_edge3082.split, !llvm.loop !60

._crit_edge3082.split:                            ; preds = %._crit_edge3074.split, %563
  %.02666.lcssa = phi float [ 0.000000e+00, %563 ], [ %.12667.lcssa, %._crit_edge3074.split ]
  %578 = load i32, ptr %394, align 8, !tbaa !26
  switch i32 %578, label %586 [
    i32 1, label %.thread2838
    i32 2, label %581
  ]

.thread2838:                                      ; preds = %._crit_edge3082.split
  %gep6605 = getelementptr float, ptr %invariant.gep6612, i64 %indvars.iv5167
  %579 = load float, ptr %gep6605, align 4, !tbaa !27
  %580 = fadd float %.02666.lcssa, %579
  store float %580, ptr %gep6605, align 4, !tbaa !27
  br label %586

581:                                              ; preds = %._crit_edge3082.split
  %gep6603 = getelementptr i16, ptr %invariant.gep6610, i64 %indvars.iv5167
  %582 = load i16, ptr %gep6603, align 2, !tbaa !38
  %583 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %582) #8
  %584 = fadd float %.02666.lcssa, %583
  %585 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %584) #8
  store i16 %585, ptr %gep6603, align 2, !tbaa !38
  br label %586

586:                                              ; preds = %._crit_edge3082.split, %.thread2838, %581
  %indvars.iv.next5168 = add nuw nsw i64 %indvars.iv5167, 1
  %exitcond5171.not = icmp eq i64 %indvars.iv.next5168, %wide.trip.count5170
  br i1 %exitcond5171.not, label %._crit_edge3088, label %.lr.ph3087.split, !llvm.loop !59

._crit_edge3088:                                  ; preds = %586, %421, %.preheader2972
  %indvars.iv.next5189 = add nuw nsw i64 %indvars.iv5188, 1
  %exitcond5192.not = icmp eq i64 %indvars.iv.next5189, %wide.trip.count5191
  br i1 %exitcond5192.not, label %._crit_edge3091, label %.preheader2972, !llvm.loop !63

._crit_edge3091:                                  ; preds = %._crit_edge3088, %388
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %.loopexit

587:                                              ; preds = %385
  %588 = getelementptr inbounds i8, ptr %0, i64 236
  %589 = load i32, ptr %588, align 4, !tbaa !64
  %.not2805 = icmp eq i32 %589, 0
  br i1 %.not2805, label %711, label %590

590:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  store ptr %1, ptr %12, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store ptr %2, ptr %13, align 8, !tbaa !50
  %591 = icmp sgt i32 %79, 0
  br i1 %591, label %.preheader2971.lr.ph, label %._crit_edge3106

.preheader2971.lr.ph:                             ; preds = %590
  %592 = icmp sgt i32 %77, 0
  %593 = getelementptr inbounds i8, ptr %0, i64 56
  %594 = getelementptr inbounds i8, ptr %0, i64 112
  %595 = sdiv i32 %.fr4927, 8
  %596 = icmp sgt i32 %.fr4927, 7
  %597 = shl i32 %71, 2
  %598 = sext i32 %75 to i64
  %599 = sext i32 %73 to i64
  %wide.trip.count5217 = zext nneg i32 %79 to i64
  %wide.trip.count5199 = zext nneg i32 %77 to i64
  %wide.trip.count5212 = zext nneg i32 %77 to i64
  %wide.trip.count5204 = zext nneg i32 %595 to i64
  br label %.preheader2971

.preheader2971:                                   ; preds = %.preheader2971.lr.ph, %._crit_edge3104
  %indvars.iv5214 = phi i64 [ 0, %.preheader2971.lr.ph ], [ %indvars.iv.next5215, %._crit_edge3104 ]
  br i1 %592, label %.lr.ph3103, label %._crit_edge3104

.lr.ph3103:                                       ; preds = %.preheader2971
  %600 = mul nsw i64 %indvars.iv5214, %598
  %601 = mul nsw i64 %indvars.iv5214, %599
  %invariant.gep6616 = getelementptr i32, ptr %3, i64 %600
  br i1 %596, label %.lr.ph3103.split.us.preheader, label %.lr.ph3103.split

.lr.ph3103.split.us.preheader:                    ; preds = %.lr.ph3103
  %invariant.gep6618 = getelementptr i32, ptr %3, i64 %600
  br label %.lr.ph3103.split.us

.lr.ph3103.split.us:                              ; preds = %.lr.ph3103.split.us.preheader, %._crit_edge3099.split.us.us
  %indvars.iv5209 = phi i64 [ 0, %.lr.ph3103.split.us.preheader ], [ %indvars.iv.next5210, %._crit_edge3099.split.us.us ]
  %602 = load double, ptr %593, align 8, !tbaa !25
  %603 = fcmp oeq double %602, 0.000000e+00
  br i1 %603, label %604, label %605

604:                                              ; preds = %.lr.ph3103.split.us
  %gep6617 = getelementptr i32, ptr %invariant.gep6616, i64 %indvars.iv5209
  store i32 0, ptr %gep6617, align 4, !tbaa !65
  br label %605

605:                                              ; preds = %604, %.lr.ph3103.split.us
  %606 = load i32, ptr %594, align 8, !tbaa !52
  %607 = icmp sgt i32 %606, 0
  br i1 %607, label %.lr.ph3098.us, label %._crit_edge3099.split.us.us

._crit_edge3099.split.us.us:                      ; preds = %._crit_edge3095.us.us, %605
  %indvars.iv.next5210 = add nuw nsw i64 %indvars.iv5209, 1
  %exitcond5213.not = icmp eq i64 %indvars.iv.next5210, %wide.trip.count5212
  br i1 %exitcond5213.not, label %._crit_edge3104, label %.lr.ph3103.split.us, !llvm.loop !66

.lr.ph3098.us:                                    ; preds = %605
  %608 = shl nsw i64 %indvars.iv5209, 2
  %gep6619 = getelementptr i32, ptr %invariant.gep6618, i64 %indvars.iv5209
  %609 = trunc nuw nsw i64 %indvars.iv5209 to i32
  br label %.lr.ph3094.us.us

.lr.ph3094.us.us:                                 ; preds = %._crit_edge3095.us.us, %.lr.ph3098.us
  %indvars.iv5206 = phi i64 [ %indvars.iv.next5207, %._crit_edge3095.us.us ], [ 0, %.lr.ph3098.us ]
  %610 = trunc nuw nsw i64 %indvars.iv5206 to i32
  %611 = call zeroext i8 @libxsmm_calculate_zpt(i32 noundef %610, i32 noundef %609, ptr noundef nonnull %0)
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5206, ptr noundef nonnull %0)
  %612 = load ptr, ptr %12, align 8, !tbaa !50
  %613 = load i64, ptr %5, align 8, !tbaa !19
  %614 = getelementptr i8, ptr %612, i64 %613
  %invariant.gep.us.us = getelementptr i8, ptr %614, i64 %608
  %615 = load ptr, ptr %13, align 8, !tbaa !50
  %616 = load i64, ptr %6, align 8, !tbaa !19
  %617 = getelementptr i8, ptr %615, i64 %616
  %618 = getelementptr i8, ptr %617, i64 %601
  %.promoted.us.us = load i32, ptr %gep6619, align 4, !tbaa !65
  br label %619

619:                                              ; preds = %619, %.lr.ph3094.us.us
  %indvars.iv5201 = phi i64 [ %indvars.iv.next5202, %619 ], [ 0, %.lr.ph3094.us.us ]
  %620 = phi i32 [ %695, %619 ], [ %.promoted.us.us, %.lr.ph3094.us.us ]
  %621 = trunc nuw nsw i64 %indvars.iv5201 to i32
  %622 = mul i32 %597, %621
  %623 = sext i32 %622 to i64
  %gep.us.us = getelementptr i8, ptr %invariant.gep.us.us, i64 %623
  %624 = load i8, ptr %gep.us.us, align 1, !tbaa !41
  %625 = and i8 %624, 15
  %626 = lshr i8 %624, 4
  %627 = sub i8 %625, %611
  %628 = sub i8 %626, %611
  %629 = sext i8 %627 to i32
  %630 = shl nsw i64 %indvars.iv5201, 3
  %631 = getelementptr i8, ptr %618, i64 %630
  %632 = load i8, ptr %631, align 1, !tbaa !41
  %633 = zext i8 %632 to i32
  %634 = mul nsw i32 %633, %629
  %635 = add nsw i32 %634, %620
  store i32 %635, ptr %gep6619, align 4, !tbaa !65
  %636 = sext i8 %628 to i32
  %637 = getelementptr i8, ptr %631, i64 4
  %638 = load i8, ptr %637, align 1, !tbaa !41
  %639 = zext i8 %638 to i32
  %640 = mul nsw i32 %639, %636
  %641 = add nsw i32 %640, %635
  store i32 %641, ptr %gep6619, align 4, !tbaa !65
  %642 = getelementptr i8, ptr %gep.us.us, i64 1
  %643 = load i8, ptr %642, align 1, !tbaa !41
  %644 = and i8 %643, 15
  %645 = lshr i8 %643, 4
  %646 = sub i8 %644, %611
  %647 = sub i8 %645, %611
  %648 = sext i8 %646 to i32
  %649 = getelementptr i8, ptr %631, i64 1
  %650 = load i8, ptr %649, align 1, !tbaa !41
  %651 = zext i8 %650 to i32
  %652 = mul nsw i32 %648, %651
  %653 = add nsw i32 %652, %641
  store i32 %653, ptr %gep6619, align 4, !tbaa !65
  %654 = sext i8 %647 to i32
  %655 = getelementptr i8, ptr %631, i64 5
  %656 = load i8, ptr %655, align 1, !tbaa !41
  %657 = zext i8 %656 to i32
  %658 = mul nsw i32 %657, %654
  %659 = add nsw i32 %653, %658
  store i32 %659, ptr %gep6619, align 4, !tbaa !65
  %660 = getelementptr i8, ptr %gep.us.us, i64 2
  %661 = load i8, ptr %660, align 1, !tbaa !41
  %662 = and i8 %661, 15
  %663 = lshr i8 %661, 4
  %664 = sub i8 %662, %611
  %665 = sub i8 %663, %611
  %666 = sext i8 %664 to i32
  %667 = getelementptr i8, ptr %631, i64 2
  %668 = load i8, ptr %667, align 1, !tbaa !41
  %669 = zext i8 %668 to i32
  %670 = mul nsw i32 %666, %669
  %671 = add nsw i32 %670, %659
  store i32 %671, ptr %gep6619, align 4, !tbaa !65
  %672 = sext i8 %665 to i32
  %673 = getelementptr i8, ptr %631, i64 6
  %674 = load i8, ptr %673, align 1, !tbaa !41
  %675 = zext i8 %674 to i32
  %676 = mul nsw i32 %675, %672
  %677 = add nsw i32 %671, %676
  store i32 %677, ptr %gep6619, align 4, !tbaa !65
  %678 = getelementptr i8, ptr %gep.us.us, i64 3
  %679 = load i8, ptr %678, align 1, !tbaa !41
  %680 = and i8 %679, 15
  %681 = lshr i8 %679, 4
  %682 = sub i8 %680, %611
  %683 = sub i8 %681, %611
  %684 = sext i8 %682 to i32
  %685 = getelementptr i8, ptr %631, i64 3
  %686 = load i8, ptr %685, align 1, !tbaa !41
  %687 = zext i8 %686 to i32
  %688 = mul nsw i32 %684, %687
  %689 = add nsw i32 %688, %677
  store i32 %689, ptr %gep6619, align 4, !tbaa !65
  %690 = sext i8 %683 to i32
  %691 = getelementptr i8, ptr %631, i64 7
  %692 = load i8, ptr %691, align 1, !tbaa !41
  %693 = zext i8 %692 to i32
  %694 = mul nsw i32 %693, %690
  %695 = add nsw i32 %689, %694
  store i32 %695, ptr %gep6619, align 4, !tbaa !65
  %indvars.iv.next5202 = add nuw nsw i64 %indvars.iv5201, 1
  %exitcond5205.not = icmp eq i64 %indvars.iv.next5202, %wide.trip.count5204
  br i1 %exitcond5205.not, label %._crit_edge3095.us.us, label %619, !llvm.loop !67

._crit_edge3095.us.us:                            ; preds = %619
  %indvars.iv.next5207 = add nuw nsw i64 %indvars.iv5206, 1
  %696 = load i32, ptr %594, align 8, !tbaa !52
  %697 = sext i32 %696 to i64
  %698 = icmp slt i64 %indvars.iv.next5207, %697
  br i1 %698, label %.lr.ph3094.us.us, label %._crit_edge3099.split.us.us, !llvm.loop !68

.lr.ph3103.split:                                 ; preds = %.lr.ph3103, %._crit_edge3099.split
  %indvars.iv5196 = phi i64 [ %indvars.iv.next5197, %._crit_edge3099.split ], [ 0, %.lr.ph3103 ]
  %699 = load double, ptr %593, align 8, !tbaa !25
  %700 = fcmp oeq double %699, 0.000000e+00
  br i1 %700, label %701, label %702

701:                                              ; preds = %.lr.ph3103.split
  %gep6615 = getelementptr i32, ptr %invariant.gep6616, i64 %indvars.iv5196
  store i32 0, ptr %gep6615, align 4, !tbaa !65
  br label %702

702:                                              ; preds = %701, %.lr.ph3103.split
  %703 = load i32, ptr %594, align 8, !tbaa !52
  %704 = icmp sgt i32 %703, 0
  br i1 %704, label %.lr.ph3098.preheader, label %._crit_edge3099.split

.lr.ph3098.preheader:                             ; preds = %702
  %705 = trunc nuw nsw i64 %indvars.iv5196 to i32
  br label %.lr.ph3098

.lr.ph3098:                                       ; preds = %.lr.ph3098.preheader, %.lr.ph3098
  %indvars.iv5193 = phi i64 [ 0, %.lr.ph3098.preheader ], [ %indvars.iv.next5194, %.lr.ph3098 ]
  %706 = trunc nuw nsw i64 %indvars.iv5193 to i32
  %707 = call zeroext i8 @libxsmm_calculate_zpt(i32 noundef %706, i32 noundef %705, ptr noundef nonnull %0)
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5193, ptr noundef nonnull %0)
  %indvars.iv.next5194 = add nuw nsw i64 %indvars.iv5193, 1
  %708 = load i32, ptr %594, align 8, !tbaa !52
  %709 = sext i32 %708 to i64
  %710 = icmp slt i64 %indvars.iv.next5194, %709
  br i1 %710, label %.lr.ph3098, label %._crit_edge3099.split, !llvm.loop !68

._crit_edge3099.split:                            ; preds = %.lr.ph3098, %702
  %indvars.iv.next5197 = add nuw nsw i64 %indvars.iv5196, 1
  %exitcond5200.not = icmp eq i64 %indvars.iv.next5197, %wide.trip.count5199
  br i1 %exitcond5200.not, label %._crit_edge3104, label %.lr.ph3103.split, !llvm.loop !66

._crit_edge3104:                                  ; preds = %._crit_edge3099.split, %._crit_edge3099.split.us.us, %.preheader2971
  %indvars.iv.next5215 = add nuw nsw i64 %indvars.iv5214, 1
  %exitcond5218.not = icmp eq i64 %indvars.iv.next5215, %wide.trip.count5217
  br i1 %exitcond5218.not, label %._crit_edge3106, label %.preheader2971, !llvm.loop !69

._crit_edge3106:                                  ; preds = %._crit_edge3104, %590
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %.loopexit

711:                                              ; preds = %587
  %712 = load i32, ptr %0, align 8, !tbaa !23
  switch i32 %712, label %.thread2862 [
    i32 0, label %713
    i32 1, label %838
    i32 10, label %963
    i32 12, label %1045
    i32 4, label %2167
  ]

713:                                              ; preds = %711
  %714 = getelementptr inbounds i8, ptr %0, i64 4
  %715 = load i32, ptr %714, align 4, !tbaa !24
  %716 = icmp eq i32 %715, 0
  br i1 %716, label %717, label %.thread2862

717:                                              ; preds = %713
  %718 = getelementptr inbounds i8, ptr %0, i64 8
  %719 = load i32, ptr %718, align 8, !tbaa !26
  %720 = icmp eq i32 %719, 0
  br i1 %720, label %721, label %.thread2862

721:                                              ; preds = %717
  %722 = getelementptr inbounds i8, ptr %0, i64 12
  %723 = load i32, ptr %722, align 4, !tbaa !70
  %724 = icmp eq i32 %723, 0
  br i1 %724, label %725, label %.thread2862

725:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  store ptr %1, ptr %14, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  store ptr %2, ptr %15, align 8, !tbaa !50
  %726 = icmp sgt i32 %79, 0
  br i1 %726, label %.preheader2941.lr.ph, label %._crit_edge3446

.preheader2941.lr.ph:                             ; preds = %725
  %727 = icmp sgt i32 %77, 0
  %728 = getelementptr inbounds i8, ptr %0, i64 56
  %729 = getelementptr inbounds i8, ptr %0, i64 112
  %730 = icmp sgt i32 %.fr4927, 0
  %731 = getelementptr inbounds i8, ptr %0, i64 68
  %732 = getelementptr inbounds i8, ptr %0, i64 64
  %733 = sext i32 %73 to i64
  %734 = sext i32 %71 to i64
  %735 = sext i32 %75 to i64
  %wide.trip.count5668 = zext nneg i32 %79 to i64
  %wide.trip.count5635 = zext nneg i32 %77 to i64
  %wide.trip.count5663 = zext nneg i32 %77 to i64
  %wide.trip.count5640 = zext i32 %.fr4927 to i64
  %736 = add nsw i64 %wide.trip.count5640, -1
  %xtraiter7563 = and i64 %wide.trip.count5640, 1
  %737 = icmp eq i64 %736, 0
  %unroll_iter7566 = and i64 %wide.trip.count5640, 2147483646
  %lcmp.mod7565.not = icmp eq i64 %xtraiter7563, 0
  %xtraiter7568 = and i64 %wide.trip.count5640, 1
  %738 = icmp eq i64 %736, 0
  %unroll_iter7571 = and i64 %wide.trip.count5640, 2147483646
  %lcmp.mod7570.not = icmp eq i64 %xtraiter7568, 0
  %xtraiter7573 = and i64 %wide.trip.count5640, 1
  %739 = icmp eq i64 %736, 0
  %unroll_iter7576 = and i64 %wide.trip.count5640, 2147483646
  %lcmp.mod7575.not = icmp eq i64 %xtraiter7573, 0
  %xtraiter7578 = and i64 %wide.trip.count5640, 1
  %740 = icmp eq i64 %736, 0
  %unroll_iter7581 = and i64 %wide.trip.count5640, 2147483646
  %lcmp.mod7580.not = icmp eq i64 %xtraiter7578, 0
  br label %.preheader2941

.preheader2941:                                   ; preds = %.preheader2941.lr.ph, %._crit_edge3442
  %indvars.iv5665 = phi i64 [ 0, %.preheader2941.lr.ph ], [ %indvars.iv.next5666, %._crit_edge3442 ]
  br i1 %727, label %.lr.ph3441, label %._crit_edge3442

.lr.ph3441:                                       ; preds = %.preheader2941
  %741 = mul nsw i64 %indvars.iv5665, %735
  %742 = mul nsw i64 %indvars.iv5665, %733
  %invariant.gep6674 = getelementptr double, ptr %3, i64 %741
  br i1 %730, label %.lr.ph3441.split.us.preheader, label %.lr.ph3441.split

.lr.ph3441.split.us.preheader:                    ; preds = %.lr.ph3441
  %invariant.gep6676 = getelementptr double, ptr %3, i64 %741
  br label %.lr.ph3441.split.us

.lr.ph3441.split.us:                              ; preds = %.lr.ph3441.split.us.preheader, %._crit_edge3429.split.us.us
  %indvars.iv5660 = phi i64 [ 0, %.lr.ph3441.split.us.preheader ], [ %indvars.iv.next5661, %._crit_edge3429.split.us.us ]
  %743 = load double, ptr %728, align 8, !tbaa !25
  %744 = fcmp oeq double %743, 0.000000e+00
  br i1 %744, label %745, label %746

745:                                              ; preds = %.lr.ph3441.split.us
  %gep6675 = getelementptr double, ptr %invariant.gep6674, i64 %indvars.iv5660
  store double 0.000000e+00, ptr %gep6675, align 8, !tbaa !71
  br label %746

746:                                              ; preds = %745, %.lr.ph3441.split.us
  %747 = load i32, ptr %729, align 8, !tbaa !52
  %748 = icmp sgt i32 %747, 0
  br i1 %748, label %.lr.ph3428.us, label %._crit_edge3429.split.us.us

._crit_edge3429.split.us.us:                      ; preds = %._crit_edge3415.us.us, %746
  %indvars.iv.next5661 = add nuw nsw i64 %indvars.iv5660, 1
  %exitcond5664.not = icmp eq i64 %indvars.iv.next5661, %wide.trip.count5663
  br i1 %exitcond5664.not, label %._crit_edge3442, label %.lr.ph3441.split.us, !llvm.loop !72

.lr.ph3428.us:                                    ; preds = %746
  %749 = mul nsw i64 %indvars.iv5660, %734
  %gep6677 = getelementptr double, ptr %invariant.gep6676, i64 %indvars.iv5660
  br label %.lr.ph3414.us.us

.lr.ph3414.us.us:                                 ; preds = %._crit_edge3415.us.us, %.lr.ph3428.us
  %indvars.iv5657 = phi i64 [ %indvars.iv.next5658, %._crit_edge3415.us.us ], [ 0, %.lr.ph3428.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5657, ptr noundef nonnull %0)
  %750 = load i32, ptr %731, align 4, !tbaa !73
  %751 = icmp eq i32 %750, 0
  %752 = load ptr, ptr %14, align 8
  %753 = load i64, ptr %5, align 8
  %754 = getelementptr double, ptr %752, i64 %753
  %755 = getelementptr double, ptr %754, i64 %749
  %756 = load ptr, ptr %15, align 8
  %757 = load i64, ptr %6, align 8
  %758 = getelementptr double, ptr %756, i64 %757
  %invariant.gep.us3431.us = getelementptr double, ptr %758, i64 %indvars.iv5665
  %invariant.gep3416.us.us = getelementptr double, ptr %754, i64 %indvars.iv5660
  %759 = getelementptr double, ptr %758, i64 %742
  %760 = load i32, ptr %732, align 8, !tbaa !74
  %761 = icmp eq i32 %760, 0
  %.promoted3425.us.us = load double, ptr %gep6677, align 8, !tbaa !71
  br i1 %751, label %.lr.ph3414.split.us.us.us, label %.lr.ph3414.split.us3433.us

.lr.ph3414.split.split.us3436.us:                 ; preds = %.lr.ph3414.split.split.us3436.us.preheader, %.lr.ph3414.split.split.us3436.us
  %indvars.iv5637 = phi i64 [ %indvars.iv.next5638.1, %.lr.ph3414.split.split.us3436.us ], [ 0, %.lr.ph3414.split.split.us3436.us.preheader ]
  %762 = phi double [ %772, %.lr.ph3414.split.split.us3436.us ], [ %.promoted3425.us.us, %.lr.ph3414.split.split.us3436.us.preheader ]
  %niter7567 = phi i64 [ %niter7567.next.1, %.lr.ph3414.split.split.us3436.us ], [ 0, %.lr.ph3414.split.split.us3436.us.preheader ]
  %763 = getelementptr double, ptr %755, i64 %indvars.iv5637
  %764 = load double, ptr %763, align 8, !tbaa !71
  %765 = mul nsw i64 %indvars.iv5637, %733
  %gep.us.us3443 = getelementptr double, ptr %invariant.gep.us3431.us, i64 %765
  %766 = load double, ptr %gep.us.us3443, align 8, !tbaa !71
  %767 = call double @llvm.fmuladd.f64(double %764, double %766, double %762)
  store double %767, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5638 = or disjoint i64 %indvars.iv5637, 1
  %768 = getelementptr double, ptr %755, i64 %indvars.iv.next5638
  %769 = load double, ptr %768, align 8, !tbaa !71
  %770 = mul nsw i64 %indvars.iv.next5638, %733
  %gep.us.us3443.1 = getelementptr double, ptr %invariant.gep.us3431.us, i64 %770
  %771 = load double, ptr %gep.us.us3443.1, align 8, !tbaa !71
  %772 = call double @llvm.fmuladd.f64(double %769, double %771, double %767)
  store double %772, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5638.1 = add nuw nsw i64 %indvars.iv5637, 2
  %niter7567.next.1 = add i64 %niter7567, 2
  %niter7567.ncmp.1 = icmp eq i64 %niter7567.next.1, %unroll_iter7566
  br i1 %niter7567.ncmp.1, label %._crit_edge3415.us.us.loopexit7417.unr-lcssa, label %.lr.ph3414.split.split.us3436.us, !llvm.loop !75

.lr.ph3414.split.us3433.us:                       ; preds = %.lr.ph3414.us.us
  br i1 %761, label %.lr.ph3414.split.split.us.us.us.preheader, label %.lr.ph3414.split.split.us3436.us.preheader

.lr.ph3414.split.split.us3436.us.preheader:       ; preds = %.lr.ph3414.split.us3433.us
  br i1 %737, label %._crit_edge3415.us.us.loopexit7417.unr-lcssa, label %.lr.ph3414.split.split.us3436.us

.lr.ph3414.split.split.us.us.us.preheader:        ; preds = %.lr.ph3414.split.us3433.us
  br i1 %738, label %._crit_edge3415.us.us.loopexit7416.unr-lcssa, label %.lr.ph3414.split.split.us.us.us

._crit_edge3415.us.us.loopexit.unr-lcssa:         ; preds = %.lr.ph3414.split.us.split.us.us.us, %.lr.ph3414.split.us.split.us.us.us.preheader
  %indvars.iv5652.unr = phi i64 [ 0, %.lr.ph3414.split.us.split.us.us.us.preheader ], [ %indvars.iv.next5653.1, %.lr.ph3414.split.us.split.us.us.us ]
  %.unr7579 = phi double [ %.promoted3425.us.us, %.lr.ph3414.split.us.split.us.us.us.preheader ], [ %828, %.lr.ph3414.split.us.split.us.us.us ]
  br i1 %lcmp.mod7580.not, label %._crit_edge3415.us.us, label %.lr.ph3414.split.us.split.us.us.us.epil

.lr.ph3414.split.us.split.us.us.us.epil:          ; preds = %._crit_edge3415.us.us.loopexit.unr-lcssa
  %773 = mul nsw i64 %indvars.iv5652.unr, %734
  %gep3421.us.us.us.us.epil = getelementptr double, ptr %invariant.gep3416.us.us, i64 %773
  %774 = load double, ptr %gep3421.us.us.us.us.epil, align 8, !tbaa !71
  %775 = getelementptr double, ptr %759, i64 %indvars.iv5652.unr
  %776 = load double, ptr %775, align 8, !tbaa !71
  %777 = call double @llvm.fmuladd.f64(double %774, double %776, double %.unr7579)
  store double %777, ptr %gep6677, align 8, !tbaa !71
  br label %._crit_edge3415.us.us

._crit_edge3415.us.us.loopexit7415.unr-lcssa:     ; preds = %.lr.ph3414.split.us.split.us3438.us, %.lr.ph3414.split.us.split.us3438.us.preheader
  %indvars.iv5647.unr = phi i64 [ 0, %.lr.ph3414.split.us.split.us3438.us.preheader ], [ %indvars.iv.next5648.1, %.lr.ph3414.split.us.split.us3438.us ]
  %.unr7574 = phi double [ %.promoted3425.us.us, %.lr.ph3414.split.us.split.us3438.us.preheader ], [ %806, %.lr.ph3414.split.us.split.us3438.us ]
  br i1 %lcmp.mod7575.not, label %._crit_edge3415.us.us, label %.lr.ph3414.split.us.split.us3438.us.epil

.lr.ph3414.split.us.split.us3438.us.epil:         ; preds = %._crit_edge3415.us.us.loopexit7415.unr-lcssa
  %778 = getelementptr double, ptr %755, i64 %indvars.iv5647.unr
  %779 = load double, ptr %778, align 8, !tbaa !71
  %780 = getelementptr double, ptr %759, i64 %indvars.iv5647.unr
  %781 = load double, ptr %780, align 8, !tbaa !71
  %782 = call double @llvm.fmuladd.f64(double %779, double %781, double %.unr7574)
  store double %782, ptr %gep6677, align 8, !tbaa !71
  br label %._crit_edge3415.us.us

._crit_edge3415.us.us.loopexit7416.unr-lcssa:     ; preds = %.lr.ph3414.split.split.us.us.us, %.lr.ph3414.split.split.us.us.us.preheader
  %indvars.iv5642.unr = phi i64 [ 0, %.lr.ph3414.split.split.us.us.us.preheader ], [ %indvars.iv.next5643.1, %.lr.ph3414.split.split.us.us.us ]
  %.unr7569 = phi double [ %.promoted3425.us.us, %.lr.ph3414.split.split.us.us.us.preheader ], [ %817, %.lr.ph3414.split.split.us.us.us ]
  br i1 %lcmp.mod7570.not, label %._crit_edge3415.us.us, label %.lr.ph3414.split.split.us.us.us.epil

.lr.ph3414.split.split.us.us.us.epil:             ; preds = %._crit_edge3415.us.us.loopexit7416.unr-lcssa
  %783 = mul nsw i64 %indvars.iv5642.unr, %734
  %gep3417.us.us.us.epil = getelementptr double, ptr %invariant.gep3416.us.us, i64 %783
  %784 = load double, ptr %gep3417.us.us.us.epil, align 8, !tbaa !71
  %785 = mul nsw i64 %indvars.iv5642.unr, %733
  %gep3419.us.us.us.epil = getelementptr double, ptr %invariant.gep.us3431.us, i64 %785
  %786 = load double, ptr %gep3419.us.us.us.epil, align 8, !tbaa !71
  %787 = call double @llvm.fmuladd.f64(double %784, double %786, double %.unr7569)
  store double %787, ptr %gep6677, align 8, !tbaa !71
  br label %._crit_edge3415.us.us

._crit_edge3415.us.us.loopexit7417.unr-lcssa:     ; preds = %.lr.ph3414.split.split.us3436.us, %.lr.ph3414.split.split.us3436.us.preheader
  %indvars.iv5637.unr = phi i64 [ 0, %.lr.ph3414.split.split.us3436.us.preheader ], [ %indvars.iv.next5638.1, %.lr.ph3414.split.split.us3436.us ]
  %.unr7564 = phi double [ %.promoted3425.us.us, %.lr.ph3414.split.split.us3436.us.preheader ], [ %772, %.lr.ph3414.split.split.us3436.us ]
  br i1 %lcmp.mod7565.not, label %._crit_edge3415.us.us, label %.lr.ph3414.split.split.us3436.us.epil

.lr.ph3414.split.split.us3436.us.epil:            ; preds = %._crit_edge3415.us.us.loopexit7417.unr-lcssa
  %788 = getelementptr double, ptr %755, i64 %indvars.iv5637.unr
  %789 = load double, ptr %788, align 8, !tbaa !71
  %790 = mul nsw i64 %indvars.iv5637.unr, %733
  %gep.us.us3443.epil = getelementptr double, ptr %invariant.gep.us3431.us, i64 %790
  %791 = load double, ptr %gep.us.us3443.epil, align 8, !tbaa !71
  %792 = call double @llvm.fmuladd.f64(double %789, double %791, double %.unr7564)
  store double %792, ptr %gep6677, align 8, !tbaa !71
  br label %._crit_edge3415.us.us

._crit_edge3415.us.us:                            ; preds = %.lr.ph3414.split.split.us3436.us.epil, %._crit_edge3415.us.us.loopexit7417.unr-lcssa, %.lr.ph3414.split.split.us.us.us.epil, %._crit_edge3415.us.us.loopexit7416.unr-lcssa, %.lr.ph3414.split.us.split.us3438.us.epil, %._crit_edge3415.us.us.loopexit7415.unr-lcssa, %.lr.ph3414.split.us.split.us.us.us.epil, %._crit_edge3415.us.us.loopexit.unr-lcssa
  %indvars.iv.next5658 = add nuw nsw i64 %indvars.iv5657, 1
  %793 = load i32, ptr %729, align 8, !tbaa !52
  %794 = sext i32 %793 to i64
  %795 = icmp slt i64 %indvars.iv.next5658, %794
  br i1 %795, label %.lr.ph3414.us.us, label %._crit_edge3429.split.us.us, !llvm.loop !76

.lr.ph3414.split.us.us.us:                        ; preds = %.lr.ph3414.us.us
  br i1 %761, label %.lr.ph3414.split.us.split.us.us.us.preheader, label %.lr.ph3414.split.us.split.us3438.us.preheader

.lr.ph3414.split.us.split.us3438.us.preheader:    ; preds = %.lr.ph3414.split.us.us.us
  br i1 %739, label %._crit_edge3415.us.us.loopexit7415.unr-lcssa, label %.lr.ph3414.split.us.split.us3438.us

.lr.ph3414.split.us.split.us.us.us.preheader:     ; preds = %.lr.ph3414.split.us.us.us
  br i1 %740, label %._crit_edge3415.us.us.loopexit.unr-lcssa, label %.lr.ph3414.split.us.split.us.us.us

.lr.ph3414.split.us.split.us3438.us:              ; preds = %.lr.ph3414.split.us.split.us3438.us.preheader, %.lr.ph3414.split.us.split.us3438.us
  %indvars.iv5647 = phi i64 [ %indvars.iv.next5648.1, %.lr.ph3414.split.us.split.us3438.us ], [ 0, %.lr.ph3414.split.us.split.us3438.us.preheader ]
  %796 = phi double [ %806, %.lr.ph3414.split.us.split.us3438.us ], [ %.promoted3425.us.us, %.lr.ph3414.split.us.split.us3438.us.preheader ]
  %niter7577 = phi i64 [ %niter7577.next.1, %.lr.ph3414.split.us.split.us3438.us ], [ 0, %.lr.ph3414.split.us.split.us3438.us.preheader ]
  %797 = getelementptr double, ptr %755, i64 %indvars.iv5647
  %798 = load double, ptr %797, align 8, !tbaa !71
  %799 = getelementptr double, ptr %759, i64 %indvars.iv5647
  %800 = load double, ptr %799, align 8, !tbaa !71
  %801 = call double @llvm.fmuladd.f64(double %798, double %800, double %796)
  store double %801, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5648 = or disjoint i64 %indvars.iv5647, 1
  %802 = getelementptr double, ptr %755, i64 %indvars.iv.next5648
  %803 = load double, ptr %802, align 8, !tbaa !71
  %804 = getelementptr double, ptr %759, i64 %indvars.iv.next5648
  %805 = load double, ptr %804, align 8, !tbaa !71
  %806 = call double @llvm.fmuladd.f64(double %803, double %805, double %801)
  store double %806, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5648.1 = add nuw nsw i64 %indvars.iv5647, 2
  %niter7577.next.1 = add i64 %niter7577, 2
  %niter7577.ncmp.1 = icmp eq i64 %niter7577.next.1, %unroll_iter7576
  br i1 %niter7577.ncmp.1, label %._crit_edge3415.us.us.loopexit7415.unr-lcssa, label %.lr.ph3414.split.us.split.us3438.us, !llvm.loop !75

.lr.ph3414.split.split.us.us.us:                  ; preds = %.lr.ph3414.split.split.us.us.us.preheader, %.lr.ph3414.split.split.us.us.us
  %indvars.iv5642 = phi i64 [ %indvars.iv.next5643.1, %.lr.ph3414.split.split.us.us.us ], [ 0, %.lr.ph3414.split.split.us.us.us.preheader ]
  %807 = phi double [ %817, %.lr.ph3414.split.split.us.us.us ], [ %.promoted3425.us.us, %.lr.ph3414.split.split.us.us.us.preheader ]
  %niter7572 = phi i64 [ %niter7572.next.1, %.lr.ph3414.split.split.us.us.us ], [ 0, %.lr.ph3414.split.split.us.us.us.preheader ]
  %808 = mul nsw i64 %indvars.iv5642, %734
  %gep3417.us.us.us = getelementptr double, ptr %invariant.gep3416.us.us, i64 %808
  %809 = load double, ptr %gep3417.us.us.us, align 8, !tbaa !71
  %810 = mul nsw i64 %indvars.iv5642, %733
  %gep3419.us.us.us = getelementptr double, ptr %invariant.gep.us3431.us, i64 %810
  %811 = load double, ptr %gep3419.us.us.us, align 8, !tbaa !71
  %812 = call double @llvm.fmuladd.f64(double %809, double %811, double %807)
  store double %812, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5643 = or disjoint i64 %indvars.iv5642, 1
  %813 = mul nsw i64 %indvars.iv.next5643, %734
  %gep3417.us.us.us.1 = getelementptr double, ptr %invariant.gep3416.us.us, i64 %813
  %814 = load double, ptr %gep3417.us.us.us.1, align 8, !tbaa !71
  %815 = mul nsw i64 %indvars.iv.next5643, %733
  %gep3419.us.us.us.1 = getelementptr double, ptr %invariant.gep.us3431.us, i64 %815
  %816 = load double, ptr %gep3419.us.us.us.1, align 8, !tbaa !71
  %817 = call double @llvm.fmuladd.f64(double %814, double %816, double %812)
  store double %817, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5643.1 = add nuw nsw i64 %indvars.iv5642, 2
  %niter7572.next.1 = add i64 %niter7572, 2
  %niter7572.ncmp.1 = icmp eq i64 %niter7572.next.1, %unroll_iter7571
  br i1 %niter7572.ncmp.1, label %._crit_edge3415.us.us.loopexit7416.unr-lcssa, label %.lr.ph3414.split.split.us.us.us, !llvm.loop !75

.lr.ph3414.split.us.split.us.us.us:               ; preds = %.lr.ph3414.split.us.split.us.us.us.preheader, %.lr.ph3414.split.us.split.us.us.us
  %indvars.iv5652 = phi i64 [ %indvars.iv.next5653.1, %.lr.ph3414.split.us.split.us.us.us ], [ 0, %.lr.ph3414.split.us.split.us.us.us.preheader ]
  %818 = phi double [ %828, %.lr.ph3414.split.us.split.us.us.us ], [ %.promoted3425.us.us, %.lr.ph3414.split.us.split.us.us.us.preheader ]
  %niter7582 = phi i64 [ %niter7582.next.1, %.lr.ph3414.split.us.split.us.us.us ], [ 0, %.lr.ph3414.split.us.split.us.us.us.preheader ]
  %819 = mul nsw i64 %indvars.iv5652, %734
  %gep3421.us.us.us.us = getelementptr double, ptr %invariant.gep3416.us.us, i64 %819
  %820 = load double, ptr %gep3421.us.us.us.us, align 8, !tbaa !71
  %821 = getelementptr double, ptr %759, i64 %indvars.iv5652
  %822 = load double, ptr %821, align 8, !tbaa !71
  %823 = call double @llvm.fmuladd.f64(double %820, double %822, double %818)
  store double %823, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5653 = or disjoint i64 %indvars.iv5652, 1
  %824 = mul nsw i64 %indvars.iv.next5653, %734
  %gep3421.us.us.us.us.1 = getelementptr double, ptr %invariant.gep3416.us.us, i64 %824
  %825 = load double, ptr %gep3421.us.us.us.us.1, align 8, !tbaa !71
  %826 = getelementptr double, ptr %759, i64 %indvars.iv.next5653
  %827 = load double, ptr %826, align 8, !tbaa !71
  %828 = call double @llvm.fmuladd.f64(double %825, double %827, double %823)
  store double %828, ptr %gep6677, align 8, !tbaa !71
  %indvars.iv.next5653.1 = add nuw nsw i64 %indvars.iv5652, 2
  %niter7582.next.1 = add i64 %niter7582, 2
  %niter7582.ncmp.1 = icmp eq i64 %niter7582.next.1, %unroll_iter7581
  br i1 %niter7582.ncmp.1, label %._crit_edge3415.us.us.loopexit.unr-lcssa, label %.lr.ph3414.split.us.split.us.us.us, !llvm.loop !75

.lr.ph3441.split:                                 ; preds = %.lr.ph3441, %._crit_edge3429.split
  %indvars.iv5632 = phi i64 [ %indvars.iv.next5633, %._crit_edge3429.split ], [ 0, %.lr.ph3441 ]
  %829 = load double, ptr %728, align 8, !tbaa !25
  %830 = fcmp oeq double %829, 0.000000e+00
  br i1 %830, label %831, label %832

831:                                              ; preds = %.lr.ph3441.split
  %gep6673 = getelementptr double, ptr %invariant.gep6674, i64 %indvars.iv5632
  store double 0.000000e+00, ptr %gep6673, align 8, !tbaa !71
  br label %832

832:                                              ; preds = %831, %.lr.ph3441.split
  %833 = load i32, ptr %729, align 8, !tbaa !52
  %834 = icmp sgt i32 %833, 0
  br i1 %834, label %.lr.ph3428, label %._crit_edge3429.split

.lr.ph3428:                                       ; preds = %832, %.lr.ph3428
  %indvars.iv5629 = phi i64 [ %indvars.iv.next5630, %.lr.ph3428 ], [ 0, %832 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5629, ptr noundef nonnull %0)
  %indvars.iv.next5630 = add nuw nsw i64 %indvars.iv5629, 1
  %835 = load i32, ptr %729, align 8, !tbaa !52
  %836 = sext i32 %835 to i64
  %837 = icmp slt i64 %indvars.iv.next5630, %836
  br i1 %837, label %.lr.ph3428, label %._crit_edge3429.split, !llvm.loop !76

._crit_edge3429.split:                            ; preds = %.lr.ph3428, %832
  %indvars.iv.next5633 = add nuw nsw i64 %indvars.iv5632, 1
  %exitcond5636.not = icmp eq i64 %indvars.iv.next5633, %wide.trip.count5635
  br i1 %exitcond5636.not, label %._crit_edge3442, label %.lr.ph3441.split, !llvm.loop !72

._crit_edge3442:                                  ; preds = %._crit_edge3429.split, %._crit_edge3429.split.us.us, %.preheader2941
  %indvars.iv.next5666 = add nuw nsw i64 %indvars.iv5665, 1
  %exitcond5669.not = icmp eq i64 %indvars.iv.next5666, %wide.trip.count5668
  br i1 %exitcond5669.not, label %._crit_edge3446, label %.preheader2941, !llvm.loop !77

._crit_edge3446:                                  ; preds = %._crit_edge3442, %725
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %.loopexit

838:                                              ; preds = %711
  %839 = getelementptr inbounds i8, ptr %0, i64 4
  %840 = load i32, ptr %839, align 4, !tbaa !24
  %841 = icmp eq i32 %840, 1
  br i1 %841, label %842, label %.thread2862

842:                                              ; preds = %838
  %843 = getelementptr inbounds i8, ptr %0, i64 8
  %844 = load i32, ptr %843, align 8, !tbaa !26
  %845 = icmp eq i32 %844, 1
  br i1 %845, label %846, label %.thread2862

846:                                              ; preds = %842
  %847 = getelementptr inbounds i8, ptr %0, i64 12
  %848 = load i32, ptr %847, align 4, !tbaa !70
  %849 = icmp eq i32 %848, 1
  br i1 %849, label %850, label %.thread2862

850:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  store ptr %1, ptr %16, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  store ptr %2, ptr %17, align 8, !tbaa !50
  %851 = icmp sgt i32 %79, 0
  br i1 %851, label %.preheader2942.lr.ph, label %._crit_edge3411

.preheader2942.lr.ph:                             ; preds = %850
  %852 = icmp sgt i32 %77, 0
  %853 = getelementptr inbounds i8, ptr %0, i64 56
  %854 = getelementptr inbounds i8, ptr %0, i64 112
  %855 = icmp sgt i32 %.fr4927, 0
  %856 = getelementptr inbounds i8, ptr %0, i64 68
  %857 = getelementptr inbounds i8, ptr %0, i64 64
  %858 = sext i32 %73 to i64
  %859 = sext i32 %71 to i64
  %860 = sext i32 %75 to i64
  %wide.trip.count5627 = zext nneg i32 %79 to i64
  %wide.trip.count5594 = zext nneg i32 %77 to i64
  %wide.trip.count5622 = zext nneg i32 %77 to i64
  %wide.trip.count5599 = zext i32 %.fr4927 to i64
  %861 = add nsw i64 %wide.trip.count5599, -1
  %xtraiter7545 = and i64 %wide.trip.count5599, 1
  %862 = icmp eq i64 %861, 0
  %unroll_iter = and i64 %wide.trip.count5599, 2147483646
  %lcmp.mod7547.not = icmp eq i64 %xtraiter7545, 0
  %xtraiter7548 = and i64 %wide.trip.count5599, 1
  %863 = icmp eq i64 %861, 0
  %unroll_iter7551 = and i64 %wide.trip.count5599, 2147483646
  %lcmp.mod7550.not = icmp eq i64 %xtraiter7548, 0
  %xtraiter7553 = and i64 %wide.trip.count5599, 1
  %864 = icmp eq i64 %861, 0
  %unroll_iter7556 = and i64 %wide.trip.count5599, 2147483646
  %lcmp.mod7555.not = icmp eq i64 %xtraiter7553, 0
  %xtraiter7558 = and i64 %wide.trip.count5599, 1
  %865 = icmp eq i64 %861, 0
  %unroll_iter7561 = and i64 %wide.trip.count5599, 2147483646
  %lcmp.mod7560.not = icmp eq i64 %xtraiter7558, 0
  br label %.preheader2942

.preheader2942:                                   ; preds = %.preheader2942.lr.ph, %._crit_edge3407
  %indvars.iv5624 = phi i64 [ 0, %.preheader2942.lr.ph ], [ %indvars.iv.next5625, %._crit_edge3407 ]
  br i1 %852, label %.lr.ph3406, label %._crit_edge3407

.lr.ph3406:                                       ; preds = %.preheader2942
  %866 = mul nsw i64 %indvars.iv5624, %860
  %867 = mul nsw i64 %indvars.iv5624, %858
  %invariant.gep6668 = getelementptr float, ptr %3, i64 %866
  br i1 %855, label %.lr.ph3406.split.us.preheader, label %.lr.ph3406.split

.lr.ph3406.split.us.preheader:                    ; preds = %.lr.ph3406
  %invariant.gep6670 = getelementptr float, ptr %3, i64 %866
  br label %.lr.ph3406.split.us

.lr.ph3406.split.us:                              ; preds = %.lr.ph3406.split.us.preheader, %._crit_edge3394.split.us.us
  %indvars.iv5619 = phi i64 [ 0, %.lr.ph3406.split.us.preheader ], [ %indvars.iv.next5620, %._crit_edge3394.split.us.us ]
  %868 = load double, ptr %853, align 8, !tbaa !25
  %869 = fcmp oeq double %868, 0.000000e+00
  br i1 %869, label %870, label %871

870:                                              ; preds = %.lr.ph3406.split.us
  %gep6669 = getelementptr float, ptr %invariant.gep6668, i64 %indvars.iv5619
  store float 0.000000e+00, ptr %gep6669, align 4, !tbaa !27
  br label %871

871:                                              ; preds = %870, %.lr.ph3406.split.us
  %872 = load i32, ptr %854, align 8, !tbaa !52
  %873 = icmp sgt i32 %872, 0
  br i1 %873, label %.lr.ph3393.us, label %._crit_edge3394.split.us.us

._crit_edge3394.split.us.us:                      ; preds = %._crit_edge3380.us.us, %871
  %indvars.iv.next5620 = add nuw nsw i64 %indvars.iv5619, 1
  %exitcond5623.not = icmp eq i64 %indvars.iv.next5620, %wide.trip.count5622
  br i1 %exitcond5623.not, label %._crit_edge3407, label %.lr.ph3406.split.us, !llvm.loop !78

.lr.ph3393.us:                                    ; preds = %871
  %874 = mul nsw i64 %indvars.iv5619, %859
  %gep6671 = getelementptr float, ptr %invariant.gep6670, i64 %indvars.iv5619
  br label %.lr.ph3379.us.us

.lr.ph3379.us.us:                                 ; preds = %._crit_edge3380.us.us, %.lr.ph3393.us
  %indvars.iv5616 = phi i64 [ %indvars.iv.next5617, %._crit_edge3380.us.us ], [ 0, %.lr.ph3393.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5616, ptr noundef nonnull %0)
  %875 = load i32, ptr %856, align 4, !tbaa !73
  %876 = icmp eq i32 %875, 0
  %877 = load ptr, ptr %16, align 8
  %878 = load i64, ptr %5, align 8
  %879 = getelementptr float, ptr %877, i64 %878
  %880 = getelementptr float, ptr %879, i64 %874
  %881 = load ptr, ptr %17, align 8
  %882 = load i64, ptr %6, align 8
  %883 = getelementptr float, ptr %881, i64 %882
  %invariant.gep.us3396.us = getelementptr float, ptr %883, i64 %indvars.iv5624
  %invariant.gep3381.us.us = getelementptr float, ptr %879, i64 %indvars.iv5619
  %884 = getelementptr float, ptr %883, i64 %867
  %885 = load i32, ptr %857, align 8, !tbaa !74
  %886 = icmp eq i32 %885, 0
  %.promoted3390.us.us = load float, ptr %gep6671, align 4, !tbaa !27
  br i1 %876, label %.lr.ph3379.split.us.us.us, label %.lr.ph3379.split.us3398.us

.lr.ph3379.split.split.us3401.us:                 ; preds = %.lr.ph3379.split.split.us3401.us.preheader, %.lr.ph3379.split.split.us3401.us
  %indvars.iv5596 = phi i64 [ %indvars.iv.next5597.1, %.lr.ph3379.split.split.us3401.us ], [ 0, %.lr.ph3379.split.split.us3401.us.preheader ]
  %887 = phi float [ %897, %.lr.ph3379.split.split.us3401.us ], [ %.promoted3390.us.us, %.lr.ph3379.split.split.us3401.us.preheader ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph3379.split.split.us3401.us ], [ 0, %.lr.ph3379.split.split.us3401.us.preheader ]
  %888 = getelementptr float, ptr %880, i64 %indvars.iv5596
  %889 = load float, ptr %888, align 4, !tbaa !27
  %890 = mul nsw i64 %indvars.iv5596, %858
  %gep.us.us3408 = getelementptr float, ptr %invariant.gep.us3396.us, i64 %890
  %891 = load float, ptr %gep.us.us3408, align 4, !tbaa !27
  %892 = call float @llvm.fmuladd.f32(float %889, float %891, float %887)
  store float %892, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5597 = or disjoint i64 %indvars.iv5596, 1
  %893 = getelementptr float, ptr %880, i64 %indvars.iv.next5597
  %894 = load float, ptr %893, align 4, !tbaa !27
  %895 = mul nsw i64 %indvars.iv.next5597, %858
  %gep.us.us3408.1 = getelementptr float, ptr %invariant.gep.us3396.us, i64 %895
  %896 = load float, ptr %gep.us.us3408.1, align 4, !tbaa !27
  %897 = call float @llvm.fmuladd.f32(float %894, float %896, float %892)
  store float %897, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5597.1 = add nuw nsw i64 %indvars.iv5596, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge3380.us.us.loopexit7421.unr-lcssa, label %.lr.ph3379.split.split.us3401.us, !llvm.loop !79

.lr.ph3379.split.us3398.us:                       ; preds = %.lr.ph3379.us.us
  br i1 %886, label %.lr.ph3379.split.split.us.us.us.preheader, label %.lr.ph3379.split.split.us3401.us.preheader

.lr.ph3379.split.split.us3401.us.preheader:       ; preds = %.lr.ph3379.split.us3398.us
  br i1 %862, label %._crit_edge3380.us.us.loopexit7421.unr-lcssa, label %.lr.ph3379.split.split.us3401.us

.lr.ph3379.split.split.us.us.us.preheader:        ; preds = %.lr.ph3379.split.us3398.us
  br i1 %863, label %._crit_edge3380.us.us.loopexit7420.unr-lcssa, label %.lr.ph3379.split.split.us.us.us

._crit_edge3380.us.us.loopexit.unr-lcssa:         ; preds = %.lr.ph3379.split.us.split.us.us.us, %.lr.ph3379.split.us.split.us.us.us.preheader
  %indvars.iv5611.unr = phi i64 [ 0, %.lr.ph3379.split.us.split.us.us.us.preheader ], [ %indvars.iv.next5612.1, %.lr.ph3379.split.us.split.us.us.us ]
  %.unr7559 = phi float [ %.promoted3390.us.us, %.lr.ph3379.split.us.split.us.us.us.preheader ], [ %953, %.lr.ph3379.split.us.split.us.us.us ]
  br i1 %lcmp.mod7560.not, label %._crit_edge3380.us.us, label %.lr.ph3379.split.us.split.us.us.us.epil

.lr.ph3379.split.us.split.us.us.us.epil:          ; preds = %._crit_edge3380.us.us.loopexit.unr-lcssa
  %898 = mul nsw i64 %indvars.iv5611.unr, %859
  %gep3386.us.us.us.us.epil = getelementptr float, ptr %invariant.gep3381.us.us, i64 %898
  %899 = load float, ptr %gep3386.us.us.us.us.epil, align 4, !tbaa !27
  %900 = getelementptr float, ptr %884, i64 %indvars.iv5611.unr
  %901 = load float, ptr %900, align 4, !tbaa !27
  %902 = call float @llvm.fmuladd.f32(float %899, float %901, float %.unr7559)
  store float %902, ptr %gep6671, align 4, !tbaa !27
  br label %._crit_edge3380.us.us

._crit_edge3380.us.us.loopexit7419.unr-lcssa:     ; preds = %.lr.ph3379.split.us.split.us3403.us, %.lr.ph3379.split.us.split.us3403.us.preheader
  %indvars.iv5606.unr = phi i64 [ 0, %.lr.ph3379.split.us.split.us3403.us.preheader ], [ %indvars.iv.next5607.1, %.lr.ph3379.split.us.split.us3403.us ]
  %.unr7554 = phi float [ %.promoted3390.us.us, %.lr.ph3379.split.us.split.us3403.us.preheader ], [ %931, %.lr.ph3379.split.us.split.us3403.us ]
  br i1 %lcmp.mod7555.not, label %._crit_edge3380.us.us, label %.lr.ph3379.split.us.split.us3403.us.epil

.lr.ph3379.split.us.split.us3403.us.epil:         ; preds = %._crit_edge3380.us.us.loopexit7419.unr-lcssa
  %903 = getelementptr float, ptr %880, i64 %indvars.iv5606.unr
  %904 = load float, ptr %903, align 4, !tbaa !27
  %905 = getelementptr float, ptr %884, i64 %indvars.iv5606.unr
  %906 = load float, ptr %905, align 4, !tbaa !27
  %907 = call float @llvm.fmuladd.f32(float %904, float %906, float %.unr7554)
  store float %907, ptr %gep6671, align 4, !tbaa !27
  br label %._crit_edge3380.us.us

._crit_edge3380.us.us.loopexit7420.unr-lcssa:     ; preds = %.lr.ph3379.split.split.us.us.us, %.lr.ph3379.split.split.us.us.us.preheader
  %indvars.iv5601.unr = phi i64 [ 0, %.lr.ph3379.split.split.us.us.us.preheader ], [ %indvars.iv.next5602.1, %.lr.ph3379.split.split.us.us.us ]
  %.unr7549 = phi float [ %.promoted3390.us.us, %.lr.ph3379.split.split.us.us.us.preheader ], [ %942, %.lr.ph3379.split.split.us.us.us ]
  br i1 %lcmp.mod7550.not, label %._crit_edge3380.us.us, label %.lr.ph3379.split.split.us.us.us.epil

.lr.ph3379.split.split.us.us.us.epil:             ; preds = %._crit_edge3380.us.us.loopexit7420.unr-lcssa
  %908 = mul nsw i64 %indvars.iv5601.unr, %859
  %gep3382.us.us.us.epil = getelementptr float, ptr %invariant.gep3381.us.us, i64 %908
  %909 = load float, ptr %gep3382.us.us.us.epil, align 4, !tbaa !27
  %910 = mul nsw i64 %indvars.iv5601.unr, %858
  %gep3384.us.us.us.epil = getelementptr float, ptr %invariant.gep.us3396.us, i64 %910
  %911 = load float, ptr %gep3384.us.us.us.epil, align 4, !tbaa !27
  %912 = call float @llvm.fmuladd.f32(float %909, float %911, float %.unr7549)
  store float %912, ptr %gep6671, align 4, !tbaa !27
  br label %._crit_edge3380.us.us

._crit_edge3380.us.us.loopexit7421.unr-lcssa:     ; preds = %.lr.ph3379.split.split.us3401.us, %.lr.ph3379.split.split.us3401.us.preheader
  %indvars.iv5596.unr = phi i64 [ 0, %.lr.ph3379.split.split.us3401.us.preheader ], [ %indvars.iv.next5597.1, %.lr.ph3379.split.split.us3401.us ]
  %.unr7546 = phi float [ %.promoted3390.us.us, %.lr.ph3379.split.split.us3401.us.preheader ], [ %897, %.lr.ph3379.split.split.us3401.us ]
  br i1 %lcmp.mod7547.not, label %._crit_edge3380.us.us, label %.lr.ph3379.split.split.us3401.us.epil

.lr.ph3379.split.split.us3401.us.epil:            ; preds = %._crit_edge3380.us.us.loopexit7421.unr-lcssa
  %913 = getelementptr float, ptr %880, i64 %indvars.iv5596.unr
  %914 = load float, ptr %913, align 4, !tbaa !27
  %915 = mul nsw i64 %indvars.iv5596.unr, %858
  %gep.us.us3408.epil = getelementptr float, ptr %invariant.gep.us3396.us, i64 %915
  %916 = load float, ptr %gep.us.us3408.epil, align 4, !tbaa !27
  %917 = call float @llvm.fmuladd.f32(float %914, float %916, float %.unr7546)
  store float %917, ptr %gep6671, align 4, !tbaa !27
  br label %._crit_edge3380.us.us

._crit_edge3380.us.us:                            ; preds = %.lr.ph3379.split.split.us3401.us.epil, %._crit_edge3380.us.us.loopexit7421.unr-lcssa, %.lr.ph3379.split.split.us.us.us.epil, %._crit_edge3380.us.us.loopexit7420.unr-lcssa, %.lr.ph3379.split.us.split.us3403.us.epil, %._crit_edge3380.us.us.loopexit7419.unr-lcssa, %.lr.ph3379.split.us.split.us.us.us.epil, %._crit_edge3380.us.us.loopexit.unr-lcssa
  %indvars.iv.next5617 = add nuw nsw i64 %indvars.iv5616, 1
  %918 = load i32, ptr %854, align 8, !tbaa !52
  %919 = sext i32 %918 to i64
  %920 = icmp slt i64 %indvars.iv.next5617, %919
  br i1 %920, label %.lr.ph3379.us.us, label %._crit_edge3394.split.us.us, !llvm.loop !80

.lr.ph3379.split.us.us.us:                        ; preds = %.lr.ph3379.us.us
  br i1 %886, label %.lr.ph3379.split.us.split.us.us.us.preheader, label %.lr.ph3379.split.us.split.us3403.us.preheader

.lr.ph3379.split.us.split.us3403.us.preheader:    ; preds = %.lr.ph3379.split.us.us.us
  br i1 %864, label %._crit_edge3380.us.us.loopexit7419.unr-lcssa, label %.lr.ph3379.split.us.split.us3403.us

.lr.ph3379.split.us.split.us.us.us.preheader:     ; preds = %.lr.ph3379.split.us.us.us
  br i1 %865, label %._crit_edge3380.us.us.loopexit.unr-lcssa, label %.lr.ph3379.split.us.split.us.us.us

.lr.ph3379.split.us.split.us3403.us:              ; preds = %.lr.ph3379.split.us.split.us3403.us.preheader, %.lr.ph3379.split.us.split.us3403.us
  %indvars.iv5606 = phi i64 [ %indvars.iv.next5607.1, %.lr.ph3379.split.us.split.us3403.us ], [ 0, %.lr.ph3379.split.us.split.us3403.us.preheader ]
  %921 = phi float [ %931, %.lr.ph3379.split.us.split.us3403.us ], [ %.promoted3390.us.us, %.lr.ph3379.split.us.split.us3403.us.preheader ]
  %niter7557 = phi i64 [ %niter7557.next.1, %.lr.ph3379.split.us.split.us3403.us ], [ 0, %.lr.ph3379.split.us.split.us3403.us.preheader ]
  %922 = getelementptr float, ptr %880, i64 %indvars.iv5606
  %923 = load float, ptr %922, align 4, !tbaa !27
  %924 = getelementptr float, ptr %884, i64 %indvars.iv5606
  %925 = load float, ptr %924, align 4, !tbaa !27
  %926 = call float @llvm.fmuladd.f32(float %923, float %925, float %921)
  store float %926, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5607 = or disjoint i64 %indvars.iv5606, 1
  %927 = getelementptr float, ptr %880, i64 %indvars.iv.next5607
  %928 = load float, ptr %927, align 4, !tbaa !27
  %929 = getelementptr float, ptr %884, i64 %indvars.iv.next5607
  %930 = load float, ptr %929, align 4, !tbaa !27
  %931 = call float @llvm.fmuladd.f32(float %928, float %930, float %926)
  store float %931, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5607.1 = add nuw nsw i64 %indvars.iv5606, 2
  %niter7557.next.1 = add i64 %niter7557, 2
  %niter7557.ncmp.1 = icmp eq i64 %niter7557.next.1, %unroll_iter7556
  br i1 %niter7557.ncmp.1, label %._crit_edge3380.us.us.loopexit7419.unr-lcssa, label %.lr.ph3379.split.us.split.us3403.us, !llvm.loop !79

.lr.ph3379.split.split.us.us.us:                  ; preds = %.lr.ph3379.split.split.us.us.us.preheader, %.lr.ph3379.split.split.us.us.us
  %indvars.iv5601 = phi i64 [ %indvars.iv.next5602.1, %.lr.ph3379.split.split.us.us.us ], [ 0, %.lr.ph3379.split.split.us.us.us.preheader ]
  %932 = phi float [ %942, %.lr.ph3379.split.split.us.us.us ], [ %.promoted3390.us.us, %.lr.ph3379.split.split.us.us.us.preheader ]
  %niter7552 = phi i64 [ %niter7552.next.1, %.lr.ph3379.split.split.us.us.us ], [ 0, %.lr.ph3379.split.split.us.us.us.preheader ]
  %933 = mul nsw i64 %indvars.iv5601, %859
  %gep3382.us.us.us = getelementptr float, ptr %invariant.gep3381.us.us, i64 %933
  %934 = load float, ptr %gep3382.us.us.us, align 4, !tbaa !27
  %935 = mul nsw i64 %indvars.iv5601, %858
  %gep3384.us.us.us = getelementptr float, ptr %invariant.gep.us3396.us, i64 %935
  %936 = load float, ptr %gep3384.us.us.us, align 4, !tbaa !27
  %937 = call float @llvm.fmuladd.f32(float %934, float %936, float %932)
  store float %937, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5602 = or disjoint i64 %indvars.iv5601, 1
  %938 = mul nsw i64 %indvars.iv.next5602, %859
  %gep3382.us.us.us.1 = getelementptr float, ptr %invariant.gep3381.us.us, i64 %938
  %939 = load float, ptr %gep3382.us.us.us.1, align 4, !tbaa !27
  %940 = mul nsw i64 %indvars.iv.next5602, %858
  %gep3384.us.us.us.1 = getelementptr float, ptr %invariant.gep.us3396.us, i64 %940
  %941 = load float, ptr %gep3384.us.us.us.1, align 4, !tbaa !27
  %942 = call float @llvm.fmuladd.f32(float %939, float %941, float %937)
  store float %942, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5602.1 = add nuw nsw i64 %indvars.iv5601, 2
  %niter7552.next.1 = add i64 %niter7552, 2
  %niter7552.ncmp.1 = icmp eq i64 %niter7552.next.1, %unroll_iter7551
  br i1 %niter7552.ncmp.1, label %._crit_edge3380.us.us.loopexit7420.unr-lcssa, label %.lr.ph3379.split.split.us.us.us, !llvm.loop !79

.lr.ph3379.split.us.split.us.us.us:               ; preds = %.lr.ph3379.split.us.split.us.us.us.preheader, %.lr.ph3379.split.us.split.us.us.us
  %indvars.iv5611 = phi i64 [ %indvars.iv.next5612.1, %.lr.ph3379.split.us.split.us.us.us ], [ 0, %.lr.ph3379.split.us.split.us.us.us.preheader ]
  %943 = phi float [ %953, %.lr.ph3379.split.us.split.us.us.us ], [ %.promoted3390.us.us, %.lr.ph3379.split.us.split.us.us.us.preheader ]
  %niter7562 = phi i64 [ %niter7562.next.1, %.lr.ph3379.split.us.split.us.us.us ], [ 0, %.lr.ph3379.split.us.split.us.us.us.preheader ]
  %944 = mul nsw i64 %indvars.iv5611, %859
  %gep3386.us.us.us.us = getelementptr float, ptr %invariant.gep3381.us.us, i64 %944
  %945 = load float, ptr %gep3386.us.us.us.us, align 4, !tbaa !27
  %946 = getelementptr float, ptr %884, i64 %indvars.iv5611
  %947 = load float, ptr %946, align 4, !tbaa !27
  %948 = call float @llvm.fmuladd.f32(float %945, float %947, float %943)
  store float %948, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5612 = or disjoint i64 %indvars.iv5611, 1
  %949 = mul nsw i64 %indvars.iv.next5612, %859
  %gep3386.us.us.us.us.1 = getelementptr float, ptr %invariant.gep3381.us.us, i64 %949
  %950 = load float, ptr %gep3386.us.us.us.us.1, align 4, !tbaa !27
  %951 = getelementptr float, ptr %884, i64 %indvars.iv.next5612
  %952 = load float, ptr %951, align 4, !tbaa !27
  %953 = call float @llvm.fmuladd.f32(float %950, float %952, float %948)
  store float %953, ptr %gep6671, align 4, !tbaa !27
  %indvars.iv.next5612.1 = add nuw nsw i64 %indvars.iv5611, 2
  %niter7562.next.1 = add i64 %niter7562, 2
  %niter7562.ncmp.1 = icmp eq i64 %niter7562.next.1, %unroll_iter7561
  br i1 %niter7562.ncmp.1, label %._crit_edge3380.us.us.loopexit.unr-lcssa, label %.lr.ph3379.split.us.split.us.us.us, !llvm.loop !79

.lr.ph3406.split:                                 ; preds = %.lr.ph3406, %._crit_edge3394.split
  %indvars.iv5591 = phi i64 [ %indvars.iv.next5592, %._crit_edge3394.split ], [ 0, %.lr.ph3406 ]
  %954 = load double, ptr %853, align 8, !tbaa !25
  %955 = fcmp oeq double %954, 0.000000e+00
  br i1 %955, label %956, label %957

956:                                              ; preds = %.lr.ph3406.split
  %gep6667 = getelementptr float, ptr %invariant.gep6668, i64 %indvars.iv5591
  store float 0.000000e+00, ptr %gep6667, align 4, !tbaa !27
  br label %957

957:                                              ; preds = %956, %.lr.ph3406.split
  %958 = load i32, ptr %854, align 8, !tbaa !52
  %959 = icmp sgt i32 %958, 0
  br i1 %959, label %.lr.ph3393, label %._crit_edge3394.split

.lr.ph3393:                                       ; preds = %957, %.lr.ph3393
  %indvars.iv5588 = phi i64 [ %indvars.iv.next5589, %.lr.ph3393 ], [ 0, %957 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5588, ptr noundef nonnull %0)
  %indvars.iv.next5589 = add nuw nsw i64 %indvars.iv5588, 1
  %960 = load i32, ptr %854, align 8, !tbaa !52
  %961 = sext i32 %960 to i64
  %962 = icmp slt i64 %indvars.iv.next5589, %961
  br i1 %962, label %.lr.ph3393, label %._crit_edge3394.split, !llvm.loop !80

._crit_edge3394.split:                            ; preds = %.lr.ph3393, %957
  %indvars.iv.next5592 = add nuw nsw i64 %indvars.iv5591, 1
  %exitcond5595.not = icmp eq i64 %indvars.iv.next5592, %wide.trip.count5594
  br i1 %exitcond5595.not, label %._crit_edge3407, label %.lr.ph3406.split, !llvm.loop !78

._crit_edge3407:                                  ; preds = %._crit_edge3394.split, %._crit_edge3394.split.us.us, %.preheader2942
  %indvars.iv.next5625 = add nuw nsw i64 %indvars.iv5624, 1
  %exitcond5628.not = icmp eq i64 %indvars.iv.next5625, %wide.trip.count5627
  br i1 %exitcond5628.not, label %._crit_edge3411, label %.preheader2942, !llvm.loop !81

._crit_edge3411:                                  ; preds = %._crit_edge3407, %850
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %.loopexit

963:                                              ; preds = %711
  %964 = getelementptr inbounds i8, ptr %0, i64 4
  %965 = load i32, ptr %964, align 4, !tbaa !24
  %966 = icmp eq i32 %965, 10
  br i1 %966, label %967, label %.thread2862

967:                                              ; preds = %963
  %968 = getelementptr inbounds i8, ptr %0, i64 8
  %969 = load i32, ptr %968, align 8, !tbaa !26
  %970 = icmp eq i32 %969, 8
  br i1 %970, label %971, label %.thread2862

971:                                              ; preds = %967
  %972 = getelementptr inbounds i8, ptr %0, i64 12
  %973 = load i32, ptr %972, align 4, !tbaa !70
  %974 = icmp eq i32 %973, 8
  br i1 %974, label %975, label %.thread2862

975:                                              ; preds = %971
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  store ptr %1, ptr %18, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  store ptr %2, ptr %19, align 8, !tbaa !50
  %976 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 10) #8
  %.fr4937 = freeze i32 %976
  %977 = icmp sgt i32 %79, 0
  br i1 %977, label %.preheader2944.lr.ph, label %._crit_edge3376

.preheader2944.lr.ph:                             ; preds = %975
  %978 = icmp sgt i32 %77, 0
  %979 = getelementptr inbounds i8, ptr %0, i64 56
  %980 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3359 = mul i32 %.fr4937, %71
  %981 = icmp sgt i32 %.fr4937, 0
  %982 = sext i32 %.fr4937 to i64
  %983 = sext i32 %75 to i64
  %984 = sext i32 %73 to i64
  %wide.trip.count5586 = zext nneg i32 %79 to i64
  %wide.trip.count5563 = zext nneg i32 %77 to i64
  %wide.trip.count5581 = zext nneg i32 %77 to i64
  %wide.trip.count5568 = zext i32 %.fr4937 to i64
  %min.iters.check7305 = icmp ult i32 %.fr4937, 8
  %n.vec7308 = and i64 %wide.trip.count5568, 2147483640
  %cmp.n7320 = icmp eq i64 %n.vec7308, %wide.trip.count5568
  br label %.preheader2944

.preheader2944:                                   ; preds = %.preheader2944.lr.ph, %._crit_edge3373
  %indvars.iv5583 = phi i64 [ 0, %.preheader2944.lr.ph ], [ %indvars.iv.next5584, %._crit_edge3373 ]
  br i1 %978, label %.lr.ph3372, label %._crit_edge3373

.lr.ph3372:                                       ; preds = %.preheader2944
  %985 = mul nsw i64 %indvars.iv5583, %983
  %986 = mul nsw i64 %indvars.iv5583, %984
  %invariant.gep6662 = getelementptr i32, ptr %3, i64 %985
  br i1 %981, label %.lr.ph3372.split.us.preheader, label %.lr.ph3372.split

.lr.ph3372.split.us.preheader:                    ; preds = %.lr.ph3372
  %invariant.gep6664 = getelementptr i32, ptr %3, i64 %985
  br label %.lr.ph3372.split.us

.lr.ph3372.split.us:                              ; preds = %.lr.ph3372.split.us.preheader, %._crit_edge3366.split.us.us
  %indvars.iv5578 = phi i64 [ 0, %.lr.ph3372.split.us.preheader ], [ %indvars.iv.next5579, %._crit_edge3366.split.us.us ]
  %987 = load double, ptr %979, align 8, !tbaa !25
  %988 = fcmp oeq double %987, 0.000000e+00
  br i1 %988, label %989, label %990

989:                                              ; preds = %.lr.ph3372.split.us
  %gep6663 = getelementptr i32, ptr %invariant.gep6662, i64 %indvars.iv5578
  store i32 0, ptr %gep6663, align 4, !tbaa !65
  br label %990

990:                                              ; preds = %989, %.lr.ph3372.split.us
  %991 = load i32, ptr %980, align 8, !tbaa !52
  %992 = icmp sgt i32 %991, 0
  br i1 %992, label %.lr.ph3365.us, label %._crit_edge3366.split.us.us

._crit_edge3366.split.us.us:                      ; preds = %997, %990
  %indvars.iv.next5579 = add nuw nsw i64 %indvars.iv5578, 1
  %exitcond5582.not = icmp eq i64 %indvars.iv.next5579, %wide.trip.count5581
  br i1 %exitcond5582.not, label %._crit_edge3373, label %.lr.ph3372.split.us, !llvm.loop !82

.lr.ph3365.us:                                    ; preds = %990
  %993 = mul nuw nsw i64 %indvars.iv5578, %982
  %gep6665 = getelementptr i32, ptr %invariant.gep6664, i64 %indvars.iv5578
  br label %994

994:                                              ; preds = %997, %.lr.ph3365.us
  %indvars.iv5575 = phi i64 [ %indvars.iv.next5576, %997 ], [ 0, %.lr.ph3365.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5575, ptr noundef nonnull %0)
  %995 = sdiv i32 %.fr4927, %.fr4937
  %996 = icmp sgt i32 %995, 0
  br i1 %996, label %.preheader2943.lr.ph.us.us, label %997

997:                                              ; preds = %._crit_edge3361.split.us.us.us, %994
  %indvars.iv.next5576 = add nuw nsw i64 %indvars.iv5575, 1
  %998 = load i32, ptr %980, align 8, !tbaa !52
  %999 = sext i32 %998 to i64
  %1000 = icmp slt i64 %indvars.iv.next5576, %999
  br i1 %1000, label %994, label %._crit_edge3366.split.us.us, !llvm.loop !83

.preheader2943.lr.ph.us.us:                       ; preds = %994
  %1001 = load ptr, ptr %18, align 8
  %1002 = load i64, ptr %5, align 8
  %1003 = getelementptr i16, ptr %1001, i64 %1002
  %invariant.gep.us3367.us = getelementptr i16, ptr %1003, i64 %993
  %1004 = load ptr, ptr %19, align 8
  %1005 = load i64, ptr %6, align 8
  %1006 = getelementptr i16, ptr %1004, i64 %1005
  %1007 = getelementptr i16, ptr %1006, i64 %986
  %.promoted.us.us3374 = load i32, ptr %gep6665, align 4, !tbaa !65
  %wide.trip.count5573 = zext nneg i32 %995 to i64
  br label %.preheader2943.us.us.us

.preheader2943.us.us.us:                          ; preds = %._crit_edge3357.us.us.us, %.preheader2943.lr.ph.us.us
  %indvars.iv5570 = phi i64 [ %indvars.iv.next5571, %._crit_edge3357.us.us.us ], [ 0, %.preheader2943.lr.ph.us.us ]
  %.lcssa3358.us3362.us.us = phi i32 [ %.lcssa6885, %._crit_edge3357.us.us.us ], [ %.promoted.us.us3374, %.preheader2943.lr.ph.us.us ]
  %1008 = trunc nuw nsw i64 %indvars.iv5570 to i32
  %factor.op.mul.reass.us.us3368.us = mul i32 %factor.op.mul3359, %1008
  %1009 = sext i32 %factor.op.mul.reass.us.us3368.us to i64
  %gep.us.us3369.us = getelementptr i16, ptr %invariant.gep.us3367.us, i64 %1009
  %1010 = mul nuw nsw i64 %indvars.iv5570, %982
  %1011 = getelementptr i16, ptr %1007, i64 %1010
  br i1 %min.iters.check7305, label %scalar.ph7304.preheader, label %vector.ph7306

vector.ph7306:                                    ; preds = %.preheader2943.us.us.us
  %1012 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.lcssa3358.us3362.us.us, i64 0
  br label %vector.body7310

vector.body7310:                                  ; preds = %vector.body7310, %vector.ph7306
  %index7311 = phi i64 [ 0, %vector.ph7306 ], [ %index.next7318, %vector.body7310 ]
  %vec.phi7312 = phi <4 x i32> [ %1012, %vector.ph7306 ], [ %1023, %vector.body7310 ]
  %vec.phi7313 = phi <4 x i32> [ zeroinitializer, %vector.ph7306 ], [ %1024, %vector.body7310 ]
  %1013 = getelementptr i16, ptr %gep.us.us3369.us, i64 %index7311
  %1014 = getelementptr i8, ptr %1013, i64 8
  %wide.load7314 = load <4 x i16>, ptr %1013, align 2, !tbaa !38
  %wide.load7315 = load <4 x i16>, ptr %1014, align 2, !tbaa !38
  %1015 = sext <4 x i16> %wide.load7314 to <4 x i32>
  %1016 = sext <4 x i16> %wide.load7315 to <4 x i32>
  %1017 = getelementptr i16, ptr %1011, i64 %index7311
  %1018 = getelementptr i8, ptr %1017, i64 8
  %wide.load7316 = load <4 x i16>, ptr %1017, align 2, !tbaa !38
  %wide.load7317 = load <4 x i16>, ptr %1018, align 2, !tbaa !38
  %1019 = sext <4 x i16> %wide.load7316 to <4 x i32>
  %1020 = sext <4 x i16> %wide.load7317 to <4 x i32>
  %1021 = mul nsw <4 x i32> %1019, %1015
  %1022 = mul nsw <4 x i32> %1020, %1016
  %1023 = add <4 x i32> %1021, %vec.phi7312
  %1024 = add <4 x i32> %1022, %vec.phi7313
  %index.next7318 = add nuw i64 %index7311, 8
  %1025 = icmp eq i64 %index.next7318, %n.vec7308
  br i1 %1025, label %middle.block7303, label %vector.body7310, !llvm.loop !84

middle.block7303:                                 ; preds = %vector.body7310
  %bin.rdx7319 = add <4 x i32> %1024, %1023
  %1026 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx7319)
  br i1 %cmp.n7320, label %._crit_edge3357.us.us.us, label %scalar.ph7304.preheader

scalar.ph7304.preheader:                          ; preds = %middle.block7303, %.preheader2943.us.us.us
  %indvars.iv5565.ph = phi i64 [ 0, %.preheader2943.us.us.us ], [ %n.vec7308, %middle.block7303 ]
  %.ph = phi i32 [ %.lcssa3358.us3362.us.us, %.preheader2943.us.us.us ], [ %1026, %middle.block7303 ]
  br label %scalar.ph7304

scalar.ph7304:                                    ; preds = %scalar.ph7304.preheader, %scalar.ph7304
  %indvars.iv5565 = phi i64 [ %indvars.iv.next5566, %scalar.ph7304 ], [ %indvars.iv5565.ph, %scalar.ph7304.preheader ]
  %1027 = phi i32 [ %1035, %scalar.ph7304 ], [ %.ph, %scalar.ph7304.preheader ]
  %1028 = getelementptr i16, ptr %gep.us.us3369.us, i64 %indvars.iv5565
  %1029 = load i16, ptr %1028, align 2, !tbaa !38
  %1030 = sext i16 %1029 to i32
  %1031 = getelementptr i16, ptr %1011, i64 %indvars.iv5565
  %1032 = load i16, ptr %1031, align 2, !tbaa !38
  %1033 = sext i16 %1032 to i32
  %1034 = mul nsw i32 %1033, %1030
  %1035 = add nsw i32 %1034, %1027
  %indvars.iv.next5566 = add nuw nsw i64 %indvars.iv5565, 1
  %exitcond5569.not = icmp eq i64 %indvars.iv.next5566, %wide.trip.count5568
  br i1 %exitcond5569.not, label %._crit_edge3357.us.us.us, label %scalar.ph7304, !llvm.loop !85

._crit_edge3357.us.us.us:                         ; preds = %scalar.ph7304, %middle.block7303
  %.lcssa6885 = phi i32 [ %1026, %middle.block7303 ], [ %1035, %scalar.ph7304 ]
  %indvars.iv.next5571 = add nuw nsw i64 %indvars.iv5570, 1
  %exitcond5574.not = icmp eq i64 %indvars.iv.next5571, %wide.trip.count5573
  br i1 %exitcond5574.not, label %._crit_edge3361.split.us.us.us, label %.preheader2943.us.us.us, !llvm.loop !86

._crit_edge3361.split.us.us.us:                   ; preds = %._crit_edge3357.us.us.us
  store i32 %.lcssa6885, ptr %gep6665, align 4, !tbaa !65
  br label %997

.lr.ph3372.split:                                 ; preds = %.lr.ph3372, %._crit_edge3366.split
  %indvars.iv5560 = phi i64 [ %indvars.iv.next5561, %._crit_edge3366.split ], [ 0, %.lr.ph3372 ]
  %1036 = load double, ptr %979, align 8, !tbaa !25
  %1037 = fcmp oeq double %1036, 0.000000e+00
  br i1 %1037, label %1038, label %1039

1038:                                             ; preds = %.lr.ph3372.split
  %gep6661 = getelementptr i32, ptr %invariant.gep6662, i64 %indvars.iv5560
  store i32 0, ptr %gep6661, align 4, !tbaa !65
  br label %1039

1039:                                             ; preds = %1038, %.lr.ph3372.split
  %1040 = load i32, ptr %980, align 8, !tbaa !52
  %1041 = icmp sgt i32 %1040, 0
  br i1 %1041, label %.lr.ph3365, label %._crit_edge3366.split

.lr.ph3365:                                       ; preds = %1039, %.lr.ph3365
  %indvars.iv5557 = phi i64 [ %indvars.iv.next5558, %.lr.ph3365 ], [ 0, %1039 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5557, ptr noundef nonnull %0)
  %indvars.iv.next5558 = add nuw nsw i64 %indvars.iv5557, 1
  %1042 = load i32, ptr %980, align 8, !tbaa !52
  %1043 = sext i32 %1042 to i64
  %1044 = icmp slt i64 %indvars.iv.next5558, %1043
  br i1 %1044, label %.lr.ph3365, label %._crit_edge3366.split, !llvm.loop !83

._crit_edge3366.split:                            ; preds = %.lr.ph3365, %1039
  %indvars.iv.next5561 = add nuw nsw i64 %indvars.iv5560, 1
  %exitcond5564.not = icmp eq i64 %indvars.iv.next5561, %wide.trip.count5563
  br i1 %exitcond5564.not, label %._crit_edge3373, label %.lr.ph3372.split, !llvm.loop !82

._crit_edge3373:                                  ; preds = %._crit_edge3366.split, %._crit_edge3366.split.us.us, %.preheader2944
  %indvars.iv.next5584 = add nuw nsw i64 %indvars.iv5583, 1
  %exitcond5587.not = icmp eq i64 %indvars.iv.next5584, %wide.trip.count5586
  br i1 %exitcond5587.not, label %._crit_edge3376, label %.preheader2944, !llvm.loop !87

._crit_edge3376:                                  ; preds = %._crit_edge3373, %975
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %.loopexit

1045:                                             ; preds = %711
  %1046 = getelementptr inbounds i8, ptr %0, i64 4
  %1047 = load i32, ptr %1046, align 4, !tbaa !24
  switch i32 %1047, label %.thread2862 [
    i32 12, label %1048
    i32 2, label %2080
  ]

1048:                                             ; preds = %1045
  %1049 = getelementptr inbounds i8, ptr %0, i64 8
  %1050 = load i32, ptr %1049, align 8, !tbaa !26
  %1051 = icmp eq i32 %1050, 8
  br i1 %1051, label %1052, label %1166

1052:                                             ; preds = %1048
  %1053 = getelementptr inbounds i8, ptr %0, i64 12
  %1054 = load i32, ptr %1053, align 4, !tbaa !70
  %1055 = icmp eq i32 %1054, 8
  br i1 %1055, label %1056, label %1166

1056:                                             ; preds = %1052
  %1057 = getelementptr inbounds i8, ptr %0, i64 84
  %1058 = load i32, ptr %1057, align 4, !tbaa !88
  %1059 = icmp eq i32 %1058, 1
  br i1 %1059, label %1060, label %1166

1060:                                             ; preds = %1056
  %1061 = getelementptr inbounds i8, ptr %0, i64 88
  %1062 = load i32, ptr %1061, align 8, !tbaa !89
  %1063 = icmp eq i32 %1062, 1
  br i1 %1063, label %1064, label %1166

1064:                                             ; preds = %1060
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  store ptr %1, ptr %20, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  store ptr %2, ptr %21, align 8, !tbaa !50
  %1065 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4936 = freeze i32 %1065
  %1066 = icmp sgt i32 %79, 0
  br i1 %1066, label %.preheader2946.lr.ph, label %._crit_edge3354

.preheader2946.lr.ph:                             ; preds = %1064
  %1067 = icmp sgt i32 %77, 0
  %1068 = getelementptr inbounds i8, ptr %0, i64 56
  %1069 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3336 = mul i32 %.fr4936, %71
  %1070 = icmp sgt i32 %.fr4936, 0
  %1071 = sext i32 %.fr4936 to i64
  %1072 = sext i32 %75 to i64
  %1073 = sext i32 %73 to i64
  %wide.trip.count5555 = zext nneg i32 %79 to i64
  %wide.trip.count5532 = zext nneg i32 %77 to i64
  %wide.trip.count5550 = zext nneg i32 %77 to i64
  %wide.trip.count5537 = zext i32 %.fr4936 to i64
  %1074 = shl nsw i64 %1072, 2
  %1075 = mul i32 %.fr4936, %71
  %invariant.gep7849 = getelementptr i8, ptr %3, i64 4
  %min.iters.check7286 = icmp ult i32 %.fr4936, 8
  %n.vec7289 = and i64 %wide.trip.count5537, 2147483640
  %cmp.n7301 = icmp eq i64 %n.vec7289, %wide.trip.count5537
  %xtraiter7541 = and i64 %wide.trip.count5537, 1
  %lcmp.mod7542.not = icmp eq i64 %xtraiter7541, 0
  %1076 = add nsw i64 %wide.trip.count5537, -1
  br label %.preheader2946

.preheader2946:                                   ; preds = %.preheader2946.lr.ph, %._crit_edge3351
  %indvars.iv5552 = phi i64 [ 0, %.preheader2946.lr.ph ], [ %indvars.iv.next5553, %._crit_edge3351 ]
  %1077 = mul i64 %1074, %indvars.iv5552
  %1078 = mul i64 %indvars.iv5552, %1073
  br i1 %1067, label %.lr.ph3350, label %._crit_edge3351

.lr.ph3350:                                       ; preds = %.preheader2946
  %1079 = mul nsw i64 %indvars.iv5552, %1072
  %1080 = mul nsw i64 %indvars.iv5552, %1073
  %invariant.gep6656 = getelementptr i32, ptr %3, i64 %1079
  br i1 %1070, label %.lr.ph3350.split.us.preheader, label %.lr.ph3350.split

.lr.ph3350.split.us.preheader:                    ; preds = %.lr.ph3350
  %invariant.gep6658 = getelementptr i32, ptr %3, i64 %1079
  %1081 = getelementptr i8, ptr %3, i64 %1077
  %gep7850 = getelementptr i8, ptr %invariant.gep7849, i64 %1077
  br label %.lr.ph3350.split.us

.lr.ph3350.split.us:                              ; preds = %.lr.ph3350.split.us.preheader, %._crit_edge3344.split.us.us
  %indvars.iv5547 = phi i64 [ 0, %.lr.ph3350.split.us.preheader ], [ %indvars.iv.next5548, %._crit_edge3344.split.us.us ]
  %1082 = shl nuw nsw i64 %indvars.iv5547, 2
  %scevgep7267 = getelementptr i8, ptr %1081, i64 %1082
  %scevgep7268 = getelementptr i8, ptr %gep7850, i64 %1082
  %1083 = mul i64 %indvars.iv5547, %1071
  %1084 = load double, ptr %1068, align 8, !tbaa !25
  %1085 = fcmp oeq double %1084, 0.000000e+00
  br i1 %1085, label %1086, label %1087

1086:                                             ; preds = %.lr.ph3350.split.us
  %gep6657 = getelementptr i32, ptr %invariant.gep6656, i64 %indvars.iv5547
  store i32 0, ptr %gep6657, align 4, !tbaa !65
  br label %1087

1087:                                             ; preds = %1086, %.lr.ph3350.split.us
  %1088 = load i32, ptr %1069, align 8, !tbaa !52
  %1089 = icmp sgt i32 %1088, 0
  br i1 %1089, label %.lr.ph3343.us, label %._crit_edge3344.split.us.us

._crit_edge3344.split.us.us:                      ; preds = %._crit_edge3338.split.us.us.us, %1087
  %indvars.iv.next5548 = add nuw nsw i64 %indvars.iv5547, 1
  %exitcond5551.not = icmp eq i64 %indvars.iv.next5548, %wide.trip.count5550
  br i1 %exitcond5551.not, label %._crit_edge3351, label %.lr.ph3350.split.us, !llvm.loop !90

.lr.ph3343.us:                                    ; preds = %1087
  %1090 = mul nuw nsw i64 %indvars.iv5547, %1071
  %gep6659 = getelementptr i32, ptr %invariant.gep6658, i64 %indvars.iv5547
  br label %1091

1091:                                             ; preds = %._crit_edge3338.split.us.us.us, %.lr.ph3343.us
  %indvars.iv5544 = phi i64 [ %indvars.iv.next5545, %._crit_edge3338.split.us.us.us ], [ 0, %.lr.ph3343.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5544, ptr noundef nonnull %0)
  %1092 = sdiv i32 %.fr4927, %.fr4936
  %1093 = icmp sgt i32 %1092, 0
  br i1 %1093, label %.preheader2945.lr.ph.us.us, label %._crit_edge3338.split.us.us.us

._crit_edge3338.split.us.us.us:                   ; preds = %._crit_edge3335.us.us.us, %1091
  %indvars.iv.next5545 = add nuw nsw i64 %indvars.iv5544, 1
  %1094 = load i32, ptr %1069, align 8, !tbaa !52
  %1095 = sext i32 %1094 to i64
  %1096 = icmp slt i64 %indvars.iv.next5545, %1095
  br i1 %1096, label %1091, label %._crit_edge3344.split.us.us, !llvm.loop !91

.preheader2945.lr.ph.us.us:                       ; preds = %1091
  %1097 = load ptr, ptr %20, align 8
  %1098 = load i64, ptr %5, align 8
  %1099 = getelementptr i8, ptr %1097, i64 %1098
  %invariant.gep.us3345.us = getelementptr i8, ptr %1099, i64 %1090
  %1100 = load ptr, ptr %21, align 8
  %1101 = load i64, ptr %6, align 8
  %1102 = getelementptr i8, ptr %1100, i64 %1101
  %1103 = getelementptr i8, ptr %1102, i64 %1080
  %.promoted.us.us3352 = load i32, ptr %gep6659, align 4, !tbaa !65
  %wide.trip.count5542 = zext nneg i32 %1092 to i64
  %scevgep7269 = getelementptr i8, ptr %1097, i64 %1083
  %scevgep7270 = getelementptr i8, ptr %scevgep7269, i64 %1098
  %1104 = getelementptr i8, ptr %1097, i64 %1083
  %scevgep7272 = getelementptr i8, ptr %1104, i64 %wide.trip.count5537
  %scevgep7273 = getelementptr i8, ptr %scevgep7272, i64 %1098
  %1105 = getelementptr i8, ptr %1100, i64 %1078
  %scevgep7275 = getelementptr i8, ptr %1105, i64 %wide.trip.count5537
  %1106 = add nsw i64 %wide.trip.count5542, -1
  %1107 = mul nsw i64 %1106, %1071
  %1108 = getelementptr i8, ptr %scevgep7275, i64 %1101
  %scevgep7276 = getelementptr i8, ptr %1108, i64 %1107
  %bound07280 = icmp ult ptr %scevgep7267, %scevgep7276
  %bound17281 = icmp ult ptr %1103, %scevgep7268
  %found.conflict7282 = and i1 %bound07280, %bound17281
  br label %.preheader2945.us.us.us

.preheader2945.us.us.us:                          ; preds = %._crit_edge3335.us.us.us, %.preheader2945.lr.ph.us.us
  %indvars.iv5539 = phi i64 [ %indvars.iv.next5540, %._crit_edge3335.us.us.us ], [ 0, %.preheader2945.lr.ph.us.us ]
  %.promoted.us3339.us.us = phi i32 [ %.lcssa6886, %._crit_edge3335.us.us.us ], [ %.promoted.us.us3352, %.preheader2945.lr.ph.us.us ]
  %1109 = trunc nuw nsw i64 %indvars.iv5539 to i32
  %factor.op.mul.reass.us.us3346.us = mul i32 %factor.op.mul3336, %1109
  %1110 = sext i32 %factor.op.mul.reass.us.us3346.us to i64
  %gep.us.us3347.us = getelementptr i8, ptr %invariant.gep.us3345.us, i64 %1110
  %1111 = mul nuw nsw i64 %indvars.iv5539, %1071
  %1112 = getelementptr i8, ptr %1103, i64 %1111
  br i1 %min.iters.check7286, label %scalar.ph7285.preheader, label %vector.memcheck7266

vector.memcheck7266:                              ; preds = %.preheader2945.us.us.us
  %1113 = trunc i64 %indvars.iv5539 to i32
  %1114 = mul i32 %1075, %1113
  %1115 = sext i32 %1114 to i64
  %scevgep7274 = getelementptr i8, ptr %scevgep7273, i64 %1115
  %scevgep7271 = getelementptr i8, ptr %scevgep7270, i64 %1115
  %bound07277 = icmp ult ptr %scevgep7267, %scevgep7274
  %bound17278 = icmp ult ptr %scevgep7271, %scevgep7268
  %found.conflict7279 = and i1 %bound07277, %bound17278
  %conflict.rdx7283 = or i1 %found.conflict7279, %found.conflict7282
  br i1 %conflict.rdx7283, label %scalar.ph7285.preheader, label %vector.ph7287

vector.ph7287:                                    ; preds = %vector.memcheck7266
  %1116 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.promoted.us3339.us.us, i64 0
  br label %vector.body7291

vector.body7291:                                  ; preds = %vector.body7291, %vector.ph7287
  %index7292 = phi i64 [ 0, %vector.ph7287 ], [ %index.next7299, %vector.body7291 ]
  %vec.phi7293 = phi <4 x i32> [ %1116, %vector.ph7287 ], [ %1127, %vector.body7291 ]
  %vec.phi7294 = phi <4 x i32> [ zeroinitializer, %vector.ph7287 ], [ %1128, %vector.body7291 ]
  %1117 = getelementptr i8, ptr %gep.us.us3347.us, i64 %index7292
  %1118 = getelementptr i8, ptr %1117, i64 4
  %wide.load7295 = load <4 x i8>, ptr %1117, align 1, !tbaa !41, !alias.scope !92
  %wide.load7296 = load <4 x i8>, ptr %1118, align 1, !tbaa !41, !alias.scope !92
  %1119 = zext <4 x i8> %wide.load7295 to <4 x i32>
  %1120 = zext <4 x i8> %wide.load7296 to <4 x i32>
  %1121 = getelementptr i8, ptr %1112, i64 %index7292
  %1122 = getelementptr i8, ptr %1121, i64 4
  %wide.load7297 = load <4 x i8>, ptr %1121, align 1, !tbaa !41, !alias.scope !95
  %wide.load7298 = load <4 x i8>, ptr %1122, align 1, !tbaa !41, !alias.scope !95
  %1123 = zext <4 x i8> %wide.load7297 to <4 x i32>
  %1124 = zext <4 x i8> %wide.load7298 to <4 x i32>
  %1125 = mul nuw nsw <4 x i32> %1123, %1119
  %1126 = mul nuw nsw <4 x i32> %1124, %1120
  %1127 = add <4 x i32> %1125, %vec.phi7293
  %1128 = add <4 x i32> %1126, %vec.phi7294
  %index.next7299 = add nuw i64 %index7292, 8
  %1129 = icmp eq i64 %index.next7299, %n.vec7289
  br i1 %1129, label %middle.block7284, label %vector.body7291, !llvm.loop !97

middle.block7284:                                 ; preds = %vector.body7291
  %bin.rdx7300 = add <4 x i32> %1128, %1127
  %1130 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx7300)
  store i32 %1130, ptr %gep6659, align 4, !tbaa !65
  br i1 %cmp.n7301, label %._crit_edge3335.us.us.us, label %scalar.ph7285.preheader

scalar.ph7285.preheader:                          ; preds = %middle.block7284, %vector.memcheck7266, %.preheader2945.us.us.us
  %indvars.iv5534.ph = phi i64 [ 0, %vector.memcheck7266 ], [ 0, %.preheader2945.us.us.us ], [ %n.vec7289, %middle.block7284 ]
  %.ph7427 = phi i32 [ %.promoted.us3339.us.us, %vector.memcheck7266 ], [ %.promoted.us3339.us.us, %.preheader2945.us.us.us ], [ %1130, %middle.block7284 ]
  br i1 %lcmp.mod7542.not, label %scalar.ph7285.prol.loopexit, label %scalar.ph7285.prol

scalar.ph7285.prol:                               ; preds = %scalar.ph7285.preheader
  %1131 = getelementptr i8, ptr %gep.us.us3347.us, i64 %indvars.iv5534.ph
  %1132 = load i8, ptr %1131, align 1, !tbaa !41
  %1133 = zext i8 %1132 to i32
  %1134 = getelementptr i8, ptr %1112, i64 %indvars.iv5534.ph
  %1135 = load i8, ptr %1134, align 1, !tbaa !41
  %1136 = zext i8 %1135 to i32
  %1137 = mul nuw nsw i32 %1136, %1133
  %1138 = add nsw i32 %1137, %.ph7427
  store i32 %1138, ptr %gep6659, align 4, !tbaa !65
  %indvars.iv.next5535.prol = or disjoint i64 %indvars.iv5534.ph, 1
  br label %scalar.ph7285.prol.loopexit

scalar.ph7285.prol.loopexit:                      ; preds = %scalar.ph7285.prol, %scalar.ph7285.preheader
  %.lcssa7431.unr = phi i32 [ poison, %scalar.ph7285.preheader ], [ %1138, %scalar.ph7285.prol ]
  %indvars.iv5534.unr = phi i64 [ %indvars.iv5534.ph, %scalar.ph7285.preheader ], [ %indvars.iv.next5535.prol, %scalar.ph7285.prol ]
  %.unr7544 = phi i32 [ %.ph7427, %scalar.ph7285.preheader ], [ %1138, %scalar.ph7285.prol ]
  %1139 = icmp eq i64 %indvars.iv5534.ph, %1076
  br i1 %1139, label %._crit_edge3335.us.us.us, label %scalar.ph7285

scalar.ph7285:                                    ; preds = %scalar.ph7285.prol.loopexit, %scalar.ph7285
  %indvars.iv5534 = phi i64 [ %indvars.iv.next5535.1, %scalar.ph7285 ], [ %indvars.iv5534.unr, %scalar.ph7285.prol.loopexit ]
  %1140 = phi i32 [ %1156, %scalar.ph7285 ], [ %.unr7544, %scalar.ph7285.prol.loopexit ]
  %1141 = getelementptr i8, ptr %gep.us.us3347.us, i64 %indvars.iv5534
  %1142 = load i8, ptr %1141, align 1, !tbaa !41
  %1143 = zext i8 %1142 to i32
  %1144 = getelementptr i8, ptr %1112, i64 %indvars.iv5534
  %1145 = load i8, ptr %1144, align 1, !tbaa !41
  %1146 = zext i8 %1145 to i32
  %1147 = mul nuw nsw i32 %1146, %1143
  %1148 = add nsw i32 %1147, %1140
  store i32 %1148, ptr %gep6659, align 4, !tbaa !65
  %indvars.iv.next5535 = add nuw nsw i64 %indvars.iv5534, 1
  %1149 = getelementptr i8, ptr %gep.us.us3347.us, i64 %indvars.iv.next5535
  %1150 = load i8, ptr %1149, align 1, !tbaa !41
  %1151 = zext i8 %1150 to i32
  %1152 = getelementptr i8, ptr %1112, i64 %indvars.iv.next5535
  %1153 = load i8, ptr %1152, align 1, !tbaa !41
  %1154 = zext i8 %1153 to i32
  %1155 = mul nuw nsw i32 %1154, %1151
  %1156 = add nsw i32 %1155, %1148
  store i32 %1156, ptr %gep6659, align 4, !tbaa !65
  %indvars.iv.next5535.1 = add nuw nsw i64 %indvars.iv5534, 2
  %exitcond5538.not.1 = icmp eq i64 %indvars.iv.next5535.1, %wide.trip.count5537
  br i1 %exitcond5538.not.1, label %._crit_edge3335.us.us.us, label %scalar.ph7285, !llvm.loop !98

._crit_edge3335.us.us.us:                         ; preds = %scalar.ph7285.prol.loopexit, %scalar.ph7285, %middle.block7284
  %.lcssa6886 = phi i32 [ %1130, %middle.block7284 ], [ %.lcssa7431.unr, %scalar.ph7285.prol.loopexit ], [ %1156, %scalar.ph7285 ]
  %indvars.iv.next5540 = add nuw nsw i64 %indvars.iv5539, 1
  %exitcond5543.not = icmp eq i64 %indvars.iv.next5540, %wide.trip.count5542
  br i1 %exitcond5543.not, label %._crit_edge3338.split.us.us.us, label %.preheader2945.us.us.us, !llvm.loop !99

.lr.ph3350.split:                                 ; preds = %.lr.ph3350, %._crit_edge3344.split
  %indvars.iv5529 = phi i64 [ %indvars.iv.next5530, %._crit_edge3344.split ], [ 0, %.lr.ph3350 ]
  %1157 = load double, ptr %1068, align 8, !tbaa !25
  %1158 = fcmp oeq double %1157, 0.000000e+00
  br i1 %1158, label %1159, label %1160

1159:                                             ; preds = %.lr.ph3350.split
  %gep6655 = getelementptr i32, ptr %invariant.gep6656, i64 %indvars.iv5529
  store i32 0, ptr %gep6655, align 4, !tbaa !65
  br label %1160

1160:                                             ; preds = %1159, %.lr.ph3350.split
  %1161 = load i32, ptr %1069, align 8, !tbaa !52
  %1162 = icmp sgt i32 %1161, 0
  br i1 %1162, label %.lr.ph3343, label %._crit_edge3344.split

.lr.ph3343:                                       ; preds = %1160, %.lr.ph3343
  %indvars.iv5526 = phi i64 [ %indvars.iv.next5527, %.lr.ph3343 ], [ 0, %1160 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5526, ptr noundef nonnull %0)
  %indvars.iv.next5527 = add nuw nsw i64 %indvars.iv5526, 1
  %1163 = load i32, ptr %1069, align 8, !tbaa !52
  %1164 = sext i32 %1163 to i64
  %1165 = icmp slt i64 %indvars.iv.next5527, %1164
  br i1 %1165, label %.lr.ph3343, label %._crit_edge3344.split, !llvm.loop !91

._crit_edge3344.split:                            ; preds = %.lr.ph3343, %1160
  %indvars.iv.next5530 = add nuw nsw i64 %indvars.iv5529, 1
  %exitcond5533.not = icmp eq i64 %indvars.iv.next5530, %wide.trip.count5532
  br i1 %exitcond5533.not, label %._crit_edge3351, label %.lr.ph3350.split, !llvm.loop !90

._crit_edge3351:                                  ; preds = %._crit_edge3344.split, %._crit_edge3344.split.us.us, %.preheader2946
  %indvars.iv.next5553 = add nuw nsw i64 %indvars.iv5552, 1
  %exitcond5556.not = icmp eq i64 %indvars.iv.next5553, %wide.trip.count5555
  br i1 %exitcond5556.not, label %._crit_edge3354, label %.preheader2946, !llvm.loop !100

._crit_edge3354:                                  ; preds = %._crit_edge3351, %1064
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %.loopexit

1166:                                             ; preds = %1060, %1056, %1052, %1048
  %1167 = getelementptr inbounds i8, ptr %0, i64 8
  %1168 = load i32, ptr %1167, align 8, !tbaa !26
  %1169 = icmp eq i32 %1168, 8
  br i1 %1169, label %1170, label %1284

1170:                                             ; preds = %1166
  %1171 = getelementptr inbounds i8, ptr %0, i64 12
  %1172 = load i32, ptr %1171, align 4, !tbaa !70
  %1173 = icmp eq i32 %1172, 8
  br i1 %1173, label %1174, label %1284

1174:                                             ; preds = %1170
  %1175 = getelementptr inbounds i8, ptr %0, i64 84
  %1176 = load i32, ptr %1175, align 4, !tbaa !88
  %1177 = icmp eq i32 %1176, 0
  br i1 %1177, label %1178, label %1284

1178:                                             ; preds = %1174
  %1179 = getelementptr inbounds i8, ptr %0, i64 88
  %1180 = load i32, ptr %1179, align 8, !tbaa !89
  %1181 = icmp eq i32 %1180, 0
  br i1 %1181, label %1182, label %1284

1182:                                             ; preds = %1178
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  store ptr %1, ptr %22, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  store ptr %2, ptr %23, align 8, !tbaa !50
  %1183 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4935 = freeze i32 %1183
  %1184 = icmp sgt i32 %79, 0
  br i1 %1184, label %.preheader2948.lr.ph, label %._crit_edge3332

.preheader2948.lr.ph:                             ; preds = %1182
  %1185 = icmp sgt i32 %77, 0
  %1186 = getelementptr inbounds i8, ptr %0, i64 56
  %1187 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3314 = mul i32 %.fr4935, %71
  %1188 = icmp sgt i32 %.fr4935, 0
  %1189 = sext i32 %.fr4935 to i64
  %1190 = sext i32 %75 to i64
  %1191 = sext i32 %73 to i64
  %wide.trip.count5524 = zext nneg i32 %79 to i64
  %wide.trip.count5501 = zext nneg i32 %77 to i64
  %wide.trip.count5519 = zext nneg i32 %77 to i64
  %wide.trip.count5506 = zext i32 %.fr4935 to i64
  %1192 = shl nsw i64 %1190, 2
  %1193 = mul i32 %.fr4935, %71
  %invariant.gep7847 = getelementptr i8, ptr %3, i64 4
  %min.iters.check7249 = icmp ult i32 %.fr4935, 8
  %n.vec7252 = and i64 %wide.trip.count5506, 2147483640
  %cmp.n7264 = icmp eq i64 %n.vec7252, %wide.trip.count5506
  %xtraiter7537 = and i64 %wide.trip.count5506, 1
  %lcmp.mod7538.not = icmp eq i64 %xtraiter7537, 0
  %1194 = add nsw i64 %wide.trip.count5506, -1
  br label %.preheader2948

.preheader2948:                                   ; preds = %.preheader2948.lr.ph, %._crit_edge3329
  %indvars.iv5521 = phi i64 [ 0, %.preheader2948.lr.ph ], [ %indvars.iv.next5522, %._crit_edge3329 ]
  %1195 = mul i64 %1192, %indvars.iv5521
  %1196 = mul i64 %indvars.iv5521, %1191
  br i1 %1185, label %.lr.ph3328, label %._crit_edge3329

.lr.ph3328:                                       ; preds = %.preheader2948
  %1197 = mul nsw i64 %indvars.iv5521, %1190
  %1198 = mul nsw i64 %indvars.iv5521, %1191
  %invariant.gep6650 = getelementptr i32, ptr %3, i64 %1197
  br i1 %1188, label %.lr.ph3328.split.us.preheader, label %.lr.ph3328.split

.lr.ph3328.split.us.preheader:                    ; preds = %.lr.ph3328
  %invariant.gep6652 = getelementptr i32, ptr %3, i64 %1197
  %1199 = getelementptr i8, ptr %3, i64 %1195
  %gep7848 = getelementptr i8, ptr %invariant.gep7847, i64 %1195
  br label %.lr.ph3328.split.us

.lr.ph3328.split.us:                              ; preds = %.lr.ph3328.split.us.preheader, %._crit_edge3322.split.us.us
  %indvars.iv5516 = phi i64 [ 0, %.lr.ph3328.split.us.preheader ], [ %indvars.iv.next5517, %._crit_edge3322.split.us.us ]
  %1200 = shl nuw nsw i64 %indvars.iv5516, 2
  %scevgep7230 = getelementptr i8, ptr %1199, i64 %1200
  %scevgep7231 = getelementptr i8, ptr %gep7848, i64 %1200
  %1201 = mul i64 %indvars.iv5516, %1189
  %1202 = load double, ptr %1186, align 8, !tbaa !25
  %1203 = fcmp oeq double %1202, 0.000000e+00
  br i1 %1203, label %1204, label %1205

1204:                                             ; preds = %.lr.ph3328.split.us
  %gep6651 = getelementptr i32, ptr %invariant.gep6650, i64 %indvars.iv5516
  store i32 0, ptr %gep6651, align 4, !tbaa !65
  br label %1205

1205:                                             ; preds = %1204, %.lr.ph3328.split.us
  %1206 = load i32, ptr %1187, align 8, !tbaa !52
  %1207 = icmp sgt i32 %1206, 0
  br i1 %1207, label %.lr.ph3321.us, label %._crit_edge3322.split.us.us

._crit_edge3322.split.us.us:                      ; preds = %._crit_edge3316.split.us.us.us, %1205
  %indvars.iv.next5517 = add nuw nsw i64 %indvars.iv5516, 1
  %exitcond5520.not = icmp eq i64 %indvars.iv.next5517, %wide.trip.count5519
  br i1 %exitcond5520.not, label %._crit_edge3329, label %.lr.ph3328.split.us, !llvm.loop !101

.lr.ph3321.us:                                    ; preds = %1205
  %1208 = mul nuw nsw i64 %indvars.iv5516, %1189
  %gep6653 = getelementptr i32, ptr %invariant.gep6652, i64 %indvars.iv5516
  br label %1209

1209:                                             ; preds = %._crit_edge3316.split.us.us.us, %.lr.ph3321.us
  %indvars.iv5513 = phi i64 [ %indvars.iv.next5514, %._crit_edge3316.split.us.us.us ], [ 0, %.lr.ph3321.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5513, ptr noundef nonnull %0)
  %1210 = sdiv i32 %.fr4927, %.fr4935
  %1211 = icmp sgt i32 %1210, 0
  br i1 %1211, label %.preheader2947.lr.ph.us.us, label %._crit_edge3316.split.us.us.us

._crit_edge3316.split.us.us.us:                   ; preds = %._crit_edge3313.us.us.us, %1209
  %indvars.iv.next5514 = add nuw nsw i64 %indvars.iv5513, 1
  %1212 = load i32, ptr %1187, align 8, !tbaa !52
  %1213 = sext i32 %1212 to i64
  %1214 = icmp slt i64 %indvars.iv.next5514, %1213
  br i1 %1214, label %1209, label %._crit_edge3322.split.us.us, !llvm.loop !102

.preheader2947.lr.ph.us.us:                       ; preds = %1209
  %1215 = load ptr, ptr %22, align 8
  %1216 = load i64, ptr %5, align 8
  %1217 = getelementptr i8, ptr %1215, i64 %1216
  %invariant.gep.us3323.us = getelementptr i8, ptr %1217, i64 %1208
  %1218 = load ptr, ptr %23, align 8
  %1219 = load i64, ptr %6, align 8
  %1220 = getelementptr i8, ptr %1218, i64 %1219
  %1221 = getelementptr i8, ptr %1220, i64 %1198
  %.promoted.us.us3330 = load i32, ptr %gep6653, align 4, !tbaa !65
  %wide.trip.count5511 = zext nneg i32 %1210 to i64
  %scevgep7232 = getelementptr i8, ptr %1215, i64 %1201
  %scevgep7233 = getelementptr i8, ptr %scevgep7232, i64 %1216
  %1222 = getelementptr i8, ptr %1215, i64 %1201
  %scevgep7235 = getelementptr i8, ptr %1222, i64 %wide.trip.count5506
  %scevgep7236 = getelementptr i8, ptr %scevgep7235, i64 %1216
  %1223 = getelementptr i8, ptr %1218, i64 %1196
  %scevgep7238 = getelementptr i8, ptr %1223, i64 %wide.trip.count5506
  %1224 = add nsw i64 %wide.trip.count5511, -1
  %1225 = mul nsw i64 %1224, %1189
  %1226 = getelementptr i8, ptr %scevgep7238, i64 %1219
  %scevgep7239 = getelementptr i8, ptr %1226, i64 %1225
  %bound07243 = icmp ult ptr %scevgep7230, %scevgep7239
  %bound17244 = icmp ult ptr %1221, %scevgep7231
  %found.conflict7245 = and i1 %bound07243, %bound17244
  br label %.preheader2947.us.us.us

.preheader2947.us.us.us:                          ; preds = %._crit_edge3313.us.us.us, %.preheader2947.lr.ph.us.us
  %indvars.iv5508 = phi i64 [ %indvars.iv.next5509, %._crit_edge3313.us.us.us ], [ 0, %.preheader2947.lr.ph.us.us ]
  %.promoted.us3317.us.us = phi i32 [ %.lcssa6887, %._crit_edge3313.us.us.us ], [ %.promoted.us.us3330, %.preheader2947.lr.ph.us.us ]
  %1227 = trunc nuw nsw i64 %indvars.iv5508 to i32
  %factor.op.mul.reass.us.us3324.us = mul i32 %factor.op.mul3314, %1227
  %1228 = sext i32 %factor.op.mul.reass.us.us3324.us to i64
  %gep.us.us3325.us = getelementptr i8, ptr %invariant.gep.us3323.us, i64 %1228
  %1229 = mul nuw nsw i64 %indvars.iv5508, %1189
  %1230 = getelementptr i8, ptr %1221, i64 %1229
  br i1 %min.iters.check7249, label %scalar.ph7248.preheader, label %vector.memcheck7229

vector.memcheck7229:                              ; preds = %.preheader2947.us.us.us
  %1231 = trunc i64 %indvars.iv5508 to i32
  %1232 = mul i32 %1193, %1231
  %1233 = sext i32 %1232 to i64
  %scevgep7237 = getelementptr i8, ptr %scevgep7236, i64 %1233
  %scevgep7234 = getelementptr i8, ptr %scevgep7233, i64 %1233
  %bound07240 = icmp ult ptr %scevgep7230, %scevgep7237
  %bound17241 = icmp ult ptr %scevgep7234, %scevgep7231
  %found.conflict7242 = and i1 %bound07240, %bound17241
  %conflict.rdx7246 = or i1 %found.conflict7242, %found.conflict7245
  br i1 %conflict.rdx7246, label %scalar.ph7248.preheader, label %vector.ph7250

vector.ph7250:                                    ; preds = %vector.memcheck7229
  %1234 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.promoted.us3317.us.us, i64 0
  br label %vector.body7254

vector.body7254:                                  ; preds = %vector.body7254, %vector.ph7250
  %index7255 = phi i64 [ 0, %vector.ph7250 ], [ %index.next7262, %vector.body7254 ]
  %vec.phi7256 = phi <4 x i32> [ %1234, %vector.ph7250 ], [ %1245, %vector.body7254 ]
  %vec.phi7257 = phi <4 x i32> [ zeroinitializer, %vector.ph7250 ], [ %1246, %vector.body7254 ]
  %1235 = getelementptr i8, ptr %gep.us.us3325.us, i64 %index7255
  %1236 = getelementptr i8, ptr %1235, i64 4
  %wide.load7258 = load <4 x i8>, ptr %1235, align 1, !tbaa !41, !alias.scope !103
  %wide.load7259 = load <4 x i8>, ptr %1236, align 1, !tbaa !41, !alias.scope !103
  %1237 = sext <4 x i8> %wide.load7258 to <4 x i32>
  %1238 = sext <4 x i8> %wide.load7259 to <4 x i32>
  %1239 = getelementptr i8, ptr %1230, i64 %index7255
  %1240 = getelementptr i8, ptr %1239, i64 4
  %wide.load7260 = load <4 x i8>, ptr %1239, align 1, !tbaa !41, !alias.scope !106
  %wide.load7261 = load <4 x i8>, ptr %1240, align 1, !tbaa !41, !alias.scope !106
  %1241 = sext <4 x i8> %wide.load7260 to <4 x i32>
  %1242 = sext <4 x i8> %wide.load7261 to <4 x i32>
  %1243 = mul nsw <4 x i32> %1241, %1237
  %1244 = mul nsw <4 x i32> %1242, %1238
  %1245 = add <4 x i32> %1243, %vec.phi7256
  %1246 = add <4 x i32> %1244, %vec.phi7257
  %index.next7262 = add nuw i64 %index7255, 8
  %1247 = icmp eq i64 %index.next7262, %n.vec7252
  br i1 %1247, label %middle.block7247, label %vector.body7254, !llvm.loop !108

middle.block7247:                                 ; preds = %vector.body7254
  %bin.rdx7263 = add <4 x i32> %1246, %1245
  %1248 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx7263)
  store i32 %1248, ptr %gep6653, align 4, !tbaa !65
  br i1 %cmp.n7264, label %._crit_edge3313.us.us.us, label %scalar.ph7248.preheader

scalar.ph7248.preheader:                          ; preds = %middle.block7247, %vector.memcheck7229, %.preheader2947.us.us.us
  %indvars.iv5503.ph = phi i64 [ 0, %vector.memcheck7229 ], [ 0, %.preheader2947.us.us.us ], [ %n.vec7252, %middle.block7247 ]
  %.ph7432 = phi i32 [ %.promoted.us3317.us.us, %vector.memcheck7229 ], [ %.promoted.us3317.us.us, %.preheader2947.us.us.us ], [ %1248, %middle.block7247 ]
  br i1 %lcmp.mod7538.not, label %scalar.ph7248.prol.loopexit, label %scalar.ph7248.prol

scalar.ph7248.prol:                               ; preds = %scalar.ph7248.preheader
  %1249 = getelementptr i8, ptr %gep.us.us3325.us, i64 %indvars.iv5503.ph
  %1250 = load i8, ptr %1249, align 1, !tbaa !41
  %1251 = sext i8 %1250 to i32
  %1252 = getelementptr i8, ptr %1230, i64 %indvars.iv5503.ph
  %1253 = load i8, ptr %1252, align 1, !tbaa !41
  %1254 = sext i8 %1253 to i32
  %1255 = mul nsw i32 %1254, %1251
  %1256 = add nsw i32 %1255, %.ph7432
  store i32 %1256, ptr %gep6653, align 4, !tbaa !65
  %indvars.iv.next5504.prol = or disjoint i64 %indvars.iv5503.ph, 1
  br label %scalar.ph7248.prol.loopexit

scalar.ph7248.prol.loopexit:                      ; preds = %scalar.ph7248.prol, %scalar.ph7248.preheader
  %.lcssa7436.unr = phi i32 [ poison, %scalar.ph7248.preheader ], [ %1256, %scalar.ph7248.prol ]
  %indvars.iv5503.unr = phi i64 [ %indvars.iv5503.ph, %scalar.ph7248.preheader ], [ %indvars.iv.next5504.prol, %scalar.ph7248.prol ]
  %.unr7540 = phi i32 [ %.ph7432, %scalar.ph7248.preheader ], [ %1256, %scalar.ph7248.prol ]
  %1257 = icmp eq i64 %indvars.iv5503.ph, %1194
  br i1 %1257, label %._crit_edge3313.us.us.us, label %scalar.ph7248

scalar.ph7248:                                    ; preds = %scalar.ph7248.prol.loopexit, %scalar.ph7248
  %indvars.iv5503 = phi i64 [ %indvars.iv.next5504.1, %scalar.ph7248 ], [ %indvars.iv5503.unr, %scalar.ph7248.prol.loopexit ]
  %1258 = phi i32 [ %1274, %scalar.ph7248 ], [ %.unr7540, %scalar.ph7248.prol.loopexit ]
  %1259 = getelementptr i8, ptr %gep.us.us3325.us, i64 %indvars.iv5503
  %1260 = load i8, ptr %1259, align 1, !tbaa !41
  %1261 = sext i8 %1260 to i32
  %1262 = getelementptr i8, ptr %1230, i64 %indvars.iv5503
  %1263 = load i8, ptr %1262, align 1, !tbaa !41
  %1264 = sext i8 %1263 to i32
  %1265 = mul nsw i32 %1264, %1261
  %1266 = add nsw i32 %1265, %1258
  store i32 %1266, ptr %gep6653, align 4, !tbaa !65
  %indvars.iv.next5504 = add nuw nsw i64 %indvars.iv5503, 1
  %1267 = getelementptr i8, ptr %gep.us.us3325.us, i64 %indvars.iv.next5504
  %1268 = load i8, ptr %1267, align 1, !tbaa !41
  %1269 = sext i8 %1268 to i32
  %1270 = getelementptr i8, ptr %1230, i64 %indvars.iv.next5504
  %1271 = load i8, ptr %1270, align 1, !tbaa !41
  %1272 = sext i8 %1271 to i32
  %1273 = mul nsw i32 %1272, %1269
  %1274 = add nsw i32 %1273, %1266
  store i32 %1274, ptr %gep6653, align 4, !tbaa !65
  %indvars.iv.next5504.1 = add nuw nsw i64 %indvars.iv5503, 2
  %exitcond5507.not.1 = icmp eq i64 %indvars.iv.next5504.1, %wide.trip.count5506
  br i1 %exitcond5507.not.1, label %._crit_edge3313.us.us.us, label %scalar.ph7248, !llvm.loop !109

._crit_edge3313.us.us.us:                         ; preds = %scalar.ph7248.prol.loopexit, %scalar.ph7248, %middle.block7247
  %.lcssa6887 = phi i32 [ %1248, %middle.block7247 ], [ %.lcssa7436.unr, %scalar.ph7248.prol.loopexit ], [ %1274, %scalar.ph7248 ]
  %indvars.iv.next5509 = add nuw nsw i64 %indvars.iv5508, 1
  %exitcond5512.not = icmp eq i64 %indvars.iv.next5509, %wide.trip.count5511
  br i1 %exitcond5512.not, label %._crit_edge3316.split.us.us.us, label %.preheader2947.us.us.us, !llvm.loop !110

.lr.ph3328.split:                                 ; preds = %.lr.ph3328, %._crit_edge3322.split
  %indvars.iv5498 = phi i64 [ %indvars.iv.next5499, %._crit_edge3322.split ], [ 0, %.lr.ph3328 ]
  %1275 = load double, ptr %1186, align 8, !tbaa !25
  %1276 = fcmp oeq double %1275, 0.000000e+00
  br i1 %1276, label %1277, label %1278

1277:                                             ; preds = %.lr.ph3328.split
  %gep6649 = getelementptr i32, ptr %invariant.gep6650, i64 %indvars.iv5498
  store i32 0, ptr %gep6649, align 4, !tbaa !65
  br label %1278

1278:                                             ; preds = %1277, %.lr.ph3328.split
  %1279 = load i32, ptr %1187, align 8, !tbaa !52
  %1280 = icmp sgt i32 %1279, 0
  br i1 %1280, label %.lr.ph3321, label %._crit_edge3322.split

.lr.ph3321:                                       ; preds = %1278, %.lr.ph3321
  %indvars.iv5495 = phi i64 [ %indvars.iv.next5496, %.lr.ph3321 ], [ 0, %1278 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5495, ptr noundef nonnull %0)
  %indvars.iv.next5496 = add nuw nsw i64 %indvars.iv5495, 1
  %1281 = load i32, ptr %1187, align 8, !tbaa !52
  %1282 = sext i32 %1281 to i64
  %1283 = icmp slt i64 %indvars.iv.next5496, %1282
  br i1 %1283, label %.lr.ph3321, label %._crit_edge3322.split, !llvm.loop !102

._crit_edge3322.split:                            ; preds = %.lr.ph3321, %1278
  %indvars.iv.next5499 = add nuw nsw i64 %indvars.iv5498, 1
  %exitcond5502.not = icmp eq i64 %indvars.iv.next5499, %wide.trip.count5501
  br i1 %exitcond5502.not, label %._crit_edge3329, label %.lr.ph3328.split, !llvm.loop !101

._crit_edge3329:                                  ; preds = %._crit_edge3322.split, %._crit_edge3322.split.us.us, %.preheader2948
  %indvars.iv.next5522 = add nuw nsw i64 %indvars.iv5521, 1
  %exitcond5525.not = icmp eq i64 %indvars.iv.next5522, %wide.trip.count5524
  br i1 %exitcond5525.not, label %._crit_edge3332, label %.preheader2948, !llvm.loop !111

._crit_edge3332:                                  ; preds = %._crit_edge3329, %1182
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %.loopexit

1284:                                             ; preds = %1178, %1174, %1170, %1166
  %1285 = getelementptr inbounds i8, ptr %0, i64 8
  %1286 = load i32, ptr %1285, align 8, !tbaa !26
  %1287 = icmp eq i32 %1286, 8
  br i1 %1287, label %1288, label %1402

1288:                                             ; preds = %1284
  %1289 = getelementptr inbounds i8, ptr %0, i64 12
  %1290 = load i32, ptr %1289, align 4, !tbaa !70
  %1291 = icmp eq i32 %1290, 8
  br i1 %1291, label %1292, label %1402

1292:                                             ; preds = %1288
  %1293 = getelementptr inbounds i8, ptr %0, i64 84
  %1294 = load i32, ptr %1293, align 4, !tbaa !88
  %1295 = icmp eq i32 %1294, 1
  br i1 %1295, label %1296, label %1402

1296:                                             ; preds = %1292
  %1297 = getelementptr inbounds i8, ptr %0, i64 88
  %1298 = load i32, ptr %1297, align 8, !tbaa !89
  %1299 = icmp eq i32 %1298, 0
  br i1 %1299, label %1300, label %1402

1300:                                             ; preds = %1296
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  store ptr %1, ptr %24, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  store ptr %2, ptr %25, align 8, !tbaa !50
  %1301 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4934 = freeze i32 %1301
  %1302 = icmp sgt i32 %79, 0
  br i1 %1302, label %.preheader2950.lr.ph, label %._crit_edge3310

.preheader2950.lr.ph:                             ; preds = %1300
  %1303 = icmp sgt i32 %77, 0
  %1304 = getelementptr inbounds i8, ptr %0, i64 56
  %1305 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3292 = mul i32 %.fr4934, %71
  %1306 = icmp sgt i32 %.fr4934, 0
  %1307 = sext i32 %.fr4934 to i64
  %1308 = sext i32 %75 to i64
  %1309 = sext i32 %73 to i64
  %wide.trip.count5493 = zext nneg i32 %79 to i64
  %wide.trip.count5470 = zext nneg i32 %77 to i64
  %wide.trip.count5488 = zext nneg i32 %77 to i64
  %wide.trip.count5475 = zext i32 %.fr4934 to i64
  %1310 = shl nsw i64 %1308, 2
  %1311 = mul i32 %.fr4934, %71
  %invariant.gep7845 = getelementptr i8, ptr %3, i64 4
  %min.iters.check7212 = icmp ult i32 %.fr4934, 8
  %n.vec7215 = and i64 %wide.trip.count5475, 2147483640
  %cmp.n7227 = icmp eq i64 %n.vec7215, %wide.trip.count5475
  %xtraiter7533 = and i64 %wide.trip.count5475, 1
  %lcmp.mod7534.not = icmp eq i64 %xtraiter7533, 0
  %1312 = add nsw i64 %wide.trip.count5475, -1
  br label %.preheader2950

.preheader2950:                                   ; preds = %.preheader2950.lr.ph, %._crit_edge3307
  %indvars.iv5490 = phi i64 [ 0, %.preheader2950.lr.ph ], [ %indvars.iv.next5491, %._crit_edge3307 ]
  %1313 = mul i64 %1310, %indvars.iv5490
  %1314 = mul i64 %indvars.iv5490, %1309
  br i1 %1303, label %.lr.ph3306, label %._crit_edge3307

.lr.ph3306:                                       ; preds = %.preheader2950
  %1315 = mul nsw i64 %indvars.iv5490, %1308
  %1316 = mul nsw i64 %indvars.iv5490, %1309
  %invariant.gep6644 = getelementptr i32, ptr %3, i64 %1315
  br i1 %1306, label %.lr.ph3306.split.us.preheader, label %.lr.ph3306.split

.lr.ph3306.split.us.preheader:                    ; preds = %.lr.ph3306
  %invariant.gep6646 = getelementptr i32, ptr %3, i64 %1315
  %1317 = getelementptr i8, ptr %3, i64 %1313
  %gep7846 = getelementptr i8, ptr %invariant.gep7845, i64 %1313
  br label %.lr.ph3306.split.us

.lr.ph3306.split.us:                              ; preds = %.lr.ph3306.split.us.preheader, %._crit_edge3300.split.us.us
  %indvars.iv5485 = phi i64 [ 0, %.lr.ph3306.split.us.preheader ], [ %indvars.iv.next5486, %._crit_edge3300.split.us.us ]
  %1318 = shl nuw nsw i64 %indvars.iv5485, 2
  %scevgep7193 = getelementptr i8, ptr %1317, i64 %1318
  %scevgep7194 = getelementptr i8, ptr %gep7846, i64 %1318
  %1319 = mul i64 %indvars.iv5485, %1307
  %1320 = load double, ptr %1304, align 8, !tbaa !25
  %1321 = fcmp oeq double %1320, 0.000000e+00
  br i1 %1321, label %1322, label %1323

1322:                                             ; preds = %.lr.ph3306.split.us
  %gep6645 = getelementptr i32, ptr %invariant.gep6644, i64 %indvars.iv5485
  store i32 0, ptr %gep6645, align 4, !tbaa !65
  br label %1323

1323:                                             ; preds = %1322, %.lr.ph3306.split.us
  %1324 = load i32, ptr %1305, align 8, !tbaa !52
  %1325 = icmp sgt i32 %1324, 0
  br i1 %1325, label %.lr.ph3299.us, label %._crit_edge3300.split.us.us

._crit_edge3300.split.us.us:                      ; preds = %._crit_edge3294.split.us.us.us, %1323
  %indvars.iv.next5486 = add nuw nsw i64 %indvars.iv5485, 1
  %exitcond5489.not = icmp eq i64 %indvars.iv.next5486, %wide.trip.count5488
  br i1 %exitcond5489.not, label %._crit_edge3307, label %.lr.ph3306.split.us, !llvm.loop !112

.lr.ph3299.us:                                    ; preds = %1323
  %1326 = mul nuw nsw i64 %indvars.iv5485, %1307
  %gep6647 = getelementptr i32, ptr %invariant.gep6646, i64 %indvars.iv5485
  br label %1327

1327:                                             ; preds = %._crit_edge3294.split.us.us.us, %.lr.ph3299.us
  %indvars.iv5482 = phi i64 [ %indvars.iv.next5483, %._crit_edge3294.split.us.us.us ], [ 0, %.lr.ph3299.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5482, ptr noundef nonnull %0)
  %1328 = sdiv i32 %.fr4927, %.fr4934
  %1329 = icmp sgt i32 %1328, 0
  br i1 %1329, label %.preheader2949.lr.ph.us.us, label %._crit_edge3294.split.us.us.us

._crit_edge3294.split.us.us.us:                   ; preds = %._crit_edge3291.us.us.us, %1327
  %indvars.iv.next5483 = add nuw nsw i64 %indvars.iv5482, 1
  %1330 = load i32, ptr %1305, align 8, !tbaa !52
  %1331 = sext i32 %1330 to i64
  %1332 = icmp slt i64 %indvars.iv.next5483, %1331
  br i1 %1332, label %1327, label %._crit_edge3300.split.us.us, !llvm.loop !113

.preheader2949.lr.ph.us.us:                       ; preds = %1327
  %1333 = load ptr, ptr %24, align 8
  %1334 = load i64, ptr %5, align 8
  %1335 = getelementptr i8, ptr %1333, i64 %1334
  %invariant.gep.us3301.us = getelementptr i8, ptr %1335, i64 %1326
  %1336 = load ptr, ptr %25, align 8
  %1337 = load i64, ptr %6, align 8
  %1338 = getelementptr i8, ptr %1336, i64 %1337
  %1339 = getelementptr i8, ptr %1338, i64 %1316
  %.promoted.us.us3308 = load i32, ptr %gep6647, align 4, !tbaa !65
  %wide.trip.count5480 = zext nneg i32 %1328 to i64
  %scevgep7195 = getelementptr i8, ptr %1333, i64 %1319
  %scevgep7196 = getelementptr i8, ptr %scevgep7195, i64 %1334
  %1340 = getelementptr i8, ptr %1333, i64 %1319
  %scevgep7198 = getelementptr i8, ptr %1340, i64 %wide.trip.count5475
  %scevgep7199 = getelementptr i8, ptr %scevgep7198, i64 %1334
  %1341 = getelementptr i8, ptr %1336, i64 %1314
  %scevgep7201 = getelementptr i8, ptr %1341, i64 %wide.trip.count5475
  %1342 = add nsw i64 %wide.trip.count5480, -1
  %1343 = mul nsw i64 %1342, %1307
  %1344 = getelementptr i8, ptr %scevgep7201, i64 %1337
  %scevgep7202 = getelementptr i8, ptr %1344, i64 %1343
  %bound07206 = icmp ult ptr %scevgep7193, %scevgep7202
  %bound17207 = icmp ult ptr %1339, %scevgep7194
  %found.conflict7208 = and i1 %bound07206, %bound17207
  br label %.preheader2949.us.us.us

.preheader2949.us.us.us:                          ; preds = %._crit_edge3291.us.us.us, %.preheader2949.lr.ph.us.us
  %indvars.iv5477 = phi i64 [ %indvars.iv.next5478, %._crit_edge3291.us.us.us ], [ 0, %.preheader2949.lr.ph.us.us ]
  %.promoted.us3295.us.us = phi i32 [ %.lcssa6888, %._crit_edge3291.us.us.us ], [ %.promoted.us.us3308, %.preheader2949.lr.ph.us.us ]
  %1345 = trunc nuw nsw i64 %indvars.iv5477 to i32
  %factor.op.mul.reass.us.us3302.us = mul i32 %factor.op.mul3292, %1345
  %1346 = sext i32 %factor.op.mul.reass.us.us3302.us to i64
  %gep.us.us3303.us = getelementptr i8, ptr %invariant.gep.us3301.us, i64 %1346
  %1347 = mul nuw nsw i64 %indvars.iv5477, %1307
  %1348 = getelementptr i8, ptr %1339, i64 %1347
  br i1 %min.iters.check7212, label %scalar.ph7211.preheader, label %vector.memcheck7192

vector.memcheck7192:                              ; preds = %.preheader2949.us.us.us
  %1349 = trunc i64 %indvars.iv5477 to i32
  %1350 = mul i32 %1311, %1349
  %1351 = sext i32 %1350 to i64
  %scevgep7200 = getelementptr i8, ptr %scevgep7199, i64 %1351
  %scevgep7197 = getelementptr i8, ptr %scevgep7196, i64 %1351
  %bound07203 = icmp ult ptr %scevgep7193, %scevgep7200
  %bound17204 = icmp ult ptr %scevgep7197, %scevgep7194
  %found.conflict7205 = and i1 %bound07203, %bound17204
  %conflict.rdx7209 = or i1 %found.conflict7205, %found.conflict7208
  br i1 %conflict.rdx7209, label %scalar.ph7211.preheader, label %vector.ph7213

vector.ph7213:                                    ; preds = %vector.memcheck7192
  %1352 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.promoted.us3295.us.us, i64 0
  br label %vector.body7217

vector.body7217:                                  ; preds = %vector.body7217, %vector.ph7213
  %index7218 = phi i64 [ 0, %vector.ph7213 ], [ %index.next7225, %vector.body7217 ]
  %vec.phi7219 = phi <4 x i32> [ %1352, %vector.ph7213 ], [ %1363, %vector.body7217 ]
  %vec.phi7220 = phi <4 x i32> [ zeroinitializer, %vector.ph7213 ], [ %1364, %vector.body7217 ]
  %1353 = getelementptr i8, ptr %gep.us.us3303.us, i64 %index7218
  %1354 = getelementptr i8, ptr %1353, i64 4
  %wide.load7221 = load <4 x i8>, ptr %1353, align 1, !tbaa !41, !alias.scope !114
  %wide.load7222 = load <4 x i8>, ptr %1354, align 1, !tbaa !41, !alias.scope !114
  %1355 = zext <4 x i8> %wide.load7221 to <4 x i32>
  %1356 = zext <4 x i8> %wide.load7222 to <4 x i32>
  %1357 = getelementptr i8, ptr %1348, i64 %index7218
  %1358 = getelementptr i8, ptr %1357, i64 4
  %wide.load7223 = load <4 x i8>, ptr %1357, align 1, !tbaa !41, !alias.scope !117
  %wide.load7224 = load <4 x i8>, ptr %1358, align 1, !tbaa !41, !alias.scope !117
  %1359 = sext <4 x i8> %wide.load7223 to <4 x i32>
  %1360 = sext <4 x i8> %wide.load7224 to <4 x i32>
  %1361 = mul nsw <4 x i32> %1359, %1355
  %1362 = mul nsw <4 x i32> %1360, %1356
  %1363 = add <4 x i32> %1361, %vec.phi7219
  %1364 = add <4 x i32> %1362, %vec.phi7220
  %index.next7225 = add nuw i64 %index7218, 8
  %1365 = icmp eq i64 %index.next7225, %n.vec7215
  br i1 %1365, label %middle.block7210, label %vector.body7217, !llvm.loop !119

middle.block7210:                                 ; preds = %vector.body7217
  %bin.rdx7226 = add <4 x i32> %1364, %1363
  %1366 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx7226)
  store i32 %1366, ptr %gep6647, align 4, !tbaa !65
  br i1 %cmp.n7227, label %._crit_edge3291.us.us.us, label %scalar.ph7211.preheader

scalar.ph7211.preheader:                          ; preds = %middle.block7210, %vector.memcheck7192, %.preheader2949.us.us.us
  %indvars.iv5472.ph = phi i64 [ 0, %vector.memcheck7192 ], [ 0, %.preheader2949.us.us.us ], [ %n.vec7215, %middle.block7210 ]
  %.ph7437 = phi i32 [ %.promoted.us3295.us.us, %vector.memcheck7192 ], [ %.promoted.us3295.us.us, %.preheader2949.us.us.us ], [ %1366, %middle.block7210 ]
  br i1 %lcmp.mod7534.not, label %scalar.ph7211.prol.loopexit, label %scalar.ph7211.prol

scalar.ph7211.prol:                               ; preds = %scalar.ph7211.preheader
  %1367 = getelementptr i8, ptr %gep.us.us3303.us, i64 %indvars.iv5472.ph
  %1368 = load i8, ptr %1367, align 1, !tbaa !41
  %1369 = zext i8 %1368 to i32
  %1370 = getelementptr i8, ptr %1348, i64 %indvars.iv5472.ph
  %1371 = load i8, ptr %1370, align 1, !tbaa !41
  %1372 = sext i8 %1371 to i32
  %1373 = mul nsw i32 %1372, %1369
  %1374 = add nsw i32 %1373, %.ph7437
  store i32 %1374, ptr %gep6647, align 4, !tbaa !65
  %indvars.iv.next5473.prol = or disjoint i64 %indvars.iv5472.ph, 1
  br label %scalar.ph7211.prol.loopexit

scalar.ph7211.prol.loopexit:                      ; preds = %scalar.ph7211.prol, %scalar.ph7211.preheader
  %.lcssa7441.unr = phi i32 [ poison, %scalar.ph7211.preheader ], [ %1374, %scalar.ph7211.prol ]
  %indvars.iv5472.unr = phi i64 [ %indvars.iv5472.ph, %scalar.ph7211.preheader ], [ %indvars.iv.next5473.prol, %scalar.ph7211.prol ]
  %.unr7536 = phi i32 [ %.ph7437, %scalar.ph7211.preheader ], [ %1374, %scalar.ph7211.prol ]
  %1375 = icmp eq i64 %indvars.iv5472.ph, %1312
  br i1 %1375, label %._crit_edge3291.us.us.us, label %scalar.ph7211

scalar.ph7211:                                    ; preds = %scalar.ph7211.prol.loopexit, %scalar.ph7211
  %indvars.iv5472 = phi i64 [ %indvars.iv.next5473.1, %scalar.ph7211 ], [ %indvars.iv5472.unr, %scalar.ph7211.prol.loopexit ]
  %1376 = phi i32 [ %1392, %scalar.ph7211 ], [ %.unr7536, %scalar.ph7211.prol.loopexit ]
  %1377 = getelementptr i8, ptr %gep.us.us3303.us, i64 %indvars.iv5472
  %1378 = load i8, ptr %1377, align 1, !tbaa !41
  %1379 = zext i8 %1378 to i32
  %1380 = getelementptr i8, ptr %1348, i64 %indvars.iv5472
  %1381 = load i8, ptr %1380, align 1, !tbaa !41
  %1382 = sext i8 %1381 to i32
  %1383 = mul nsw i32 %1382, %1379
  %1384 = add nsw i32 %1383, %1376
  store i32 %1384, ptr %gep6647, align 4, !tbaa !65
  %indvars.iv.next5473 = add nuw nsw i64 %indvars.iv5472, 1
  %1385 = getelementptr i8, ptr %gep.us.us3303.us, i64 %indvars.iv.next5473
  %1386 = load i8, ptr %1385, align 1, !tbaa !41
  %1387 = zext i8 %1386 to i32
  %1388 = getelementptr i8, ptr %1348, i64 %indvars.iv.next5473
  %1389 = load i8, ptr %1388, align 1, !tbaa !41
  %1390 = sext i8 %1389 to i32
  %1391 = mul nsw i32 %1390, %1387
  %1392 = add nsw i32 %1391, %1384
  store i32 %1392, ptr %gep6647, align 4, !tbaa !65
  %indvars.iv.next5473.1 = add nuw nsw i64 %indvars.iv5472, 2
  %exitcond5476.not.1 = icmp eq i64 %indvars.iv.next5473.1, %wide.trip.count5475
  br i1 %exitcond5476.not.1, label %._crit_edge3291.us.us.us, label %scalar.ph7211, !llvm.loop !120

._crit_edge3291.us.us.us:                         ; preds = %scalar.ph7211.prol.loopexit, %scalar.ph7211, %middle.block7210
  %.lcssa6888 = phi i32 [ %1366, %middle.block7210 ], [ %.lcssa7441.unr, %scalar.ph7211.prol.loopexit ], [ %1392, %scalar.ph7211 ]
  %indvars.iv.next5478 = add nuw nsw i64 %indvars.iv5477, 1
  %exitcond5481.not = icmp eq i64 %indvars.iv.next5478, %wide.trip.count5480
  br i1 %exitcond5481.not, label %._crit_edge3294.split.us.us.us, label %.preheader2949.us.us.us, !llvm.loop !121

.lr.ph3306.split:                                 ; preds = %.lr.ph3306, %._crit_edge3300.split
  %indvars.iv5467 = phi i64 [ %indvars.iv.next5468, %._crit_edge3300.split ], [ 0, %.lr.ph3306 ]
  %1393 = load double, ptr %1304, align 8, !tbaa !25
  %1394 = fcmp oeq double %1393, 0.000000e+00
  br i1 %1394, label %1395, label %1396

1395:                                             ; preds = %.lr.ph3306.split
  %gep6643 = getelementptr i32, ptr %invariant.gep6644, i64 %indvars.iv5467
  store i32 0, ptr %gep6643, align 4, !tbaa !65
  br label %1396

1396:                                             ; preds = %1395, %.lr.ph3306.split
  %1397 = load i32, ptr %1305, align 8, !tbaa !52
  %1398 = icmp sgt i32 %1397, 0
  br i1 %1398, label %.lr.ph3299, label %._crit_edge3300.split

.lr.ph3299:                                       ; preds = %1396, %.lr.ph3299
  %indvars.iv5464 = phi i64 [ %indvars.iv.next5465, %.lr.ph3299 ], [ 0, %1396 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5464, ptr noundef nonnull %0)
  %indvars.iv.next5465 = add nuw nsw i64 %indvars.iv5464, 1
  %1399 = load i32, ptr %1305, align 8, !tbaa !52
  %1400 = sext i32 %1399 to i64
  %1401 = icmp slt i64 %indvars.iv.next5465, %1400
  br i1 %1401, label %.lr.ph3299, label %._crit_edge3300.split, !llvm.loop !113

._crit_edge3300.split:                            ; preds = %.lr.ph3299, %1396
  %indvars.iv.next5468 = add nuw nsw i64 %indvars.iv5467, 1
  %exitcond5471.not = icmp eq i64 %indvars.iv.next5468, %wide.trip.count5470
  br i1 %exitcond5471.not, label %._crit_edge3307, label %.lr.ph3306.split, !llvm.loop !112

._crit_edge3307:                                  ; preds = %._crit_edge3300.split, %._crit_edge3300.split.us.us, %.preheader2950
  %indvars.iv.next5491 = add nuw nsw i64 %indvars.iv5490, 1
  %exitcond5494.not = icmp eq i64 %indvars.iv.next5491, %wide.trip.count5493
  br i1 %exitcond5494.not, label %._crit_edge3310, label %.preheader2950, !llvm.loop !122

._crit_edge3310:                                  ; preds = %._crit_edge3307, %1300
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %.loopexit

1402:                                             ; preds = %1296, %1292, %1288, %1284
  %1403 = getelementptr inbounds i8, ptr %0, i64 8
  %1404 = load i32, ptr %1403, align 8, !tbaa !26
  %1405 = icmp eq i32 %1404, 8
  br i1 %1405, label %1406, label %1520

1406:                                             ; preds = %1402
  %1407 = getelementptr inbounds i8, ptr %0, i64 12
  %1408 = load i32, ptr %1407, align 4, !tbaa !70
  %1409 = icmp eq i32 %1408, 8
  br i1 %1409, label %1410, label %1520

1410:                                             ; preds = %1406
  %1411 = getelementptr inbounds i8, ptr %0, i64 84
  %1412 = load i32, ptr %1411, align 4, !tbaa !88
  %1413 = icmp eq i32 %1412, 0
  br i1 %1413, label %1414, label %1520

1414:                                             ; preds = %1410
  %1415 = getelementptr inbounds i8, ptr %0, i64 88
  %1416 = load i32, ptr %1415, align 8, !tbaa !89
  %1417 = icmp eq i32 %1416, 1
  br i1 %1417, label %1418, label %1520

1418:                                             ; preds = %1414
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  store ptr %1, ptr %26, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  store ptr %2, ptr %27, align 8, !tbaa !50
  %1419 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4933 = freeze i32 %1419
  %1420 = icmp sgt i32 %79, 0
  br i1 %1420, label %.preheader2952.lr.ph, label %._crit_edge3288

.preheader2952.lr.ph:                             ; preds = %1418
  %1421 = icmp sgt i32 %77, 0
  %1422 = getelementptr inbounds i8, ptr %0, i64 56
  %1423 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3270 = mul i32 %.fr4933, %71
  %1424 = icmp sgt i32 %.fr4933, 0
  %1425 = sext i32 %.fr4933 to i64
  %1426 = sext i32 %75 to i64
  %1427 = sext i32 %73 to i64
  %wide.trip.count5462 = zext nneg i32 %79 to i64
  %wide.trip.count5439 = zext nneg i32 %77 to i64
  %wide.trip.count5457 = zext nneg i32 %77 to i64
  %wide.trip.count5444 = zext i32 %.fr4933 to i64
  %1428 = shl nsw i64 %1426, 2
  %1429 = mul i32 %.fr4933, %71
  %invariant.gep7843 = getelementptr i8, ptr %3, i64 4
  %min.iters.check7175 = icmp ult i32 %.fr4933, 8
  %n.vec7178 = and i64 %wide.trip.count5444, 2147483640
  %cmp.n7190 = icmp eq i64 %n.vec7178, %wide.trip.count5444
  %xtraiter7530 = and i64 %wide.trip.count5444, 1
  %lcmp.mod7531.not = icmp eq i64 %xtraiter7530, 0
  %1430 = add nsw i64 %wide.trip.count5444, -1
  br label %.preheader2952

.preheader2952:                                   ; preds = %.preheader2952.lr.ph, %._crit_edge3285
  %indvars.iv5459 = phi i64 [ 0, %.preheader2952.lr.ph ], [ %indvars.iv.next5460, %._crit_edge3285 ]
  %1431 = mul i64 %1428, %indvars.iv5459
  %1432 = mul i64 %indvars.iv5459, %1427
  br i1 %1421, label %.lr.ph3284, label %._crit_edge3285

.lr.ph3284:                                       ; preds = %.preheader2952
  %1433 = mul nsw i64 %indvars.iv5459, %1426
  %1434 = mul nsw i64 %indvars.iv5459, %1427
  %invariant.gep6638 = getelementptr i32, ptr %3, i64 %1433
  br i1 %1424, label %.lr.ph3284.split.us.preheader, label %.lr.ph3284.split

.lr.ph3284.split.us.preheader:                    ; preds = %.lr.ph3284
  %invariant.gep6640 = getelementptr i32, ptr %3, i64 %1433
  %1435 = getelementptr i8, ptr %3, i64 %1431
  %gep7844 = getelementptr i8, ptr %invariant.gep7843, i64 %1431
  br label %.lr.ph3284.split.us

.lr.ph3284.split.us:                              ; preds = %.lr.ph3284.split.us.preheader, %._crit_edge3278.split.us.us
  %indvars.iv5454 = phi i64 [ 0, %.lr.ph3284.split.us.preheader ], [ %indvars.iv.next5455, %._crit_edge3278.split.us.us ]
  %1436 = shl nuw nsw i64 %indvars.iv5454, 2
  %scevgep7157 = getelementptr i8, ptr %1435, i64 %1436
  %scevgep7158 = getelementptr i8, ptr %gep7844, i64 %1436
  %1437 = mul i64 %indvars.iv5454, %1425
  %1438 = load double, ptr %1422, align 8, !tbaa !25
  %1439 = fcmp oeq double %1438, 0.000000e+00
  br i1 %1439, label %1440, label %1441

1440:                                             ; preds = %.lr.ph3284.split.us
  %gep6639 = getelementptr i32, ptr %invariant.gep6638, i64 %indvars.iv5454
  store i32 0, ptr %gep6639, align 4, !tbaa !65
  br label %1441

1441:                                             ; preds = %1440, %.lr.ph3284.split.us
  %1442 = load i32, ptr %1423, align 8, !tbaa !52
  %1443 = icmp sgt i32 %1442, 0
  br i1 %1443, label %.lr.ph3277.us, label %._crit_edge3278.split.us.us

._crit_edge3278.split.us.us:                      ; preds = %._crit_edge3272.split.us.us.us, %1441
  %indvars.iv.next5455 = add nuw nsw i64 %indvars.iv5454, 1
  %exitcond5458.not = icmp eq i64 %indvars.iv.next5455, %wide.trip.count5457
  br i1 %exitcond5458.not, label %._crit_edge3285, label %.lr.ph3284.split.us, !llvm.loop !123

.lr.ph3277.us:                                    ; preds = %1441
  %1444 = mul nuw nsw i64 %indvars.iv5454, %1425
  %gep6641 = getelementptr i32, ptr %invariant.gep6640, i64 %indvars.iv5454
  br label %1445

1445:                                             ; preds = %._crit_edge3272.split.us.us.us, %.lr.ph3277.us
  %indvars.iv5451 = phi i64 [ %indvars.iv.next5452, %._crit_edge3272.split.us.us.us ], [ 0, %.lr.ph3277.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5451, ptr noundef nonnull %0)
  %1446 = sdiv i32 %.fr4927, %.fr4933
  %1447 = icmp sgt i32 %1446, 0
  br i1 %1447, label %.preheader2951.lr.ph.us.us, label %._crit_edge3272.split.us.us.us

._crit_edge3272.split.us.us.us:                   ; preds = %._crit_edge3269.us.us.us, %1445
  %indvars.iv.next5452 = add nuw nsw i64 %indvars.iv5451, 1
  %1448 = load i32, ptr %1423, align 8, !tbaa !52
  %1449 = sext i32 %1448 to i64
  %1450 = icmp slt i64 %indvars.iv.next5452, %1449
  br i1 %1450, label %1445, label %._crit_edge3278.split.us.us, !llvm.loop !124

.preheader2951.lr.ph.us.us:                       ; preds = %1445
  %1451 = load ptr, ptr %26, align 8
  %1452 = load i64, ptr %5, align 8
  %1453 = getelementptr i8, ptr %1451, i64 %1452
  %invariant.gep.us3279.us = getelementptr i8, ptr %1453, i64 %1444
  %1454 = load ptr, ptr %27, align 8
  %1455 = load i64, ptr %6, align 8
  %1456 = getelementptr i8, ptr %1454, i64 %1455
  %1457 = getelementptr i8, ptr %1456, i64 %1434
  %.promoted.us.us3286 = load i32, ptr %gep6641, align 4, !tbaa !65
  %wide.trip.count5449 = zext nneg i32 %1446 to i64
  %scevgep7159 = getelementptr i8, ptr %1451, i64 %1437
  %scevgep7160 = getelementptr i8, ptr %scevgep7159, i64 %1452
  %1458 = getelementptr i8, ptr %1451, i64 %1437
  %scevgep7162 = getelementptr i8, ptr %1458, i64 %wide.trip.count5444
  %scevgep7163 = getelementptr i8, ptr %scevgep7162, i64 %1452
  %1459 = getelementptr i8, ptr %1454, i64 %1432
  %scevgep7165 = getelementptr i8, ptr %1459, i64 %wide.trip.count5444
  %1460 = add nsw i64 %wide.trip.count5449, -1
  %1461 = mul nsw i64 %1460, %1425
  %1462 = getelementptr i8, ptr %scevgep7165, i64 %1455
  %scevgep7166 = getelementptr i8, ptr %1462, i64 %1461
  %bound07170 = icmp ult ptr %scevgep7157, %scevgep7166
  %bound17171 = icmp ult ptr %1457, %scevgep7158
  %found.conflict7172 = and i1 %bound07170, %bound17171
  br label %.preheader2951.us.us.us

.preheader2951.us.us.us:                          ; preds = %._crit_edge3269.us.us.us, %.preheader2951.lr.ph.us.us
  %indvars.iv5446 = phi i64 [ %indvars.iv.next5447, %._crit_edge3269.us.us.us ], [ 0, %.preheader2951.lr.ph.us.us ]
  %.promoted.us3273.us.us = phi i32 [ %.lcssa6889, %._crit_edge3269.us.us.us ], [ %.promoted.us.us3286, %.preheader2951.lr.ph.us.us ]
  %1463 = trunc nuw nsw i64 %indvars.iv5446 to i32
  %factor.op.mul.reass.us.us3280.us = mul i32 %factor.op.mul3270, %1463
  %1464 = sext i32 %factor.op.mul.reass.us.us3280.us to i64
  %gep.us.us3281.us = getelementptr i8, ptr %invariant.gep.us3279.us, i64 %1464
  %1465 = mul nuw nsw i64 %indvars.iv5446, %1425
  %1466 = getelementptr i8, ptr %1457, i64 %1465
  br i1 %min.iters.check7175, label %scalar.ph7174.preheader, label %vector.memcheck7156

vector.memcheck7156:                              ; preds = %.preheader2951.us.us.us
  %1467 = trunc i64 %indvars.iv5446 to i32
  %1468 = mul i32 %1429, %1467
  %1469 = sext i32 %1468 to i64
  %scevgep7164 = getelementptr i8, ptr %scevgep7163, i64 %1469
  %scevgep7161 = getelementptr i8, ptr %scevgep7160, i64 %1469
  %bound07167 = icmp ult ptr %scevgep7157, %scevgep7164
  %bound17168 = icmp ult ptr %scevgep7161, %scevgep7158
  %found.conflict7169 = and i1 %bound07167, %bound17168
  %conflict.rdx = or i1 %found.conflict7169, %found.conflict7172
  br i1 %conflict.rdx, label %scalar.ph7174.preheader, label %vector.ph7176

vector.ph7176:                                    ; preds = %vector.memcheck7156
  %1470 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.promoted.us3273.us.us, i64 0
  br label %vector.body7180

vector.body7180:                                  ; preds = %vector.body7180, %vector.ph7176
  %index7181 = phi i64 [ 0, %vector.ph7176 ], [ %index.next7188, %vector.body7180 ]
  %vec.phi7182 = phi <4 x i32> [ %1470, %vector.ph7176 ], [ %1481, %vector.body7180 ]
  %vec.phi7183 = phi <4 x i32> [ zeroinitializer, %vector.ph7176 ], [ %1482, %vector.body7180 ]
  %1471 = getelementptr i8, ptr %gep.us.us3281.us, i64 %index7181
  %1472 = getelementptr i8, ptr %1471, i64 4
  %wide.load7184 = load <4 x i8>, ptr %1471, align 1, !tbaa !41, !alias.scope !125
  %wide.load7185 = load <4 x i8>, ptr %1472, align 1, !tbaa !41, !alias.scope !125
  %1473 = sext <4 x i8> %wide.load7184 to <4 x i32>
  %1474 = sext <4 x i8> %wide.load7185 to <4 x i32>
  %1475 = getelementptr i8, ptr %1466, i64 %index7181
  %1476 = getelementptr i8, ptr %1475, i64 4
  %wide.load7186 = load <4 x i8>, ptr %1475, align 1, !tbaa !41, !alias.scope !128
  %wide.load7187 = load <4 x i8>, ptr %1476, align 1, !tbaa !41, !alias.scope !128
  %1477 = zext <4 x i8> %wide.load7186 to <4 x i32>
  %1478 = zext <4 x i8> %wide.load7187 to <4 x i32>
  %1479 = mul nsw <4 x i32> %1477, %1473
  %1480 = mul nsw <4 x i32> %1478, %1474
  %1481 = add <4 x i32> %1479, %vec.phi7182
  %1482 = add <4 x i32> %1480, %vec.phi7183
  %index.next7188 = add nuw i64 %index7181, 8
  %1483 = icmp eq i64 %index.next7188, %n.vec7178
  br i1 %1483, label %middle.block7173, label %vector.body7180, !llvm.loop !130

middle.block7173:                                 ; preds = %vector.body7180
  %bin.rdx7189 = add <4 x i32> %1482, %1481
  %1484 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx7189)
  store i32 %1484, ptr %gep6641, align 4, !tbaa !65
  br i1 %cmp.n7190, label %._crit_edge3269.us.us.us, label %scalar.ph7174.preheader

scalar.ph7174.preheader:                          ; preds = %middle.block7173, %vector.memcheck7156, %.preheader2951.us.us.us
  %indvars.iv5441.ph = phi i64 [ 0, %vector.memcheck7156 ], [ 0, %.preheader2951.us.us.us ], [ %n.vec7178, %middle.block7173 ]
  %.ph7442 = phi i32 [ %.promoted.us3273.us.us, %vector.memcheck7156 ], [ %.promoted.us3273.us.us, %.preheader2951.us.us.us ], [ %1484, %middle.block7173 ]
  br i1 %lcmp.mod7531.not, label %scalar.ph7174.prol.loopexit, label %scalar.ph7174.prol

scalar.ph7174.prol:                               ; preds = %scalar.ph7174.preheader
  %1485 = getelementptr i8, ptr %gep.us.us3281.us, i64 %indvars.iv5441.ph
  %1486 = load i8, ptr %1485, align 1, !tbaa !41
  %1487 = sext i8 %1486 to i32
  %1488 = getelementptr i8, ptr %1466, i64 %indvars.iv5441.ph
  %1489 = load i8, ptr %1488, align 1, !tbaa !41
  %1490 = zext i8 %1489 to i32
  %1491 = mul nsw i32 %1490, %1487
  %1492 = add nsw i32 %1491, %.ph7442
  store i32 %1492, ptr %gep6641, align 4, !tbaa !65
  %indvars.iv.next5442.prol = or disjoint i64 %indvars.iv5441.ph, 1
  br label %scalar.ph7174.prol.loopexit

scalar.ph7174.prol.loopexit:                      ; preds = %scalar.ph7174.prol, %scalar.ph7174.preheader
  %.lcssa7446.unr = phi i32 [ poison, %scalar.ph7174.preheader ], [ %1492, %scalar.ph7174.prol ]
  %indvars.iv5441.unr = phi i64 [ %indvars.iv5441.ph, %scalar.ph7174.preheader ], [ %indvars.iv.next5442.prol, %scalar.ph7174.prol ]
  %.unr = phi i32 [ %.ph7442, %scalar.ph7174.preheader ], [ %1492, %scalar.ph7174.prol ]
  %1493 = icmp eq i64 %indvars.iv5441.ph, %1430
  br i1 %1493, label %._crit_edge3269.us.us.us, label %scalar.ph7174

scalar.ph7174:                                    ; preds = %scalar.ph7174.prol.loopexit, %scalar.ph7174
  %indvars.iv5441 = phi i64 [ %indvars.iv.next5442.1, %scalar.ph7174 ], [ %indvars.iv5441.unr, %scalar.ph7174.prol.loopexit ]
  %1494 = phi i32 [ %1510, %scalar.ph7174 ], [ %.unr, %scalar.ph7174.prol.loopexit ]
  %1495 = getelementptr i8, ptr %gep.us.us3281.us, i64 %indvars.iv5441
  %1496 = load i8, ptr %1495, align 1, !tbaa !41
  %1497 = sext i8 %1496 to i32
  %1498 = getelementptr i8, ptr %1466, i64 %indvars.iv5441
  %1499 = load i8, ptr %1498, align 1, !tbaa !41
  %1500 = zext i8 %1499 to i32
  %1501 = mul nsw i32 %1500, %1497
  %1502 = add nsw i32 %1501, %1494
  store i32 %1502, ptr %gep6641, align 4, !tbaa !65
  %indvars.iv.next5442 = add nuw nsw i64 %indvars.iv5441, 1
  %1503 = getelementptr i8, ptr %gep.us.us3281.us, i64 %indvars.iv.next5442
  %1504 = load i8, ptr %1503, align 1, !tbaa !41
  %1505 = sext i8 %1504 to i32
  %1506 = getelementptr i8, ptr %1466, i64 %indvars.iv.next5442
  %1507 = load i8, ptr %1506, align 1, !tbaa !41
  %1508 = zext i8 %1507 to i32
  %1509 = mul nsw i32 %1508, %1505
  %1510 = add nsw i32 %1509, %1502
  store i32 %1510, ptr %gep6641, align 4, !tbaa !65
  %indvars.iv.next5442.1 = add nuw nsw i64 %indvars.iv5441, 2
  %exitcond5445.not.1 = icmp eq i64 %indvars.iv.next5442.1, %wide.trip.count5444
  br i1 %exitcond5445.not.1, label %._crit_edge3269.us.us.us, label %scalar.ph7174, !llvm.loop !131

._crit_edge3269.us.us.us:                         ; preds = %scalar.ph7174.prol.loopexit, %scalar.ph7174, %middle.block7173
  %.lcssa6889 = phi i32 [ %1484, %middle.block7173 ], [ %.lcssa7446.unr, %scalar.ph7174.prol.loopexit ], [ %1510, %scalar.ph7174 ]
  %indvars.iv.next5447 = add nuw nsw i64 %indvars.iv5446, 1
  %exitcond5450.not = icmp eq i64 %indvars.iv.next5447, %wide.trip.count5449
  br i1 %exitcond5450.not, label %._crit_edge3272.split.us.us.us, label %.preheader2951.us.us.us, !llvm.loop !132

.lr.ph3284.split:                                 ; preds = %.lr.ph3284, %._crit_edge3278.split
  %indvars.iv5436 = phi i64 [ %indvars.iv.next5437, %._crit_edge3278.split ], [ 0, %.lr.ph3284 ]
  %1511 = load double, ptr %1422, align 8, !tbaa !25
  %1512 = fcmp oeq double %1511, 0.000000e+00
  br i1 %1512, label %1513, label %1514

1513:                                             ; preds = %.lr.ph3284.split
  %gep6637 = getelementptr i32, ptr %invariant.gep6638, i64 %indvars.iv5436
  store i32 0, ptr %gep6637, align 4, !tbaa !65
  br label %1514

1514:                                             ; preds = %1513, %.lr.ph3284.split
  %1515 = load i32, ptr %1423, align 8, !tbaa !52
  %1516 = icmp sgt i32 %1515, 0
  br i1 %1516, label %.lr.ph3277, label %._crit_edge3278.split

.lr.ph3277:                                       ; preds = %1514, %.lr.ph3277
  %indvars.iv5433 = phi i64 [ %indvars.iv.next5434, %.lr.ph3277 ], [ 0, %1514 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5433, ptr noundef nonnull %0)
  %indvars.iv.next5434 = add nuw nsw i64 %indvars.iv5433, 1
  %1517 = load i32, ptr %1423, align 8, !tbaa !52
  %1518 = sext i32 %1517 to i64
  %1519 = icmp slt i64 %indvars.iv.next5434, %1518
  br i1 %1519, label %.lr.ph3277, label %._crit_edge3278.split, !llvm.loop !124

._crit_edge3278.split:                            ; preds = %.lr.ph3277, %1514
  %indvars.iv.next5437 = add nuw nsw i64 %indvars.iv5436, 1
  %exitcond5440.not = icmp eq i64 %indvars.iv.next5437, %wide.trip.count5439
  br i1 %exitcond5440.not, label %._crit_edge3285, label %.lr.ph3284.split, !llvm.loop !123

._crit_edge3285:                                  ; preds = %._crit_edge3278.split, %._crit_edge3278.split.us.us, %.preheader2952
  %indvars.iv.next5460 = add nuw nsw i64 %indvars.iv5459, 1
  %exitcond5463.not = icmp eq i64 %indvars.iv.next5460, %wide.trip.count5462
  br i1 %exitcond5463.not, label %._crit_edge3288, label %.preheader2952, !llvm.loop !133

._crit_edge3288:                                  ; preds = %._crit_edge3285, %1418
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %.loopexit

1520:                                             ; preds = %1414, %1410, %1406, %1402
  %1521 = getelementptr inbounds i8, ptr %0, i64 8
  %1522 = load i32, ptr %1521, align 8, !tbaa !26
  %1523 = icmp eq i32 %1522, 1
  br i1 %1523, label %1524, label %1660

1524:                                             ; preds = %1520
  %1525 = getelementptr inbounds i8, ptr %0, i64 12
  %1526 = load i32, ptr %1525, align 4, !tbaa !70
  %1527 = icmp eq i32 %1526, 8
  br i1 %1527, label %1528, label %1660

1528:                                             ; preds = %1524
  %1529 = getelementptr inbounds i8, ptr %0, i64 84
  %1530 = load i32, ptr %1529, align 4, !tbaa !88
  %1531 = icmp eq i32 %1530, 1
  br i1 %1531, label %1532, label %1660

1532:                                             ; preds = %1528
  %1533 = getelementptr inbounds i8, ptr %0, i64 88
  %1534 = load i32, ptr %1533, align 8, !tbaa !89
  %1535 = icmp eq i32 %1534, 1
  br i1 %1535, label %1536, label %1660

1536:                                             ; preds = %1532
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  store ptr %1, ptr %28, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #8
  store ptr %2, ptr %29, align 8, !tbaa !50
  %1537 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4932 = freeze i32 %1537
  %1538 = icmp sgt i32 %79, 0
  br i1 %1538, label %.preheader2955.lr.ph, label %._crit_edge3266

.preheader2955.lr.ph:                             ; preds = %1536
  %1539 = icmp sgt i32 %77, 0
  %1540 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3247 = mul i32 %.fr4932, %71
  %1541 = icmp sgt i32 %.fr4932, 0
  %1542 = getelementptr i8, ptr %0, i64 124
  %1543 = getelementptr inbounds i8, ptr %0, i64 56
  %1544 = sext i32 %.fr4932 to i64
  %1545 = sext i32 %73 to i64
  %1546 = sext i32 %75 to i64
  %wide.trip.count5431 = zext nneg i32 %79 to i64
  %wide.trip.count5400 = zext i32 %77 to i64
  %wide.trip.count5405 = zext nneg i32 %77 to i64
  %wide.trip.count5426 = zext nneg i32 %77 to i64
  %wide.trip.count5413 = zext i32 %.fr4932 to i64
  %1547 = add nuw nsw i64 %wide.trip.count5431, 4611686018427387903
  %1548 = mul i64 %1547, %1546
  %1549 = add i64 %1548, %wide.trip.count5400
  %1550 = shl i64 %1549, 2
  %scevgep7115 = getelementptr i8, ptr %3, i64 %1550
  %scevgep7116 = getelementptr i8, ptr %0, i64 128
  %1551 = add nuw nsw i64 %wide.trip.count5431, 4611686018427387903
  %1552 = mul i64 %1551, %1546
  %1553 = add i64 %1552, %wide.trip.count5400
  %1554 = shl i64 %1553, 2
  %scevgep7137 = getelementptr i8, ptr %3, i64 %1554
  %scevgep7138 = getelementptr i8, ptr %0, i64 128
  %min.iters.check7123 = icmp ult i32 %77, 8
  %bound07139 = icmp ugt ptr %scevgep7138, %3
  %bound17140 = icmp ult ptr %1542, %scevgep7137
  %found.conflict7141 = and i1 %bound07139, %bound17140
  %stride.check7142 = icmp slt i32 %75, 0
  %1555 = or i1 %found.conflict7141, %stride.check7142
  %n.vec7148 = and i64 %wide.trip.count5400, 2147483640
  %cmp.n7155 = icmp eq i64 %n.vec7148, %wide.trip.count5400
  %xtraiter7524 = and i64 %wide.trip.count5400, 3
  %lcmp.mod7525.not = icmp eq i64 %xtraiter7524, 0
  %bound07117 = icmp ugt ptr %scevgep7116, %3
  %bound17118 = icmp ult ptr %1542, %scevgep7115
  %found.conflict7119 = and i1 %bound07117, %bound17118
  %stride.check7120 = icmp slt i32 %75, 0
  %1556 = or i1 %found.conflict7119, %stride.check7120
  %n.vec7126 = and i64 %wide.trip.count5400, 2147483640
  %cmp.n7135 = icmp eq i64 %n.vec7126, %wide.trip.count5400
  %xtraiter7527 = and i64 %wide.trip.count5400, 1
  %lcmp.mod7528.not = icmp eq i64 %xtraiter7527, 0
  %1557 = add nsw i64 %wide.trip.count5400, -1
  %min.iters.check7097 = icmp ult i32 %.fr4932, 8
  %n.vec7100 = and i64 %wide.trip.count5413, 2147483640
  %cmp.n7112 = icmp eq i64 %n.vec7100, %wide.trip.count5413
  br label %.preheader2955

.preheader2955:                                   ; preds = %.preheader2955.lr.ph, %._crit_edge3264
  %indvars.iv5428 = phi i64 [ 0, %.preheader2955.lr.ph ], [ %indvars.iv.next5429, %._crit_edge3264 ]
  br i1 %1539, label %.preheader2954.lr.ph, label %._crit_edge3264

.preheader2954.lr.ph:                             ; preds = %.preheader2955
  %1558 = mul nsw i64 %indvars.iv5428, %1545
  %1559 = mul nsw i64 %indvars.iv5428, %1546
  %1560 = load i32, ptr %1540, align 8, !tbaa !52
  %1561 = icmp sgt i32 %1560, 0
  br i1 %1561, label %.preheader2954, label %.preheader2954.lr.ph.split.us

.preheader2954.lr.ph.split.us:                    ; preds = %.preheader2954.lr.ph
  %1562 = load double, ptr %1543, align 8, !tbaa !25
  %1563 = fcmp oeq double %1562, 1.000000e+00
  %invariant.gep6634 = getelementptr float, ptr %3, i64 %1559
  br i1 %1563, label %.preheader2954.us.us.preheader, label %.preheader2954.us.preheader

.preheader2954.us.preheader:                      ; preds = %.preheader2954.lr.ph.split.us
  %brmerge = select i1 %min.iters.check7123, i1 true, i1 %1555
  br i1 %brmerge, label %.preheader2954.us.preheader7450, label %vector.ph7146

.preheader2954.us.preheader7450:                  ; preds = %.preheader2954.us.preheader, %middle.block7143
  %indvars.iv5397.ph = phi i64 [ 0, %.preheader2954.us.preheader ], [ %n.vec7148, %middle.block7143 ]
  br i1 %lcmp.mod7525.not, label %.preheader2954.us.prol.loopexit, label %.preheader2954.us.prol

.preheader2954.us.prol:                           ; preds = %.preheader2954.us.preheader7450, %.preheader2954.us.prol
  %indvars.iv5397.prol = phi i64 [ %indvars.iv.next5398.prol, %.preheader2954.us.prol ], [ %indvars.iv5397.ph, %.preheader2954.us.preheader7450 ]
  %prol.iter7526 = phi i64 [ %prol.iter7526.next, %.preheader2954.us.prol ], [ 0, %.preheader2954.us.preheader7450 ]
  %1564 = load float, ptr %1542, align 4, !tbaa !134
  %1565 = fmul float %1564, 0.000000e+00
  %gep6633.prol = getelementptr float, ptr %invariant.gep6634, i64 %indvars.iv5397.prol
  store float %1565, ptr %gep6633.prol, align 4, !tbaa !27
  %indvars.iv.next5398.prol = add nuw nsw i64 %indvars.iv5397.prol, 1
  %prol.iter7526.next = add i64 %prol.iter7526, 1
  %prol.iter7526.cmp.not = icmp eq i64 %prol.iter7526.next, %xtraiter7524
  br i1 %prol.iter7526.cmp.not, label %.preheader2954.us.prol.loopexit, label %.preheader2954.us.prol, !llvm.loop !135

.preheader2954.us.prol.loopexit:                  ; preds = %.preheader2954.us.prol, %.preheader2954.us.preheader7450
  %indvars.iv5397.unr = phi i64 [ %indvars.iv5397.ph, %.preheader2954.us.preheader7450 ], [ %indvars.iv.next5398.prol, %.preheader2954.us.prol ]
  %1566 = sub nsw i64 %indvars.iv5397.ph, %wide.trip.count5400
  %1567 = icmp ugt i64 %1566, -4
  br i1 %1567, label %._crit_edge3264, label %.preheader2954.us.preheader7450.new

.preheader2954.us.preheader7450.new:              ; preds = %.preheader2954.us.prol.loopexit
  %invariant.gep7835 = getelementptr i8, ptr %invariant.gep6634, i64 4
  %invariant.gep7837 = getelementptr i8, ptr %invariant.gep6634, i64 8
  %invariant.gep7839 = getelementptr i8, ptr %invariant.gep6634, i64 12
  br label %.preheader2954.us

vector.ph7146:                                    ; preds = %.preheader2954.us.preheader
  %1568 = load float, ptr %1542, align 4, !tbaa !134, !alias.scope !136
  %broadcast.splatinsert7152 = insertelement <4 x float> poison, float %1568, i64 0
  %broadcast.splat7153 = shufflevector <4 x float> %broadcast.splatinsert7152, <4 x float> poison, <4 x i32> zeroinitializer
  %1569 = fmul <4 x float> %broadcast.splat7153, zeroinitializer
  %1570 = fmul <4 x float> %broadcast.splat7153, zeroinitializer
  br label %vector.body7150

vector.body7150:                                  ; preds = %vector.body7150, %vector.ph7146
  %index7151 = phi i64 [ 0, %vector.ph7146 ], [ %index.next7154, %vector.body7150 ]
  %1571 = getelementptr float, ptr %invariant.gep6634, i64 %index7151
  %1572 = getelementptr i8, ptr %1571, i64 16
  store <4 x float> %1569, ptr %1571, align 4, !tbaa !27, !alias.scope !139, !noalias !136
  store <4 x float> %1570, ptr %1572, align 4, !tbaa !27, !alias.scope !139, !noalias !136
  %index.next7154 = add nuw i64 %index7151, 8
  %1573 = icmp eq i64 %index.next7154, %n.vec7148
  br i1 %1573, label %middle.block7143, label %vector.body7150, !llvm.loop !141

middle.block7143:                                 ; preds = %vector.body7150
  br i1 %cmp.n7155, label %._crit_edge3264, label %.preheader2954.us.preheader7450

.preheader2954.us.us.preheader:                   ; preds = %.preheader2954.lr.ph.split.us
  %brmerge7923 = select i1 %min.iters.check7123, i1 true, i1 %1556
  br i1 %brmerge7923, label %.preheader2954.us.us.preheader7448, label %vector.ph7124

vector.ph7124:                                    ; preds = %.preheader2954.us.us.preheader
  %1574 = load float, ptr %1542, align 4, !tbaa !134, !alias.scope !142
  %broadcast.splatinsert7130 = insertelement <4 x float> poison, float %1574, i64 0
  %broadcast.splat7131 = shufflevector <4 x float> %broadcast.splatinsert7130, <4 x float> poison, <4 x i32> zeroinitializer
  %1575 = fmul <4 x float> %broadcast.splat7131, zeroinitializer
  %1576 = fmul <4 x float> %broadcast.splat7131, zeroinitializer
  br label %vector.body7128

vector.body7128:                                  ; preds = %vector.body7128, %vector.ph7124
  %index7129 = phi i64 [ 0, %vector.ph7124 ], [ %index.next7134, %vector.body7128 ]
  %1577 = getelementptr float, ptr %invariant.gep6634, i64 %index7129
  %1578 = getelementptr i8, ptr %1577, i64 16
  %wide.load7132 = load <4 x float>, ptr %1577, align 4, !tbaa !27, !alias.scope !145, !noalias !142
  %wide.load7133 = load <4 x float>, ptr %1578, align 4, !tbaa !27, !alias.scope !145, !noalias !142
  %1579 = fadd <4 x float> %1575, %wide.load7132
  %1580 = fadd <4 x float> %1576, %wide.load7133
  store <4 x float> %1579, ptr %1577, align 4, !tbaa !27, !alias.scope !145, !noalias !142
  store <4 x float> %1580, ptr %1578, align 4, !tbaa !27, !alias.scope !145, !noalias !142
  %index.next7134 = add nuw i64 %index7129, 8
  %1581 = icmp eq i64 %index.next7134, %n.vec7126
  br i1 %1581, label %middle.block7121, label %vector.body7128, !llvm.loop !147

middle.block7121:                                 ; preds = %vector.body7128
  br i1 %cmp.n7135, label %._crit_edge3264, label %.preheader2954.us.us.preheader7448

.preheader2954.us.us.preheader7448:               ; preds = %.preheader2954.us.us.preheader, %middle.block7121
  %indvars.iv5402.ph = phi i64 [ 0, %.preheader2954.us.us.preheader ], [ %n.vec7126, %middle.block7121 ]
  br i1 %lcmp.mod7528.not, label %.preheader2954.us.us.prol.loopexit, label %.preheader2954.us.us.prol

.preheader2954.us.us.prol:                        ; preds = %.preheader2954.us.us.preheader7448
  %1582 = load float, ptr %1542, align 4, !tbaa !134
  %1583 = fmul float %1582, 0.000000e+00
  %gep6635.prol = getelementptr float, ptr %invariant.gep6634, i64 %indvars.iv5402.ph
  %1584 = load float, ptr %gep6635.prol, align 4, !tbaa !27
  %1585 = fadd float %1583, %1584
  store float %1585, ptr %gep6635.prol, align 4, !tbaa !27
  %indvars.iv.next5403.prol = or disjoint i64 %indvars.iv5402.ph, 1
  br label %.preheader2954.us.us.prol.loopexit

.preheader2954.us.us.prol.loopexit:               ; preds = %.preheader2954.us.us.prol, %.preheader2954.us.us.preheader7448
  %indvars.iv5402.unr = phi i64 [ %indvars.iv5402.ph, %.preheader2954.us.us.preheader7448 ], [ %indvars.iv.next5403.prol, %.preheader2954.us.us.prol ]
  %1586 = icmp eq i64 %indvars.iv5402.ph, %1557
  br i1 %1586, label %._crit_edge3264, label %.preheader2954.us.us.preheader7448.new

.preheader2954.us.us.preheader7448.new:           ; preds = %.preheader2954.us.us.prol.loopexit
  %invariant.gep7841 = getelementptr i8, ptr %invariant.gep6634, i64 4
  br label %.preheader2954.us.us

.preheader2954.us.us:                             ; preds = %.preheader2954.us.us, %.preheader2954.us.us.preheader7448.new
  %indvars.iv5402 = phi i64 [ %indvars.iv5402.unr, %.preheader2954.us.us.preheader7448.new ], [ %indvars.iv.next5403.1, %.preheader2954.us.us ]
  %1587 = load float, ptr %1542, align 4, !tbaa !134
  %1588 = fmul float %1587, 0.000000e+00
  %gep6635 = getelementptr float, ptr %invariant.gep6634, i64 %indvars.iv5402
  %1589 = load float, ptr %gep6635, align 4, !tbaa !27
  %1590 = fadd float %1588, %1589
  store float %1590, ptr %gep6635, align 4, !tbaa !27
  %1591 = load float, ptr %1542, align 4, !tbaa !134
  %1592 = fmul float %1591, 0.000000e+00
  %gep7842 = getelementptr float, ptr %invariant.gep7841, i64 %indvars.iv5402
  %1593 = load float, ptr %gep7842, align 4, !tbaa !27
  %1594 = fadd float %1592, %1593
  store float %1594, ptr %gep7842, align 4, !tbaa !27
  %indvars.iv.next5403.1 = add nuw nsw i64 %indvars.iv5402, 2
  %exitcond5406.not.1 = icmp eq i64 %indvars.iv.next5403.1, %wide.trip.count5405
  br i1 %exitcond5406.not.1, label %._crit_edge3264, label %.preheader2954.us.us, !llvm.loop !148

.preheader2954.us:                                ; preds = %.preheader2954.us, %.preheader2954.us.preheader7450.new
  %indvars.iv5397 = phi i64 [ %indvars.iv5397.unr, %.preheader2954.us.preheader7450.new ], [ %indvars.iv.next5398.3, %.preheader2954.us ]
  %1595 = load float, ptr %1542, align 4, !tbaa !134
  %1596 = fmul float %1595, 0.000000e+00
  %gep6633 = getelementptr float, ptr %invariant.gep6634, i64 %indvars.iv5397
  store float %1596, ptr %gep6633, align 4, !tbaa !27
  %1597 = load float, ptr %1542, align 4, !tbaa !134
  %1598 = fmul float %1597, 0.000000e+00
  %gep7836 = getelementptr float, ptr %invariant.gep7835, i64 %indvars.iv5397
  store float %1598, ptr %gep7836, align 4, !tbaa !27
  %1599 = load float, ptr %1542, align 4, !tbaa !134
  %1600 = fmul float %1599, 0.000000e+00
  %gep7838 = getelementptr float, ptr %invariant.gep7837, i64 %indvars.iv5397
  store float %1600, ptr %gep7838, align 4, !tbaa !27
  %1601 = load float, ptr %1542, align 4, !tbaa !134
  %1602 = fmul float %1601, 0.000000e+00
  %gep7840 = getelementptr float, ptr %invariant.gep7839, i64 %indvars.iv5397
  store float %1602, ptr %gep7840, align 4, !tbaa !27
  %indvars.iv.next5398.3 = add nuw nsw i64 %indvars.iv5397, 4
  %exitcond5401.not.3 = icmp eq i64 %indvars.iv.next5398.3, %wide.trip.count5400
  br i1 %exitcond5401.not.3, label %._crit_edge3264, label %.preheader2954.us, !llvm.loop !149

.preheader2954:                                   ; preds = %.preheader2954.lr.ph, %._crit_edge3255._crit_edge
  %1603 = phi i32 [ %1648, %._crit_edge3255._crit_edge ], [ %1560, %.preheader2954.lr.ph ]
  %indvars.iv5423 = phi i64 [ %indvars.iv.next5424, %._crit_edge3255._crit_edge ], [ 0, %.preheader2954.lr.ph ]
  %1604 = icmp sgt i32 %1603, 0
  br i1 %1604, label %.lr.ph3254, label %._crit_edge3255

.lr.ph3254:                                       ; preds = %.preheader2954
  %1605 = mul nsw i64 %indvars.iv5423, %1544
  br i1 %1541, label %.lr.ph3254.split.us, label %.lr.ph3254.split

.lr.ph3254.split.us:                              ; preds = %.lr.ph3254, %._crit_edge3250.split.us.us
  %indvars.iv5420 = phi i64 [ %indvars.iv.next5421, %._crit_edge3250.split.us.us ], [ 0, %.lr.ph3254 ]
  %.026693252.us = phi i32 [ %.12670.lcssa.us, %._crit_edge3250.split.us.us ], [ 0, %.lr.ph3254 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5420, ptr noundef nonnull %0)
  %1606 = sdiv i32 %.fr4927, %.fr4932
  %1607 = icmp sgt i32 %1606, 0
  br i1 %1607, label %.preheader2953.lr.ph.us, label %._crit_edge3250.split.us.us

._crit_edge3250.split.us.us:                      ; preds = %._crit_edge3245.us.us, %.lr.ph3254.split.us
  %.12670.lcssa.us = phi i32 [ %.026693252.us, %.lr.ph3254.split.us ], [ %.lcssa6891, %._crit_edge3245.us.us ]
  %indvars.iv.next5421 = add nuw nsw i64 %indvars.iv5420, 1
  %1608 = load i32, ptr %1540, align 8, !tbaa !52
  %1609 = sext i32 %1608 to i64
  %1610 = icmp slt i64 %indvars.iv.next5421, %1609
  br i1 %1610, label %.lr.ph3254.split.us, label %._crit_edge3255, !llvm.loop !150

.preheader2953.lr.ph.us:                          ; preds = %.lr.ph3254.split.us
  %1611 = load ptr, ptr %28, align 8
  %1612 = load i64, ptr %5, align 8
  %1613 = getelementptr i8, ptr %1611, i64 %1612
  %invariant.gep.us3257 = getelementptr i8, ptr %1613, i64 %1605
  %1614 = load ptr, ptr %29, align 8
  %1615 = load i64, ptr %6, align 8
  %1616 = getelementptr i8, ptr %1614, i64 %1615
  %1617 = getelementptr i8, ptr %1616, i64 %1558
  %wide.trip.count5418 = zext nneg i32 %1606 to i64
  br label %.preheader2953.us.us

.preheader2953.us.us:                             ; preds = %._crit_edge3245.us.us, %.preheader2953.lr.ph.us
  %indvars.iv5415 = phi i64 [ %indvars.iv.next5416, %._crit_edge3245.us.us ], [ 0, %.preheader2953.lr.ph.us ]
  %.126703248.us.us = phi i32 [ %.lcssa6891, %._crit_edge3245.us.us ], [ %.026693252.us, %.preheader2953.lr.ph.us ]
  %1618 = trunc nuw nsw i64 %indvars.iv5415 to i32
  %factor.op.mul.reass.us.us3259 = mul i32 %factor.op.mul3247, %1618
  %1619 = sext i32 %factor.op.mul.reass.us.us3259 to i64
  %gep.us.us3260 = getelementptr i8, ptr %invariant.gep.us3257, i64 %1619
  %1620 = mul nuw nsw i64 %indvars.iv5415, %1544
  %1621 = getelementptr i8, ptr %1617, i64 %1620
  br i1 %min.iters.check7097, label %scalar.ph7096.preheader, label %vector.ph7098

vector.ph7098:                                    ; preds = %.preheader2953.us.us
  %1622 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.126703248.us.us, i64 0
  br label %vector.body7102

vector.body7102:                                  ; preds = %vector.body7102, %vector.ph7098
  %index7103 = phi i64 [ 0, %vector.ph7098 ], [ %index.next7110, %vector.body7102 ]
  %vec.phi7104 = phi <4 x i32> [ %1622, %vector.ph7098 ], [ %1633, %vector.body7102 ]
  %vec.phi7105 = phi <4 x i32> [ zeroinitializer, %vector.ph7098 ], [ %1634, %vector.body7102 ]
  %1623 = getelementptr i8, ptr %gep.us.us3260, i64 %index7103
  %1624 = getelementptr i8, ptr %1623, i64 4
  %wide.load7106 = load <4 x i8>, ptr %1623, align 1, !tbaa !41
  %wide.load7107 = load <4 x i8>, ptr %1624, align 1, !tbaa !41
  %1625 = zext <4 x i8> %wide.load7106 to <4 x i32>
  %1626 = zext <4 x i8> %wide.load7107 to <4 x i32>
  %1627 = getelementptr i8, ptr %1621, i64 %index7103
  %1628 = getelementptr i8, ptr %1627, i64 4
  %wide.load7108 = load <4 x i8>, ptr %1627, align 1, !tbaa !41
  %wide.load7109 = load <4 x i8>, ptr %1628, align 1, !tbaa !41
  %1629 = zext <4 x i8> %wide.load7108 to <4 x i32>
  %1630 = zext <4 x i8> %wide.load7109 to <4 x i32>
  %1631 = mul nuw nsw <4 x i32> %1629, %1625
  %1632 = mul nuw nsw <4 x i32> %1630, %1626
  %1633 = add <4 x i32> %1631, %vec.phi7104
  %1634 = add <4 x i32> %1632, %vec.phi7105
  %index.next7110 = add nuw i64 %index7103, 8
  %1635 = icmp eq i64 %index.next7110, %n.vec7100
  br i1 %1635, label %middle.block7095, label %vector.body7102, !llvm.loop !151

middle.block7095:                                 ; preds = %vector.body7102
  %bin.rdx7111 = add <4 x i32> %1634, %1633
  %1636 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx7111)
  br i1 %cmp.n7112, label %._crit_edge3245.us.us, label %scalar.ph7096.preheader

scalar.ph7096.preheader:                          ; preds = %middle.block7095, %.preheader2953.us.us
  %indvars.iv5410.ph = phi i64 [ 0, %.preheader2953.us.us ], [ %n.vec7100, %middle.block7095 ]
  %.226713242.us.us.ph = phi i32 [ %.126703248.us.us, %.preheader2953.us.us ], [ %1636, %middle.block7095 ]
  br label %scalar.ph7096

scalar.ph7096:                                    ; preds = %scalar.ph7096.preheader, %scalar.ph7096
  %indvars.iv5410 = phi i64 [ %indvars.iv.next5411, %scalar.ph7096 ], [ %indvars.iv5410.ph, %scalar.ph7096.preheader ]
  %.226713242.us.us = phi i32 [ %1644, %scalar.ph7096 ], [ %.226713242.us.us.ph, %scalar.ph7096.preheader ]
  %1637 = getelementptr i8, ptr %gep.us.us3260, i64 %indvars.iv5410
  %1638 = load i8, ptr %1637, align 1, !tbaa !41
  %1639 = zext i8 %1638 to i32
  %1640 = getelementptr i8, ptr %1621, i64 %indvars.iv5410
  %1641 = load i8, ptr %1640, align 1, !tbaa !41
  %1642 = zext i8 %1641 to i32
  %1643 = mul nuw nsw i32 %1642, %1639
  %1644 = add nsw i32 %1643, %.226713242.us.us
  %indvars.iv.next5411 = add nuw nsw i64 %indvars.iv5410, 1
  %exitcond5414.not = icmp eq i64 %indvars.iv.next5411, %wide.trip.count5413
  br i1 %exitcond5414.not, label %._crit_edge3245.us.us, label %scalar.ph7096, !llvm.loop !152

._crit_edge3245.us.us:                            ; preds = %scalar.ph7096, %middle.block7095
  %.lcssa6891 = phi i32 [ %1636, %middle.block7095 ], [ %1644, %scalar.ph7096 ]
  %indvars.iv.next5416 = add nuw nsw i64 %indvars.iv5415, 1
  %exitcond5419.not = icmp eq i64 %indvars.iv.next5416, %wide.trip.count5418
  br i1 %exitcond5419.not, label %._crit_edge3250.split.us.us, label %.preheader2953.us.us, !llvm.loop !153

.lr.ph3254.split:                                 ; preds = %.lr.ph3254, %.lr.ph3254.split
  %indvars.iv5407 = phi i64 [ %indvars.iv.next5408, %.lr.ph3254.split ], [ 0, %.lr.ph3254 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5407, ptr noundef nonnull %0)
  %indvars.iv.next5408 = add nuw nsw i64 %indvars.iv5407, 1
  %1645 = load i32, ptr %1540, align 8, !tbaa !52
  %1646 = sext i32 %1645 to i64
  %1647 = icmp slt i64 %indvars.iv.next5408, %1646
  br i1 %1647, label %.lr.ph3254.split, label %._crit_edge3255, !llvm.loop !150

._crit_edge3255:                                  ; preds = %.lr.ph3254.split, %._crit_edge3250.split.us.us, %.preheader2954
  %1648 = phi i32 [ %1603, %.preheader2954 ], [ %1608, %._crit_edge3250.split.us.us ], [ %1645, %.lr.ph3254.split ]
  %.02669.lcssa = phi i32 [ 0, %.preheader2954 ], [ %.12670.lcssa.us, %._crit_edge3250.split.us.us ], [ 0, %.lr.ph3254.split ]
  %1649 = sitofp i32 %.02669.lcssa to float
  %1650 = load float, ptr %1542, align 4, !tbaa !134
  %1651 = fmul float %1650, %1649
  %1652 = load double, ptr %1543, align 8, !tbaa !25
  %1653 = fcmp oeq double %1652, 1.000000e+00
  %1654 = add nsw i64 %indvars.iv5423, %1559
  br i1 %1653, label %1655, label %._crit_edge3255._crit_edge

1655:                                             ; preds = %._crit_edge3255
  %1656 = getelementptr inbounds float, ptr %3, i64 %1654
  %1657 = load float, ptr %1656, align 4, !tbaa !27
  %1658 = fadd float %1651, %1657
  br label %._crit_edge3255._crit_edge

._crit_edge3255._crit_edge:                       ; preds = %._crit_edge3255, %1655
  %.02672 = phi float [ %1658, %1655 ], [ %1651, %._crit_edge3255 ]
  %1659 = getelementptr inbounds float, ptr %3, i64 %1654
  store float %.02672, ptr %1659, align 4, !tbaa !27
  %indvars.iv.next5424 = add nuw nsw i64 %indvars.iv5423, 1
  %exitcond5427.not = icmp eq i64 %indvars.iv.next5424, %wide.trip.count5426
  br i1 %exitcond5427.not, label %._crit_edge3264, label %.preheader2954, !llvm.loop !154

._crit_edge3264:                                  ; preds = %.preheader2954.us.prol.loopexit, %.preheader2954.us, %.preheader2954.us.us.prol.loopexit, %.preheader2954.us.us, %._crit_edge3255._crit_edge, %middle.block7143, %middle.block7121, %.preheader2955
  %indvars.iv.next5429 = add nuw nsw i64 %indvars.iv5428, 1
  %exitcond5432.not = icmp eq i64 %indvars.iv.next5429, %wide.trip.count5431
  br i1 %exitcond5432.not, label %._crit_edge3266, label %.preheader2955, !llvm.loop !156

._crit_edge3266:                                  ; preds = %._crit_edge3264, %1536
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %.loopexit

1660:                                             ; preds = %1532, %1528, %1524, %1520
  %1661 = getelementptr inbounds i8, ptr %0, i64 8
  %1662 = load i32, ptr %1661, align 8, !tbaa !26
  %1663 = icmp eq i32 %1662, 1
  br i1 %1663, label %1664, label %1800

1664:                                             ; preds = %1660
  %1665 = getelementptr inbounds i8, ptr %0, i64 12
  %1666 = load i32, ptr %1665, align 4, !tbaa !70
  %1667 = icmp eq i32 %1666, 8
  br i1 %1667, label %1668, label %1800

1668:                                             ; preds = %1664
  %1669 = getelementptr inbounds i8, ptr %0, i64 84
  %1670 = load i32, ptr %1669, align 4, !tbaa !88
  %1671 = icmp eq i32 %1670, 0
  br i1 %1671, label %1672, label %1800

1672:                                             ; preds = %1668
  %1673 = getelementptr inbounds i8, ptr %0, i64 88
  %1674 = load i32, ptr %1673, align 8, !tbaa !89
  %1675 = icmp eq i32 %1674, 0
  br i1 %1675, label %1676, label %1800

1676:                                             ; preds = %1672
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  store ptr %1, ptr %30, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  store ptr %2, ptr %31, align 8, !tbaa !50
  %1677 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4931 = freeze i32 %1677
  %1678 = icmp sgt i32 %79, 0
  br i1 %1678, label %.preheader2958.lr.ph, label %._crit_edge3241

.preheader2958.lr.ph:                             ; preds = %1676
  %1679 = icmp sgt i32 %77, 0
  %1680 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3222 = mul i32 %.fr4931, %71
  %1681 = icmp sgt i32 %.fr4931, 0
  %1682 = getelementptr i8, ptr %0, i64 124
  %1683 = getelementptr inbounds i8, ptr %0, i64 56
  %1684 = sext i32 %.fr4931 to i64
  %1685 = sext i32 %73 to i64
  %1686 = sext i32 %75 to i64
  %wide.trip.count5395 = zext nneg i32 %79 to i64
  %wide.trip.count5364 = zext i32 %77 to i64
  %wide.trip.count5369 = zext nneg i32 %77 to i64
  %wide.trip.count5390 = zext nneg i32 %77 to i64
  %wide.trip.count5377 = zext i32 %.fr4931 to i64
  %1687 = add nuw nsw i64 %wide.trip.count5395, 4611686018427387903
  %1688 = mul i64 %1687, %1686
  %1689 = add i64 %1688, %wide.trip.count5364
  %1690 = shl i64 %1689, 2
  %scevgep7054 = getelementptr i8, ptr %3, i64 %1690
  %scevgep7055 = getelementptr i8, ptr %0, i64 128
  %1691 = add nuw nsw i64 %wide.trip.count5395, 4611686018427387903
  %1692 = mul i64 %1691, %1686
  %1693 = add i64 %1692, %wide.trip.count5364
  %1694 = shl i64 %1693, 2
  %scevgep7076 = getelementptr i8, ptr %3, i64 %1694
  %scevgep7077 = getelementptr i8, ptr %0, i64 128
  %min.iters.check7062 = icmp ult i32 %77, 8
  %bound07078 = icmp ugt ptr %scevgep7077, %3
  %bound17079 = icmp ult ptr %1682, %scevgep7076
  %found.conflict7080 = and i1 %bound07078, %bound17079
  %stride.check7081 = icmp slt i32 %75, 0
  %1695 = or i1 %found.conflict7080, %stride.check7081
  %n.vec7087 = and i64 %wide.trip.count5364, 2147483640
  %cmp.n7094 = icmp eq i64 %n.vec7087, %wide.trip.count5364
  %xtraiter7518 = and i64 %wide.trip.count5364, 3
  %lcmp.mod7519.not = icmp eq i64 %xtraiter7518, 0
  %bound07056 = icmp ugt ptr %scevgep7055, %3
  %bound17057 = icmp ult ptr %1682, %scevgep7054
  %found.conflict7058 = and i1 %bound07056, %bound17057
  %stride.check7059 = icmp slt i32 %75, 0
  %1696 = or i1 %found.conflict7058, %stride.check7059
  %n.vec7065 = and i64 %wide.trip.count5364, 2147483640
  %cmp.n7074 = icmp eq i64 %n.vec7065, %wide.trip.count5364
  %xtraiter7521 = and i64 %wide.trip.count5364, 1
  %lcmp.mod7522.not = icmp eq i64 %xtraiter7521, 0
  %1697 = add nsw i64 %wide.trip.count5364, -1
  %min.iters.check7036 = icmp ult i32 %.fr4931, 8
  %n.vec7039 = and i64 %wide.trip.count5377, 2147483640
  %cmp.n7051 = icmp eq i64 %n.vec7039, %wide.trip.count5377
  br label %.preheader2958

.preheader2958:                                   ; preds = %.preheader2958.lr.ph, %._crit_edge3239
  %indvars.iv5392 = phi i64 [ 0, %.preheader2958.lr.ph ], [ %indvars.iv.next5393, %._crit_edge3239 ]
  br i1 %1679, label %.preheader2957.lr.ph, label %._crit_edge3239

.preheader2957.lr.ph:                             ; preds = %.preheader2958
  %1698 = mul nsw i64 %indvars.iv5392, %1685
  %1699 = mul nsw i64 %indvars.iv5392, %1686
  %1700 = load i32, ptr %1680, align 8, !tbaa !52
  %1701 = icmp sgt i32 %1700, 0
  br i1 %1701, label %.preheader2957, label %.preheader2957.lr.ph.split.us

.preheader2957.lr.ph.split.us:                    ; preds = %.preheader2957.lr.ph
  %1702 = load double, ptr %1683, align 8, !tbaa !25
  %1703 = fcmp oeq double %1702, 1.000000e+00
  %invariant.gep6630 = getelementptr float, ptr %3, i64 %1699
  br i1 %1703, label %.preheader2957.us.us.preheader, label %.preheader2957.us.preheader

.preheader2957.us.preheader:                      ; preds = %.preheader2957.lr.ph.split.us
  %brmerge7924 = select i1 %min.iters.check7062, i1 true, i1 %1695
  br i1 %brmerge7924, label %.preheader2957.us.preheader7460, label %vector.ph7085

.preheader2957.us.preheader7460:                  ; preds = %.preheader2957.us.preheader, %middle.block7082
  %indvars.iv5361.ph = phi i64 [ 0, %.preheader2957.us.preheader ], [ %n.vec7087, %middle.block7082 ]
  br i1 %lcmp.mod7519.not, label %.preheader2957.us.prol.loopexit, label %.preheader2957.us.prol

.preheader2957.us.prol:                           ; preds = %.preheader2957.us.preheader7460, %.preheader2957.us.prol
  %indvars.iv5361.prol = phi i64 [ %indvars.iv.next5362.prol, %.preheader2957.us.prol ], [ %indvars.iv5361.ph, %.preheader2957.us.preheader7460 ]
  %prol.iter7520 = phi i64 [ %prol.iter7520.next, %.preheader2957.us.prol ], [ 0, %.preheader2957.us.preheader7460 ]
  %1704 = load float, ptr %1682, align 4, !tbaa !134
  %1705 = fmul float %1704, 0.000000e+00
  %gep6629.prol = getelementptr float, ptr %invariant.gep6630, i64 %indvars.iv5361.prol
  store float %1705, ptr %gep6629.prol, align 4, !tbaa !27
  %indvars.iv.next5362.prol = add nuw nsw i64 %indvars.iv5361.prol, 1
  %prol.iter7520.next = add i64 %prol.iter7520, 1
  %prol.iter7520.cmp.not = icmp eq i64 %prol.iter7520.next, %xtraiter7518
  br i1 %prol.iter7520.cmp.not, label %.preheader2957.us.prol.loopexit, label %.preheader2957.us.prol, !llvm.loop !157

.preheader2957.us.prol.loopexit:                  ; preds = %.preheader2957.us.prol, %.preheader2957.us.preheader7460
  %indvars.iv5361.unr = phi i64 [ %indvars.iv5361.ph, %.preheader2957.us.preheader7460 ], [ %indvars.iv.next5362.prol, %.preheader2957.us.prol ]
  %1706 = sub nsw i64 %indvars.iv5361.ph, %wide.trip.count5364
  %1707 = icmp ugt i64 %1706, -4
  br i1 %1707, label %._crit_edge3239, label %.preheader2957.us.preheader7460.new

.preheader2957.us.preheader7460.new:              ; preds = %.preheader2957.us.prol.loopexit
  %invariant.gep7827 = getelementptr i8, ptr %invariant.gep6630, i64 4
  %invariant.gep7829 = getelementptr i8, ptr %invariant.gep6630, i64 8
  %invariant.gep7831 = getelementptr i8, ptr %invariant.gep6630, i64 12
  br label %.preheader2957.us

vector.ph7085:                                    ; preds = %.preheader2957.us.preheader
  %1708 = load float, ptr %1682, align 4, !tbaa !134, !alias.scope !158
  %broadcast.splatinsert7091 = insertelement <4 x float> poison, float %1708, i64 0
  %broadcast.splat7092 = shufflevector <4 x float> %broadcast.splatinsert7091, <4 x float> poison, <4 x i32> zeroinitializer
  %1709 = fmul <4 x float> %broadcast.splat7092, zeroinitializer
  %1710 = fmul <4 x float> %broadcast.splat7092, zeroinitializer
  br label %vector.body7089

vector.body7089:                                  ; preds = %vector.body7089, %vector.ph7085
  %index7090 = phi i64 [ 0, %vector.ph7085 ], [ %index.next7093, %vector.body7089 ]
  %1711 = getelementptr float, ptr %invariant.gep6630, i64 %index7090
  %1712 = getelementptr i8, ptr %1711, i64 16
  store <4 x float> %1709, ptr %1711, align 4, !tbaa !27, !alias.scope !161, !noalias !158
  store <4 x float> %1710, ptr %1712, align 4, !tbaa !27, !alias.scope !161, !noalias !158
  %index.next7093 = add nuw i64 %index7090, 8
  %1713 = icmp eq i64 %index.next7093, %n.vec7087
  br i1 %1713, label %middle.block7082, label %vector.body7089, !llvm.loop !163

middle.block7082:                                 ; preds = %vector.body7089
  br i1 %cmp.n7094, label %._crit_edge3239, label %.preheader2957.us.preheader7460

.preheader2957.us.us.preheader:                   ; preds = %.preheader2957.lr.ph.split.us
  %brmerge7925 = select i1 %min.iters.check7062, i1 true, i1 %1696
  br i1 %brmerge7925, label %.preheader2957.us.us.preheader7458, label %vector.ph7063

vector.ph7063:                                    ; preds = %.preheader2957.us.us.preheader
  %1714 = load float, ptr %1682, align 4, !tbaa !134, !alias.scope !164
  %broadcast.splatinsert7069 = insertelement <4 x float> poison, float %1714, i64 0
  %broadcast.splat7070 = shufflevector <4 x float> %broadcast.splatinsert7069, <4 x float> poison, <4 x i32> zeroinitializer
  %1715 = fmul <4 x float> %broadcast.splat7070, zeroinitializer
  %1716 = fmul <4 x float> %broadcast.splat7070, zeroinitializer
  br label %vector.body7067

vector.body7067:                                  ; preds = %vector.body7067, %vector.ph7063
  %index7068 = phi i64 [ 0, %vector.ph7063 ], [ %index.next7073, %vector.body7067 ]
  %1717 = getelementptr float, ptr %invariant.gep6630, i64 %index7068
  %1718 = getelementptr i8, ptr %1717, i64 16
  %wide.load7071 = load <4 x float>, ptr %1717, align 4, !tbaa !27, !alias.scope !167, !noalias !164
  %wide.load7072 = load <4 x float>, ptr %1718, align 4, !tbaa !27, !alias.scope !167, !noalias !164
  %1719 = fadd <4 x float> %1715, %wide.load7071
  %1720 = fadd <4 x float> %1716, %wide.load7072
  store <4 x float> %1719, ptr %1717, align 4, !tbaa !27, !alias.scope !167, !noalias !164
  store <4 x float> %1720, ptr %1718, align 4, !tbaa !27, !alias.scope !167, !noalias !164
  %index.next7073 = add nuw i64 %index7068, 8
  %1721 = icmp eq i64 %index.next7073, %n.vec7065
  br i1 %1721, label %middle.block7060, label %vector.body7067, !llvm.loop !169

middle.block7060:                                 ; preds = %vector.body7067
  br i1 %cmp.n7074, label %._crit_edge3239, label %.preheader2957.us.us.preheader7458

.preheader2957.us.us.preheader7458:               ; preds = %.preheader2957.us.us.preheader, %middle.block7060
  %indvars.iv5366.ph = phi i64 [ 0, %.preheader2957.us.us.preheader ], [ %n.vec7065, %middle.block7060 ]
  br i1 %lcmp.mod7522.not, label %.preheader2957.us.us.prol.loopexit, label %.preheader2957.us.us.prol

.preheader2957.us.us.prol:                        ; preds = %.preheader2957.us.us.preheader7458
  %1722 = load float, ptr %1682, align 4, !tbaa !134
  %1723 = fmul float %1722, 0.000000e+00
  %gep6631.prol = getelementptr float, ptr %invariant.gep6630, i64 %indvars.iv5366.ph
  %1724 = load float, ptr %gep6631.prol, align 4, !tbaa !27
  %1725 = fadd float %1723, %1724
  store float %1725, ptr %gep6631.prol, align 4, !tbaa !27
  %indvars.iv.next5367.prol = or disjoint i64 %indvars.iv5366.ph, 1
  br label %.preheader2957.us.us.prol.loopexit

.preheader2957.us.us.prol.loopexit:               ; preds = %.preheader2957.us.us.prol, %.preheader2957.us.us.preheader7458
  %indvars.iv5366.unr = phi i64 [ %indvars.iv5366.ph, %.preheader2957.us.us.preheader7458 ], [ %indvars.iv.next5367.prol, %.preheader2957.us.us.prol ]
  %1726 = icmp eq i64 %indvars.iv5366.ph, %1697
  br i1 %1726, label %._crit_edge3239, label %.preheader2957.us.us.preheader7458.new

.preheader2957.us.us.preheader7458.new:           ; preds = %.preheader2957.us.us.prol.loopexit
  %invariant.gep7833 = getelementptr i8, ptr %invariant.gep6630, i64 4
  br label %.preheader2957.us.us

.preheader2957.us.us:                             ; preds = %.preheader2957.us.us, %.preheader2957.us.us.preheader7458.new
  %indvars.iv5366 = phi i64 [ %indvars.iv5366.unr, %.preheader2957.us.us.preheader7458.new ], [ %indvars.iv.next5367.1, %.preheader2957.us.us ]
  %1727 = load float, ptr %1682, align 4, !tbaa !134
  %1728 = fmul float %1727, 0.000000e+00
  %gep6631 = getelementptr float, ptr %invariant.gep6630, i64 %indvars.iv5366
  %1729 = load float, ptr %gep6631, align 4, !tbaa !27
  %1730 = fadd float %1728, %1729
  store float %1730, ptr %gep6631, align 4, !tbaa !27
  %1731 = load float, ptr %1682, align 4, !tbaa !134
  %1732 = fmul float %1731, 0.000000e+00
  %gep7834 = getelementptr float, ptr %invariant.gep7833, i64 %indvars.iv5366
  %1733 = load float, ptr %gep7834, align 4, !tbaa !27
  %1734 = fadd float %1732, %1733
  store float %1734, ptr %gep7834, align 4, !tbaa !27
  %indvars.iv.next5367.1 = add nuw nsw i64 %indvars.iv5366, 2
  %exitcond5370.not.1 = icmp eq i64 %indvars.iv.next5367.1, %wide.trip.count5369
  br i1 %exitcond5370.not.1, label %._crit_edge3239, label %.preheader2957.us.us, !llvm.loop !170

.preheader2957.us:                                ; preds = %.preheader2957.us, %.preheader2957.us.preheader7460.new
  %indvars.iv5361 = phi i64 [ %indvars.iv5361.unr, %.preheader2957.us.preheader7460.new ], [ %indvars.iv.next5362.3, %.preheader2957.us ]
  %1735 = load float, ptr %1682, align 4, !tbaa !134
  %1736 = fmul float %1735, 0.000000e+00
  %gep6629 = getelementptr float, ptr %invariant.gep6630, i64 %indvars.iv5361
  store float %1736, ptr %gep6629, align 4, !tbaa !27
  %1737 = load float, ptr %1682, align 4, !tbaa !134
  %1738 = fmul float %1737, 0.000000e+00
  %gep7828 = getelementptr float, ptr %invariant.gep7827, i64 %indvars.iv5361
  store float %1738, ptr %gep7828, align 4, !tbaa !27
  %1739 = load float, ptr %1682, align 4, !tbaa !134
  %1740 = fmul float %1739, 0.000000e+00
  %gep7830 = getelementptr float, ptr %invariant.gep7829, i64 %indvars.iv5361
  store float %1740, ptr %gep7830, align 4, !tbaa !27
  %1741 = load float, ptr %1682, align 4, !tbaa !134
  %1742 = fmul float %1741, 0.000000e+00
  %gep7832 = getelementptr float, ptr %invariant.gep7831, i64 %indvars.iv5361
  store float %1742, ptr %gep7832, align 4, !tbaa !27
  %indvars.iv.next5362.3 = add nuw nsw i64 %indvars.iv5361, 4
  %exitcond5365.not.3 = icmp eq i64 %indvars.iv.next5362.3, %wide.trip.count5364
  br i1 %exitcond5365.not.3, label %._crit_edge3239, label %.preheader2957.us, !llvm.loop !171

.preheader2957:                                   ; preds = %.preheader2957.lr.ph, %._crit_edge3230._crit_edge
  %1743 = phi i32 [ %1788, %._crit_edge3230._crit_edge ], [ %1700, %.preheader2957.lr.ph ]
  %indvars.iv5387 = phi i64 [ %indvars.iv.next5388, %._crit_edge3230._crit_edge ], [ 0, %.preheader2957.lr.ph ]
  %1744 = icmp sgt i32 %1743, 0
  br i1 %1744, label %.lr.ph3229, label %._crit_edge3230

.lr.ph3229:                                       ; preds = %.preheader2957
  %1745 = mul nsw i64 %indvars.iv5387, %1684
  br i1 %1681, label %.lr.ph3229.split.us, label %.lr.ph3229.split

.lr.ph3229.split.us:                              ; preds = %.lr.ph3229, %._crit_edge3225.split.us.us
  %indvars.iv5384 = phi i64 [ %indvars.iv.next5385, %._crit_edge3225.split.us.us ], [ 0, %.lr.ph3229 ]
  %.026733227.us = phi i32 [ %.12674.lcssa.us, %._crit_edge3225.split.us.us ], [ 0, %.lr.ph3229 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5384, ptr noundef nonnull %0)
  %1746 = sdiv i32 %.fr4927, %.fr4931
  %1747 = icmp sgt i32 %1746, 0
  br i1 %1747, label %.preheader2956.lr.ph.us, label %._crit_edge3225.split.us.us

._crit_edge3225.split.us.us:                      ; preds = %._crit_edge3220.us.us, %.lr.ph3229.split.us
  %.12674.lcssa.us = phi i32 [ %.026733227.us, %.lr.ph3229.split.us ], [ %.lcssa6894, %._crit_edge3220.us.us ]
  %indvars.iv.next5385 = add nuw nsw i64 %indvars.iv5384, 1
  %1748 = load i32, ptr %1680, align 8, !tbaa !52
  %1749 = sext i32 %1748 to i64
  %1750 = icmp slt i64 %indvars.iv.next5385, %1749
  br i1 %1750, label %.lr.ph3229.split.us, label %._crit_edge3230, !llvm.loop !172

.preheader2956.lr.ph.us:                          ; preds = %.lr.ph3229.split.us
  %1751 = load ptr, ptr %30, align 8
  %1752 = load i64, ptr %5, align 8
  %1753 = getelementptr i8, ptr %1751, i64 %1752
  %invariant.gep.us3232 = getelementptr i8, ptr %1753, i64 %1745
  %1754 = load ptr, ptr %31, align 8
  %1755 = load i64, ptr %6, align 8
  %1756 = getelementptr i8, ptr %1754, i64 %1755
  %1757 = getelementptr i8, ptr %1756, i64 %1698
  %wide.trip.count5382 = zext nneg i32 %1746 to i64
  br label %.preheader2956.us.us

.preheader2956.us.us:                             ; preds = %._crit_edge3220.us.us, %.preheader2956.lr.ph.us
  %indvars.iv5379 = phi i64 [ %indvars.iv.next5380, %._crit_edge3220.us.us ], [ 0, %.preheader2956.lr.ph.us ]
  %.126743223.us.us = phi i32 [ %.lcssa6894, %._crit_edge3220.us.us ], [ %.026733227.us, %.preheader2956.lr.ph.us ]
  %1758 = trunc nuw nsw i64 %indvars.iv5379 to i32
  %factor.op.mul.reass.us.us3234 = mul i32 %factor.op.mul3222, %1758
  %1759 = sext i32 %factor.op.mul.reass.us.us3234 to i64
  %gep.us.us3235 = getelementptr i8, ptr %invariant.gep.us3232, i64 %1759
  %1760 = mul nuw nsw i64 %indvars.iv5379, %1684
  %1761 = getelementptr i8, ptr %1757, i64 %1760
  br i1 %min.iters.check7036, label %scalar.ph7035.preheader, label %vector.ph7037

vector.ph7037:                                    ; preds = %.preheader2956.us.us
  %1762 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.126743223.us.us, i64 0
  br label %vector.body7041

vector.body7041:                                  ; preds = %vector.body7041, %vector.ph7037
  %index7042 = phi i64 [ 0, %vector.ph7037 ], [ %index.next7049, %vector.body7041 ]
  %vec.phi7043 = phi <4 x i32> [ %1762, %vector.ph7037 ], [ %1773, %vector.body7041 ]
  %vec.phi7044 = phi <4 x i32> [ zeroinitializer, %vector.ph7037 ], [ %1774, %vector.body7041 ]
  %1763 = getelementptr i8, ptr %gep.us.us3235, i64 %index7042
  %1764 = getelementptr i8, ptr %1763, i64 4
  %wide.load7045 = load <4 x i8>, ptr %1763, align 1, !tbaa !41
  %wide.load7046 = load <4 x i8>, ptr %1764, align 1, !tbaa !41
  %1765 = sext <4 x i8> %wide.load7045 to <4 x i32>
  %1766 = sext <4 x i8> %wide.load7046 to <4 x i32>
  %1767 = getelementptr i8, ptr %1761, i64 %index7042
  %1768 = getelementptr i8, ptr %1767, i64 4
  %wide.load7047 = load <4 x i8>, ptr %1767, align 1, !tbaa !41
  %wide.load7048 = load <4 x i8>, ptr %1768, align 1, !tbaa !41
  %1769 = sext <4 x i8> %wide.load7047 to <4 x i32>
  %1770 = sext <4 x i8> %wide.load7048 to <4 x i32>
  %1771 = mul nsw <4 x i32> %1769, %1765
  %1772 = mul nsw <4 x i32> %1770, %1766
  %1773 = add <4 x i32> %1771, %vec.phi7043
  %1774 = add <4 x i32> %1772, %vec.phi7044
  %index.next7049 = add nuw i64 %index7042, 8
  %1775 = icmp eq i64 %index.next7049, %n.vec7039
  br i1 %1775, label %middle.block7034, label %vector.body7041, !llvm.loop !173

middle.block7034:                                 ; preds = %vector.body7041
  %bin.rdx7050 = add <4 x i32> %1774, %1773
  %1776 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx7050)
  br i1 %cmp.n7051, label %._crit_edge3220.us.us, label %scalar.ph7035.preheader

scalar.ph7035.preheader:                          ; preds = %middle.block7034, %.preheader2956.us.us
  %indvars.iv5374.ph = phi i64 [ 0, %.preheader2956.us.us ], [ %n.vec7039, %middle.block7034 ]
  %.226753217.us.us.ph = phi i32 [ %.126743223.us.us, %.preheader2956.us.us ], [ %1776, %middle.block7034 ]
  br label %scalar.ph7035

scalar.ph7035:                                    ; preds = %scalar.ph7035.preheader, %scalar.ph7035
  %indvars.iv5374 = phi i64 [ %indvars.iv.next5375, %scalar.ph7035 ], [ %indvars.iv5374.ph, %scalar.ph7035.preheader ]
  %.226753217.us.us = phi i32 [ %1784, %scalar.ph7035 ], [ %.226753217.us.us.ph, %scalar.ph7035.preheader ]
  %1777 = getelementptr i8, ptr %gep.us.us3235, i64 %indvars.iv5374
  %1778 = load i8, ptr %1777, align 1, !tbaa !41
  %1779 = sext i8 %1778 to i32
  %1780 = getelementptr i8, ptr %1761, i64 %indvars.iv5374
  %1781 = load i8, ptr %1780, align 1, !tbaa !41
  %1782 = sext i8 %1781 to i32
  %1783 = mul nsw i32 %1782, %1779
  %1784 = add nsw i32 %1783, %.226753217.us.us
  %indvars.iv.next5375 = add nuw nsw i64 %indvars.iv5374, 1
  %exitcond5378.not = icmp eq i64 %indvars.iv.next5375, %wide.trip.count5377
  br i1 %exitcond5378.not, label %._crit_edge3220.us.us, label %scalar.ph7035, !llvm.loop !174

._crit_edge3220.us.us:                            ; preds = %scalar.ph7035, %middle.block7034
  %.lcssa6894 = phi i32 [ %1776, %middle.block7034 ], [ %1784, %scalar.ph7035 ]
  %indvars.iv.next5380 = add nuw nsw i64 %indvars.iv5379, 1
  %exitcond5383.not = icmp eq i64 %indvars.iv.next5380, %wide.trip.count5382
  br i1 %exitcond5383.not, label %._crit_edge3225.split.us.us, label %.preheader2956.us.us, !llvm.loop !175

.lr.ph3229.split:                                 ; preds = %.lr.ph3229, %.lr.ph3229.split
  %indvars.iv5371 = phi i64 [ %indvars.iv.next5372, %.lr.ph3229.split ], [ 0, %.lr.ph3229 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5371, ptr noundef nonnull %0)
  %indvars.iv.next5372 = add nuw nsw i64 %indvars.iv5371, 1
  %1785 = load i32, ptr %1680, align 8, !tbaa !52
  %1786 = sext i32 %1785 to i64
  %1787 = icmp slt i64 %indvars.iv.next5372, %1786
  br i1 %1787, label %.lr.ph3229.split, label %._crit_edge3230, !llvm.loop !172

._crit_edge3230:                                  ; preds = %.lr.ph3229.split, %._crit_edge3225.split.us.us, %.preheader2957
  %1788 = phi i32 [ %1743, %.preheader2957 ], [ %1748, %._crit_edge3225.split.us.us ], [ %1785, %.lr.ph3229.split ]
  %.02673.lcssa = phi i32 [ 0, %.preheader2957 ], [ %.12674.lcssa.us, %._crit_edge3225.split.us.us ], [ 0, %.lr.ph3229.split ]
  %1789 = sitofp i32 %.02673.lcssa to float
  %1790 = load float, ptr %1682, align 4, !tbaa !134
  %1791 = fmul float %1790, %1789
  %1792 = load double, ptr %1683, align 8, !tbaa !25
  %1793 = fcmp oeq double %1792, 1.000000e+00
  %1794 = add nsw i64 %indvars.iv5387, %1699
  br i1 %1793, label %1795, label %._crit_edge3230._crit_edge

1795:                                             ; preds = %._crit_edge3230
  %1796 = getelementptr inbounds float, ptr %3, i64 %1794
  %1797 = load float, ptr %1796, align 4, !tbaa !27
  %1798 = fadd float %1791, %1797
  br label %._crit_edge3230._crit_edge

._crit_edge3230._crit_edge:                       ; preds = %._crit_edge3230, %1795
  %.02676 = phi float [ %1798, %1795 ], [ %1791, %._crit_edge3230 ]
  %1799 = getelementptr inbounds float, ptr %3, i64 %1794
  store float %.02676, ptr %1799, align 4, !tbaa !27
  %indvars.iv.next5388 = add nuw nsw i64 %indvars.iv5387, 1
  %exitcond5391.not = icmp eq i64 %indvars.iv.next5388, %wide.trip.count5390
  br i1 %exitcond5391.not, label %._crit_edge3239, label %.preheader2957, !llvm.loop !176

._crit_edge3239:                                  ; preds = %.preheader2957.us.prol.loopexit, %.preheader2957.us, %.preheader2957.us.us.prol.loopexit, %.preheader2957.us.us, %._crit_edge3230._crit_edge, %middle.block7082, %middle.block7060, %.preheader2958
  %indvars.iv.next5393 = add nuw nsw i64 %indvars.iv5392, 1
  %exitcond5396.not = icmp eq i64 %indvars.iv.next5393, %wide.trip.count5395
  br i1 %exitcond5396.not, label %._crit_edge3241, label %.preheader2958, !llvm.loop !177

._crit_edge3241:                                  ; preds = %._crit_edge3239, %1676
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  br label %.loopexit

1800:                                             ; preds = %1672, %1668, %1664, %1660
  %1801 = getelementptr inbounds i8, ptr %0, i64 8
  %1802 = load i32, ptr %1801, align 8, !tbaa !26
  %1803 = icmp eq i32 %1802, 1
  br i1 %1803, label %1804, label %1940

1804:                                             ; preds = %1800
  %1805 = getelementptr inbounds i8, ptr %0, i64 12
  %1806 = load i32, ptr %1805, align 4, !tbaa !70
  %1807 = icmp eq i32 %1806, 8
  br i1 %1807, label %1808, label %1940

1808:                                             ; preds = %1804
  %1809 = getelementptr inbounds i8, ptr %0, i64 84
  %1810 = load i32, ptr %1809, align 4, !tbaa !88
  %1811 = icmp eq i32 %1810, 1
  br i1 %1811, label %1812, label %1940

1812:                                             ; preds = %1808
  %1813 = getelementptr inbounds i8, ptr %0, i64 88
  %1814 = load i32, ptr %1813, align 8, !tbaa !89
  %1815 = icmp eq i32 %1814, 0
  br i1 %1815, label %1816, label %1940

1816:                                             ; preds = %1812
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  store ptr %1, ptr %32, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  store ptr %2, ptr %33, align 8, !tbaa !50
  %1817 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4930 = freeze i32 %1817
  %1818 = icmp sgt i32 %79, 0
  br i1 %1818, label %.preheader2961.lr.ph, label %._crit_edge3216

.preheader2961.lr.ph:                             ; preds = %1816
  %1819 = icmp sgt i32 %77, 0
  %1820 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3197 = mul i32 %.fr4930, %71
  %1821 = icmp sgt i32 %.fr4930, 0
  %1822 = getelementptr i8, ptr %0, i64 124
  %1823 = getelementptr inbounds i8, ptr %0, i64 56
  %1824 = sext i32 %.fr4930 to i64
  %1825 = sext i32 %73 to i64
  %1826 = sext i32 %75 to i64
  %wide.trip.count5359 = zext nneg i32 %79 to i64
  %wide.trip.count5328 = zext i32 %77 to i64
  %wide.trip.count5333 = zext nneg i32 %77 to i64
  %wide.trip.count5354 = zext nneg i32 %77 to i64
  %wide.trip.count5341 = zext i32 %.fr4930 to i64
  %1827 = add nuw nsw i64 %wide.trip.count5359, 4611686018427387903
  %1828 = mul i64 %1827, %1826
  %1829 = add i64 %1828, %wide.trip.count5328
  %1830 = shl i64 %1829, 2
  %scevgep6993 = getelementptr i8, ptr %3, i64 %1830
  %scevgep6994 = getelementptr i8, ptr %0, i64 128
  %1831 = add nuw nsw i64 %wide.trip.count5359, 4611686018427387903
  %1832 = mul i64 %1831, %1826
  %1833 = add i64 %1832, %wide.trip.count5328
  %1834 = shl i64 %1833, 2
  %scevgep7015 = getelementptr i8, ptr %3, i64 %1834
  %scevgep7016 = getelementptr i8, ptr %0, i64 128
  %min.iters.check7001 = icmp ult i32 %77, 8
  %bound07017 = icmp ugt ptr %scevgep7016, %3
  %bound17018 = icmp ult ptr %1822, %scevgep7015
  %found.conflict7019 = and i1 %bound07017, %bound17018
  %stride.check7020 = icmp slt i32 %75, 0
  %1835 = or i1 %found.conflict7019, %stride.check7020
  %n.vec7026 = and i64 %wide.trip.count5328, 2147483640
  %cmp.n7033 = icmp eq i64 %n.vec7026, %wide.trip.count5328
  %xtraiter7512 = and i64 %wide.trip.count5328, 3
  %lcmp.mod7513.not = icmp eq i64 %xtraiter7512, 0
  %bound06995 = icmp ugt ptr %scevgep6994, %3
  %bound16996 = icmp ult ptr %1822, %scevgep6993
  %found.conflict6997 = and i1 %bound06995, %bound16996
  %stride.check6998 = icmp slt i32 %75, 0
  %1836 = or i1 %found.conflict6997, %stride.check6998
  %n.vec7004 = and i64 %wide.trip.count5328, 2147483640
  %cmp.n7013 = icmp eq i64 %n.vec7004, %wide.trip.count5328
  %xtraiter7515 = and i64 %wide.trip.count5328, 1
  %lcmp.mod7516.not = icmp eq i64 %xtraiter7515, 0
  %1837 = add nsw i64 %wide.trip.count5328, -1
  %min.iters.check6975 = icmp ult i32 %.fr4930, 8
  %n.vec6978 = and i64 %wide.trip.count5341, 2147483640
  %cmp.n6990 = icmp eq i64 %n.vec6978, %wide.trip.count5341
  br label %.preheader2961

.preheader2961:                                   ; preds = %.preheader2961.lr.ph, %._crit_edge3214
  %indvars.iv5356 = phi i64 [ 0, %.preheader2961.lr.ph ], [ %indvars.iv.next5357, %._crit_edge3214 ]
  br i1 %1819, label %.preheader2960.lr.ph, label %._crit_edge3214

.preheader2960.lr.ph:                             ; preds = %.preheader2961
  %1838 = mul nsw i64 %indvars.iv5356, %1825
  %1839 = mul nsw i64 %indvars.iv5356, %1826
  %1840 = load i32, ptr %1820, align 8, !tbaa !52
  %1841 = icmp sgt i32 %1840, 0
  br i1 %1841, label %.preheader2960, label %.preheader2960.lr.ph.split.us

.preheader2960.lr.ph.split.us:                    ; preds = %.preheader2960.lr.ph
  %1842 = load double, ptr %1823, align 8, !tbaa !25
  %1843 = fcmp oeq double %1842, 1.000000e+00
  %invariant.gep6626 = getelementptr float, ptr %3, i64 %1839
  br i1 %1843, label %.preheader2960.us.us.preheader, label %.preheader2960.us.preheader

.preheader2960.us.preheader:                      ; preds = %.preheader2960.lr.ph.split.us
  %brmerge7926 = select i1 %min.iters.check7001, i1 true, i1 %1835
  br i1 %brmerge7926, label %.preheader2960.us.preheader7470, label %vector.ph7024

.preheader2960.us.preheader7470:                  ; preds = %.preheader2960.us.preheader, %middle.block7021
  %indvars.iv5325.ph = phi i64 [ 0, %.preheader2960.us.preheader ], [ %n.vec7026, %middle.block7021 ]
  br i1 %lcmp.mod7513.not, label %.preheader2960.us.prol.loopexit, label %.preheader2960.us.prol

.preheader2960.us.prol:                           ; preds = %.preheader2960.us.preheader7470, %.preheader2960.us.prol
  %indvars.iv5325.prol = phi i64 [ %indvars.iv.next5326.prol, %.preheader2960.us.prol ], [ %indvars.iv5325.ph, %.preheader2960.us.preheader7470 ]
  %prol.iter7514 = phi i64 [ %prol.iter7514.next, %.preheader2960.us.prol ], [ 0, %.preheader2960.us.preheader7470 ]
  %1844 = load float, ptr %1822, align 4, !tbaa !134
  %1845 = fmul float %1844, 0.000000e+00
  %gep6625.prol = getelementptr float, ptr %invariant.gep6626, i64 %indvars.iv5325.prol
  store float %1845, ptr %gep6625.prol, align 4, !tbaa !27
  %indvars.iv.next5326.prol = add nuw nsw i64 %indvars.iv5325.prol, 1
  %prol.iter7514.next = add i64 %prol.iter7514, 1
  %prol.iter7514.cmp.not = icmp eq i64 %prol.iter7514.next, %xtraiter7512
  br i1 %prol.iter7514.cmp.not, label %.preheader2960.us.prol.loopexit, label %.preheader2960.us.prol, !llvm.loop !178

.preheader2960.us.prol.loopexit:                  ; preds = %.preheader2960.us.prol, %.preheader2960.us.preheader7470
  %indvars.iv5325.unr = phi i64 [ %indvars.iv5325.ph, %.preheader2960.us.preheader7470 ], [ %indvars.iv.next5326.prol, %.preheader2960.us.prol ]
  %1846 = sub nsw i64 %indvars.iv5325.ph, %wide.trip.count5328
  %1847 = icmp ugt i64 %1846, -4
  br i1 %1847, label %._crit_edge3214, label %.preheader2960.us.preheader7470.new

.preheader2960.us.preheader7470.new:              ; preds = %.preheader2960.us.prol.loopexit
  %invariant.gep7819 = getelementptr i8, ptr %invariant.gep6626, i64 4
  %invariant.gep7821 = getelementptr i8, ptr %invariant.gep6626, i64 8
  %invariant.gep7823 = getelementptr i8, ptr %invariant.gep6626, i64 12
  br label %.preheader2960.us

vector.ph7024:                                    ; preds = %.preheader2960.us.preheader
  %1848 = load float, ptr %1822, align 4, !tbaa !134, !alias.scope !179
  %broadcast.splatinsert7030 = insertelement <4 x float> poison, float %1848, i64 0
  %broadcast.splat7031 = shufflevector <4 x float> %broadcast.splatinsert7030, <4 x float> poison, <4 x i32> zeroinitializer
  %1849 = fmul <4 x float> %broadcast.splat7031, zeroinitializer
  %1850 = fmul <4 x float> %broadcast.splat7031, zeroinitializer
  br label %vector.body7028

vector.body7028:                                  ; preds = %vector.body7028, %vector.ph7024
  %index7029 = phi i64 [ 0, %vector.ph7024 ], [ %index.next7032, %vector.body7028 ]
  %1851 = getelementptr float, ptr %invariant.gep6626, i64 %index7029
  %1852 = getelementptr i8, ptr %1851, i64 16
  store <4 x float> %1849, ptr %1851, align 4, !tbaa !27, !alias.scope !182, !noalias !179
  store <4 x float> %1850, ptr %1852, align 4, !tbaa !27, !alias.scope !182, !noalias !179
  %index.next7032 = add nuw i64 %index7029, 8
  %1853 = icmp eq i64 %index.next7032, %n.vec7026
  br i1 %1853, label %middle.block7021, label %vector.body7028, !llvm.loop !184

middle.block7021:                                 ; preds = %vector.body7028
  br i1 %cmp.n7033, label %._crit_edge3214, label %.preheader2960.us.preheader7470

.preheader2960.us.us.preheader:                   ; preds = %.preheader2960.lr.ph.split.us
  %brmerge7927 = select i1 %min.iters.check7001, i1 true, i1 %1836
  br i1 %brmerge7927, label %.preheader2960.us.us.preheader7468, label %vector.ph7002

vector.ph7002:                                    ; preds = %.preheader2960.us.us.preheader
  %1854 = load float, ptr %1822, align 4, !tbaa !134, !alias.scope !185
  %broadcast.splatinsert7008 = insertelement <4 x float> poison, float %1854, i64 0
  %broadcast.splat7009 = shufflevector <4 x float> %broadcast.splatinsert7008, <4 x float> poison, <4 x i32> zeroinitializer
  %1855 = fmul <4 x float> %broadcast.splat7009, zeroinitializer
  %1856 = fmul <4 x float> %broadcast.splat7009, zeroinitializer
  br label %vector.body7006

vector.body7006:                                  ; preds = %vector.body7006, %vector.ph7002
  %index7007 = phi i64 [ 0, %vector.ph7002 ], [ %index.next7012, %vector.body7006 ]
  %1857 = getelementptr float, ptr %invariant.gep6626, i64 %index7007
  %1858 = getelementptr i8, ptr %1857, i64 16
  %wide.load7010 = load <4 x float>, ptr %1857, align 4, !tbaa !27, !alias.scope !188, !noalias !185
  %wide.load7011 = load <4 x float>, ptr %1858, align 4, !tbaa !27, !alias.scope !188, !noalias !185
  %1859 = fadd <4 x float> %1855, %wide.load7010
  %1860 = fadd <4 x float> %1856, %wide.load7011
  store <4 x float> %1859, ptr %1857, align 4, !tbaa !27, !alias.scope !188, !noalias !185
  store <4 x float> %1860, ptr %1858, align 4, !tbaa !27, !alias.scope !188, !noalias !185
  %index.next7012 = add nuw i64 %index7007, 8
  %1861 = icmp eq i64 %index.next7012, %n.vec7004
  br i1 %1861, label %middle.block6999, label %vector.body7006, !llvm.loop !190

middle.block6999:                                 ; preds = %vector.body7006
  br i1 %cmp.n7013, label %._crit_edge3214, label %.preheader2960.us.us.preheader7468

.preheader2960.us.us.preheader7468:               ; preds = %.preheader2960.us.us.preheader, %middle.block6999
  %indvars.iv5330.ph = phi i64 [ 0, %.preheader2960.us.us.preheader ], [ %n.vec7004, %middle.block6999 ]
  br i1 %lcmp.mod7516.not, label %.preheader2960.us.us.prol.loopexit, label %.preheader2960.us.us.prol

.preheader2960.us.us.prol:                        ; preds = %.preheader2960.us.us.preheader7468
  %1862 = load float, ptr %1822, align 4, !tbaa !134
  %1863 = fmul float %1862, 0.000000e+00
  %gep6627.prol = getelementptr float, ptr %invariant.gep6626, i64 %indvars.iv5330.ph
  %1864 = load float, ptr %gep6627.prol, align 4, !tbaa !27
  %1865 = fadd float %1863, %1864
  store float %1865, ptr %gep6627.prol, align 4, !tbaa !27
  %indvars.iv.next5331.prol = or disjoint i64 %indvars.iv5330.ph, 1
  br label %.preheader2960.us.us.prol.loopexit

.preheader2960.us.us.prol.loopexit:               ; preds = %.preheader2960.us.us.prol, %.preheader2960.us.us.preheader7468
  %indvars.iv5330.unr = phi i64 [ %indvars.iv5330.ph, %.preheader2960.us.us.preheader7468 ], [ %indvars.iv.next5331.prol, %.preheader2960.us.us.prol ]
  %1866 = icmp eq i64 %indvars.iv5330.ph, %1837
  br i1 %1866, label %._crit_edge3214, label %.preheader2960.us.us.preheader7468.new

.preheader2960.us.us.preheader7468.new:           ; preds = %.preheader2960.us.us.prol.loopexit
  %invariant.gep7825 = getelementptr i8, ptr %invariant.gep6626, i64 4
  br label %.preheader2960.us.us

.preheader2960.us.us:                             ; preds = %.preheader2960.us.us, %.preheader2960.us.us.preheader7468.new
  %indvars.iv5330 = phi i64 [ %indvars.iv5330.unr, %.preheader2960.us.us.preheader7468.new ], [ %indvars.iv.next5331.1, %.preheader2960.us.us ]
  %1867 = load float, ptr %1822, align 4, !tbaa !134
  %1868 = fmul float %1867, 0.000000e+00
  %gep6627 = getelementptr float, ptr %invariant.gep6626, i64 %indvars.iv5330
  %1869 = load float, ptr %gep6627, align 4, !tbaa !27
  %1870 = fadd float %1868, %1869
  store float %1870, ptr %gep6627, align 4, !tbaa !27
  %1871 = load float, ptr %1822, align 4, !tbaa !134
  %1872 = fmul float %1871, 0.000000e+00
  %gep7826 = getelementptr float, ptr %invariant.gep7825, i64 %indvars.iv5330
  %1873 = load float, ptr %gep7826, align 4, !tbaa !27
  %1874 = fadd float %1872, %1873
  store float %1874, ptr %gep7826, align 4, !tbaa !27
  %indvars.iv.next5331.1 = add nuw nsw i64 %indvars.iv5330, 2
  %exitcond5334.not.1 = icmp eq i64 %indvars.iv.next5331.1, %wide.trip.count5333
  br i1 %exitcond5334.not.1, label %._crit_edge3214, label %.preheader2960.us.us, !llvm.loop !191

.preheader2960.us:                                ; preds = %.preheader2960.us, %.preheader2960.us.preheader7470.new
  %indvars.iv5325 = phi i64 [ %indvars.iv5325.unr, %.preheader2960.us.preheader7470.new ], [ %indvars.iv.next5326.3, %.preheader2960.us ]
  %1875 = load float, ptr %1822, align 4, !tbaa !134
  %1876 = fmul float %1875, 0.000000e+00
  %gep6625 = getelementptr float, ptr %invariant.gep6626, i64 %indvars.iv5325
  store float %1876, ptr %gep6625, align 4, !tbaa !27
  %1877 = load float, ptr %1822, align 4, !tbaa !134
  %1878 = fmul float %1877, 0.000000e+00
  %gep7820 = getelementptr float, ptr %invariant.gep7819, i64 %indvars.iv5325
  store float %1878, ptr %gep7820, align 4, !tbaa !27
  %1879 = load float, ptr %1822, align 4, !tbaa !134
  %1880 = fmul float %1879, 0.000000e+00
  %gep7822 = getelementptr float, ptr %invariant.gep7821, i64 %indvars.iv5325
  store float %1880, ptr %gep7822, align 4, !tbaa !27
  %1881 = load float, ptr %1822, align 4, !tbaa !134
  %1882 = fmul float %1881, 0.000000e+00
  %gep7824 = getelementptr float, ptr %invariant.gep7823, i64 %indvars.iv5325
  store float %1882, ptr %gep7824, align 4, !tbaa !27
  %indvars.iv.next5326.3 = add nuw nsw i64 %indvars.iv5325, 4
  %exitcond5329.not.3 = icmp eq i64 %indvars.iv.next5326.3, %wide.trip.count5328
  br i1 %exitcond5329.not.3, label %._crit_edge3214, label %.preheader2960.us, !llvm.loop !192

.preheader2960:                                   ; preds = %.preheader2960.lr.ph, %._crit_edge3205._crit_edge
  %1883 = phi i32 [ %1928, %._crit_edge3205._crit_edge ], [ %1840, %.preheader2960.lr.ph ]
  %indvars.iv5351 = phi i64 [ %indvars.iv.next5352, %._crit_edge3205._crit_edge ], [ 0, %.preheader2960.lr.ph ]
  %1884 = icmp sgt i32 %1883, 0
  br i1 %1884, label %.lr.ph3204, label %._crit_edge3205

.lr.ph3204:                                       ; preds = %.preheader2960
  %1885 = mul nsw i64 %indvars.iv5351, %1824
  br i1 %1821, label %.lr.ph3204.split.us, label %.lr.ph3204.split

.lr.ph3204.split.us:                              ; preds = %.lr.ph3204, %._crit_edge3200.split.us.us
  %indvars.iv5348 = phi i64 [ %indvars.iv.next5349, %._crit_edge3200.split.us.us ], [ 0, %.lr.ph3204 ]
  %.026773202.us = phi i32 [ %.12678.lcssa.us, %._crit_edge3200.split.us.us ], [ 0, %.lr.ph3204 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5348, ptr noundef nonnull %0)
  %1886 = sdiv i32 %.fr4927, %.fr4930
  %1887 = icmp sgt i32 %1886, 0
  br i1 %1887, label %.preheader2959.lr.ph.us, label %._crit_edge3200.split.us.us

._crit_edge3200.split.us.us:                      ; preds = %._crit_edge3195.us.us, %.lr.ph3204.split.us
  %.12678.lcssa.us = phi i32 [ %.026773202.us, %.lr.ph3204.split.us ], [ %.lcssa6897, %._crit_edge3195.us.us ]
  %indvars.iv.next5349 = add nuw nsw i64 %indvars.iv5348, 1
  %1888 = load i32, ptr %1820, align 8, !tbaa !52
  %1889 = sext i32 %1888 to i64
  %1890 = icmp slt i64 %indvars.iv.next5349, %1889
  br i1 %1890, label %.lr.ph3204.split.us, label %._crit_edge3205, !llvm.loop !193

.preheader2959.lr.ph.us:                          ; preds = %.lr.ph3204.split.us
  %1891 = load ptr, ptr %32, align 8
  %1892 = load i64, ptr %5, align 8
  %1893 = getelementptr i8, ptr %1891, i64 %1892
  %invariant.gep.us3207 = getelementptr i8, ptr %1893, i64 %1885
  %1894 = load ptr, ptr %33, align 8
  %1895 = load i64, ptr %6, align 8
  %1896 = getelementptr i8, ptr %1894, i64 %1895
  %1897 = getelementptr i8, ptr %1896, i64 %1838
  %wide.trip.count5346 = zext nneg i32 %1886 to i64
  br label %.preheader2959.us.us

.preheader2959.us.us:                             ; preds = %._crit_edge3195.us.us, %.preheader2959.lr.ph.us
  %indvars.iv5343 = phi i64 [ %indvars.iv.next5344, %._crit_edge3195.us.us ], [ 0, %.preheader2959.lr.ph.us ]
  %.126783198.us.us = phi i32 [ %.lcssa6897, %._crit_edge3195.us.us ], [ %.026773202.us, %.preheader2959.lr.ph.us ]
  %1898 = trunc nuw nsw i64 %indvars.iv5343 to i32
  %factor.op.mul.reass.us.us3209 = mul i32 %factor.op.mul3197, %1898
  %1899 = sext i32 %factor.op.mul.reass.us.us3209 to i64
  %gep.us.us3210 = getelementptr i8, ptr %invariant.gep.us3207, i64 %1899
  %1900 = mul nuw nsw i64 %indvars.iv5343, %1824
  %1901 = getelementptr i8, ptr %1897, i64 %1900
  br i1 %min.iters.check6975, label %scalar.ph6974.preheader, label %vector.ph6976

vector.ph6976:                                    ; preds = %.preheader2959.us.us
  %1902 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.126783198.us.us, i64 0
  br label %vector.body6980

vector.body6980:                                  ; preds = %vector.body6980, %vector.ph6976
  %index6981 = phi i64 [ 0, %vector.ph6976 ], [ %index.next6988, %vector.body6980 ]
  %vec.phi6982 = phi <4 x i32> [ %1902, %vector.ph6976 ], [ %1913, %vector.body6980 ]
  %vec.phi6983 = phi <4 x i32> [ zeroinitializer, %vector.ph6976 ], [ %1914, %vector.body6980 ]
  %1903 = getelementptr i8, ptr %gep.us.us3210, i64 %index6981
  %1904 = getelementptr i8, ptr %1903, i64 4
  %wide.load6984 = load <4 x i8>, ptr %1903, align 1, !tbaa !41
  %wide.load6985 = load <4 x i8>, ptr %1904, align 1, !tbaa !41
  %1905 = zext <4 x i8> %wide.load6984 to <4 x i32>
  %1906 = zext <4 x i8> %wide.load6985 to <4 x i32>
  %1907 = getelementptr i8, ptr %1901, i64 %index6981
  %1908 = getelementptr i8, ptr %1907, i64 4
  %wide.load6986 = load <4 x i8>, ptr %1907, align 1, !tbaa !41
  %wide.load6987 = load <4 x i8>, ptr %1908, align 1, !tbaa !41
  %1909 = sext <4 x i8> %wide.load6986 to <4 x i32>
  %1910 = sext <4 x i8> %wide.load6987 to <4 x i32>
  %1911 = mul nsw <4 x i32> %1909, %1905
  %1912 = mul nsw <4 x i32> %1910, %1906
  %1913 = add <4 x i32> %1911, %vec.phi6982
  %1914 = add <4 x i32> %1912, %vec.phi6983
  %index.next6988 = add nuw i64 %index6981, 8
  %1915 = icmp eq i64 %index.next6988, %n.vec6978
  br i1 %1915, label %middle.block6973, label %vector.body6980, !llvm.loop !194

middle.block6973:                                 ; preds = %vector.body6980
  %bin.rdx6989 = add <4 x i32> %1914, %1913
  %1916 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx6989)
  br i1 %cmp.n6990, label %._crit_edge3195.us.us, label %scalar.ph6974.preheader

scalar.ph6974.preheader:                          ; preds = %middle.block6973, %.preheader2959.us.us
  %indvars.iv5338.ph = phi i64 [ 0, %.preheader2959.us.us ], [ %n.vec6978, %middle.block6973 ]
  %.226793192.us.us.ph = phi i32 [ %.126783198.us.us, %.preheader2959.us.us ], [ %1916, %middle.block6973 ]
  br label %scalar.ph6974

scalar.ph6974:                                    ; preds = %scalar.ph6974.preheader, %scalar.ph6974
  %indvars.iv5338 = phi i64 [ %indvars.iv.next5339, %scalar.ph6974 ], [ %indvars.iv5338.ph, %scalar.ph6974.preheader ]
  %.226793192.us.us = phi i32 [ %1924, %scalar.ph6974 ], [ %.226793192.us.us.ph, %scalar.ph6974.preheader ]
  %1917 = getelementptr i8, ptr %gep.us.us3210, i64 %indvars.iv5338
  %1918 = load i8, ptr %1917, align 1, !tbaa !41
  %1919 = zext i8 %1918 to i32
  %1920 = getelementptr i8, ptr %1901, i64 %indvars.iv5338
  %1921 = load i8, ptr %1920, align 1, !tbaa !41
  %1922 = sext i8 %1921 to i32
  %1923 = mul nsw i32 %1922, %1919
  %1924 = add nsw i32 %1923, %.226793192.us.us
  %indvars.iv.next5339 = add nuw nsw i64 %indvars.iv5338, 1
  %exitcond5342.not = icmp eq i64 %indvars.iv.next5339, %wide.trip.count5341
  br i1 %exitcond5342.not, label %._crit_edge3195.us.us, label %scalar.ph6974, !llvm.loop !195

._crit_edge3195.us.us:                            ; preds = %scalar.ph6974, %middle.block6973
  %.lcssa6897 = phi i32 [ %1916, %middle.block6973 ], [ %1924, %scalar.ph6974 ]
  %indvars.iv.next5344 = add nuw nsw i64 %indvars.iv5343, 1
  %exitcond5347.not = icmp eq i64 %indvars.iv.next5344, %wide.trip.count5346
  br i1 %exitcond5347.not, label %._crit_edge3200.split.us.us, label %.preheader2959.us.us, !llvm.loop !196

.lr.ph3204.split:                                 ; preds = %.lr.ph3204, %.lr.ph3204.split
  %indvars.iv5335 = phi i64 [ %indvars.iv.next5336, %.lr.ph3204.split ], [ 0, %.lr.ph3204 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5335, ptr noundef nonnull %0)
  %indvars.iv.next5336 = add nuw nsw i64 %indvars.iv5335, 1
  %1925 = load i32, ptr %1820, align 8, !tbaa !52
  %1926 = sext i32 %1925 to i64
  %1927 = icmp slt i64 %indvars.iv.next5336, %1926
  br i1 %1927, label %.lr.ph3204.split, label %._crit_edge3205, !llvm.loop !193

._crit_edge3205:                                  ; preds = %.lr.ph3204.split, %._crit_edge3200.split.us.us, %.preheader2960
  %1928 = phi i32 [ %1883, %.preheader2960 ], [ %1888, %._crit_edge3200.split.us.us ], [ %1925, %.lr.ph3204.split ]
  %.02677.lcssa = phi i32 [ 0, %.preheader2960 ], [ %.12678.lcssa.us, %._crit_edge3200.split.us.us ], [ 0, %.lr.ph3204.split ]
  %1929 = sitofp i32 %.02677.lcssa to float
  %1930 = load float, ptr %1822, align 4, !tbaa !134
  %1931 = fmul float %1930, %1929
  %1932 = load double, ptr %1823, align 8, !tbaa !25
  %1933 = fcmp oeq double %1932, 1.000000e+00
  %1934 = add nsw i64 %indvars.iv5351, %1839
  br i1 %1933, label %1935, label %._crit_edge3205._crit_edge

1935:                                             ; preds = %._crit_edge3205
  %1936 = getelementptr inbounds float, ptr %3, i64 %1934
  %1937 = load float, ptr %1936, align 4, !tbaa !27
  %1938 = fadd float %1931, %1937
  br label %._crit_edge3205._crit_edge

._crit_edge3205._crit_edge:                       ; preds = %._crit_edge3205, %1935
  %.02680 = phi float [ %1938, %1935 ], [ %1931, %._crit_edge3205 ]
  %1939 = getelementptr inbounds float, ptr %3, i64 %1934
  store float %.02680, ptr %1939, align 4, !tbaa !27
  %indvars.iv.next5352 = add nuw nsw i64 %indvars.iv5351, 1
  %exitcond5355.not = icmp eq i64 %indvars.iv.next5352, %wide.trip.count5354
  br i1 %exitcond5355.not, label %._crit_edge3214, label %.preheader2960, !llvm.loop !197

._crit_edge3214:                                  ; preds = %.preheader2960.us.prol.loopexit, %.preheader2960.us, %.preheader2960.us.us.prol.loopexit, %.preheader2960.us.us, %._crit_edge3205._crit_edge, %middle.block7021, %middle.block6999, %.preheader2961
  %indvars.iv.next5357 = add nuw nsw i64 %indvars.iv5356, 1
  %exitcond5360.not = icmp eq i64 %indvars.iv.next5357, %wide.trip.count5359
  br i1 %exitcond5360.not, label %._crit_edge3216, label %.preheader2961, !llvm.loop !198

._crit_edge3216:                                  ; preds = %._crit_edge3214, %1816
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br label %.loopexit

1940:                                             ; preds = %1812, %1808, %1804, %1800
  %1941 = getelementptr inbounds i8, ptr %0, i64 8
  %1942 = load i32, ptr %1941, align 8, !tbaa !26
  %1943 = icmp eq i32 %1942, 1
  br i1 %1943, label %1944, label %.thread2862

1944:                                             ; preds = %1940
  %1945 = getelementptr inbounds i8, ptr %0, i64 12
  %1946 = load i32, ptr %1945, align 4, !tbaa !70
  %1947 = icmp eq i32 %1946, 8
  br i1 %1947, label %1948, label %.thread2862

1948:                                             ; preds = %1944
  %1949 = getelementptr inbounds i8, ptr %0, i64 84
  %1950 = load i32, ptr %1949, align 4, !tbaa !88
  %1951 = icmp eq i32 %1950, 0
  br i1 %1951, label %1952, label %.thread2862

1952:                                             ; preds = %1948
  %1953 = getelementptr inbounds i8, ptr %0, i64 88
  %1954 = load i32, ptr %1953, align 8, !tbaa !89
  %1955 = icmp eq i32 %1954, 1
  br i1 %1955, label %1956, label %.thread2862

1956:                                             ; preds = %1952
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  store ptr %1, ptr %34, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #8
  store ptr %2, ptr %35, align 8, !tbaa !50
  %1957 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 12) #8
  %.fr4929 = freeze i32 %1957
  %1958 = icmp sgt i32 %79, 0
  br i1 %1958, label %.preheader2964.lr.ph, label %._crit_edge3191

.preheader2964.lr.ph:                             ; preds = %1956
  %1959 = icmp sgt i32 %77, 0
  %1960 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3174 = mul i32 %.fr4929, %71
  %1961 = icmp sgt i32 %.fr4929, 0
  %1962 = getelementptr i8, ptr %0, i64 124
  %1963 = getelementptr inbounds i8, ptr %0, i64 56
  %1964 = sext i32 %.fr4929 to i64
  %1965 = sext i32 %73 to i64
  %1966 = sext i32 %75 to i64
  %wide.trip.count5323 = zext nneg i32 %79 to i64
  %wide.trip.count5292 = zext i32 %77 to i64
  %wide.trip.count5297 = zext nneg i32 %77 to i64
  %wide.trip.count5318 = zext nneg i32 %77 to i64
  %wide.trip.count5305 = zext i32 %.fr4929 to i64
  %1967 = add nuw nsw i64 %wide.trip.count5323, 4611686018427387903
  %1968 = mul i64 %1967, %1966
  %1969 = add i64 %1968, %wide.trip.count5292
  %1970 = shl i64 %1969, 2
  %scevgep = getelementptr i8, ptr %3, i64 %1970
  %scevgep6937 = getelementptr i8, ptr %0, i64 128
  %1971 = add nuw nsw i64 %wide.trip.count5323, 4611686018427387903
  %1972 = mul i64 %1971, %1966
  %1973 = add i64 %1972, %wide.trip.count5292
  %1974 = shl i64 %1973, 2
  %scevgep6954 = getelementptr i8, ptr %3, i64 %1974
  %scevgep6955 = getelementptr i8, ptr %0, i64 128
  %min.iters.check6940 = icmp ult i32 %77, 8
  %bound06956 = icmp ugt ptr %scevgep6955, %3
  %bound16957 = icmp ult ptr %1962, %scevgep6954
  %found.conflict6958 = and i1 %bound06956, %bound16957
  %stride.check6959 = icmp slt i32 %75, 0
  %1975 = or i1 %found.conflict6958, %stride.check6959
  %n.vec6965 = and i64 %wide.trip.count5292, 2147483640
  %cmp.n6972 = icmp eq i64 %n.vec6965, %wide.trip.count5292
  %xtraiter7506 = and i64 %wide.trip.count5292, 3
  %lcmp.mod7507.not = icmp eq i64 %xtraiter7506, 0
  %bound0 = icmp ugt ptr %scevgep6937, %3
  %bound1 = icmp ult ptr %1962, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %75, 0
  %1976 = or i1 %found.conflict, %stride.check
  %n.vec6943 = and i64 %wide.trip.count5292, 2147483640
  %cmp.n6952 = icmp eq i64 %n.vec6943, %wide.trip.count5292
  %xtraiter7509 = and i64 %wide.trip.count5292, 1
  %lcmp.mod7510.not = icmp eq i64 %xtraiter7509, 0
  %1977 = add nsw i64 %wide.trip.count5292, -1
  %min.iters.check6924 = icmp ult i32 %.fr4929, 8
  %n.vec6927 = and i64 %wide.trip.count5305, 2147483640
  %cmp.n6936 = icmp eq i64 %n.vec6927, %wide.trip.count5305
  br label %.preheader2964

.preheader2964:                                   ; preds = %.preheader2964.lr.ph, %._crit_edge3189
  %indvars.iv5320 = phi i64 [ 0, %.preheader2964.lr.ph ], [ %indvars.iv.next5321, %._crit_edge3189 ]
  br i1 %1959, label %.preheader2963.lr.ph, label %._crit_edge3189

.preheader2963.lr.ph:                             ; preds = %.preheader2964
  %1978 = mul nsw i64 %indvars.iv5320, %1965
  %1979 = mul nsw i64 %indvars.iv5320, %1966
  %1980 = load i32, ptr %1960, align 8, !tbaa !52
  %1981 = icmp sgt i32 %1980, 0
  br i1 %1981, label %.preheader2963, label %.preheader2963.lr.ph.split.us

.preheader2963.lr.ph.split.us:                    ; preds = %.preheader2963.lr.ph
  %1982 = load double, ptr %1963, align 8, !tbaa !25
  %1983 = fcmp oeq double %1982, 1.000000e+00
  %invariant.gep6622 = getelementptr float, ptr %3, i64 %1979
  br i1 %1983, label %.preheader2963.us.us.preheader, label %.preheader2963.us.preheader

.preheader2963.us.preheader:                      ; preds = %.preheader2963.lr.ph.split.us
  %brmerge7928 = select i1 %min.iters.check6940, i1 true, i1 %1975
  br i1 %brmerge7928, label %.preheader2963.us.preheader7480, label %vector.ph6963

.preheader2963.us.preheader7480:                  ; preds = %.preheader2963.us.preheader, %middle.block6960
  %indvars.iv5289.ph = phi i64 [ 0, %.preheader2963.us.preheader ], [ %n.vec6965, %middle.block6960 ]
  br i1 %lcmp.mod7507.not, label %.preheader2963.us.prol.loopexit, label %.preheader2963.us.prol

.preheader2963.us.prol:                           ; preds = %.preheader2963.us.preheader7480, %.preheader2963.us.prol
  %indvars.iv5289.prol = phi i64 [ %indvars.iv.next5290.prol, %.preheader2963.us.prol ], [ %indvars.iv5289.ph, %.preheader2963.us.preheader7480 ]
  %prol.iter7508 = phi i64 [ %prol.iter7508.next, %.preheader2963.us.prol ], [ 0, %.preheader2963.us.preheader7480 ]
  %1984 = load float, ptr %1962, align 4, !tbaa !134
  %1985 = fmul float %1984, 0.000000e+00
  %gep6621.prol = getelementptr float, ptr %invariant.gep6622, i64 %indvars.iv5289.prol
  store float %1985, ptr %gep6621.prol, align 4, !tbaa !27
  %indvars.iv.next5290.prol = add nuw nsw i64 %indvars.iv5289.prol, 1
  %prol.iter7508.next = add i64 %prol.iter7508, 1
  %prol.iter7508.cmp.not = icmp eq i64 %prol.iter7508.next, %xtraiter7506
  br i1 %prol.iter7508.cmp.not, label %.preheader2963.us.prol.loopexit, label %.preheader2963.us.prol, !llvm.loop !199

.preheader2963.us.prol.loopexit:                  ; preds = %.preheader2963.us.prol, %.preheader2963.us.preheader7480
  %indvars.iv5289.unr = phi i64 [ %indvars.iv5289.ph, %.preheader2963.us.preheader7480 ], [ %indvars.iv.next5290.prol, %.preheader2963.us.prol ]
  %1986 = sub nsw i64 %indvars.iv5289.ph, %wide.trip.count5292
  %1987 = icmp ugt i64 %1986, -4
  br i1 %1987, label %._crit_edge3189, label %.preheader2963.us.preheader7480.new

.preheader2963.us.preheader7480.new:              ; preds = %.preheader2963.us.prol.loopexit
  %invariant.gep7811 = getelementptr i8, ptr %invariant.gep6622, i64 4
  %invariant.gep7813 = getelementptr i8, ptr %invariant.gep6622, i64 8
  %invariant.gep7815 = getelementptr i8, ptr %invariant.gep6622, i64 12
  br label %.preheader2963.us

vector.ph6963:                                    ; preds = %.preheader2963.us.preheader
  %1988 = load float, ptr %1962, align 4, !tbaa !134, !alias.scope !200
  %broadcast.splatinsert6969 = insertelement <4 x float> poison, float %1988, i64 0
  %broadcast.splat6970 = shufflevector <4 x float> %broadcast.splatinsert6969, <4 x float> poison, <4 x i32> zeroinitializer
  %1989 = fmul <4 x float> %broadcast.splat6970, zeroinitializer
  %1990 = fmul <4 x float> %broadcast.splat6970, zeroinitializer
  br label %vector.body6967

vector.body6967:                                  ; preds = %vector.body6967, %vector.ph6963
  %index6968 = phi i64 [ 0, %vector.ph6963 ], [ %index.next6971, %vector.body6967 ]
  %1991 = getelementptr float, ptr %invariant.gep6622, i64 %index6968
  %1992 = getelementptr i8, ptr %1991, i64 16
  store <4 x float> %1989, ptr %1991, align 4, !tbaa !27, !alias.scope !203, !noalias !200
  store <4 x float> %1990, ptr %1992, align 4, !tbaa !27, !alias.scope !203, !noalias !200
  %index.next6971 = add nuw i64 %index6968, 8
  %1993 = icmp eq i64 %index.next6971, %n.vec6965
  br i1 %1993, label %middle.block6960, label %vector.body6967, !llvm.loop !205

middle.block6960:                                 ; preds = %vector.body6967
  br i1 %cmp.n6972, label %._crit_edge3189, label %.preheader2963.us.preheader7480

.preheader2963.us.us.preheader:                   ; preds = %.preheader2963.lr.ph.split.us
  %brmerge7929 = select i1 %min.iters.check6940, i1 true, i1 %1976
  br i1 %brmerge7929, label %.preheader2963.us.us.preheader7478, label %vector.ph6941

vector.ph6941:                                    ; preds = %.preheader2963.us.us.preheader
  %1994 = load float, ptr %1962, align 4, !tbaa !134, !alias.scope !206
  %broadcast.splatinsert6947 = insertelement <4 x float> poison, float %1994, i64 0
  %broadcast.splat6948 = shufflevector <4 x float> %broadcast.splatinsert6947, <4 x float> poison, <4 x i32> zeroinitializer
  %1995 = fmul <4 x float> %broadcast.splat6948, zeroinitializer
  %1996 = fmul <4 x float> %broadcast.splat6948, zeroinitializer
  br label %vector.body6945

vector.body6945:                                  ; preds = %vector.body6945, %vector.ph6941
  %index6946 = phi i64 [ 0, %vector.ph6941 ], [ %index.next6951, %vector.body6945 ]
  %1997 = getelementptr float, ptr %invariant.gep6622, i64 %index6946
  %1998 = getelementptr i8, ptr %1997, i64 16
  %wide.load6949 = load <4 x float>, ptr %1997, align 4, !tbaa !27, !alias.scope !209, !noalias !206
  %wide.load6950 = load <4 x float>, ptr %1998, align 4, !tbaa !27, !alias.scope !209, !noalias !206
  %1999 = fadd <4 x float> %1995, %wide.load6949
  %2000 = fadd <4 x float> %1996, %wide.load6950
  store <4 x float> %1999, ptr %1997, align 4, !tbaa !27, !alias.scope !209, !noalias !206
  store <4 x float> %2000, ptr %1998, align 4, !tbaa !27, !alias.scope !209, !noalias !206
  %index.next6951 = add nuw i64 %index6946, 8
  %2001 = icmp eq i64 %index.next6951, %n.vec6943
  br i1 %2001, label %middle.block6938, label %vector.body6945, !llvm.loop !211

middle.block6938:                                 ; preds = %vector.body6945
  br i1 %cmp.n6952, label %._crit_edge3189, label %.preheader2963.us.us.preheader7478

.preheader2963.us.us.preheader7478:               ; preds = %.preheader2963.us.us.preheader, %middle.block6938
  %indvars.iv5294.ph = phi i64 [ 0, %.preheader2963.us.us.preheader ], [ %n.vec6943, %middle.block6938 ]
  br i1 %lcmp.mod7510.not, label %.preheader2963.us.us.prol.loopexit, label %.preheader2963.us.us.prol

.preheader2963.us.us.prol:                        ; preds = %.preheader2963.us.us.preheader7478
  %2002 = load float, ptr %1962, align 4, !tbaa !134
  %2003 = fmul float %2002, 0.000000e+00
  %gep6623.prol = getelementptr float, ptr %invariant.gep6622, i64 %indvars.iv5294.ph
  %2004 = load float, ptr %gep6623.prol, align 4, !tbaa !27
  %2005 = fadd float %2003, %2004
  store float %2005, ptr %gep6623.prol, align 4, !tbaa !27
  %indvars.iv.next5295.prol = or disjoint i64 %indvars.iv5294.ph, 1
  br label %.preheader2963.us.us.prol.loopexit

.preheader2963.us.us.prol.loopexit:               ; preds = %.preheader2963.us.us.prol, %.preheader2963.us.us.preheader7478
  %indvars.iv5294.unr = phi i64 [ %indvars.iv5294.ph, %.preheader2963.us.us.preheader7478 ], [ %indvars.iv.next5295.prol, %.preheader2963.us.us.prol ]
  %2006 = icmp eq i64 %indvars.iv5294.ph, %1977
  br i1 %2006, label %._crit_edge3189, label %.preheader2963.us.us.preheader7478.new

.preheader2963.us.us.preheader7478.new:           ; preds = %.preheader2963.us.us.prol.loopexit
  %invariant.gep7817 = getelementptr i8, ptr %invariant.gep6622, i64 4
  br label %.preheader2963.us.us

.preheader2963.us.us:                             ; preds = %.preheader2963.us.us, %.preheader2963.us.us.preheader7478.new
  %indvars.iv5294 = phi i64 [ %indvars.iv5294.unr, %.preheader2963.us.us.preheader7478.new ], [ %indvars.iv.next5295.1, %.preheader2963.us.us ]
  %2007 = load float, ptr %1962, align 4, !tbaa !134
  %2008 = fmul float %2007, 0.000000e+00
  %gep6623 = getelementptr float, ptr %invariant.gep6622, i64 %indvars.iv5294
  %2009 = load float, ptr %gep6623, align 4, !tbaa !27
  %2010 = fadd float %2008, %2009
  store float %2010, ptr %gep6623, align 4, !tbaa !27
  %2011 = load float, ptr %1962, align 4, !tbaa !134
  %2012 = fmul float %2011, 0.000000e+00
  %gep7818 = getelementptr float, ptr %invariant.gep7817, i64 %indvars.iv5294
  %2013 = load float, ptr %gep7818, align 4, !tbaa !27
  %2014 = fadd float %2012, %2013
  store float %2014, ptr %gep7818, align 4, !tbaa !27
  %indvars.iv.next5295.1 = add nuw nsw i64 %indvars.iv5294, 2
  %exitcond5298.not.1 = icmp eq i64 %indvars.iv.next5295.1, %wide.trip.count5297
  br i1 %exitcond5298.not.1, label %._crit_edge3189, label %.preheader2963.us.us, !llvm.loop !212

.preheader2963.us:                                ; preds = %.preheader2963.us, %.preheader2963.us.preheader7480.new
  %indvars.iv5289 = phi i64 [ %indvars.iv5289.unr, %.preheader2963.us.preheader7480.new ], [ %indvars.iv.next5290.3, %.preheader2963.us ]
  %2015 = load float, ptr %1962, align 4, !tbaa !134
  %2016 = fmul float %2015, 0.000000e+00
  %gep6621 = getelementptr float, ptr %invariant.gep6622, i64 %indvars.iv5289
  store float %2016, ptr %gep6621, align 4, !tbaa !27
  %2017 = load float, ptr %1962, align 4, !tbaa !134
  %2018 = fmul float %2017, 0.000000e+00
  %gep7812 = getelementptr float, ptr %invariant.gep7811, i64 %indvars.iv5289
  store float %2018, ptr %gep7812, align 4, !tbaa !27
  %2019 = load float, ptr %1962, align 4, !tbaa !134
  %2020 = fmul float %2019, 0.000000e+00
  %gep7814 = getelementptr float, ptr %invariant.gep7813, i64 %indvars.iv5289
  store float %2020, ptr %gep7814, align 4, !tbaa !27
  %2021 = load float, ptr %1962, align 4, !tbaa !134
  %2022 = fmul float %2021, 0.000000e+00
  %gep7816 = getelementptr float, ptr %invariant.gep7815, i64 %indvars.iv5289
  store float %2022, ptr %gep7816, align 4, !tbaa !27
  %indvars.iv.next5290.3 = add nuw nsw i64 %indvars.iv5289, 4
  %exitcond5293.not.3 = icmp eq i64 %indvars.iv.next5290.3, %wide.trip.count5292
  br i1 %exitcond5293.not.3, label %._crit_edge3189, label %.preheader2963.us, !llvm.loop !213

.preheader2963:                                   ; preds = %.preheader2963.lr.ph, %._crit_edge3182._crit_edge
  %2023 = phi i32 [ %2068, %._crit_edge3182._crit_edge ], [ %1980, %.preheader2963.lr.ph ]
  %indvars.iv5315 = phi i64 [ %indvars.iv.next5316, %._crit_edge3182._crit_edge ], [ 0, %.preheader2963.lr.ph ]
  %2024 = icmp sgt i32 %2023, 0
  br i1 %2024, label %.lr.ph3181, label %._crit_edge3182

.lr.ph3181:                                       ; preds = %.preheader2963
  %2025 = mul nsw i64 %indvars.iv5315, %1964
  br i1 %1961, label %.lr.ph3181.split.us, label %.lr.ph3181.split

.lr.ph3181.split.us:                              ; preds = %.lr.ph3181, %._crit_edge3177.split.us.us
  %indvars.iv5312 = phi i64 [ %indvars.iv.next5313, %._crit_edge3177.split.us.us ], [ 0, %.lr.ph3181 ]
  %.026813179.us = phi i32 [ %.12682.lcssa.us, %._crit_edge3177.split.us.us ], [ 0, %.lr.ph3181 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5312, ptr noundef nonnull %0)
  %2026 = sdiv i32 %.fr4927, %.fr4929
  %2027 = icmp sgt i32 %2026, 0
  br i1 %2027, label %.preheader2962.lr.ph.us, label %._crit_edge3177.split.us.us

._crit_edge3177.split.us.us:                      ; preds = %._crit_edge3172.us.us, %.lr.ph3181.split.us
  %.12682.lcssa.us = phi i32 [ %.026813179.us, %.lr.ph3181.split.us ], [ %.lcssa6900, %._crit_edge3172.us.us ]
  %indvars.iv.next5313 = add nuw nsw i64 %indvars.iv5312, 1
  %2028 = load i32, ptr %1960, align 8, !tbaa !52
  %2029 = sext i32 %2028 to i64
  %2030 = icmp slt i64 %indvars.iv.next5313, %2029
  br i1 %2030, label %.lr.ph3181.split.us, label %._crit_edge3182, !llvm.loop !214

.preheader2962.lr.ph.us:                          ; preds = %.lr.ph3181.split.us
  %2031 = load ptr, ptr %34, align 8
  %2032 = load i64, ptr %5, align 8
  %2033 = getelementptr i8, ptr %2031, i64 %2032
  %invariant.gep.us = getelementptr i8, ptr %2033, i64 %2025
  %2034 = load ptr, ptr %35, align 8
  %2035 = load i64, ptr %6, align 8
  %2036 = getelementptr i8, ptr %2034, i64 %2035
  %2037 = getelementptr i8, ptr %2036, i64 %1978
  %wide.trip.count5310 = zext nneg i32 %2026 to i64
  br label %.preheader2962.us.us

.preheader2962.us.us:                             ; preds = %._crit_edge3172.us.us, %.preheader2962.lr.ph.us
  %indvars.iv5307 = phi i64 [ %indvars.iv.next5308, %._crit_edge3172.us.us ], [ 0, %.preheader2962.lr.ph.us ]
  %.126823175.us.us = phi i32 [ %.lcssa6900, %._crit_edge3172.us.us ], [ %.026813179.us, %.preheader2962.lr.ph.us ]
  %2038 = trunc nuw nsw i64 %indvars.iv5307 to i32
  %factor.op.mul.reass.us.us = mul i32 %factor.op.mul3174, %2038
  %2039 = sext i32 %factor.op.mul.reass.us.us to i64
  %gep.us.us3185 = getelementptr i8, ptr %invariant.gep.us, i64 %2039
  %2040 = mul nuw nsw i64 %indvars.iv5307, %1964
  %2041 = getelementptr i8, ptr %2037, i64 %2040
  br i1 %min.iters.check6924, label %scalar.ph6923.preheader, label %vector.ph6925

vector.ph6925:                                    ; preds = %.preheader2962.us.us
  %2042 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.126823175.us.us, i64 0
  br label %vector.body6929

vector.body6929:                                  ; preds = %vector.body6929, %vector.ph6925
  %index6930 = phi i64 [ 0, %vector.ph6925 ], [ %index.next6935, %vector.body6929 ]
  %vec.phi = phi <4 x i32> [ %2042, %vector.ph6925 ], [ %2053, %vector.body6929 ]
  %vec.phi6931 = phi <4 x i32> [ zeroinitializer, %vector.ph6925 ], [ %2054, %vector.body6929 ]
  %2043 = getelementptr i8, ptr %gep.us.us3185, i64 %index6930
  %2044 = getelementptr i8, ptr %2043, i64 4
  %wide.load = load <4 x i8>, ptr %2043, align 1, !tbaa !41
  %wide.load6932 = load <4 x i8>, ptr %2044, align 1, !tbaa !41
  %2045 = sext <4 x i8> %wide.load to <4 x i32>
  %2046 = sext <4 x i8> %wide.load6932 to <4 x i32>
  %2047 = getelementptr i8, ptr %2041, i64 %index6930
  %2048 = getelementptr i8, ptr %2047, i64 4
  %wide.load6933 = load <4 x i8>, ptr %2047, align 1, !tbaa !41
  %wide.load6934 = load <4 x i8>, ptr %2048, align 1, !tbaa !41
  %2049 = zext <4 x i8> %wide.load6933 to <4 x i32>
  %2050 = zext <4 x i8> %wide.load6934 to <4 x i32>
  %2051 = mul nsw <4 x i32> %2049, %2045
  %2052 = mul nsw <4 x i32> %2050, %2046
  %2053 = add <4 x i32> %2051, %vec.phi
  %2054 = add <4 x i32> %2052, %vec.phi6931
  %index.next6935 = add nuw i64 %index6930, 8
  %2055 = icmp eq i64 %index.next6935, %n.vec6927
  br i1 %2055, label %middle.block6922, label %vector.body6929, !llvm.loop !215

middle.block6922:                                 ; preds = %vector.body6929
  %bin.rdx = add <4 x i32> %2054, %2053
  %2056 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  br i1 %cmp.n6936, label %._crit_edge3172.us.us, label %scalar.ph6923.preheader

scalar.ph6923.preheader:                          ; preds = %middle.block6922, %.preheader2962.us.us
  %indvars.iv5302.ph = phi i64 [ 0, %.preheader2962.us.us ], [ %n.vec6927, %middle.block6922 ]
  %.226833169.us.us.ph = phi i32 [ %.126823175.us.us, %.preheader2962.us.us ], [ %2056, %middle.block6922 ]
  br label %scalar.ph6923

scalar.ph6923:                                    ; preds = %scalar.ph6923.preheader, %scalar.ph6923
  %indvars.iv5302 = phi i64 [ %indvars.iv.next5303, %scalar.ph6923 ], [ %indvars.iv5302.ph, %scalar.ph6923.preheader ]
  %.226833169.us.us = phi i32 [ %2064, %scalar.ph6923 ], [ %.226833169.us.us.ph, %scalar.ph6923.preheader ]
  %2057 = getelementptr i8, ptr %gep.us.us3185, i64 %indvars.iv5302
  %2058 = load i8, ptr %2057, align 1, !tbaa !41
  %2059 = sext i8 %2058 to i32
  %2060 = getelementptr i8, ptr %2041, i64 %indvars.iv5302
  %2061 = load i8, ptr %2060, align 1, !tbaa !41
  %2062 = zext i8 %2061 to i32
  %2063 = mul nsw i32 %2062, %2059
  %2064 = add nsw i32 %2063, %.226833169.us.us
  %indvars.iv.next5303 = add nuw nsw i64 %indvars.iv5302, 1
  %exitcond5306.not = icmp eq i64 %indvars.iv.next5303, %wide.trip.count5305
  br i1 %exitcond5306.not, label %._crit_edge3172.us.us, label %scalar.ph6923, !llvm.loop !216

._crit_edge3172.us.us:                            ; preds = %scalar.ph6923, %middle.block6922
  %.lcssa6900 = phi i32 [ %2056, %middle.block6922 ], [ %2064, %scalar.ph6923 ]
  %indvars.iv.next5308 = add nuw nsw i64 %indvars.iv5307, 1
  %exitcond5311.not = icmp eq i64 %indvars.iv.next5308, %wide.trip.count5310
  br i1 %exitcond5311.not, label %._crit_edge3177.split.us.us, label %.preheader2962.us.us, !llvm.loop !217

.lr.ph3181.split:                                 ; preds = %.lr.ph3181, %.lr.ph3181.split
  %indvars.iv5299 = phi i64 [ %indvars.iv.next5300, %.lr.ph3181.split ], [ 0, %.lr.ph3181 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5299, ptr noundef nonnull %0)
  %indvars.iv.next5300 = add nuw nsw i64 %indvars.iv5299, 1
  %2065 = load i32, ptr %1960, align 8, !tbaa !52
  %2066 = sext i32 %2065 to i64
  %2067 = icmp slt i64 %indvars.iv.next5300, %2066
  br i1 %2067, label %.lr.ph3181.split, label %._crit_edge3182, !llvm.loop !214

._crit_edge3182:                                  ; preds = %.lr.ph3181.split, %._crit_edge3177.split.us.us, %.preheader2963
  %2068 = phi i32 [ %2023, %.preheader2963 ], [ %2028, %._crit_edge3177.split.us.us ], [ %2065, %.lr.ph3181.split ]
  %.02681.lcssa = phi i32 [ 0, %.preheader2963 ], [ %.12682.lcssa.us, %._crit_edge3177.split.us.us ], [ 0, %.lr.ph3181.split ]
  %2069 = sitofp i32 %.02681.lcssa to float
  %2070 = load float, ptr %1962, align 4, !tbaa !134
  %2071 = fmul float %2070, %2069
  %2072 = load double, ptr %1963, align 8, !tbaa !25
  %2073 = fcmp oeq double %2072, 1.000000e+00
  %2074 = add nsw i64 %indvars.iv5315, %1979
  br i1 %2073, label %2075, label %._crit_edge3182._crit_edge

2075:                                             ; preds = %._crit_edge3182
  %2076 = getelementptr inbounds float, ptr %3, i64 %2074
  %2077 = load float, ptr %2076, align 4, !tbaa !27
  %2078 = fadd float %2071, %2077
  br label %._crit_edge3182._crit_edge

._crit_edge3182._crit_edge:                       ; preds = %._crit_edge3182, %2075
  %.02684 = phi float [ %2078, %2075 ], [ %2071, %._crit_edge3182 ]
  %2079 = getelementptr inbounds float, ptr %3, i64 %2074
  store float %.02684, ptr %2079, align 4, !tbaa !27
  %indvars.iv.next5316 = add nuw nsw i64 %indvars.iv5315, 1
  %exitcond5319.not = icmp eq i64 %indvars.iv.next5316, %wide.trip.count5318
  br i1 %exitcond5319.not, label %._crit_edge3189, label %.preheader2963, !llvm.loop !218

._crit_edge3189:                                  ; preds = %.preheader2963.us.prol.loopexit, %.preheader2963.us, %.preheader2963.us.us.prol.loopexit, %.preheader2963.us.us, %._crit_edge3182._crit_edge, %middle.block6960, %middle.block6938, %.preheader2964
  %indvars.iv.next5321 = add nuw nsw i64 %indvars.iv5320, 1
  %exitcond5324.not = icmp eq i64 %indvars.iv.next5321, %wide.trip.count5323
  br i1 %exitcond5324.not, label %._crit_edge3191, label %.preheader2964, !llvm.loop !219

._crit_edge3191:                                  ; preds = %._crit_edge3189, %1956
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  br label %.loopexit

2080:                                             ; preds = %1045
  %2081 = getelementptr inbounds i8, ptr %0, i64 8
  %2082 = load i32, ptr %2081, align 8, !tbaa !26
  %.off = add i32 %2082, -1
  %switch = icmp ult i32 %.off, 2
  br i1 %switch, label %2083, label %.thread2862

2083:                                             ; preds = %2080
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  store ptr %1, ptr %36, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  store ptr %2, ptr %37, align 8, !tbaa !50
  %2084 = icmp sgt i32 %79, 0
  br i1 %2084, label %.preheader2967.lr.ph, label %._crit_edge3168

.preheader2967.lr.ph:                             ; preds = %2083
  %2085 = icmp sgt i32 %77, 0
  %2086 = getelementptr inbounds i8, ptr %0, i64 112
  %2087 = icmp sgt i32 %.fr4927, 0
  %2088 = getelementptr inbounds i8, ptr %0, i64 128
  %2089 = getelementptr inbounds i8, ptr %0, i64 56
  %2090 = sext i32 %71 to i64
  %2091 = sext i32 %73 to i64
  %2092 = sext i32 %75 to i64
  %wide.trip.count5287 = zext nneg i32 %79 to i64
  %wide.trip.count5269 = zext nneg i32 %77 to i64
  %wide.trip.count5282 = zext nneg i32 %77 to i64
  %wide.trip.count5274 = zext nneg i32 %.fr4927 to i64
  br label %.preheader2967

.preheader2967:                                   ; preds = %.preheader2967.lr.ph, %._crit_edge3165
  %indvars.iv5284 = phi i64 [ 0, %.preheader2967.lr.ph ], [ %indvars.iv.next5285, %._crit_edge3165 ]
  br i1 %2085, label %.preheader2966.lr.ph, label %._crit_edge3165

.preheader2966.lr.ph:                             ; preds = %.preheader2967
  %2093 = mul nsw i64 %indvars.iv5284, %2091
  %2094 = mul nsw i64 %indvars.iv5284, %2092
  br i1 %2087, label %.preheader2966.us, label %.preheader2966

.preheader2966.us:                                ; preds = %.preheader2966.lr.ph, %2116
  %indvars.iv5279 = phi i64 [ %indvars.iv.next5280, %2116 ], [ 0, %.preheader2966.lr.ph ]
  %2095 = load i32, ptr %2086, align 8, !tbaa !52
  %2096 = icmp sgt i32 %2095, 0
  br i1 %2096, label %.preheader2965.lr.ph.us.us, label %._crit_edge3161.split.us.us

._crit_edge3161.split.us.us:                      ; preds = %._crit_edge3156.us.us, %.preheader2966.us
  %.02685.lcssa.us = phi float [ 0.000000e+00, %.preheader2966.us ], [ %2138, %._crit_edge3156.us.us ]
  %2097 = load i32, ptr %2081, align 8, !tbaa !26
  %2098 = icmp eq i32 %2097, 2
  %2099 = load double, ptr %2089, align 8, !tbaa !25
  %2100 = fcmp oeq double %2099, 1.000000e+00
  %2101 = add nsw i64 %indvars.iv5279, %2094
  br i1 %2098, label %2108, label %2102

2102:                                             ; preds = %._crit_edge3161.split.us.us
  br i1 %2100, label %2103, label %._crit_edge6336

2103:                                             ; preds = %2102
  %2104 = getelementptr inbounds float, ptr %3, i64 %2101
  %2105 = load float, ptr %2104, align 4, !tbaa !27
  %2106 = fadd float %.02685.lcssa.us, %2105
  br label %._crit_edge6336

._crit_edge6336:                                  ; preds = %2102, %2103
  %.42689.us = phi float [ %2106, %2103 ], [ %.02685.lcssa.us, %2102 ]
  %2107 = getelementptr inbounds float, ptr %3, i64 %2101
  store float %.42689.us, ptr %2107, align 4, !tbaa !27
  br label %2116

2108:                                             ; preds = %._crit_edge3161.split.us.us
  br i1 %2100, label %2109, label %._crit_edge6337

2109:                                             ; preds = %2108
  %2110 = getelementptr inbounds i16, ptr %3, i64 %2101
  %2111 = load i16, ptr %2110, align 2, !tbaa !38
  %2112 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %2111) #8
  %2113 = fadd float %.02685.lcssa.us, %2112
  br label %._crit_edge6337

._crit_edge6337:                                  ; preds = %2108, %2109
  %.32688.us = phi float [ %2113, %2109 ], [ %.02685.lcssa.us, %2108 ]
  %2114 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.32688.us) #8
  %2115 = getelementptr inbounds i16, ptr %3, i64 %2101
  store i16 %2114, ptr %2115, align 2, !tbaa !38
  br label %2116

2116:                                             ; preds = %._crit_edge6337, %._crit_edge6336
  %indvars.iv.next5280 = add nuw nsw i64 %indvars.iv5279, 1
  %exitcond5283.not = icmp eq i64 %indvars.iv.next5280, %wide.trip.count5282
  br i1 %exitcond5283.not, label %._crit_edge3165, label %.preheader2966.us, !llvm.loop !220

.preheader2965.lr.ph.us.us:                       ; preds = %.preheader2966.us, %._crit_edge3156.us.us
  %indvars.iv5276 = phi i64 [ %indvars.iv.next5277, %._crit_edge3156.us.us ], [ 0, %.preheader2966.us ]
  %.026853158.us.us = phi float [ %2138, %._crit_edge3156.us.us ], [ 0.000000e+00, %.preheader2966.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5276, ptr noundef nonnull %0)
  br label %.preheader2965.us.us

.preheader2965.us.us:                             ; preds = %.preheader2965.us.us, %.preheader2965.lr.ph.us.us
  %indvars.iv5271 = phi i64 [ %indvars.iv.next5272, %.preheader2965.us.us ], [ 0, %.preheader2965.lr.ph.us.us ]
  %.126863154.us.us = phi float [ %2138, %.preheader2965.us.us ], [ %.026853158.us.us, %.preheader2965.lr.ph.us.us ]
  %2117 = mul nsw i64 %indvars.iv5271, %2090
  %2118 = load ptr, ptr %36, align 8, !tbaa !50
  %2119 = load i64, ptr %5, align 8, !tbaa !19
  %2120 = getelementptr i8, ptr %2118, i64 %2119
  %2121 = getelementptr i8, ptr %2120, i64 %2117
  %2122 = getelementptr i8, ptr %2121, i64 %indvars.iv5279
  %2123 = load i8, ptr %2122, align 1, !tbaa !41
  %2124 = sitofp i8 %2123 to float
  %2125 = load ptr, ptr %2088, align 8, !tbaa !221
  %2126 = getelementptr inbounds float, ptr %2125, i64 %indvars.iv5279
  %2127 = load float, ptr %2126, align 4, !tbaa !27
  %2128 = fmul float %2127, %2124
  %2129 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %2128) #8
  %2130 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %2129) #8
  %2131 = load ptr, ptr %37, align 8, !tbaa !50
  %2132 = load i64, ptr %6, align 8, !tbaa !19
  %2133 = getelementptr i16, ptr %2131, i64 %2132
  %2134 = getelementptr i16, ptr %2133, i64 %2093
  %2135 = getelementptr i16, ptr %2134, i64 %indvars.iv5271
  %2136 = load i16, ptr %2135, align 2, !tbaa !38
  %2137 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %2136) #8
  %2138 = call float @llvm.fmuladd.f32(float %2130, float %2137, float %.126863154.us.us)
  %indvars.iv.next5272 = add nuw nsw i64 %indvars.iv5271, 1
  %exitcond5275.not = icmp eq i64 %indvars.iv.next5272, %wide.trip.count5274
  br i1 %exitcond5275.not, label %._crit_edge3156.us.us, label %.preheader2965.us.us, !llvm.loop !222

._crit_edge3156.us.us:                            ; preds = %.preheader2965.us.us
  %indvars.iv.next5277 = add nuw nsw i64 %indvars.iv5276, 1
  %2139 = load i32, ptr %2086, align 8, !tbaa !52
  %2140 = sext i32 %2139 to i64
  %2141 = icmp slt i64 %indvars.iv.next5277, %2140
  br i1 %2141, label %.preheader2965.lr.ph.us.us, label %._crit_edge3161.split.us.us, !llvm.loop !223

.preheader2966:                                   ; preds = %.preheader2966.lr.ph, %2166
  %indvars.iv5266 = phi i64 [ %indvars.iv.next5267, %2166 ], [ 0, %.preheader2966.lr.ph ]
  %2142 = load i32, ptr %2086, align 8, !tbaa !52
  %2143 = icmp sgt i32 %2142, 0
  br i1 %2143, label %.lr.ph3160, label %._crit_edge3161.split

.lr.ph3160:                                       ; preds = %.preheader2966, %.lr.ph3160
  %indvars.iv5263 = phi i64 [ %indvars.iv.next5264, %.lr.ph3160 ], [ 0, %.preheader2966 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5263, ptr noundef nonnull %0)
  %indvars.iv.next5264 = add nuw nsw i64 %indvars.iv5263, 1
  %2144 = load i32, ptr %2086, align 8, !tbaa !52
  %2145 = sext i32 %2144 to i64
  %2146 = icmp slt i64 %indvars.iv.next5264, %2145
  br i1 %2146, label %.lr.ph3160, label %._crit_edge3161.split, !llvm.loop !223

._crit_edge3161.split:                            ; preds = %.lr.ph3160, %.preheader2966
  %2147 = load i32, ptr %2081, align 8, !tbaa !26
  %2148 = icmp eq i32 %2147, 2
  %2149 = load double, ptr %2089, align 8, !tbaa !25
  %2150 = fcmp oeq double %2149, 1.000000e+00
  %2151 = add nsw i64 %indvars.iv5266, %2094
  br i1 %2148, label %2152, label %2160

2152:                                             ; preds = %._crit_edge3161.split
  br i1 %2150, label %2153, label %._crit_edge6335

2153:                                             ; preds = %2152
  %2154 = getelementptr inbounds i16, ptr %3, i64 %2151
  %2155 = load i16, ptr %2154, align 2, !tbaa !38
  %2156 = call float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext %2155) #8
  %2157 = fadd float %2156, 0.000000e+00
  br label %._crit_edge6335

._crit_edge6335:                                  ; preds = %2152, %2153
  %.32688 = phi float [ %2157, %2153 ], [ 0.000000e+00, %2152 ]
  %2158 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.32688) #8
  %2159 = getelementptr inbounds i16, ptr %3, i64 %2151
  store i16 %2158, ptr %2159, align 2, !tbaa !38
  br label %2166

2160:                                             ; preds = %._crit_edge3161.split
  br i1 %2150, label %2161, label %._crit_edge6334

2161:                                             ; preds = %2160
  %2162 = getelementptr inbounds float, ptr %3, i64 %2151
  %2163 = load float, ptr %2162, align 4, !tbaa !27
  %2164 = fadd float %2163, 0.000000e+00
  br label %._crit_edge6334

._crit_edge6334:                                  ; preds = %2160, %2161
  %.42689 = phi float [ %2164, %2161 ], [ 0.000000e+00, %2160 ]
  %2165 = getelementptr inbounds float, ptr %3, i64 %2151
  store float %.42689, ptr %2165, align 4, !tbaa !27
  br label %2166

2166:                                             ; preds = %._crit_edge6334, %._crit_edge6335
  %indvars.iv.next5267 = add nuw nsw i64 %indvars.iv5266, 1
  %exitcond5270.not = icmp eq i64 %indvars.iv.next5267, %wide.trip.count5269
  br i1 %exitcond5270.not, label %._crit_edge3165, label %.preheader2966, !llvm.loop !220

._crit_edge3165:                                  ; preds = %2166, %2116, %.preheader2967
  %indvars.iv.next5285 = add nuw nsw i64 %indvars.iv5284, 1
  %exitcond5288.not = icmp eq i64 %indvars.iv.next5285, %wide.trip.count5287
  br i1 %exitcond5288.not, label %._crit_edge3168, label %.preheader2967, !llvm.loop !224

._crit_edge3168:                                  ; preds = %._crit_edge3165, %2083
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br label %.loopexit

2167:                                             ; preds = %711
  %2168 = getelementptr inbounds i8, ptr %0, i64 4
  %2169 = load i32, ptr %2168, align 4, !tbaa !24
  %2170 = icmp eq i32 %2169, 3
  br i1 %2170, label %2171, label %.thread2862

2171:                                             ; preds = %2167
  %2172 = getelementptr inbounds i8, ptr %0, i64 8
  %2173 = load i32, ptr %2172, align 8, !tbaa !26
  switch i32 %2173, label %.thread2862 [
    i32 3, label %2174
    i32 1, label %2174
  ]

2174:                                             ; preds = %2171, %2171
  %2175 = getelementptr inbounds i8, ptr %0, i64 12
  %2176 = load i32, ptr %2175, align 4, !tbaa !70
  switch i32 %2176, label %.thread2862 [
    i32 3, label %2177
    i32 1, label %2177
    i32 14, label %2177
  ]

2177:                                             ; preds = %2174, %2174, %2174
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #8
  store ptr %1, ptr %38, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  store ptr %2, ptr %39, align 8, !tbaa !50
  %2178 = getelementptr inbounds i8, ptr %0, i64 72
  %2179 = load i32, ptr %2178, align 8, !tbaa !225
  %.not2826 = icmp eq i32 %2179, 0
  br i1 %.not2826, label %2183, label %2180

2180:                                             ; preds = %2177
  %2181 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 3) #8
  %2182 = freeze i32 %2181
  br label %2183

2183:                                             ; preds = %2177, %2180
  %.fr4928 = phi i32 [ %2182, %2180 ], [ 1, %2177 ]
  %2184 = tail call ptr @getenv(ptr noundef nonnull @.str.2) #8
  %2185 = icmp eq ptr %2184, null
  br i1 %2185, label %.thread2863, label %2187

.thread2863:                                      ; preds = %2183
  %2186 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2194

2187:                                             ; preds = %2183
  %2188 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2184, ptr noundef nonnull dereferenceable(1) @.str.3) #9
  %2189 = icmp eq ptr %2184, %2188
  br i1 %2189, label %.thread2865, label %2191

.thread2865:                                      ; preds = %2187
  %2190 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2198

2191:                                             ; preds = %2187
  %2192 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2184, ptr noundef nonnull dereferenceable(1) @.str.4) #9
  %.not2903 = icmp eq ptr %2184, %2192
  %2193 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br i1 %.not2903, label %2198, label %2194

2194:                                             ; preds = %.thread2863, %2191
  %2195 = phi i32 [ %2186, %.thread2863 ], [ %2193, %2191 ]
  %2196 = icmp sgt i32 %2195, 1103
  %2197 = select i1 %2185, i1 %2196, i1 false
  br label %2198

2198:                                             ; preds = %.thread2865, %2191, %2194
  %2199 = phi i1 [ %2197, %2194 ], [ true, %2191 ], [ true, %.thread2865 ]
  %2200 = load i32, ptr %2175, align 4, !tbaa !70
  %2201 = icmp eq i32 %2200, 3
  %2202 = icmp eq i32 %2200, 14
  %2203 = select i1 %2202, i1 %2199, i1 false
  %2204 = freeze i1 %2203
  %.fr3112 = or i1 %2201, %2204
  %2205 = icmp sgt i32 %79, 0
  br i1 %2205, label %.preheader2970.lr.ph, label %._crit_edge3152

.preheader2970.lr.ph:                             ; preds = %2198
  %2206 = icmp sgt i32 %77, 0
  %2207 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3113 = mul i32 %.fr4928, %71
  %2208 = icmp sgt i32 %.fr4928, 0
  %2209 = getelementptr inbounds i8, ptr %0, i64 68
  %2210 = sext i32 %73 to i64
  %2211 = getelementptr inbounds i8, ptr %0, i64 56
  %2212 = sext i32 %.fr4928 to i64
  %2213 = sext i32 %75 to i64
  %wide.trip.count5261 = zext nneg i32 %79 to i64
  %wide.trip.count5225 = zext nneg i32 %77 to i64
  %wide.trip.count5256 = zext nneg i32 %77 to i64
  %wide.trip.count5230 = zext nneg i32 %.fr4928 to i64
  %wide.trip.count5243 = zext nneg i32 %.fr4928 to i64
  br label %.preheader2970

.preheader2970:                                   ; preds = %.preheader2970.lr.ph, %._crit_edge3143
  %indvars.iv5258 = phi i64 [ 0, %.preheader2970.lr.ph ], [ %indvars.iv.next5259, %._crit_edge3143 ]
  br i1 %2206, label %.preheader2969.lr.ph, label %._crit_edge3143

.preheader2969.lr.ph:                             ; preds = %.preheader2970
  %2214 = mul nsw i64 %indvars.iv5258, %2210
  %2215 = mul nsw i64 %indvars.iv5258, %2213
  br i1 %2208, label %.preheader2969.us, label %.preheader2969

.preheader2969.us:                                ; preds = %.preheader2969.lr.ph, %2237
  %indvars.iv5253 = phi i64 [ %indvars.iv.next5254, %2237 ], [ 0, %.preheader2969.lr.ph ]
  %2216 = load i32, ptr %2207, align 8, !tbaa !52
  %2217 = icmp sgt i32 %2216, 0
  br i1 %2217, label %.lr.ph3130.us, label %._crit_edge3131.split.us.us

._crit_edge3131.split.us.us:                      ; preds = %._crit_edge3116.split.us.split.us3137.us, %._crit_edge3116.split.us.split.us.us.us.us, %.preheader2969.us
  %.02695.lcssa.us = phi float [ 0.000000e+00, %.preheader2969.us ], [ %.12696.lcssa.us.us.us, %._crit_edge3116.split.us.split.us.us.us.us ], [ %.12696.lcssa.us.us3146, %._crit_edge3116.split.us.split.us3137.us ]
  %2218 = load i32, ptr %2172, align 8, !tbaa !26
  %2219 = icmp eq i32 %2218, 3
  %2220 = load double, ptr %2211, align 8, !tbaa !25
  %2221 = fcmp oeq double %2220, 1.000000e+00
  %2222 = add nsw i64 %indvars.iv5253, %2215
  br i1 %2219, label %2229, label %2223

2223:                                             ; preds = %._crit_edge3131.split.us.us
  br i1 %2221, label %2224, label %._crit_edge6332

2224:                                             ; preds = %2223
  %2225 = getelementptr inbounds float, ptr %3, i64 %2222
  %2226 = load float, ptr %2225, align 4, !tbaa !27
  %2227 = fadd float %.02695.lcssa.us, %2226
  br label %._crit_edge6332

._crit_edge6332:                                  ; preds = %2223, %2224
  %.52700.us = phi float [ %2227, %2224 ], [ %.02695.lcssa.us, %2223 ]
  %2228 = getelementptr inbounds float, ptr %3, i64 %2222
  store float %.52700.us, ptr %2228, align 4, !tbaa !27
  br label %2237

2229:                                             ; preds = %._crit_edge3131.split.us.us
  br i1 %2221, label %2230, label %._crit_edge6333

2230:                                             ; preds = %2229
  %2231 = getelementptr inbounds i16, ptr %3, i64 %2222
  %2232 = load i16, ptr %2231, align 2, !tbaa !38
  %2233 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2232) #8
  %2234 = fadd float %.02695.lcssa.us, %2233
  br label %._crit_edge6333

._crit_edge6333:                                  ; preds = %2229, %2230
  %.42699.us = phi float [ %2234, %2230 ], [ %.02695.lcssa.us, %2229 ]
  %2235 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42699.us) #8
  %2236 = getelementptr inbounds i16, ptr %3, i64 %2222
  store i16 %2235, ptr %2236, align 2, !tbaa !38
  br label %2237

2237:                                             ; preds = %._crit_edge6333, %._crit_edge6332
  %indvars.iv.next5254 = add nuw nsw i64 %indvars.iv5253, 1
  %exitcond5257.not = icmp eq i64 %indvars.iv.next5254, %wide.trip.count5256
  br i1 %exitcond5257.not, label %._crit_edge3143, label %.preheader2969.us, !llvm.loop !226

.lr.ph3130.us:                                    ; preds = %.preheader2969.us
  %2238 = mul nuw nsw i64 %indvars.iv5253, %2212
  br i1 %.fr3112, label %.lr.ph3130.split.us.split.us.us, label %.lr.ph3130.split.us.split.us3150

.lr.ph3130.split.us.split.us3150:                 ; preds = %.lr.ph3130.us, %._crit_edge3116.split.us.split.us3137.us
  %indvars.iv5237 = phi i64 [ %indvars.iv.next5238, %._crit_edge3116.split.us.split.us3137.us ], [ 0, %.lr.ph3130.us ]
  %.026953128.us.us3145 = phi float [ %.12696.lcssa.us.us3146, %._crit_edge3116.split.us.split.us3137.us ], [ 0.000000e+00, %.lr.ph3130.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5237, ptr noundef nonnull %0)
  %2239 = sdiv i32 %.fr4927, %.fr4928
  %2240 = icmp sgt i32 %2239, 0
  br i1 %2240, label %.preheader2968.us.us3133.us.preheader, label %._crit_edge3116.split.us.split.us3137.us

.preheader2968.us.us3133.us.preheader:            ; preds = %.lr.ph3130.split.us.split.us3150
  %wide.trip.count5235 = zext nneg i32 %2239 to i64
  br label %.preheader2968.us.us3133.us

._crit_edge3116.split.us.split.us3137.us:         ; preds = %._crit_edge3110.split.us3124.us.us, %.lr.ph3130.split.us.split.us3150
  %.12696.lcssa.us.us3146 = phi float [ %.026953128.us.us3145, %.lr.ph3130.split.us.split.us3150 ], [ %2271, %._crit_edge3110.split.us3124.us.us ]
  %indvars.iv.next5238 = add nuw nsw i64 %indvars.iv5237, 1
  %2241 = load i32, ptr %2207, align 8, !tbaa !52
  %2242 = sext i32 %2241 to i64
  %2243 = icmp slt i64 %indvars.iv.next5238, %2242
  br i1 %2243, label %.lr.ph3130.split.us.split.us3150, label %._crit_edge3131.split.us.us, !llvm.loop !227

.preheader2968.us.us3133.us:                      ; preds = %.preheader2968.us.us3133.us.preheader, %._crit_edge3110.split.us3124.us.us
  %indvars.iv5232 = phi i64 [ 0, %.preheader2968.us.us3133.us.preheader ], [ %indvars.iv.next5233, %._crit_edge3110.split.us3124.us.us ]
  %.126963114.us.us3135.us = phi float [ %.026953128.us.us3145, %.preheader2968.us.us3133.us.preheader ], [ %2271, %._crit_edge3110.split.us3124.us.us ]
  %2244 = trunc nuw nsw i64 %indvars.iv5232 to i32
  %factor.op.mul.reass.us.us3136.us = mul i32 %factor.op.mul3113, %2244
  %2245 = sext i32 %factor.op.mul.reass.us.us3136.us to i64
  %2246 = mul nuw nsw i64 %indvars.iv5232, %2212
  %2247 = and i64 %2246, 4294967295
  br label %2248

2248:                                             ; preds = %2248, %.preheader2968.us.us3133.us
  %indvars.iv5227 = phi i64 [ %indvars.iv.next5228, %2248 ], [ 0, %.preheader2968.us.us3133.us ]
  %.226973107.us3119.us.us = phi float [ %2271, %2248 ], [ %.126963114.us.us3135.us, %.preheader2968.us.us3133.us ]
  %2249 = load ptr, ptr %38, align 8, !tbaa !50
  %2250 = load i64, ptr %5, align 8, !tbaa !19
  %2251 = getelementptr i8, ptr %2249, i64 %2250
  %2252 = getelementptr i8, ptr %2251, i64 %2245
  %2253 = getelementptr i8, ptr %2252, i64 %2238
  %2254 = getelementptr i8, ptr %2253, i64 %indvars.iv5227
  %2255 = load i8, ptr %2254, align 1, !tbaa !41
  %.sroa.4427.0.insert.ext.us3120.us.us = zext i8 %2255 to i16
  %.sroa.4427.0.insert.shift.us3121.us.us = shl nuw i16 %.sroa.4427.0.insert.ext.us3120.us.us, 8
  %2256 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.4427.0.insert.shift.us3121.us.us) #8
  %2257 = load i32, ptr %2209, align 4, !tbaa !73
  %2258 = icmp eq i32 %2257, 0
  %2259 = load ptr, ptr %39, align 8, !tbaa !50
  %2260 = load i64, ptr %6, align 8, !tbaa !19
  %2261 = getelementptr i16, ptr %2259, i64 %2260
  %2262 = getelementptr i16, ptr %2261, i64 %2214
  %2263 = getelementptr i16, ptr %2262, i64 %2246
  %2264 = getelementptr i16, ptr %2263, i64 %indvars.iv5227
  %2265 = add nuw nsw i64 %indvars.iv5227, %2247
  %2266 = mul nsw i64 %2265, %2210
  %2267 = getelementptr i16, ptr %2259, i64 %2260
  %2268 = getelementptr i16, ptr %2267, i64 %2266
  %2269 = getelementptr i16, ptr %2268, i64 %indvars.iv5258
  %.02694.in.us3122.us.us = select i1 %2258, ptr %2264, ptr %2269
  %.02694.us3123.us.us = load i16, ptr %.02694.in.us3122.us.us, align 2, !tbaa !38
  %2270 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02694.us3123.us.us) #8
  %2271 = call float @llvm.fmuladd.f32(float %2256, float %2270, float %.226973107.us3119.us.us)
  %indvars.iv.next5228 = add nuw nsw i64 %indvars.iv5227, 1
  %exitcond5231.not = icmp eq i64 %indvars.iv.next5228, %wide.trip.count5230
  br i1 %exitcond5231.not, label %._crit_edge3110.split.us3124.us.us, label %2248, !llvm.loop !228

._crit_edge3110.split.us3124.us.us:               ; preds = %2248
  %indvars.iv.next5233 = add nuw nsw i64 %indvars.iv5232, 1
  %exitcond5236.not = icmp eq i64 %indvars.iv.next5233, %wide.trip.count5235
  br i1 %exitcond5236.not, label %._crit_edge3116.split.us.split.us3137.us, label %.preheader2968.us.us3133.us, !llvm.loop !229

.lr.ph3130.split.us.split.us.us:                  ; preds = %.lr.ph3130.us, %._crit_edge3116.split.us.split.us.us.us.us
  %indvars.iv5250 = phi i64 [ %indvars.iv.next5251, %._crit_edge3116.split.us.split.us.us.us.us ], [ 0, %.lr.ph3130.us ]
  %.026953128.us.us.us = phi float [ %.12696.lcssa.us.us.us, %._crit_edge3116.split.us.split.us.us.us.us ], [ 0.000000e+00, %.lr.ph3130.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5250, ptr noundef nonnull %0)
  %2272 = sdiv i32 %.fr4927, %.fr4928
  %2273 = icmp sgt i32 %2272, 0
  br i1 %2273, label %.preheader2968.us.us.us.us.us.preheader, label %._crit_edge3116.split.us.split.us.us.us.us

.preheader2968.us.us.us.us.us.preheader:          ; preds = %.lr.ph3130.split.us.split.us.us
  %wide.trip.count5248 = zext nneg i32 %2272 to i64
  br label %.preheader2968.us.us.us.us.us

._crit_edge3116.split.us.split.us.us.us.us:       ; preds = %._crit_edge3110.split.us.us.us.us.us.us, %.lr.ph3130.split.us.split.us.us
  %.12696.lcssa.us.us.us = phi float [ %.026953128.us.us.us, %.lr.ph3130.split.us.split.us.us ], [ %2306, %._crit_edge3110.split.us.us.us.us.us.us ]
  %indvars.iv.next5251 = add nuw nsw i64 %indvars.iv5250, 1
  %2274 = load i32, ptr %2207, align 8, !tbaa !52
  %2275 = sext i32 %2274 to i64
  %2276 = icmp slt i64 %indvars.iv.next5251, %2275
  br i1 %2276, label %.lr.ph3130.split.us.split.us.us, label %._crit_edge3131.split.us.us, !llvm.loop !227

.preheader2968.us.us.us.us.us:                    ; preds = %.preheader2968.us.us.us.us.us.preheader, %._crit_edge3110.split.us.us.us.us.us.us
  %indvars.iv5245 = phi i64 [ 0, %.preheader2968.us.us.us.us.us.preheader ], [ %indvars.iv.next5246, %._crit_edge3110.split.us.us.us.us.us.us ]
  %.126963114.us.us.us.us.us = phi float [ %.026953128.us.us.us, %.preheader2968.us.us.us.us.us.preheader ], [ %2306, %._crit_edge3110.split.us.us.us.us.us.us ]
  %2277 = trunc nuw nsw i64 %indvars.iv5245 to i32
  %factor.op.mul.reass.us.us.us.us.us = mul i32 %factor.op.mul3113, %2277
  %2278 = sext i32 %factor.op.mul.reass.us.us.us.us.us to i64
  %2279 = mul nuw nsw i64 %indvars.iv5245, %2212
  %2280 = and i64 %2279, 4294967295
  br label %2281

2281:                                             ; preds = %2281, %.preheader2968.us.us.us.us.us
  %indvars.iv5240 = phi i64 [ %indvars.iv.next5241, %2281 ], [ 0, %.preheader2968.us.us.us.us.us ]
  %.226973107.us.us.us.us.us.us = phi float [ %2306, %2281 ], [ %.126963114.us.us.us.us.us, %.preheader2968.us.us.us.us.us ]
  %2282 = load ptr, ptr %38, align 8, !tbaa !50
  %2283 = load i64, ptr %5, align 8, !tbaa !19
  %2284 = getelementptr i8, ptr %2282, i64 %2283
  %2285 = getelementptr i8, ptr %2284, i64 %2278
  %2286 = getelementptr i8, ptr %2285, i64 %2238
  %2287 = getelementptr i8, ptr %2286, i64 %indvars.iv5240
  %2288 = load i8, ptr %2287, align 1, !tbaa !41
  %.sroa.4427.0.insert.ext.us.us.us.us.us.us = zext i8 %2288 to i16
  %.sroa.4427.0.insert.shift.us.us.us.us.us.us = shl nuw i16 %.sroa.4427.0.insert.ext.us.us.us.us.us.us, 8
  %2289 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.4427.0.insert.shift.us.us.us.us.us.us) #8
  %2290 = load i32, ptr %2209, align 4, !tbaa !73
  %2291 = icmp eq i32 %2290, 0
  %2292 = load ptr, ptr %39, align 8, !tbaa !50
  %2293 = load i64, ptr %6, align 8, !tbaa !19
  %2294 = getelementptr i16, ptr %2292, i64 %2293
  %2295 = getelementptr i16, ptr %2294, i64 %2214
  %2296 = getelementptr i16, ptr %2295, i64 %2279
  %2297 = getelementptr i16, ptr %2296, i64 %indvars.iv5240
  %2298 = add nuw nsw i64 %indvars.iv5240, %2280
  %2299 = mul nsw i64 %2298, %2210
  %2300 = getelementptr i16, ptr %2292, i64 %2293
  %2301 = getelementptr i16, ptr %2300, i64 %2299
  %2302 = getelementptr i16, ptr %2301, i64 %indvars.iv5258
  %.02694.in.us.us.us.us.us.us = select i1 %2291, ptr %2297, ptr %2302
  %.02694.us.us.us.us.us.us = load i16, ptr %.02694.in.us.us.us.us.us.us, align 2, !tbaa !38
  %2303 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02694.us.us.us.us.us.us) #8
  %2304 = call float @llvm.fmuladd.f32(float %2289, float %2303, float %.226973107.us.us.us.us.us.us)
  %2305 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2304) #8
  %2306 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2305) #8
  %indvars.iv.next5241 = add nuw nsw i64 %indvars.iv5240, 1
  %exitcond5244.not = icmp eq i64 %indvars.iv.next5241, %wide.trip.count5243
  br i1 %exitcond5244.not, label %._crit_edge3110.split.us.us.us.us.us.us, label %2281, !llvm.loop !228

._crit_edge3110.split.us.us.us.us.us.us:          ; preds = %2281
  %indvars.iv.next5246 = add nuw nsw i64 %indvars.iv5245, 1
  %exitcond5249.not = icmp eq i64 %indvars.iv.next5246, %wide.trip.count5248
  br i1 %exitcond5249.not, label %._crit_edge3116.split.us.split.us.us.us.us, label %.preheader2968.us.us.us.us.us, !llvm.loop !229

.preheader2969:                                   ; preds = %.preheader2969.lr.ph, %2331
  %indvars.iv5222 = phi i64 [ %indvars.iv.next5223, %2331 ], [ 0, %.preheader2969.lr.ph ]
  %2307 = load i32, ptr %2207, align 8, !tbaa !52
  %2308 = icmp sgt i32 %2307, 0
  br i1 %2308, label %.lr.ph3130, label %._crit_edge3131.split

.lr.ph3130:                                       ; preds = %.preheader2969, %.lr.ph3130
  %indvars.iv5219 = phi i64 [ %indvars.iv.next5220, %.lr.ph3130 ], [ 0, %.preheader2969 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5219, ptr noundef nonnull %0)
  %indvars.iv.next5220 = add nuw nsw i64 %indvars.iv5219, 1
  %2309 = load i32, ptr %2207, align 8, !tbaa !52
  %2310 = sext i32 %2309 to i64
  %2311 = icmp slt i64 %indvars.iv.next5220, %2310
  br i1 %2311, label %.lr.ph3130, label %._crit_edge3131.split, !llvm.loop !227

._crit_edge3131.split:                            ; preds = %.lr.ph3130, %.preheader2969
  %2312 = load i32, ptr %2172, align 8, !tbaa !26
  %2313 = icmp eq i32 %2312, 3
  %2314 = load double, ptr %2211, align 8, !tbaa !25
  %2315 = fcmp oeq double %2314, 1.000000e+00
  %2316 = add nsw i64 %indvars.iv5222, %2215
  br i1 %2313, label %2317, label %2325

2317:                                             ; preds = %._crit_edge3131.split
  br i1 %2315, label %2318, label %._crit_edge6331

2318:                                             ; preds = %2317
  %2319 = getelementptr inbounds i16, ptr %3, i64 %2316
  %2320 = load i16, ptr %2319, align 2, !tbaa !38
  %2321 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2320) #8
  %2322 = fadd float %2321, 0.000000e+00
  br label %._crit_edge6331

._crit_edge6331:                                  ; preds = %2317, %2318
  %.42699 = phi float [ %2322, %2318 ], [ 0.000000e+00, %2317 ]
  %2323 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42699) #8
  %2324 = getelementptr inbounds i16, ptr %3, i64 %2316
  store i16 %2323, ptr %2324, align 2, !tbaa !38
  br label %2331

2325:                                             ; preds = %._crit_edge3131.split
  br i1 %2315, label %2326, label %._crit_edge6330

2326:                                             ; preds = %2325
  %2327 = getelementptr inbounds float, ptr %3, i64 %2316
  %2328 = load float, ptr %2327, align 4, !tbaa !27
  %2329 = fadd float %2328, 0.000000e+00
  br label %._crit_edge6330

._crit_edge6330:                                  ; preds = %2325, %2326
  %.52700 = phi float [ %2329, %2326 ], [ 0.000000e+00, %2325 ]
  %2330 = getelementptr inbounds float, ptr %3, i64 %2316
  store float %.52700, ptr %2330, align 4, !tbaa !27
  br label %2331

2331:                                             ; preds = %._crit_edge6330, %._crit_edge6331
  %indvars.iv.next5223 = add nuw nsw i64 %indvars.iv5222, 1
  %exitcond5226.not = icmp eq i64 %indvars.iv.next5223, %wide.trip.count5225
  br i1 %exitcond5226.not, label %._crit_edge3143, label %.preheader2969, !llvm.loop !226

._crit_edge3143:                                  ; preds = %2331, %2237, %.preheader2970
  %indvars.iv.next5259 = add nuw nsw i64 %indvars.iv5258, 1
  %exitcond5262.not = icmp eq i64 %indvars.iv.next5259, %wide.trip.count5261
  br i1 %exitcond5262.not, label %._crit_edge3152, label %.preheader2970, !llvm.loop !230

._crit_edge3152:                                  ; preds = %._crit_edge3143, %2198
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  br label %.loopexit

.thread2862:                                      ; preds = %1045, %1940, %1944, %1948, %1952, %711, %713, %717, %721, %838, %842, %846, %2080, %963, %967, %971, %2174, %2171, %2167
  %2332 = phi i1 [ true, %2174 ], [ true, %2171 ], [ true, %2167 ], [ false, %971 ], [ false, %967 ], [ false, %963 ], [ false, %2080 ], [ false, %846 ], [ false, %842 ], [ false, %838 ], [ false, %721 ], [ false, %717 ], [ false, %713 ], [ false, %711 ], [ false, %1952 ], [ false, %1948 ], [ false, %1944 ], [ false, %1940 ], [ false, %1045 ]
  %2333 = phi i1 [ false, %2174 ], [ false, %2171 ], [ false, %2167 ], [ false, %971 ], [ false, %967 ], [ false, %963 ], [ true, %2080 ], [ false, %846 ], [ false, %842 ], [ false, %838 ], [ false, %721 ], [ false, %717 ], [ false, %713 ], [ false, %711 ], [ true, %1952 ], [ true, %1948 ], [ true, %1944 ], [ true, %1940 ], [ true, %1045 ]
  %2334 = getelementptr inbounds i8, ptr %0, i64 220
  %2335 = load i32, ptr %2334, align 4, !tbaa !231
  %.not2806 = icmp eq i32 %2335, 0
  br i1 %.not2806, label %2548, label %2336

2336:                                             ; preds = %.thread2862
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  store ptr %1, ptr %40, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #8
  store ptr %2, ptr %41, align 8, !tbaa !50
  %2337 = tail call ptr @getenv(ptr noundef nonnull @.str.2) #8
  %2338 = icmp eq ptr %2337, null
  br i1 %2338, label %.thread2867, label %2340

.thread2867:                                      ; preds = %2336
  %2339 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2347

2340:                                             ; preds = %2336
  %2341 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2337, ptr noundef nonnull dereferenceable(1) @.str.3) #9
  %2342 = icmp eq ptr %2337, %2341
  br i1 %2342, label %.thread2869, label %2344

.thread2869:                                      ; preds = %2340
  %2343 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2351

2344:                                             ; preds = %2340
  %2345 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2337, ptr noundef nonnull dereferenceable(1) @.str.4) #9
  %.not2904 = icmp eq ptr %2337, %2345
  %2346 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br i1 %.not2904, label %2351, label %2347

2347:                                             ; preds = %.thread2867, %2344
  %2348 = phi i32 [ %2339, %.thread2867 ], [ %2346, %2344 ]
  %2349 = icmp sgt i32 %2348, 1103
  %2350 = select i1 %2338, i1 %2349, i1 false
  br label %2351

2351:                                             ; preds = %.thread2869, %2344, %2347
  %2352 = phi i1 [ %2350, %2347 ], [ true, %2344 ], [ true, %.thread2869 ]
  %2353 = getelementptr inbounds i8, ptr %0, i64 12
  %2354 = load i32, ptr %2353, align 4, !tbaa !70
  %2355 = icmp eq i32 %2354, 3
  br i1 %2355, label %2359, label %2356

2356:                                             ; preds = %2351
  %2357 = icmp eq i32 %2354, 14
  %2358 = select i1 %2357, i1 %2352, i1 false
  br label %2359

2359:                                             ; preds = %2356, %2351
  %2360 = phi i1 [ true, %2351 ], [ %2358, %2356 ]
  %2361 = icmp sgt i32 %79, 0
  br i1 %2361, label %.preheader2940.lr.ph, label %._crit_edge3463

.preheader2940.lr.ph:                             ; preds = %2359
  %2362 = icmp sgt i32 %77, 0
  %2363 = getelementptr inbounds i8, ptr %0, i64 112
  %2364 = sdiv i32 %.fr4927, 2
  %2365 = icmp sgt i32 %.fr4927, 1
  %2366 = getelementptr inbounds i8, ptr %0, i64 84
  %2367 = getelementptr inbounds i8, ptr %0, i64 256
  %2368 = getelementptr inbounds i8, ptr %0, i64 160
  %2369 = getelementptr inbounds i8, ptr %0, i64 200
  %2370 = getelementptr inbounds i8, ptr %0, i64 68
  %2371 = sext i32 %73 to i64
  %2372 = getelementptr inbounds i8, ptr %0, i64 8
  %2373 = getelementptr inbounds i8, ptr %0, i64 56
  %2374 = sext i32 %71 to i64
  %2375 = sext i32 %75 to i64
  %wide.trip.count5697 = zext nneg i32 %79 to i64
  %wide.trip.count5676 = zext nneg i32 %77 to i64
  %wide.trip.count5692 = zext nneg i32 %77 to i64
  %wide.trip.count5684 = zext nneg i32 %2364 to i64
  br label %.preheader2940

.preheader2940:                                   ; preds = %.preheader2940.lr.ph, %._crit_edge3460
  %indvars.iv5694 = phi i64 [ 0, %.preheader2940.lr.ph ], [ %indvars.iv.next5695, %._crit_edge3460 ]
  br i1 %2362, label %.preheader2939.lr.ph, label %._crit_edge3460

.preheader2939.lr.ph:                             ; preds = %.preheader2940
  %2376 = mul nsw i64 %indvars.iv5694, %2371
  %2377 = mul nsw i64 %indvars.iv5694, %2375
  br i1 %2365, label %.preheader2939.us, label %.preheader2939

.preheader2939.us:                                ; preds = %.preheader2939.lr.ph, %2401
  %indvars.iv5689 = phi i64 [ %indvars.iv.next5690, %2401 ], [ 0, %.preheader2939.lr.ph ]
  %2378 = load i32, ptr %2363, align 8, !tbaa !52
  %2379 = icmp sgt i32 %2378, 0
  br i1 %2379, label %.preheader2938.lr.ph.us.us, label %._crit_edge3456.split.us.us

._crit_edge3456.split.us.us:                      ; preds = %._crit_edge3451.us.us, %.preheader2939.us
  %.02708.lcssa.us = phi float [ 0.000000e+00, %.preheader2939.us ], [ %.32711.us.us.1, %._crit_edge3451.us.us ]
  %2380 = load i32, ptr %2372, align 8, !tbaa !26
  %2381 = icmp eq i32 %2380, 3
  %2382 = load double, ptr %2373, align 8, !tbaa !25
  %2383 = fcmp oeq double %2382, 1.000000e+00
  %2384 = add nsw i64 %indvars.iv5689, %2377
  br i1 %2381, label %2393, label %2385

2385:                                             ; preds = %._crit_edge3456.split.us.us
  br i1 %2383, label %2386, label %._crit_edge6340

2386:                                             ; preds = %2385
  %2387 = getelementptr inbounds float, ptr %3, i64 %2384
  %2388 = load float, ptr %2387, align 4, !tbaa !27
  %2389 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2388) #8
  %2390 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2389) #8
  %2391 = fadd float %.02708.lcssa.us, %2390
  br label %._crit_edge6340

._crit_edge6340:                                  ; preds = %2385, %2386
  %.52713.us = phi float [ %2391, %2386 ], [ %.02708.lcssa.us, %2385 ]
  %2392 = getelementptr inbounds float, ptr %3, i64 %2384
  store float %.52713.us, ptr %2392, align 4, !tbaa !27
  br label %2401

2393:                                             ; preds = %._crit_edge3456.split.us.us
  br i1 %2383, label %2394, label %._crit_edge6341

2394:                                             ; preds = %2393
  %2395 = getelementptr inbounds i16, ptr %3, i64 %2384
  %2396 = load i16, ptr %2395, align 2, !tbaa !38
  %2397 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2396) #8
  %2398 = fadd float %.02708.lcssa.us, %2397
  br label %._crit_edge6341

._crit_edge6341:                                  ; preds = %2393, %2394
  %.42712.us = phi float [ %2398, %2394 ], [ %.02708.lcssa.us, %2393 ]
  %2399 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42712.us) #8
  %2400 = getelementptr inbounds i16, ptr %3, i64 %2384
  store i16 %2399, ptr %2400, align 2, !tbaa !38
  br label %2401

2401:                                             ; preds = %._crit_edge6341, %._crit_edge6340
  %indvars.iv.next5690 = add nuw nsw i64 %indvars.iv5689, 1
  %exitcond5693.not = icmp eq i64 %indvars.iv.next5690, %wide.trip.count5692
  br i1 %exitcond5693.not, label %._crit_edge3460, label %.preheader2939.us, !llvm.loop !232

.preheader2938.lr.ph.us.us:                       ; preds = %.preheader2939.us, %._crit_edge3451.us.us
  %indvars.iv5686 = phi i64 [ %indvars.iv.next5687, %._crit_edge3451.us.us ], [ 0, %.preheader2939.us ]
  %.027083453.us.us = phi float [ %.32711.us.us.1, %._crit_edge3451.us.us ], [ 0.000000e+00, %.preheader2939.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5686, ptr noundef nonnull %0)
  br label %.preheader2938.us.us

2402:                                             ; preds = %.preheader2938.us.us
  %2403 = load i32, ptr %2366, align 4, !tbaa !88
  %2404 = icmp eq i32 %2403, 0
  br i1 %2404, label %2407, label %2405

2405:                                             ; preds = %2402, %.preheader2938.us.us
  %2406 = and i8 %2515, 15
  br label %2409

2407:                                             ; preds = %2402
  %2408 = shl i8 %2515, 4
  %.in2824.us.us = ashr exact i8 %2408, 4
  br label %2409

2409:                                             ; preds = %2407, %2405
  %.02706.us.us = phi i8 [ %.in2824.us.us, %2407 ], [ %2406, %2405 ]
  %2410 = sitofp i8 %.02706.us.us to float
  br i1 %2360, label %2411, label %2414

2411:                                             ; preds = %2409
  %2412 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2410) #8
  %2413 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2412) #8
  br label %2414

2414:                                             ; preds = %2409, %2411
  %.02718.us.us = phi float [ %2413, %2411 ], [ %2410, %2409 ]
  %2415 = load i32, ptr %2367, align 8, !tbaa !233
  %.not2825.us.us = icmp eq i32 %2415, 0
  br i1 %.not2825.us.us, label %2425, label %2416

2416:                                             ; preds = %2414
  %2417 = load ptr, ptr %2368, align 8, !tbaa !234
  %2418 = getelementptr inbounds i16, ptr %2417, i64 %indvars.iv5689
  %2419 = load i16, ptr %2418, align 2, !tbaa !38
  %2420 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2419) #8
  %2421 = fsub float %.02718.us.us, %2420
  br i1 %2360, label %2422, label %2425

2422:                                             ; preds = %2416
  %2423 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2421) #8
  %2424 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2423) #8
  br label %2425

2425:                                             ; preds = %2422, %2416, %2414
  %.22720.us.us = phi float [ %.02718.us.us, %2414 ], [ %2424, %2422 ], [ %2421, %2416 ]
  %2426 = load ptr, ptr %2369, align 8, !tbaa !235
  %2427 = getelementptr inbounds i16, ptr %2426, i64 %indvars.iv5689
  %2428 = load i16, ptr %2427, align 2, !tbaa !38
  %2429 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2428) #8
  %2430 = fmul float %.22720.us.us, %2429
  br i1 %2360, label %2431, label %2434

2431:                                             ; preds = %2425
  %2432 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2430) #8
  %2433 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2432) #8
  br label %2434

2434:                                             ; preds = %2431, %2425
  %.32721.us.us = phi float [ %2433, %2431 ], [ %2430, %2425 ]
  %2435 = load i32, ptr %2370, align 4, !tbaa !73
  %2436 = icmp eq i32 %2435, 0
  %2437 = load ptr, ptr %41, align 8, !tbaa !50
  %2438 = load i64, ptr %6, align 8, !tbaa !19
  %2439 = mul nsw i64 %2509, %2371
  %.sink6745 = select i1 %2436, i64 %2376, i64 %2439
  %.sink6743 = select i1 %2436, i64 %2509, i64 %indvars.iv5694
  %2440 = getelementptr i16, ptr %2437, i64 %2438
  %2441 = getelementptr i16, ptr %2440, i64 %.sink6745
  %2442 = getelementptr i16, ptr %2441, i64 %.sink6743
  %.02701.us.us = load i16, ptr %2442, align 2, !tbaa !38
  %2443 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02701.us.us) #8
  %2444 = call float @llvm.fmuladd.f32(float %.32721.us.us, float %2443, float %.127093449.us.us)
  br i1 %2360, label %2445, label %2448

2445:                                             ; preds = %2434
  %2446 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2444) #8
  %2447 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2446) #8
  br label %2448

2448:                                             ; preds = %2445, %2434
  %.32711.us.us = phi float [ %2447, %2445 ], [ %2444, %2434 ]
  %2449 = load ptr, ptr %40, align 8, !tbaa !50
  %2450 = load i64, ptr %5, align 8, !tbaa !19
  %2451 = getelementptr i8, ptr %2449, i64 %2450
  %2452 = getelementptr i8, ptr %2451, i64 %2508
  %2453 = getelementptr i8, ptr %2452, i64 %indvars.iv5689
  %2454 = load i8, ptr %2453, align 1, !tbaa !41
  %2455 = load i32, ptr %0, align 8, !tbaa !23
  %2456 = icmp eq i32 %2455, 12
  br i1 %2456, label %2457, label %2460

2457:                                             ; preds = %2448
  %2458 = load i32, ptr %2366, align 4, !tbaa !88
  %2459 = icmp eq i32 %2458, 0
  br i1 %2459, label %2462, label %2460

2460:                                             ; preds = %2457, %2448
  %2461 = lshr i8 %2454, 4
  br label %2463

2462:                                             ; preds = %2457
  %.in2824.us.us.1 = ashr i8 %2454, 4
  br label %2463

2463:                                             ; preds = %2462, %2460
  %.02706.us.us.1 = phi i8 [ %.in2824.us.us.1, %2462 ], [ %2461, %2460 ]
  %2464 = sitofp i8 %.02706.us.us.1 to float
  br i1 %2360, label %2465, label %2468

2465:                                             ; preds = %2463
  %2466 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2464) #8
  %2467 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2466) #8
  br label %2468

2468:                                             ; preds = %2463, %2465
  %.02718.us.us.1 = phi float [ %2467, %2465 ], [ %2464, %2463 ]
  %2469 = load i32, ptr %2367, align 8, !tbaa !233
  %.not2825.us.us.1 = icmp eq i32 %2469, 0
  br i1 %.not2825.us.us.1, label %2479, label %2470

2470:                                             ; preds = %2468
  %2471 = load ptr, ptr %2368, align 8, !tbaa !234
  %2472 = getelementptr inbounds i16, ptr %2471, i64 %indvars.iv5689
  %2473 = load i16, ptr %2472, align 2, !tbaa !38
  %2474 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2473) #8
  %2475 = fsub float %.02718.us.us.1, %2474
  br i1 %2360, label %2476, label %2479

2476:                                             ; preds = %2470
  %2477 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2475) #8
  %2478 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2477) #8
  br label %2479

2479:                                             ; preds = %2476, %2470, %2468
  %.22720.us.us.1 = phi float [ %.02718.us.us.1, %2468 ], [ %2478, %2476 ], [ %2475, %2470 ]
  %2480 = load ptr, ptr %2369, align 8, !tbaa !235
  %2481 = getelementptr inbounds i16, ptr %2480, i64 %indvars.iv5689
  %2482 = load i16, ptr %2481, align 2, !tbaa !38
  %2483 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2482) #8
  %2484 = fmul float %.22720.us.us.1, %2483
  br i1 %2360, label %2485, label %2488

2485:                                             ; preds = %2479
  %2486 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2484) #8
  %2487 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2486) #8
  br label %2488

2488:                                             ; preds = %2485, %2479
  %.32721.us.us.1 = phi float [ %2487, %2485 ], [ %2484, %2479 ]
  %2489 = load i32, ptr %2370, align 4, !tbaa !73
  %2490 = icmp eq i32 %2489, 0
  %2491 = load ptr, ptr %41, align 8, !tbaa !50
  %2492 = load i64, ptr %6, align 8, !tbaa !19
  %2493 = getelementptr i16, ptr %2491, i64 %2492
  %2494 = getelementptr i16, ptr %2493, i64 %2376
  %2495 = getelementptr i16, ptr %2494, i64 %2509
  %2496 = getelementptr i8, ptr %2495, i64 2
  %2497 = or disjoint i64 %2509, 1
  %2498 = mul nsw i64 %2497, %2371
  %2499 = getelementptr i16, ptr %2491, i64 %2492
  %2500 = getelementptr i16, ptr %2499, i64 %2498
  %2501 = getelementptr i16, ptr %2500, i64 %indvars.iv5694
  %.02701.in.us.us.1 = select i1 %2490, ptr %2496, ptr %2501
  %.02701.us.us.1 = load i16, ptr %.02701.in.us.us.1, align 2, !tbaa !38
  %2502 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02701.us.us.1) #8
  %2503 = call float @llvm.fmuladd.f32(float %.32721.us.us.1, float %2502, float %.32711.us.us)
  br i1 %2360, label %2504, label %2507

2504:                                             ; preds = %2488
  %2505 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2503) #8
  %2506 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2505) #8
  br label %2507

2507:                                             ; preds = %2504, %2488
  %.32711.us.us.1 = phi float [ %2506, %2504 ], [ %2503, %2488 ]
  %indvars.iv.next5682 = add nuw nsw i64 %indvars.iv5681, 1
  %exitcond5685.not = icmp eq i64 %indvars.iv.next5682, %wide.trip.count5684
  br i1 %exitcond5685.not, label %._crit_edge3451.us.us, label %.preheader2938.us.us, !llvm.loop !236

.preheader2938.us.us:                             ; preds = %2507, %.preheader2938.lr.ph.us.us
  %indvars.iv5681 = phi i64 [ %indvars.iv.next5682, %2507 ], [ 0, %.preheader2938.lr.ph.us.us ]
  %.127093449.us.us = phi float [ %.32711.us.us.1, %2507 ], [ %.027083453.us.us, %.preheader2938.lr.ph.us.us ]
  %2508 = mul nsw i64 %indvars.iv5681, %2374
  %2509 = shl nuw nsw i64 %indvars.iv5681, 1
  %2510 = load ptr, ptr %40, align 8, !tbaa !50
  %2511 = load i64, ptr %5, align 8, !tbaa !19
  %2512 = getelementptr i8, ptr %2510, i64 %2511
  %2513 = getelementptr i8, ptr %2512, i64 %2508
  %2514 = getelementptr i8, ptr %2513, i64 %indvars.iv5689
  %2515 = load i8, ptr %2514, align 1, !tbaa !41
  %2516 = load i32, ptr %0, align 8, !tbaa !23
  %2517 = icmp eq i32 %2516, 12
  br i1 %2517, label %2402, label %2405

._crit_edge3451.us.us:                            ; preds = %2507
  %indvars.iv.next5687 = add nuw nsw i64 %indvars.iv5686, 1
  %2518 = load i32, ptr %2363, align 8, !tbaa !52
  %2519 = sext i32 %2518 to i64
  %2520 = icmp slt i64 %indvars.iv.next5687, %2519
  br i1 %2520, label %.preheader2938.lr.ph.us.us, label %._crit_edge3456.split.us.us, !llvm.loop !237

.preheader2939:                                   ; preds = %.preheader2939.lr.ph, %2547
  %indvars.iv5673 = phi i64 [ %indvars.iv.next5674, %2547 ], [ 0, %.preheader2939.lr.ph ]
  %2521 = load i32, ptr %2363, align 8, !tbaa !52
  %2522 = icmp sgt i32 %2521, 0
  br i1 %2522, label %.lr.ph3455, label %._crit_edge3456.split

.lr.ph3455:                                       ; preds = %.preheader2939, %.lr.ph3455
  %indvars.iv5670 = phi i64 [ %indvars.iv.next5671, %.lr.ph3455 ], [ 0, %.preheader2939 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5670, ptr noundef nonnull %0)
  %indvars.iv.next5671 = add nuw nsw i64 %indvars.iv5670, 1
  %2523 = load i32, ptr %2363, align 8, !tbaa !52
  %2524 = sext i32 %2523 to i64
  %2525 = icmp slt i64 %indvars.iv.next5671, %2524
  br i1 %2525, label %.lr.ph3455, label %._crit_edge3456.split, !llvm.loop !237

._crit_edge3456.split:                            ; preds = %.lr.ph3455, %.preheader2939
  %2526 = load i32, ptr %2372, align 8, !tbaa !26
  %2527 = icmp eq i32 %2526, 3
  %2528 = load double, ptr %2373, align 8, !tbaa !25
  %2529 = fcmp oeq double %2528, 1.000000e+00
  %2530 = add nsw i64 %indvars.iv5673, %2377
  br i1 %2527, label %2531, label %2539

2531:                                             ; preds = %._crit_edge3456.split
  br i1 %2529, label %2532, label %._crit_edge6339

2532:                                             ; preds = %2531
  %2533 = getelementptr inbounds i16, ptr %3, i64 %2530
  %2534 = load i16, ptr %2533, align 2, !tbaa !38
  %2535 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2534) #8
  %2536 = fadd float %2535, 0.000000e+00
  br label %._crit_edge6339

._crit_edge6339:                                  ; preds = %2531, %2532
  %.42712 = phi float [ %2536, %2532 ], [ 0.000000e+00, %2531 ]
  %2537 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42712) #8
  %2538 = getelementptr inbounds i16, ptr %3, i64 %2530
  store i16 %2537, ptr %2538, align 2, !tbaa !38
  br label %2547

2539:                                             ; preds = %._crit_edge3456.split
  br i1 %2529, label %2540, label %._crit_edge6338

2540:                                             ; preds = %2539
  %2541 = getelementptr inbounds float, ptr %3, i64 %2530
  %2542 = load float, ptr %2541, align 4, !tbaa !27
  %2543 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2542) #8
  %2544 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2543) #8
  %2545 = fadd float %2544, 0.000000e+00
  br label %._crit_edge6338

._crit_edge6338:                                  ; preds = %2539, %2540
  %.52713 = phi float [ %2545, %2540 ], [ 0.000000e+00, %2539 ]
  %2546 = getelementptr inbounds float, ptr %3, i64 %2530
  store float %.52713, ptr %2546, align 4, !tbaa !27
  br label %2547

2547:                                             ; preds = %._crit_edge6338, %._crit_edge6339
  %indvars.iv.next5674 = add nuw nsw i64 %indvars.iv5673, 1
  %exitcond5677.not = icmp eq i64 %indvars.iv.next5674, %wide.trip.count5676
  br i1 %exitcond5677.not, label %._crit_edge3460, label %.preheader2939, !llvm.loop !232

._crit_edge3460:                                  ; preds = %2547, %2401, %.preheader2940
  %indvars.iv.next5695 = add nuw nsw i64 %indvars.iv5694, 1
  %exitcond5698.not = icmp eq i64 %indvars.iv.next5695, %wide.trip.count5697
  br i1 %exitcond5698.not, label %._crit_edge3463, label %.preheader2940, !llvm.loop !238

._crit_edge3463:                                  ; preds = %._crit_edge3460, %2359
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %.loopexit

2548:                                             ; preds = %.thread2862
  br i1 %2333, label %2549, label %2799

2549:                                             ; preds = %2548
  %2550 = getelementptr inbounds i8, ptr %0, i64 4
  %2551 = load i32, ptr %2550, align 4, !tbaa !24
  %2552 = icmp eq i32 %2551, 3
  br i1 %2552, label %2553, label %2799

2553:                                             ; preds = %2549
  %2554 = getelementptr inbounds i8, ptr %0, i64 8
  %2555 = load i32, ptr %2554, align 8, !tbaa !26
  %2556 = icmp eq i32 %2555, 3
  br i1 %2556, label %2557, label %2676

2557:                                             ; preds = %2553
  %2558 = getelementptr inbounds i8, ptr %0, i64 12
  %2559 = load i32, ptr %2558, align 4, !tbaa !70
  switch i32 %2559, label %2676 [
    i32 3, label %2560
    i32 1, label %2560
    i32 14, label %2560
  ]

2560:                                             ; preds = %2557, %2557, %2557
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  store ptr %1, ptr %42, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  store ptr %2, ptr %43, align 8, !tbaa !50
  %2561 = tail call ptr @getenv(ptr noundef nonnull @.str.2) #8
  %2562 = icmp eq ptr %2561, null
  br i1 %2562, label %.thread2871, label %2564

.thread2871:                                      ; preds = %2560
  %2563 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2571

2564:                                             ; preds = %2560
  %2565 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2561, ptr noundef nonnull dereferenceable(1) @.str.3) #9
  %2566 = icmp eq ptr %2561, %2565
  br i1 %2566, label %.thread2873, label %2568

.thread2873:                                      ; preds = %2564
  %2567 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2575

2568:                                             ; preds = %2564
  %2569 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2561, ptr noundef nonnull dereferenceable(1) @.str.4) #9
  %.not2905 = icmp eq ptr %2561, %2569
  %2570 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br i1 %.not2905, label %2575, label %2571

2571:                                             ; preds = %.thread2871, %2568
  %2572 = phi i32 [ %2563, %.thread2871 ], [ %2570, %2568 ]
  %2573 = icmp sgt i32 %2572, 1103
  %2574 = select i1 %2562, i1 %2573, i1 false
  br label %2575

2575:                                             ; preds = %.thread2873, %2568, %2571
  %2576 = phi i1 [ %2574, %2571 ], [ true, %2568 ], [ true, %.thread2873 ]
  %2577 = load i32, ptr %2558, align 4, !tbaa !70
  %2578 = icmp eq i32 %2577, 3
  br i1 %2578, label %2582, label %2579

2579:                                             ; preds = %2575
  %2580 = icmp eq i32 %2577, 14
  %2581 = select i1 %2580, i1 %2576, i1 false
  br label %2582

2582:                                             ; preds = %2579, %2575
  %2583 = phi i1 [ true, %2575 ], [ %2581, %2579 ]
  %2584 = icmp sgt i32 %79, 0
  br i1 %2584, label %.preheader2937.lr.ph, label %._crit_edge3479

.preheader2937.lr.ph:                             ; preds = %2582
  %2585 = icmp sgt i32 %77, 0
  %2586 = getelementptr inbounds i8, ptr %0, i64 112
  %2587 = icmp sgt i32 %.fr4927, 0
  %2588 = getelementptr inbounds i8, ptr %0, i64 256
  %2589 = getelementptr inbounds i8, ptr %0, i64 160
  %2590 = getelementptr inbounds i8, ptr %0, i64 200
  %2591 = getelementptr inbounds i8, ptr %0, i64 68
  %2592 = sext i32 %73 to i64
  %2593 = getelementptr inbounds i8, ptr %0, i64 56
  %2594 = sext i32 %71 to i64
  %2595 = sext i32 %75 to i64
  %wide.trip.count5723 = zext nneg i32 %79 to i64
  %wide.trip.count5705 = zext nneg i32 %77 to i64
  %wide.trip.count5718 = zext nneg i32 %77 to i64
  %wide.trip.count5710 = zext nneg i32 %.fr4927 to i64
  br label %.preheader2937

.preheader2937:                                   ; preds = %.preheader2937.lr.ph, %._crit_edge3476
  %indvars.iv5720 = phi i64 [ 0, %.preheader2937.lr.ph ], [ %indvars.iv.next5721, %._crit_edge3476 ]
  br i1 %2585, label %.preheader2936.lr.ph, label %._crit_edge3476

.preheader2936.lr.ph:                             ; preds = %.preheader2937
  %2596 = mul nsw i64 %indvars.iv5720, %2592
  %2597 = mul nsw i64 %indvars.iv5720, %2595
  br i1 %2587, label %.preheader2936.us, label %.preheader2936

.preheader2936.us:                                ; preds = %.preheader2936.lr.ph, %._crit_edge3472.split.us.us._crit_edge
  %indvars.iv5715 = phi i64 [ %indvars.iv.next5716, %._crit_edge3472.split.us.us._crit_edge ], [ 0, %.preheader2936.lr.ph ]
  %2598 = load i32, ptr %2586, align 8, !tbaa !52
  %2599 = icmp sgt i32 %2598, 0
  br i1 %2599, label %.preheader2935.lr.ph.us.us, label %._crit_edge3472.split.us.us

._crit_edge3472.split.us.us:                      ; preds = %._crit_edge3467.us.us, %.preheader2936.us
  %.02724.lcssa.us = phi float [ 0.000000e+00, %.preheader2936.us ], [ %.32727.us.us, %._crit_edge3467.us.us ]
  %2600 = load double, ptr %2593, align 8, !tbaa !25
  %2601 = fcmp oeq double %2600, 1.000000e+00
  %2602 = add nsw i64 %indvars.iv5715, %2597
  br i1 %2601, label %2603, label %._crit_edge3472.split.us.us._crit_edge

2603:                                             ; preds = %._crit_edge3472.split.us.us
  %2604 = getelementptr inbounds i16, ptr %3, i64 %2602
  %2605 = load i16, ptr %2604, align 2, !tbaa !38
  %2606 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2605) #8
  %2607 = fadd float %.02724.lcssa.us, %2606
  br label %._crit_edge3472.split.us.us._crit_edge

._crit_edge3472.split.us.us._crit_edge:           ; preds = %._crit_edge3472.split.us.us, %2603
  %.42728.us = phi float [ %2607, %2603 ], [ %.02724.lcssa.us, %._crit_edge3472.split.us.us ]
  %2608 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42728.us) #8
  %2609 = getelementptr inbounds i16, ptr %3, i64 %2602
  store i16 %2608, ptr %2609, align 2, !tbaa !38
  %indvars.iv.next5716 = add nuw nsw i64 %indvars.iv5715, 1
  %exitcond5719.not = icmp eq i64 %indvars.iv.next5716, %wide.trip.count5718
  br i1 %exitcond5719.not, label %._crit_edge3476, label %.preheader2936.us, !llvm.loop !239

.preheader2935.lr.ph.us.us:                       ; preds = %.preheader2936.us, %._crit_edge3467.us.us
  %indvars.iv5712 = phi i64 [ %indvars.iv.next5713, %._crit_edge3467.us.us ], [ 0, %.preheader2936.us ]
  %.027243469.us.us = phi float [ %.32727.us.us, %._crit_edge3467.us.us ], [ 0.000000e+00, %.preheader2936.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5712, ptr noundef nonnull %0)
  br label %.preheader2935.us.us

2610:                                             ; preds = %.preheader2935.us.us
  %2611 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2657) #8
  %2612 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2611) #8
  br label %2613

2613:                                             ; preds = %.preheader2935.us.us, %2610
  %.02729.us.us = phi float [ %2612, %2610 ], [ %2657, %.preheader2935.us.us ]
  %2614 = load i32, ptr %2588, align 8, !tbaa !233
  %.not2822.us.us = icmp eq i32 %2614, 0
  br i1 %.not2822.us.us, label %2624, label %2615

2615:                                             ; preds = %2613
  %2616 = load ptr, ptr %2589, align 8, !tbaa !234
  %2617 = getelementptr inbounds i16, ptr %2616, i64 %indvars.iv5715
  %2618 = load i16, ptr %2617, align 2, !tbaa !38
  %2619 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2618) #8
  %2620 = fsub float %.02729.us.us, %2619
  br i1 %2583, label %2621, label %2624

2621:                                             ; preds = %2615
  %2622 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2620) #8
  %2623 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2622) #8
  br label %2624

2624:                                             ; preds = %2621, %2615, %2613
  %.22731.us.us = phi float [ %.02729.us.us, %2613 ], [ %2623, %2621 ], [ %2620, %2615 ]
  %2625 = load ptr, ptr %2590, align 8, !tbaa !235
  %2626 = getelementptr inbounds i16, ptr %2625, i64 %indvars.iv5715
  %2627 = load i16, ptr %2626, align 2, !tbaa !38
  %2628 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2627) #8
  %2629 = fmul float %.22731.us.us, %2628
  br i1 %2583, label %2630, label %2633

2630:                                             ; preds = %2624
  %2631 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2629) #8
  %2632 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2631) #8
  br label %2633

2633:                                             ; preds = %2630, %2624
  %.32732.us.us = phi float [ %2632, %2630 ], [ %2629, %2624 ]
  %2634 = load i32, ptr %2591, align 4, !tbaa !73
  %2635 = icmp eq i32 %2634, 0
  %2636 = load ptr, ptr %43, align 8
  %2637 = load i64, ptr %6, align 8
  %2638 = getelementptr i16, ptr %2636, i64 %2637
  %2639 = getelementptr i16, ptr %2638, i64 %2596
  %2640 = getelementptr i16, ptr %2639, i64 %indvars.iv5707
  %2641 = getelementptr i16, ptr %2638, i64 %2650
  %2642 = getelementptr i16, ptr %2641, i64 %indvars.iv5720
  %.02723.in.us.us = select i1 %2635, ptr %2640, ptr %2642
  %.02723.us.us = load i16, ptr %.02723.in.us.us, align 2, !tbaa !38
  %2643 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02723.us.us) #8
  %2644 = call float @llvm.fmuladd.f32(float %.32732.us.us, float %2643, float %.127253465.us.us)
  br i1 %2583, label %2645, label %2648

2645:                                             ; preds = %2633
  %2646 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2644) #8
  %2647 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2646) #8
  br label %2648

2648:                                             ; preds = %2645, %2633
  %.32727.us.us = phi float [ %2647, %2645 ], [ %2644, %2633 ]
  %indvars.iv.next5708 = add nuw nsw i64 %indvars.iv5707, 1
  %exitcond5711.not = icmp eq i64 %indvars.iv.next5708, %wide.trip.count5710
  br i1 %exitcond5711.not, label %._crit_edge3467.us.us, label %.preheader2935.us.us, !llvm.loop !240

.preheader2935.us.us:                             ; preds = %2648, %.preheader2935.lr.ph.us.us
  %indvars.iv5707 = phi i64 [ %indvars.iv.next5708, %2648 ], [ 0, %.preheader2935.lr.ph.us.us ]
  %.127253465.us.us = phi float [ %.32727.us.us, %2648 ], [ %.027243469.us.us, %.preheader2935.lr.ph.us.us ]
  %2649 = mul nsw i64 %indvars.iv5707, %2594
  %2650 = mul nsw i64 %indvars.iv5707, %2592
  %2651 = load ptr, ptr %42, align 8, !tbaa !50
  %2652 = load i64, ptr %5, align 8, !tbaa !19
  %2653 = getelementptr i8, ptr %2651, i64 %2652
  %2654 = getelementptr i8, ptr %2653, i64 %2649
  %2655 = getelementptr i8, ptr %2654, i64 %indvars.iv5715
  %2656 = load i8, ptr %2655, align 1, !tbaa !41
  %2657 = sitofp i8 %2656 to float
  br i1 %2583, label %2610, label %2613

._crit_edge3467.us.us:                            ; preds = %2648
  %indvars.iv.next5713 = add nuw nsw i64 %indvars.iv5712, 1
  %2658 = load i32, ptr %2586, align 8, !tbaa !52
  %2659 = sext i32 %2658 to i64
  %2660 = icmp slt i64 %indvars.iv.next5713, %2659
  br i1 %2660, label %.preheader2935.lr.ph.us.us, label %._crit_edge3472.split.us.us, !llvm.loop !241

.preheader2936:                                   ; preds = %.preheader2936.lr.ph, %._crit_edge3472.split._crit_edge
  %indvars.iv5702 = phi i64 [ %indvars.iv.next5703, %._crit_edge3472.split._crit_edge ], [ 0, %.preheader2936.lr.ph ]
  %2661 = load i32, ptr %2586, align 8, !tbaa !52
  %2662 = icmp sgt i32 %2661, 0
  br i1 %2662, label %.lr.ph3471, label %._crit_edge3472.split

.lr.ph3471:                                       ; preds = %.preheader2936, %.lr.ph3471
  %indvars.iv5699 = phi i64 [ %indvars.iv.next5700, %.lr.ph3471 ], [ 0, %.preheader2936 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5699, ptr noundef nonnull %0)
  %indvars.iv.next5700 = add nuw nsw i64 %indvars.iv5699, 1
  %2663 = load i32, ptr %2586, align 8, !tbaa !52
  %2664 = sext i32 %2663 to i64
  %2665 = icmp slt i64 %indvars.iv.next5700, %2664
  br i1 %2665, label %.lr.ph3471, label %._crit_edge3472.split, !llvm.loop !241

._crit_edge3472.split:                            ; preds = %.lr.ph3471, %.preheader2936
  %2666 = load double, ptr %2593, align 8, !tbaa !25
  %2667 = fcmp oeq double %2666, 1.000000e+00
  %2668 = add nsw i64 %indvars.iv5702, %2597
  br i1 %2667, label %2669, label %._crit_edge3472.split._crit_edge

2669:                                             ; preds = %._crit_edge3472.split
  %2670 = getelementptr inbounds i16, ptr %3, i64 %2668
  %2671 = load i16, ptr %2670, align 2, !tbaa !38
  %2672 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2671) #8
  %2673 = fadd float %2672, 0.000000e+00
  br label %._crit_edge3472.split._crit_edge

._crit_edge3472.split._crit_edge:                 ; preds = %._crit_edge3472.split, %2669
  %.42728 = phi float [ %2673, %2669 ], [ 0.000000e+00, %._crit_edge3472.split ]
  %2674 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42728) #8
  %2675 = getelementptr inbounds i16, ptr %3, i64 %2668
  store i16 %2674, ptr %2675, align 2, !tbaa !38
  %indvars.iv.next5703 = add nuw nsw i64 %indvars.iv5702, 1
  %exitcond5706.not = icmp eq i64 %indvars.iv.next5703, %wide.trip.count5705
  br i1 %exitcond5706.not, label %._crit_edge3476, label %.preheader2936, !llvm.loop !239

._crit_edge3476:                                  ; preds = %._crit_edge3472.split._crit_edge, %._crit_edge3472.split.us.us._crit_edge, %.preheader2937
  %indvars.iv.next5721 = add nuw nsw i64 %indvars.iv5720, 1
  %exitcond5724.not = icmp eq i64 %indvars.iv.next5721, %wide.trip.count5723
  br i1 %exitcond5724.not, label %._crit_edge3479, label %.preheader2937, !llvm.loop !242

._crit_edge3479:                                  ; preds = %._crit_edge3476, %2582
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br label %.loopexit

2676:                                             ; preds = %2557, %2553
  %2677 = getelementptr inbounds i8, ptr %0, i64 8
  %2678 = load i32, ptr %2677, align 8, !tbaa !26
  %2679 = icmp eq i32 %2678, 1
  br i1 %2679, label %2680, label %2799

2680:                                             ; preds = %2676
  %2681 = getelementptr inbounds i8, ptr %0, i64 12
  %2682 = load i32, ptr %2681, align 4, !tbaa !70
  switch i32 %2682, label %2799 [
    i32 3, label %2683
    i32 1, label %2683
    i32 14, label %2683
  ]

2683:                                             ; preds = %2680, %2680, %2680
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  store ptr %1, ptr %44, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  store ptr %2, ptr %45, align 8, !tbaa !50
  %2684 = tail call ptr @getenv(ptr noundef nonnull @.str.2) #8
  %2685 = icmp eq ptr %2684, null
  br i1 %2685, label %.thread2877, label %2687

.thread2877:                                      ; preds = %2683
  %2686 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2694

2687:                                             ; preds = %2683
  %2688 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2684, ptr noundef nonnull dereferenceable(1) @.str.3) #9
  %2689 = icmp eq ptr %2684, %2688
  br i1 %2689, label %.thread2879, label %2691

.thread2879:                                      ; preds = %2687
  %2690 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2698

2691:                                             ; preds = %2687
  %2692 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2684, ptr noundef nonnull dereferenceable(1) @.str.4) #9
  %.not2906 = icmp eq ptr %2684, %2692
  %2693 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br i1 %.not2906, label %2698, label %2694

2694:                                             ; preds = %.thread2877, %2691
  %2695 = phi i32 [ %2686, %.thread2877 ], [ %2693, %2691 ]
  %2696 = icmp sgt i32 %2695, 1103
  %2697 = select i1 %2685, i1 %2696, i1 false
  br label %2698

2698:                                             ; preds = %.thread2879, %2691, %2694
  %2699 = phi i1 [ %2697, %2694 ], [ true, %2691 ], [ true, %.thread2879 ]
  %2700 = load i32, ptr %2681, align 4, !tbaa !70
  %2701 = icmp eq i32 %2700, 3
  br i1 %2701, label %2705, label %2702

2702:                                             ; preds = %2698
  %2703 = icmp eq i32 %2700, 14
  %2704 = select i1 %2703, i1 %2699, i1 false
  br label %2705

2705:                                             ; preds = %2702, %2698
  %2706 = phi i1 [ true, %2698 ], [ %2704, %2702 ]
  %2707 = icmp sgt i32 %79, 0
  br i1 %2707, label %.preheader2934.lr.ph, label %._crit_edge3495

.preheader2934.lr.ph:                             ; preds = %2705
  %2708 = icmp sgt i32 %77, 0
  %2709 = getelementptr inbounds i8, ptr %0, i64 112
  %2710 = icmp sgt i32 %.fr4927, 0
  %2711 = getelementptr inbounds i8, ptr %0, i64 256
  %2712 = getelementptr inbounds i8, ptr %0, i64 160
  %2713 = getelementptr inbounds i8, ptr %0, i64 200
  %2714 = getelementptr inbounds i8, ptr %0, i64 68
  %2715 = sext i32 %73 to i64
  %2716 = getelementptr inbounds i8, ptr %0, i64 56
  %2717 = sext i32 %71 to i64
  %2718 = sext i32 %75 to i64
  %wide.trip.count5749 = zext nneg i32 %79 to i64
  %wide.trip.count5731 = zext nneg i32 %77 to i64
  %wide.trip.count5744 = zext nneg i32 %77 to i64
  %wide.trip.count5736 = zext nneg i32 %.fr4927 to i64
  br label %.preheader2934

.preheader2934:                                   ; preds = %.preheader2934.lr.ph, %._crit_edge3492
  %indvars.iv5746 = phi i64 [ 0, %.preheader2934.lr.ph ], [ %indvars.iv.next5747, %._crit_edge3492 ]
  br i1 %2708, label %.preheader2933.lr.ph, label %._crit_edge3492

.preheader2933.lr.ph:                             ; preds = %.preheader2934
  %2719 = mul nsw i64 %indvars.iv5746, %2715
  %2720 = mul nsw i64 %indvars.iv5746, %2718
  br i1 %2710, label %.preheader2933.us, label %.preheader2933

.preheader2933.us:                                ; preds = %.preheader2933.lr.ph, %._crit_edge3488.split.us.us._crit_edge
  %indvars.iv5741 = phi i64 [ %indvars.iv.next5742, %._crit_edge3488.split.us.us._crit_edge ], [ 0, %.preheader2933.lr.ph ]
  %2721 = load i32, ptr %2709, align 8, !tbaa !52
  %2722 = icmp sgt i32 %2721, 0
  br i1 %2722, label %.preheader2932.lr.ph.us.us, label %._crit_edge3488.split.us.us

._crit_edge3488.split.us.us:                      ; preds = %._crit_edge3483.us.us, %.preheader2933.us
  %.02734.lcssa.us = phi float [ 0.000000e+00, %.preheader2933.us ], [ %.32737.us.us, %._crit_edge3483.us.us ]
  %2723 = load double, ptr %2716, align 8, !tbaa !25
  %2724 = fcmp oeq double %2723, 1.000000e+00
  %2725 = add nsw i64 %indvars.iv5741, %2720
  br i1 %2724, label %2726, label %._crit_edge3488.split.us.us._crit_edge

2726:                                             ; preds = %._crit_edge3488.split.us.us
  %2727 = getelementptr inbounds float, ptr %3, i64 %2725
  %2728 = load float, ptr %2727, align 4, !tbaa !27
  %2729 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2728) #8
  %2730 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2729) #8
  %2731 = fadd float %.02734.lcssa.us, %2730
  br label %._crit_edge3488.split.us.us._crit_edge

._crit_edge3488.split.us.us._crit_edge:           ; preds = %._crit_edge3488.split.us.us, %2726
  %.42738.us = phi float [ %2731, %2726 ], [ %.02734.lcssa.us, %._crit_edge3488.split.us.us ]
  %2732 = getelementptr inbounds float, ptr %3, i64 %2725
  store float %.42738.us, ptr %2732, align 4, !tbaa !27
  %indvars.iv.next5742 = add nuw nsw i64 %indvars.iv5741, 1
  %exitcond5745.not = icmp eq i64 %indvars.iv.next5742, %wide.trip.count5744
  br i1 %exitcond5745.not, label %._crit_edge3492, label %.preheader2933.us, !llvm.loop !243

.preheader2932.lr.ph.us.us:                       ; preds = %.preheader2933.us, %._crit_edge3483.us.us
  %indvars.iv5738 = phi i64 [ %indvars.iv.next5739, %._crit_edge3483.us.us ], [ 0, %.preheader2933.us ]
  %.027343485.us.us = phi float [ %.32737.us.us, %._crit_edge3483.us.us ], [ 0.000000e+00, %.preheader2933.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5738, ptr noundef nonnull %0)
  br label %.preheader2932.us.us

2733:                                             ; preds = %.preheader2932.us.us
  %2734 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2780) #8
  %2735 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2734) #8
  br label %2736

2736:                                             ; preds = %.preheader2932.us.us, %2733
  %.02739.us.us = phi float [ %2735, %2733 ], [ %2780, %.preheader2932.us.us ]
  %2737 = load i32, ptr %2711, align 8, !tbaa !233
  %.not2820.us.us = icmp eq i32 %2737, 0
  br i1 %.not2820.us.us, label %2747, label %2738

2738:                                             ; preds = %2736
  %2739 = load ptr, ptr %2712, align 8, !tbaa !234
  %2740 = getelementptr inbounds i16, ptr %2739, i64 %indvars.iv5741
  %2741 = load i16, ptr %2740, align 2, !tbaa !38
  %2742 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2741) #8
  %2743 = fsub float %.02739.us.us, %2742
  br i1 %2706, label %2744, label %2747

2744:                                             ; preds = %2738
  %2745 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2743) #8
  %2746 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2745) #8
  br label %2747

2747:                                             ; preds = %2744, %2738, %2736
  %.22741.us.us = phi float [ %.02739.us.us, %2736 ], [ %2746, %2744 ], [ %2743, %2738 ]
  %2748 = load ptr, ptr %2713, align 8, !tbaa !235
  %2749 = getelementptr inbounds i16, ptr %2748, i64 %indvars.iv5741
  %2750 = load i16, ptr %2749, align 2, !tbaa !38
  %2751 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2750) #8
  %2752 = fmul float %.22741.us.us, %2751
  br i1 %2706, label %2753, label %2756

2753:                                             ; preds = %2747
  %2754 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2752) #8
  %2755 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2754) #8
  br label %2756

2756:                                             ; preds = %2753, %2747
  %.32742.us.us = phi float [ %2755, %2753 ], [ %2752, %2747 ]
  %2757 = load i32, ptr %2714, align 4, !tbaa !73
  %2758 = icmp eq i32 %2757, 0
  %2759 = load ptr, ptr %45, align 8
  %2760 = load i64, ptr %6, align 8
  %2761 = getelementptr i16, ptr %2759, i64 %2760
  %2762 = getelementptr i16, ptr %2761, i64 %2719
  %2763 = getelementptr i16, ptr %2762, i64 %indvars.iv5733
  %2764 = getelementptr i16, ptr %2761, i64 %2773
  %2765 = getelementptr i16, ptr %2764, i64 %indvars.iv5746
  %.02733.in.us.us = select i1 %2758, ptr %2763, ptr %2765
  %.02733.us.us = load i16, ptr %.02733.in.us.us, align 2, !tbaa !38
  %2766 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02733.us.us) #8
  %2767 = call float @llvm.fmuladd.f32(float %.32742.us.us, float %2766, float %.127353481.us.us)
  br i1 %2706, label %2768, label %2771

2768:                                             ; preds = %2756
  %2769 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2767) #8
  %2770 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2769) #8
  br label %2771

2771:                                             ; preds = %2768, %2756
  %.32737.us.us = phi float [ %2770, %2768 ], [ %2767, %2756 ]
  %indvars.iv.next5734 = add nuw nsw i64 %indvars.iv5733, 1
  %exitcond5737.not = icmp eq i64 %indvars.iv.next5734, %wide.trip.count5736
  br i1 %exitcond5737.not, label %._crit_edge3483.us.us, label %.preheader2932.us.us, !llvm.loop !244

.preheader2932.us.us:                             ; preds = %2771, %.preheader2932.lr.ph.us.us
  %indvars.iv5733 = phi i64 [ %indvars.iv.next5734, %2771 ], [ 0, %.preheader2932.lr.ph.us.us ]
  %.127353481.us.us = phi float [ %.32737.us.us, %2771 ], [ %.027343485.us.us, %.preheader2932.lr.ph.us.us ]
  %2772 = mul nsw i64 %indvars.iv5733, %2717
  %2773 = mul nsw i64 %indvars.iv5733, %2715
  %2774 = load ptr, ptr %44, align 8, !tbaa !50
  %2775 = load i64, ptr %5, align 8, !tbaa !19
  %2776 = getelementptr i8, ptr %2774, i64 %2775
  %2777 = getelementptr i8, ptr %2776, i64 %2772
  %2778 = getelementptr i8, ptr %2777, i64 %indvars.iv5741
  %2779 = load i8, ptr %2778, align 1, !tbaa !41
  %2780 = sitofp i8 %2779 to float
  br i1 %2706, label %2733, label %2736

._crit_edge3483.us.us:                            ; preds = %2771
  %indvars.iv.next5739 = add nuw nsw i64 %indvars.iv5738, 1
  %2781 = load i32, ptr %2709, align 8, !tbaa !52
  %2782 = sext i32 %2781 to i64
  %2783 = icmp slt i64 %indvars.iv.next5739, %2782
  br i1 %2783, label %.preheader2932.lr.ph.us.us, label %._crit_edge3488.split.us.us, !llvm.loop !245

.preheader2933:                                   ; preds = %.preheader2933.lr.ph, %._crit_edge3488.split._crit_edge
  %indvars.iv5728 = phi i64 [ %indvars.iv.next5729, %._crit_edge3488.split._crit_edge ], [ 0, %.preheader2933.lr.ph ]
  %2784 = load i32, ptr %2709, align 8, !tbaa !52
  %2785 = icmp sgt i32 %2784, 0
  br i1 %2785, label %.lr.ph3487, label %._crit_edge3488.split

.lr.ph3487:                                       ; preds = %.preheader2933, %.lr.ph3487
  %indvars.iv5725 = phi i64 [ %indvars.iv.next5726, %.lr.ph3487 ], [ 0, %.preheader2933 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5725, ptr noundef nonnull %0)
  %indvars.iv.next5726 = add nuw nsw i64 %indvars.iv5725, 1
  %2786 = load i32, ptr %2709, align 8, !tbaa !52
  %2787 = sext i32 %2786 to i64
  %2788 = icmp slt i64 %indvars.iv.next5726, %2787
  br i1 %2788, label %.lr.ph3487, label %._crit_edge3488.split, !llvm.loop !245

._crit_edge3488.split:                            ; preds = %.lr.ph3487, %.preheader2933
  %2789 = load double, ptr %2716, align 8, !tbaa !25
  %2790 = fcmp oeq double %2789, 1.000000e+00
  %2791 = add nsw i64 %indvars.iv5728, %2720
  br i1 %2790, label %2792, label %._crit_edge3488.split._crit_edge

2792:                                             ; preds = %._crit_edge3488.split
  %2793 = getelementptr inbounds float, ptr %3, i64 %2791
  %2794 = load float, ptr %2793, align 4, !tbaa !27
  %2795 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2794) #8
  %2796 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2795) #8
  %2797 = fadd float %2796, 0.000000e+00
  br label %._crit_edge3488.split._crit_edge

._crit_edge3488.split._crit_edge:                 ; preds = %._crit_edge3488.split, %2792
  %.42738 = phi float [ %2797, %2792 ], [ 0.000000e+00, %._crit_edge3488.split ]
  %2798 = getelementptr inbounds float, ptr %3, i64 %2791
  store float %.42738, ptr %2798, align 4, !tbaa !27
  %indvars.iv.next5729 = add nuw nsw i64 %indvars.iv5728, 1
  %exitcond5732.not = icmp eq i64 %indvars.iv.next5729, %wide.trip.count5731
  br i1 %exitcond5732.not, label %._crit_edge3492, label %.preheader2933, !llvm.loop !243

._crit_edge3492:                                  ; preds = %._crit_edge3488.split._crit_edge, %._crit_edge3488.split.us.us._crit_edge, %.preheader2934
  %indvars.iv.next5747 = add nuw nsw i64 %indvars.iv5746, 1
  %exitcond5750.not = icmp eq i64 %indvars.iv.next5747, %wide.trip.count5749
  br i1 %exitcond5750.not, label %._crit_edge3495, label %.preheader2934, !llvm.loop !246

._crit_edge3495:                                  ; preds = %._crit_edge3492, %2705
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  br label %.loopexit

2799:                                             ; preds = %2549, %2548, %2680, %2676
  switch i32 %712, label %.thread2888 [
    i32 3, label %2800
    i32 2, label %3086
  ]

2800:                                             ; preds = %2799
  %2801 = getelementptr inbounds i8, ptr %0, i64 4
  %2802 = load i32, ptr %2801, align 4, !tbaa !24
  %2803 = icmp eq i32 %2802, 3
  br i1 %2803, label %2804, label %.thread2888

2804:                                             ; preds = %2800
  %2805 = getelementptr inbounds i8, ptr %0, i64 8
  %2806 = load i32, ptr %2805, align 8, !tbaa !26
  %2807 = icmp eq i32 %2806, 3
  br i1 %2807, label %2808, label %2945

2808:                                             ; preds = %2804
  %2809 = getelementptr inbounds i8, ptr %0, i64 12
  %2810 = load i32, ptr %2809, align 4, !tbaa !70
  switch i32 %2810, label %2945 [
    i32 3, label %2811
    i32 1, label %2811
    i32 14, label %2811
  ]

2811:                                             ; preds = %2808, %2808, %2808
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #8
  store ptr %1, ptr %46, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #8
  store ptr %2, ptr %47, align 8, !tbaa !50
  %2812 = getelementptr inbounds i8, ptr %0, i64 72
  %2813 = load i32, ptr %2812, align 8, !tbaa !225
  %.not2818 = icmp eq i32 %2813, 0
  br i1 %.not2818, label %2817, label %2814

2814:                                             ; preds = %2811
  %2815 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 3) #8
  %2816 = freeze i32 %2815
  br label %2817

2817:                                             ; preds = %2811, %2814
  %.fr4939 = phi i32 [ %2816, %2814 ], [ 1, %2811 ]
  %2818 = tail call ptr @getenv(ptr noundef nonnull @.str.2) #8
  %2819 = icmp eq ptr %2818, null
  br i1 %2819, label %.thread2882, label %2821

.thread2882:                                      ; preds = %2817
  %2820 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2829

2821:                                             ; preds = %2817
  %2822 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2818, ptr noundef nonnull dereferenceable(1) @.str.3) #9
  %2823 = icmp eq ptr %2818, %2822
  br i1 %2823, label %.thread2881, label %2825

.thread2881:                                      ; preds = %2821
  %2824 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2833

2825:                                             ; preds = %2821
  %2826 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2818, ptr noundef nonnull dereferenceable(1) @.str.4) #9
  %2827 = icmp eq ptr %2818, %2826
  %2828 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br i1 %2827, label %2833, label %2829

2829:                                             ; preds = %.thread2882, %2825
  %2830 = phi i32 [ %2820, %.thread2882 ], [ %2828, %2825 ]
  %2831 = icmp sgt i32 %2830, 1103
  %2832 = select i1 %2819, i1 %2831, i1 false
  br label %2833

2833:                                             ; preds = %.thread2881, %2825, %2829
  %2834 = phi i1 [ %2832, %2829 ], [ true, %2825 ], [ true, %.thread2881 ]
  %2835 = load i32, ptr %2809, align 4, !tbaa !70
  %2836 = icmp eq i32 %2835, 3
  %2837 = icmp eq i32 %2835, 14
  %2838 = select i1 %2837, i1 %2834, i1 false
  %2839 = freeze i1 %2838
  %.fr3967 = or i1 %2836, %2839
  %2840 = icmp sgt i32 %79, 0
  br i1 %2840, label %.preheader2929.lr.ph, label %._crit_edge4008

.preheader2929.lr.ph:                             ; preds = %2833
  %2841 = icmp sgt i32 %77, 0
  %2842 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3968 = mul i32 %.fr4939, %71
  %2843 = icmp sgt i32 %.fr4939, 0
  %2844 = getelementptr inbounds i8, ptr %0, i64 68
  %2845 = sext i32 %.fr4939 to i64
  %2846 = sext i32 %73 to i64
  %2847 = getelementptr inbounds i8, ptr %0, i64 56
  %2848 = sext i32 %75 to i64
  %wide.trip.count5882 = zext nneg i32 %79 to i64
  %wide.trip.count5846 = zext nneg i32 %77 to i64
  %wide.trip.count5877 = zext nneg i32 %77 to i64
  %wide.trip.count5851 = zext nneg i32 %.fr4939 to i64
  %wide.trip.count5864 = zext nneg i32 %.fr4939 to i64
  br label %.preheader2929

.preheader2929:                                   ; preds = %.preheader2929.lr.ph, %._crit_edge3998
  %indvars.iv5879 = phi i64 [ 0, %.preheader2929.lr.ph ], [ %indvars.iv.next5880, %._crit_edge3998 ]
  br i1 %2841, label %.preheader2928.lr.ph, label %._crit_edge3998

.preheader2928.lr.ph:                             ; preds = %.preheader2929
  %2849 = mul nsw i64 %indvars.iv5879, %2846
  %2850 = mul nsw i64 %indvars.iv5879, %2848
  br i1 %2843, label %.preheader2928.us, label %.preheader2928

.preheader2928.us:                                ; preds = %.preheader2928.lr.ph, %._crit_edge3985.split.us.us._crit_edge
  %indvars.iv5874 = phi i64 [ %indvars.iv.next5875, %._crit_edge3985.split.us.us._crit_edge ], [ 0, %.preheader2928.lr.ph ]
  %2851 = load i32, ptr %2842, align 8, !tbaa !52
  %2852 = icmp sgt i32 %2851, 0
  br i1 %2852, label %.lr.ph3984.us, label %._crit_edge3985.split.us.us

._crit_edge3985.split.us.us:                      ; preds = %._crit_edge3971.split.us.split.us3991.us, %._crit_edge3971.split.us.split.us.us.us.us, %.preheader2928.us
  %.02749.lcssa.us = phi float [ 0.000000e+00, %.preheader2928.us ], [ %.12750.lcssa.us.us.us, %._crit_edge3971.split.us.split.us.us.us.us ], [ %.12750.lcssa.us.us4001, %._crit_edge3971.split.us.split.us3991.us ]
  %2853 = load double, ptr %2847, align 8, !tbaa !25
  %2854 = fcmp oeq double %2853, 1.000000e+00
  %2855 = add nsw i64 %indvars.iv5874, %2850
  br i1 %2854, label %2856, label %._crit_edge3985.split.us.us._crit_edge

2856:                                             ; preds = %._crit_edge3985.split.us.us
  %2857 = getelementptr inbounds i16, ptr %3, i64 %2855
  %2858 = load i16, ptr %2857, align 2, !tbaa !38
  %2859 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2858) #8
  %2860 = fadd float %.02749.lcssa.us, %2859
  br label %._crit_edge3985.split.us.us._crit_edge

._crit_edge3985.split.us.us._crit_edge:           ; preds = %._crit_edge3985.split.us.us, %2856
  %.42753.us = phi float [ %2860, %2856 ], [ %.02749.lcssa.us, %._crit_edge3985.split.us.us ]
  %2861 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42753.us) #8
  %2862 = getelementptr inbounds i16, ptr %3, i64 %2855
  store i16 %2861, ptr %2862, align 2, !tbaa !38
  %indvars.iv.next5875 = add nuw nsw i64 %indvars.iv5874, 1
  %exitcond5878.not = icmp eq i64 %indvars.iv.next5875, %wide.trip.count5877
  br i1 %exitcond5878.not, label %._crit_edge3998, label %.preheader2928.us, !llvm.loop !247

.lr.ph3984.us:                                    ; preds = %.preheader2928.us
  %2863 = mul nuw nsw i64 %indvars.iv5874, %2845
  br i1 %.fr3967, label %.lr.ph3984.split.us.split.us.us, label %.lr.ph3984.split.us.split.us4005

.lr.ph3984.split.us.split.us4005:                 ; preds = %.lr.ph3984.us, %._crit_edge3971.split.us.split.us3991.us
  %indvars.iv5858 = phi i64 [ %indvars.iv.next5859, %._crit_edge3971.split.us.split.us3991.us ], [ 0, %.lr.ph3984.us ]
  %.027493982.us.us4000 = phi float [ %.12750.lcssa.us.us4001, %._crit_edge3971.split.us.split.us3991.us ], [ 0.000000e+00, %.lr.ph3984.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %46, ptr noundef nonnull %47, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5858, ptr noundef nonnull %0)
  %2864 = sdiv i32 %.fr4927, %.fr4939
  %2865 = icmp sgt i32 %2864, 0
  br i1 %2865, label %.preheader2927.us.us3987.us.preheader, label %._crit_edge3971.split.us.split.us3991.us

.preheader2927.us.us3987.us.preheader:            ; preds = %.lr.ph3984.split.us.split.us4005
  %wide.trip.count5856 = zext nneg i32 %2864 to i64
  br label %.preheader2927.us.us3987.us

._crit_edge3971.split.us.split.us3991.us:         ; preds = %._crit_edge3965.split.us3977.us.us, %.lr.ph3984.split.us.split.us4005
  %.12750.lcssa.us.us4001 = phi float [ %.027493982.us.us4000, %.lr.ph3984.split.us.split.us4005 ], [ %2895, %._crit_edge3965.split.us3977.us.us ]
  %indvars.iv.next5859 = add nuw nsw i64 %indvars.iv5858, 1
  %2866 = load i32, ptr %2842, align 8, !tbaa !52
  %2867 = sext i32 %2866 to i64
  %2868 = icmp slt i64 %indvars.iv.next5859, %2867
  br i1 %2868, label %.lr.ph3984.split.us.split.us4005, label %._crit_edge3985.split.us.us, !llvm.loop !248

.preheader2927.us.us3987.us:                      ; preds = %.preheader2927.us.us3987.us.preheader, %._crit_edge3965.split.us3977.us.us
  %indvars.iv5853 = phi i64 [ 0, %.preheader2927.us.us3987.us.preheader ], [ %indvars.iv.next5854, %._crit_edge3965.split.us3977.us.us ]
  %.127503969.us.us3989.us = phi float [ %.027493982.us.us4000, %.preheader2927.us.us3987.us.preheader ], [ %2895, %._crit_edge3965.split.us3977.us.us ]
  %2869 = trunc nuw nsw i64 %indvars.iv5853 to i32
  %factor.op.mul3961.reass.us.us3990.us = mul i32 %factor.op.mul3968, %2869
  %2870 = sext i32 %factor.op.mul3961.reass.us.us3990.us to i64
  %2871 = mul nuw nsw i64 %indvars.iv5853, %2845
  br label %2872

2872:                                             ; preds = %2872, %.preheader2927.us.us3987.us
  %indvars.iv5848 = phi i64 [ %indvars.iv.next5849, %2872 ], [ 0, %.preheader2927.us.us3987.us ]
  %.227513962.us3974.us.us = phi float [ %2895, %2872 ], [ %.127503969.us.us3989.us, %.preheader2927.us.us3987.us ]
  %2873 = load ptr, ptr %46, align 8, !tbaa !50
  %2874 = load i64, ptr %5, align 8, !tbaa !19
  %2875 = getelementptr i16, ptr %2873, i64 %2874
  %2876 = getelementptr i16, ptr %2875, i64 %2870
  %2877 = getelementptr i16, ptr %2876, i64 %2863
  %2878 = getelementptr i16, ptr %2877, i64 %indvars.iv5848
  %2879 = load i16, ptr %2878, align 2, !tbaa !38
  %2880 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2879) #8
  %2881 = load i32, ptr %2844, align 4, !tbaa !73
  %2882 = icmp eq i32 %2881, 0
  %2883 = load ptr, ptr %47, align 8, !tbaa !50
  %2884 = load i64, ptr %6, align 8, !tbaa !19
  %2885 = getelementptr i16, ptr %2883, i64 %2884
  %2886 = getelementptr i16, ptr %2885, i64 %2849
  %2887 = getelementptr i16, ptr %2886, i64 %2871
  %2888 = getelementptr i16, ptr %2887, i64 %indvars.iv5848
  %2889 = add nuw nsw i64 %2871, %indvars.iv5848
  %2890 = mul nsw i64 %2889, %2846
  %2891 = getelementptr i16, ptr %2883, i64 %2884
  %2892 = getelementptr i16, ptr %2891, i64 %2890
  %2893 = getelementptr i16, ptr %2892, i64 %indvars.iv5879
  %.02748.in.us3975.us.us = select i1 %2882, ptr %2888, ptr %2893
  %.02748.us3976.us.us = load i16, ptr %.02748.in.us3975.us.us, align 2, !tbaa !38
  %2894 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02748.us3976.us.us) #8
  %2895 = call float @llvm.fmuladd.f32(float %2880, float %2894, float %.227513962.us3974.us.us)
  %indvars.iv.next5849 = add nuw nsw i64 %indvars.iv5848, 1
  %exitcond5852.not = icmp eq i64 %indvars.iv.next5849, %wide.trip.count5851
  br i1 %exitcond5852.not, label %._crit_edge3965.split.us3977.us.us, label %2872, !llvm.loop !249

._crit_edge3965.split.us3977.us.us:               ; preds = %2872
  %indvars.iv.next5854 = add nuw nsw i64 %indvars.iv5853, 1
  %exitcond5857.not = icmp eq i64 %indvars.iv.next5854, %wide.trip.count5856
  br i1 %exitcond5857.not, label %._crit_edge3971.split.us.split.us3991.us, label %.preheader2927.us.us3987.us, !llvm.loop !250

.lr.ph3984.split.us.split.us.us:                  ; preds = %.lr.ph3984.us, %._crit_edge3971.split.us.split.us.us.us.us
  %indvars.iv5871 = phi i64 [ %indvars.iv.next5872, %._crit_edge3971.split.us.split.us.us.us.us ], [ 0, %.lr.ph3984.us ]
  %.027493982.us.us.us = phi float [ %.12750.lcssa.us.us.us, %._crit_edge3971.split.us.split.us.us.us.us ], [ 0.000000e+00, %.lr.ph3984.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %46, ptr noundef nonnull %47, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5871, ptr noundef nonnull %0)
  %2896 = sdiv i32 %.fr4927, %.fr4939
  %2897 = icmp sgt i32 %2896, 0
  br i1 %2897, label %.preheader2927.us.us.us.us.us.preheader, label %._crit_edge3971.split.us.split.us.us.us.us

.preheader2927.us.us.us.us.us.preheader:          ; preds = %.lr.ph3984.split.us.split.us.us
  %wide.trip.count5869 = zext nneg i32 %2896 to i64
  br label %.preheader2927.us.us.us.us.us

._crit_edge3971.split.us.split.us.us.us.us:       ; preds = %._crit_edge3965.split.us.us.us.us.us.us, %.lr.ph3984.split.us.split.us.us
  %.12750.lcssa.us.us.us = phi float [ %.027493982.us.us.us, %.lr.ph3984.split.us.split.us.us ], [ %2929, %._crit_edge3965.split.us.us.us.us.us.us ]
  %indvars.iv.next5872 = add nuw nsw i64 %indvars.iv5871, 1
  %2898 = load i32, ptr %2842, align 8, !tbaa !52
  %2899 = sext i32 %2898 to i64
  %2900 = icmp slt i64 %indvars.iv.next5872, %2899
  br i1 %2900, label %.lr.ph3984.split.us.split.us.us, label %._crit_edge3985.split.us.us, !llvm.loop !248

.preheader2927.us.us.us.us.us:                    ; preds = %.preheader2927.us.us.us.us.us.preheader, %._crit_edge3965.split.us.us.us.us.us.us
  %indvars.iv5866 = phi i64 [ 0, %.preheader2927.us.us.us.us.us.preheader ], [ %indvars.iv.next5867, %._crit_edge3965.split.us.us.us.us.us.us ]
  %.127503969.us.us.us.us.us = phi float [ %.027493982.us.us.us, %.preheader2927.us.us.us.us.us.preheader ], [ %2929, %._crit_edge3965.split.us.us.us.us.us.us ]
  %2901 = trunc nuw nsw i64 %indvars.iv5866 to i32
  %factor.op.mul3961.reass.us.us.us.us.us = mul i32 %factor.op.mul3968, %2901
  %2902 = sext i32 %factor.op.mul3961.reass.us.us.us.us.us to i64
  %2903 = mul nuw nsw i64 %indvars.iv5866, %2845
  br label %2904

2904:                                             ; preds = %2904, %.preheader2927.us.us.us.us.us
  %indvars.iv5861 = phi i64 [ %indvars.iv.next5862, %2904 ], [ 0, %.preheader2927.us.us.us.us.us ]
  %.227513962.us.us.us.us.us.us = phi float [ %2929, %2904 ], [ %.127503969.us.us.us.us.us, %.preheader2927.us.us.us.us.us ]
  %2905 = load ptr, ptr %46, align 8, !tbaa !50
  %2906 = load i64, ptr %5, align 8, !tbaa !19
  %2907 = getelementptr i16, ptr %2905, i64 %2906
  %2908 = getelementptr i16, ptr %2907, i64 %2902
  %2909 = getelementptr i16, ptr %2908, i64 %2863
  %2910 = getelementptr i16, ptr %2909, i64 %indvars.iv5861
  %2911 = load i16, ptr %2910, align 2, !tbaa !38
  %2912 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2911) #8
  %2913 = load i32, ptr %2844, align 4, !tbaa !73
  %2914 = icmp eq i32 %2913, 0
  %2915 = load ptr, ptr %47, align 8, !tbaa !50
  %2916 = load i64, ptr %6, align 8, !tbaa !19
  %2917 = getelementptr i16, ptr %2915, i64 %2916
  %2918 = getelementptr i16, ptr %2917, i64 %2849
  %2919 = getelementptr i16, ptr %2918, i64 %2903
  %2920 = getelementptr i16, ptr %2919, i64 %indvars.iv5861
  %2921 = add nuw nsw i64 %2903, %indvars.iv5861
  %2922 = mul nsw i64 %2921, %2846
  %2923 = getelementptr i16, ptr %2915, i64 %2916
  %2924 = getelementptr i16, ptr %2923, i64 %2922
  %2925 = getelementptr i16, ptr %2924, i64 %indvars.iv5879
  %.02748.in.us.us.us.us.us.us = select i1 %2914, ptr %2920, ptr %2925
  %.02748.us.us.us.us.us.us = load i16, ptr %.02748.in.us.us.us.us.us.us, align 2, !tbaa !38
  %2926 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02748.us.us.us.us.us.us) #8
  %2927 = call float @llvm.fmuladd.f32(float %2912, float %2926, float %.227513962.us.us.us.us.us.us)
  %2928 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2927) #8
  %2929 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2928) #8
  %indvars.iv.next5862 = add nuw nsw i64 %indvars.iv5861, 1
  %exitcond5865.not = icmp eq i64 %indvars.iv.next5862, %wide.trip.count5864
  br i1 %exitcond5865.not, label %._crit_edge3965.split.us.us.us.us.us.us, label %2904, !llvm.loop !249

._crit_edge3965.split.us.us.us.us.us.us:          ; preds = %2904
  %indvars.iv.next5867 = add nuw nsw i64 %indvars.iv5866, 1
  %exitcond5870.not = icmp eq i64 %indvars.iv.next5867, %wide.trip.count5869
  br i1 %exitcond5870.not, label %._crit_edge3971.split.us.split.us.us.us.us, label %.preheader2927.us.us.us.us.us, !llvm.loop !250

.preheader2928:                                   ; preds = %.preheader2928.lr.ph, %._crit_edge3985.split._crit_edge
  %indvars.iv5843 = phi i64 [ %indvars.iv.next5844, %._crit_edge3985.split._crit_edge ], [ 0, %.preheader2928.lr.ph ]
  %2930 = load i32, ptr %2842, align 8, !tbaa !52
  %2931 = icmp sgt i32 %2930, 0
  br i1 %2931, label %.lr.ph3984, label %._crit_edge3985.split

.lr.ph3984:                                       ; preds = %.preheader2928, %.lr.ph3984
  %indvars.iv5840 = phi i64 [ %indvars.iv.next5841, %.lr.ph3984 ], [ 0, %.preheader2928 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %46, ptr noundef nonnull %47, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5840, ptr noundef nonnull %0)
  %indvars.iv.next5841 = add nuw nsw i64 %indvars.iv5840, 1
  %2932 = load i32, ptr %2842, align 8, !tbaa !52
  %2933 = sext i32 %2932 to i64
  %2934 = icmp slt i64 %indvars.iv.next5841, %2933
  br i1 %2934, label %.lr.ph3984, label %._crit_edge3985.split, !llvm.loop !248

._crit_edge3985.split:                            ; preds = %.lr.ph3984, %.preheader2928
  %2935 = load double, ptr %2847, align 8, !tbaa !25
  %2936 = fcmp oeq double %2935, 1.000000e+00
  %2937 = add nsw i64 %indvars.iv5843, %2850
  br i1 %2936, label %2938, label %._crit_edge3985.split._crit_edge

2938:                                             ; preds = %._crit_edge3985.split
  %2939 = getelementptr inbounds i16, ptr %3, i64 %2937
  %2940 = load i16, ptr %2939, align 2, !tbaa !38
  %2941 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %2940) #8
  %2942 = fadd float %2941, 0.000000e+00
  br label %._crit_edge3985.split._crit_edge

._crit_edge3985.split._crit_edge:                 ; preds = %._crit_edge3985.split, %2938
  %.42753 = phi float [ %2942, %2938 ], [ 0.000000e+00, %._crit_edge3985.split ]
  %2943 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %.42753) #8
  %2944 = getelementptr inbounds i16, ptr %3, i64 %2937
  store i16 %2943, ptr %2944, align 2, !tbaa !38
  %indvars.iv.next5844 = add nuw nsw i64 %indvars.iv5843, 1
  %exitcond5847.not = icmp eq i64 %indvars.iv.next5844, %wide.trip.count5846
  br i1 %exitcond5847.not, label %._crit_edge3998, label %.preheader2928, !llvm.loop !247

._crit_edge3998:                                  ; preds = %._crit_edge3985.split._crit_edge, %._crit_edge3985.split.us.us._crit_edge, %.preheader2929
  %indvars.iv.next5880 = add nuw nsw i64 %indvars.iv5879, 1
  %exitcond5883.not = icmp eq i64 %indvars.iv.next5880, %wide.trip.count5882
  br i1 %exitcond5883.not, label %._crit_edge4008, label %.preheader2929, !llvm.loop !251

._crit_edge4008:                                  ; preds = %._crit_edge3998, %2833
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  br label %.loopexit

2945:                                             ; preds = %2808, %2804
  %2946 = getelementptr inbounds i8, ptr %0, i64 8
  %2947 = load i32, ptr %2946, align 8, !tbaa !26
  %2948 = icmp eq i32 %2947, 1
  br i1 %2948, label %2949, label %.thread2888

2949:                                             ; preds = %2945
  %2950 = getelementptr inbounds i8, ptr %0, i64 12
  %2951 = load i32, ptr %2950, align 4, !tbaa !70
  switch i32 %2951, label %.thread2888 [
    i32 3, label %2952
    i32 1, label %2952
    i32 14, label %2952
  ]

2952:                                             ; preds = %2949, %2949, %2949
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #8
  store ptr %1, ptr %48, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #8
  store ptr %2, ptr %49, align 8, !tbaa !50
  %2953 = getelementptr inbounds i8, ptr %0, i64 72
  %2954 = load i32, ptr %2953, align 8, !tbaa !225
  %.not2817 = icmp eq i32 %2954, 0
  br i1 %.not2817, label %2958, label %2955

2955:                                             ; preds = %2952
  %2956 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 3) #8
  %2957 = freeze i32 %2956
  br label %2958

2958:                                             ; preds = %2952, %2955
  %.fr4940 = phi i32 [ %2957, %2955 ], [ 1, %2952 ]
  %2959 = tail call ptr @getenv(ptr noundef nonnull @.str.2) #8
  %2960 = icmp eq ptr %2959, null
  br i1 %2960, label %.thread2886, label %2962

.thread2886:                                      ; preds = %2958
  %2961 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2970

2962:                                             ; preds = %2958
  %2963 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2959, ptr noundef nonnull dereferenceable(1) @.str.3) #9
  %2964 = icmp eq ptr %2959, %2963
  br i1 %2964, label %.thread2885, label %2966

.thread2885:                                      ; preds = %2962
  %2965 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br label %2974

2966:                                             ; preds = %2962
  %2967 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %2959, ptr noundef nonnull dereferenceable(1) @.str.4) #9
  %2968 = icmp eq ptr %2959, %2967
  %2969 = tail call i32 @libxsmm_cpuid(ptr noundef null) #8
  br i1 %2968, label %2974, label %2970

2970:                                             ; preds = %.thread2886, %2966
  %2971 = phi i32 [ %2961, %.thread2886 ], [ %2969, %2966 ]
  %2972 = icmp sgt i32 %2971, 1103
  %2973 = select i1 %2960, i1 %2972, i1 false
  br label %2974

2974:                                             ; preds = %.thread2885, %2966, %2970
  %2975 = phi i1 [ %2973, %2970 ], [ true, %2966 ], [ true, %.thread2885 ]
  %2976 = load i32, ptr %2950, align 4, !tbaa !70
  %2977 = icmp eq i32 %2976, 3
  %2978 = icmp eq i32 %2976, 14
  %2979 = select i1 %2978, i1 %2975, i1 false
  %2980 = freeze i1 %2979
  %.fr4015 = or i1 %2977, %2980
  %2981 = icmp sgt i32 %79, 0
  br i1 %2981, label %.preheader2926.lr.ph, label %._crit_edge4056

.preheader2926.lr.ph:                             ; preds = %2974
  %2982 = icmp sgt i32 %77, 0
  %2983 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4016 = mul i32 %.fr4940, %71
  %2984 = icmp sgt i32 %.fr4940, 0
  %2985 = getelementptr inbounds i8, ptr %0, i64 68
  %2986 = sext i32 %.fr4940 to i64
  %2987 = sext i32 %73 to i64
  %2988 = getelementptr inbounds i8, ptr %0, i64 56
  %2989 = sext i32 %75 to i64
  %wide.trip.count5926 = zext nneg i32 %79 to i64
  %wide.trip.count5890 = zext nneg i32 %77 to i64
  %wide.trip.count5921 = zext nneg i32 %77 to i64
  %wide.trip.count5895 = zext nneg i32 %.fr4940 to i64
  %wide.trip.count5908 = zext nneg i32 %.fr4940 to i64
  br label %.preheader2926

.preheader2926:                                   ; preds = %.preheader2926.lr.ph, %._crit_edge4046
  %indvars.iv5923 = phi i64 [ 0, %.preheader2926.lr.ph ], [ %indvars.iv.next5924, %._crit_edge4046 ]
  br i1 %2982, label %.preheader2925.lr.ph, label %._crit_edge4046

.preheader2925.lr.ph:                             ; preds = %.preheader2926
  %2990 = mul nsw i64 %indvars.iv5923, %2987
  %2991 = mul nsw i64 %indvars.iv5923, %2989
  br i1 %2984, label %.preheader2925.us, label %.preheader2925

.preheader2925.us:                                ; preds = %.preheader2925.lr.ph, %._crit_edge4033.split.us.us._crit_edge
  %indvars.iv5918 = phi i64 [ %indvars.iv.next5919, %._crit_edge4033.split.us.us._crit_edge ], [ 0, %.preheader2925.lr.ph ]
  %2992 = load i32, ptr %2983, align 8, !tbaa !52
  %2993 = icmp sgt i32 %2992, 0
  br i1 %2993, label %.lr.ph4032.us, label %._crit_edge4033.split.us.us

._crit_edge4033.split.us.us:                      ; preds = %._crit_edge4019.split.us.split.us4039.us, %._crit_edge4019.split.us.split.us.us.us.us, %.preheader2925.us
  %.02743.lcssa.us = phi float [ 0.000000e+00, %.preheader2925.us ], [ %.12744.lcssa.us.us.us, %._crit_edge4019.split.us.split.us.us.us.us ], [ %.12744.lcssa.us.us4049, %._crit_edge4019.split.us.split.us4039.us ]
  %2994 = load double, ptr %2988, align 8, !tbaa !25
  %2995 = fcmp oeq double %2994, 1.000000e+00
  %2996 = add nsw i64 %indvars.iv5918, %2991
  br i1 %2995, label %2997, label %._crit_edge4033.split.us.us._crit_edge

2997:                                             ; preds = %._crit_edge4033.split.us.us
  %2998 = getelementptr inbounds float, ptr %3, i64 %2996
  %2999 = load float, ptr %2998, align 4, !tbaa !27
  %3000 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %2999) #8
  %3001 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %3000) #8
  %3002 = fadd float %.02743.lcssa.us, %3001
  br label %._crit_edge4033.split.us.us._crit_edge

._crit_edge4033.split.us.us._crit_edge:           ; preds = %._crit_edge4033.split.us.us, %2997
  %.42747.us = phi float [ %3002, %2997 ], [ %.02743.lcssa.us, %._crit_edge4033.split.us.us ]
  %3003 = getelementptr inbounds float, ptr %3, i64 %2996
  store float %.42747.us, ptr %3003, align 4, !tbaa !27
  %indvars.iv.next5919 = add nuw nsw i64 %indvars.iv5918, 1
  %exitcond5922.not = icmp eq i64 %indvars.iv.next5919, %wide.trip.count5921
  br i1 %exitcond5922.not, label %._crit_edge4046, label %.preheader2925.us, !llvm.loop !252

.lr.ph4032.us:                                    ; preds = %.preheader2925.us
  %3004 = mul nuw nsw i64 %indvars.iv5918, %2986
  br i1 %.fr4015, label %.lr.ph4032.split.us.split.us.us, label %.lr.ph4032.split.us.split.us4053

.lr.ph4032.split.us.split.us4053:                 ; preds = %.lr.ph4032.us, %._crit_edge4019.split.us.split.us4039.us
  %indvars.iv5902 = phi i64 [ %indvars.iv.next5903, %._crit_edge4019.split.us.split.us4039.us ], [ 0, %.lr.ph4032.us ]
  %.027434030.us.us4048 = phi float [ %.12744.lcssa.us.us4049, %._crit_edge4019.split.us.split.us4039.us ], [ 0.000000e+00, %.lr.ph4032.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5902, ptr noundef nonnull %0)
  %3005 = sdiv i32 %.fr4927, %.fr4940
  %3006 = icmp sgt i32 %3005, 0
  br i1 %3006, label %.preheader2924.us.us4035.us.preheader, label %._crit_edge4019.split.us.split.us4039.us

.preheader2924.us.us4035.us.preheader:            ; preds = %.lr.ph4032.split.us.split.us4053
  %wide.trip.count5900 = zext nneg i32 %3005 to i64
  br label %.preheader2924.us.us4035.us

._crit_edge4019.split.us.split.us4039.us:         ; preds = %._crit_edge4013.split.us4025.us.us, %.lr.ph4032.split.us.split.us4053
  %.12744.lcssa.us.us4049 = phi float [ %.027434030.us.us4048, %.lr.ph4032.split.us.split.us4053 ], [ %3036, %._crit_edge4013.split.us4025.us.us ]
  %indvars.iv.next5903 = add nuw nsw i64 %indvars.iv5902, 1
  %3007 = load i32, ptr %2983, align 8, !tbaa !52
  %3008 = sext i32 %3007 to i64
  %3009 = icmp slt i64 %indvars.iv.next5903, %3008
  br i1 %3009, label %.lr.ph4032.split.us.split.us4053, label %._crit_edge4033.split.us.us, !llvm.loop !253

.preheader2924.us.us4035.us:                      ; preds = %.preheader2924.us.us4035.us.preheader, %._crit_edge4013.split.us4025.us.us
  %indvars.iv5897 = phi i64 [ 0, %.preheader2924.us.us4035.us.preheader ], [ %indvars.iv.next5898, %._crit_edge4013.split.us4025.us.us ]
  %.127444017.us.us4037.us = phi float [ %.027434030.us.us4048, %.preheader2924.us.us4035.us.preheader ], [ %3036, %._crit_edge4013.split.us4025.us.us ]
  %3010 = trunc nuw nsw i64 %indvars.iv5897 to i32
  %factor.op.mul4009.reass.us.us4038.us = mul i32 %factor.op.mul4016, %3010
  %3011 = sext i32 %factor.op.mul4009.reass.us.us4038.us to i64
  %3012 = mul nuw nsw i64 %indvars.iv5897, %2986
  br label %3013

3013:                                             ; preds = %3013, %.preheader2924.us.us4035.us
  %indvars.iv5892 = phi i64 [ %indvars.iv.next5893, %3013 ], [ 0, %.preheader2924.us.us4035.us ]
  %.227454010.us4022.us.us = phi float [ %3036, %3013 ], [ %.127444017.us.us4037.us, %.preheader2924.us.us4035.us ]
  %3014 = load ptr, ptr %48, align 8, !tbaa !50
  %3015 = load i64, ptr %5, align 8, !tbaa !19
  %3016 = getelementptr i16, ptr %3014, i64 %3015
  %3017 = getelementptr i16, ptr %3016, i64 %3011
  %3018 = getelementptr i16, ptr %3017, i64 %3004
  %3019 = getelementptr i16, ptr %3018, i64 %indvars.iv5892
  %3020 = load i16, ptr %3019, align 2, !tbaa !38
  %3021 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %3020) #8
  %3022 = load i32, ptr %2985, align 4, !tbaa !73
  %3023 = icmp eq i32 %3022, 0
  %3024 = load ptr, ptr %49, align 8, !tbaa !50
  %3025 = load i64, ptr %6, align 8, !tbaa !19
  %3026 = getelementptr i16, ptr %3024, i64 %3025
  %3027 = getelementptr i16, ptr %3026, i64 %2990
  %3028 = getelementptr i16, ptr %3027, i64 %3012
  %3029 = getelementptr i16, ptr %3028, i64 %indvars.iv5892
  %3030 = add nuw nsw i64 %3012, %indvars.iv5892
  %3031 = mul nsw i64 %3030, %2987
  %3032 = getelementptr i16, ptr %3024, i64 %3025
  %3033 = getelementptr i16, ptr %3032, i64 %3031
  %3034 = getelementptr i16, ptr %3033, i64 %indvars.iv5923
  %.02754.in.us4023.us.us = select i1 %3023, ptr %3029, ptr %3034
  %.02754.us4024.us.us = load i16, ptr %.02754.in.us4023.us.us, align 2, !tbaa !38
  %3035 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02754.us4024.us.us) #8
  %3036 = call float @llvm.fmuladd.f32(float %3021, float %3035, float %.227454010.us4022.us.us)
  %indvars.iv.next5893 = add nuw nsw i64 %indvars.iv5892, 1
  %exitcond5896.not = icmp eq i64 %indvars.iv.next5893, %wide.trip.count5895
  br i1 %exitcond5896.not, label %._crit_edge4013.split.us4025.us.us, label %3013, !llvm.loop !254

._crit_edge4013.split.us4025.us.us:               ; preds = %3013
  %indvars.iv.next5898 = add nuw nsw i64 %indvars.iv5897, 1
  %exitcond5901.not = icmp eq i64 %indvars.iv.next5898, %wide.trip.count5900
  br i1 %exitcond5901.not, label %._crit_edge4019.split.us.split.us4039.us, label %.preheader2924.us.us4035.us, !llvm.loop !255

.lr.ph4032.split.us.split.us.us:                  ; preds = %.lr.ph4032.us, %._crit_edge4019.split.us.split.us.us.us.us
  %indvars.iv5915 = phi i64 [ %indvars.iv.next5916, %._crit_edge4019.split.us.split.us.us.us.us ], [ 0, %.lr.ph4032.us ]
  %.027434030.us.us.us = phi float [ %.12744.lcssa.us.us.us, %._crit_edge4019.split.us.split.us.us.us.us ], [ 0.000000e+00, %.lr.ph4032.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5915, ptr noundef nonnull %0)
  %3037 = sdiv i32 %.fr4927, %.fr4940
  %3038 = icmp sgt i32 %3037, 0
  br i1 %3038, label %.preheader2924.us.us.us.us.us.preheader, label %._crit_edge4019.split.us.split.us.us.us.us

.preheader2924.us.us.us.us.us.preheader:          ; preds = %.lr.ph4032.split.us.split.us.us
  %wide.trip.count5913 = zext nneg i32 %3037 to i64
  br label %.preheader2924.us.us.us.us.us

._crit_edge4019.split.us.split.us.us.us.us:       ; preds = %._crit_edge4013.split.us.us.us.us.us.us, %.lr.ph4032.split.us.split.us.us
  %.12744.lcssa.us.us.us = phi float [ %.027434030.us.us.us, %.lr.ph4032.split.us.split.us.us ], [ %3070, %._crit_edge4013.split.us.us.us.us.us.us ]
  %indvars.iv.next5916 = add nuw nsw i64 %indvars.iv5915, 1
  %3039 = load i32, ptr %2983, align 8, !tbaa !52
  %3040 = sext i32 %3039 to i64
  %3041 = icmp slt i64 %indvars.iv.next5916, %3040
  br i1 %3041, label %.lr.ph4032.split.us.split.us.us, label %._crit_edge4033.split.us.us, !llvm.loop !253

.preheader2924.us.us.us.us.us:                    ; preds = %.preheader2924.us.us.us.us.us.preheader, %._crit_edge4013.split.us.us.us.us.us.us
  %indvars.iv5910 = phi i64 [ 0, %.preheader2924.us.us.us.us.us.preheader ], [ %indvars.iv.next5911, %._crit_edge4013.split.us.us.us.us.us.us ]
  %.127444017.us.us.us.us.us = phi float [ %.027434030.us.us.us, %.preheader2924.us.us.us.us.us.preheader ], [ %3070, %._crit_edge4013.split.us.us.us.us.us.us ]
  %3042 = trunc nuw nsw i64 %indvars.iv5910 to i32
  %factor.op.mul4009.reass.us.us.us.us.us = mul i32 %factor.op.mul4016, %3042
  %3043 = sext i32 %factor.op.mul4009.reass.us.us.us.us.us to i64
  %3044 = mul nuw nsw i64 %indvars.iv5910, %2986
  br label %3045

3045:                                             ; preds = %3045, %.preheader2924.us.us.us.us.us
  %indvars.iv5905 = phi i64 [ %indvars.iv.next5906, %3045 ], [ 0, %.preheader2924.us.us.us.us.us ]
  %.227454010.us.us.us.us.us.us = phi float [ %3070, %3045 ], [ %.127444017.us.us.us.us.us, %.preheader2924.us.us.us.us.us ]
  %3046 = load ptr, ptr %48, align 8, !tbaa !50
  %3047 = load i64, ptr %5, align 8, !tbaa !19
  %3048 = getelementptr i16, ptr %3046, i64 %3047
  %3049 = getelementptr i16, ptr %3048, i64 %3043
  %3050 = getelementptr i16, ptr %3049, i64 %3004
  %3051 = getelementptr i16, ptr %3050, i64 %indvars.iv5905
  %3052 = load i16, ptr %3051, align 2, !tbaa !38
  %3053 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %3052) #8
  %3054 = load i32, ptr %2985, align 4, !tbaa !73
  %3055 = icmp eq i32 %3054, 0
  %3056 = load ptr, ptr %49, align 8, !tbaa !50
  %3057 = load i64, ptr %6, align 8, !tbaa !19
  %3058 = getelementptr i16, ptr %3056, i64 %3057
  %3059 = getelementptr i16, ptr %3058, i64 %2990
  %3060 = getelementptr i16, ptr %3059, i64 %3044
  %3061 = getelementptr i16, ptr %3060, i64 %indvars.iv5905
  %3062 = add nuw nsw i64 %3044, %indvars.iv5905
  %3063 = mul nsw i64 %3062, %2987
  %3064 = getelementptr i16, ptr %3056, i64 %3057
  %3065 = getelementptr i16, ptr %3064, i64 %3063
  %3066 = getelementptr i16, ptr %3065, i64 %indvars.iv5923
  %.02754.in.us.us.us.us.us.us = select i1 %3055, ptr %3061, ptr %3066
  %.02754.us.us.us.us.us.us = load i16, ptr %.02754.in.us.us.us.us.us.us, align 2, !tbaa !38
  %3067 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.02754.us.us.us.us.us.us) #8
  %3068 = call float @llvm.fmuladd.f32(float %3053, float %3067, float %.227454010.us.us.us.us.us.us)
  %3069 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %3068) #8
  %3070 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %3069) #8
  %indvars.iv.next5906 = add nuw nsw i64 %indvars.iv5905, 1
  %exitcond5909.not = icmp eq i64 %indvars.iv.next5906, %wide.trip.count5908
  br i1 %exitcond5909.not, label %._crit_edge4013.split.us.us.us.us.us.us, label %3045, !llvm.loop !254

._crit_edge4013.split.us.us.us.us.us.us:          ; preds = %3045
  %indvars.iv.next5911 = add nuw nsw i64 %indvars.iv5910, 1
  %exitcond5914.not = icmp eq i64 %indvars.iv.next5911, %wide.trip.count5913
  br i1 %exitcond5914.not, label %._crit_edge4019.split.us.split.us.us.us.us, label %.preheader2924.us.us.us.us.us, !llvm.loop !255

.preheader2925:                                   ; preds = %.preheader2925.lr.ph, %._crit_edge4033.split._crit_edge
  %indvars.iv5887 = phi i64 [ %indvars.iv.next5888, %._crit_edge4033.split._crit_edge ], [ 0, %.preheader2925.lr.ph ]
  %3071 = load i32, ptr %2983, align 8, !tbaa !52
  %3072 = icmp sgt i32 %3071, 0
  br i1 %3072, label %.lr.ph4032, label %._crit_edge4033.split

.lr.ph4032:                                       ; preds = %.preheader2925, %.lr.ph4032
  %indvars.iv5884 = phi i64 [ %indvars.iv.next5885, %.lr.ph4032 ], [ 0, %.preheader2925 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5884, ptr noundef nonnull %0)
  %indvars.iv.next5885 = add nuw nsw i64 %indvars.iv5884, 1
  %3073 = load i32, ptr %2983, align 8, !tbaa !52
  %3074 = sext i32 %3073 to i64
  %3075 = icmp slt i64 %indvars.iv.next5885, %3074
  br i1 %3075, label %.lr.ph4032, label %._crit_edge4033.split, !llvm.loop !253

._crit_edge4033.split:                            ; preds = %.lr.ph4032, %.preheader2925
  %3076 = load double, ptr %2988, align 8, !tbaa !25
  %3077 = fcmp oeq double %3076, 1.000000e+00
  %3078 = add nsw i64 %indvars.iv5887, %2991
  br i1 %3077, label %3079, label %._crit_edge4033.split._crit_edge

3079:                                             ; preds = %._crit_edge4033.split
  %3080 = getelementptr inbounds float, ptr %3, i64 %3078
  %3081 = load float, ptr %3080, align 4, !tbaa !27
  %3082 = call zeroext i16 @libxsmm_convert_f32_to_f16(float noundef %3081) #8
  %3083 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %3082) #8
  %3084 = fadd float %3083, 0.000000e+00
  br label %._crit_edge4033.split._crit_edge

._crit_edge4033.split._crit_edge:                 ; preds = %._crit_edge4033.split, %3079
  %.42747 = phi float [ %3084, %3079 ], [ 0.000000e+00, %._crit_edge4033.split ]
  %3085 = getelementptr inbounds float, ptr %3, i64 %3078
  store float %.42747, ptr %3085, align 4, !tbaa !27
  %indvars.iv.next5888 = add nuw nsw i64 %indvars.iv5887, 1
  %exitcond5891.not = icmp eq i64 %indvars.iv.next5888, %wide.trip.count5890
  br i1 %exitcond5891.not, label %._crit_edge4046, label %.preheader2925, !llvm.loop !252

._crit_edge4046:                                  ; preds = %._crit_edge4033.split._crit_edge, %._crit_edge4033.split.us.us._crit_edge, %.preheader2926
  %indvars.iv.next5924 = add nuw nsw i64 %indvars.iv5923, 1
  %exitcond5927.not = icmp eq i64 %indvars.iv.next5924, %wide.trip.count5926
  br i1 %exitcond5927.not, label %._crit_edge4056, label %.preheader2926, !llvm.loop !256

._crit_edge4056:                                  ; preds = %._crit_edge4046, %2974
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  br label %.loopexit

3086:                                             ; preds = %2799
  %3087 = getelementptr inbounds i8, ptr %0, i64 4
  %3088 = load i32, ptr %3087, align 4, !tbaa !24
  %3089 = icmp eq i32 %3088, 2
  br i1 %3089, label %3090, label %.thread2888

3090:                                             ; preds = %3086
  %3091 = getelementptr inbounds i8, ptr %0, i64 8
  %3092 = load i32, ptr %3091, align 8, !tbaa !26
  %3093 = icmp eq i32 %3092, 1
  br i1 %3093, label %3094, label %.thread2888

3094:                                             ; preds = %3090
  %3095 = getelementptr inbounds i8, ptr %0, i64 12
  %3096 = load i32, ptr %3095, align 4, !tbaa !70
  %3097 = icmp eq i32 %3096, 1
  br i1 %3097, label %3098, label %.thread2888

3098:                                             ; preds = %3094
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #8
  store ptr %1, ptr %50, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  store ptr %2, ptr %51, align 8, !tbaa !50
  %3099 = getelementptr inbounds i8, ptr %0, i64 72
  %3100 = load i32, ptr %3099, align 8, !tbaa !225
  %.not2816 = icmp eq i32 %3100, 0
  br i1 %.not2816, label %3104, label %3101

3101:                                             ; preds = %3098
  %3102 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 2) #8
  %3103 = freeze i32 %3102
  br label %3104

3104:                                             ; preds = %3098, %3101
  %.fr4938 = phi i32 [ %3103, %3101 ], [ 1, %3098 ]
  %3105 = icmp sgt i32 %79, 0
  br i1 %3105, label %.preheader2931.lr.ph, label %._crit_edge3960

.preheader2931.lr.ph:                             ; preds = %3104
  %3106 = icmp sgt i32 %77, 0
  %3107 = getelementptr inbounds i8, ptr %0, i64 56
  %3108 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul3542 = mul i32 %.fr4938, %71
  %factor.op.mul = mul i32 %.fr4938, %73
  %.1926383498 = add i32 %.fr4938, -1
  %3109 = icmp sgt i32 %.fr4938, 0
  %3110 = getelementptr inbounds i8, ptr %0, i64 64
  %3111 = getelementptr inbounds i8, ptr %0, i64 68
  %3112 = getelementptr inbounds i8, ptr %0, i64 76
  %3113 = zext i32 %.1926383498 to i64
  %3114 = zext i32 %.fr4938 to i64
  %3115 = sext i32 %.fr4938 to i64
  %3116 = add nsw i64 %3115, -1
  %3117 = sext i32 %73 to i64
  %3118 = sext i32 %71 to i64
  %3119 = sext i32 %75 to i64
  %wide.trip.count5838 = zext nneg i32 %79 to i64
  %wide.trip.count5757 = zext nneg i32 %77 to i64
  %wide.trip.count5833 = zext nneg i32 %77 to i64
  %3120 = add nuw nsw i64 %3113, 1
  %xtraiter7583 = and i32 %.fr4938, 7
  %lcmp.mod7584.not = icmp eq i32 %xtraiter7583, 0
  %3121 = icmp ult i32 %.fr4938, 8
  %xtraiter7587 = and i32 %.fr4938, 7
  %lcmp.mod7588.not = icmp eq i32 %xtraiter7587, 0
  %3122 = icmp ult i32 %.fr4938, 8
  %xtraiter7591 = and i64 %3120, 3
  %lcmp.mod7592.not = icmp eq i64 %xtraiter7591, 0
  %3123 = icmp ult i32 %.fr4938, 4
  %xtraiter7595 = and i32 %.fr4938, 7
  %lcmp.mod7596.not = icmp eq i32 %xtraiter7595, 0
  %3124 = icmp ult i32 %.fr4938, 8
  %xtraiter7599 = and i64 %3120, 3
  %lcmp.mod7600.not = icmp eq i64 %xtraiter7599, 0
  %3125 = icmp ult i32 %.fr4938, 4
  %xtraiter7603 = and i32 %.fr4938, 7
  %lcmp.mod7604.not = icmp eq i32 %xtraiter7603, 0
  %3126 = icmp ult i32 %.fr4938, 8
  %xtraiter7607 = and i64 %3120, 3
  %lcmp.mod7608.not = icmp eq i64 %xtraiter7607, 0
  %3127 = icmp ult i32 %.fr4938, 4
  %3128 = and i64 %3113, 1
  %lcmp.mod7612.not.not = icmp eq i64 %3128, 0
  %indvars.iv.next5776.prol = add nsw i64 %3113, -1
  %3129 = icmp eq i32 %.1926383498, 0
  %xtraiter7616 = and i64 %3120, 3
  %lcmp.mod7617.not = icmp eq i64 %xtraiter7616, 0
  %3130 = icmp ult i32 %.fr4938, 4
  %xtraiter7620 = and i64 %3120, 3
  %lcmp.mod7621.not = icmp eq i64 %xtraiter7620, 0
  %3131 = icmp ult i32 %.fr4938, 4
  %3132 = and i64 %3113, 1
  %lcmp.mod7625.not.not = icmp eq i64 %3132, 0
  %indvars.iv.next5800.prol = add nsw i64 %3113, -1
  %3133 = icmp eq i32 %.1926383498, 0
  %xtraiter7628 = and i64 %3120, 3
  %lcmp.mod7629.not = icmp eq i64 %xtraiter7628, 0
  %3134 = icmp ult i32 %.fr4938, 4
  %xtraiter7632 = and i64 %3115, 1
  %lcmp.mod7633.not = icmp eq i64 %xtraiter7632, 0
  %indvars.iv.next5814.prol = add nsw i64 %3115, -2
  %3135 = icmp eq i64 %3116, 0
  %3136 = and i64 %3113, 1
  %lcmp.mod7637.not.not = icmp eq i64 %3136, 0
  %indvars.iv.next5820.prol = add nsw i64 %3113, -1
  %3137 = icmp eq i32 %.1926383498, 0
  br label %.preheader2931

.preheader2931:                                   ; preds = %.preheader2931.lr.ph, %._crit_edge3893
  %indvars.iv5835 = phi i64 [ 0, %.preheader2931.lr.ph ], [ %indvars.iv.next5836, %._crit_edge3893 ]
  %3138 = phi i32 [ undef, %.preheader2931.lr.ph ], [ %.lcssa3010, %._crit_edge3893 ]
  %3139 = phi i32 [ undef, %.preheader2931.lr.ph ], [ %.lcssa3011, %._crit_edge3893 ]
  br i1 %3106, label %.lr.ph3892, label %._crit_edge3893

.lr.ph3892:                                       ; preds = %.preheader2931
  %3140 = mul nsw i64 %indvars.iv5835, %3119
  %3141 = mul nsw i64 %indvars.iv5835, %3117
  %3142 = mul nsw i64 %indvars.iv5835, %3115
  %invariant.gep6680 = getelementptr float, ptr %3, i64 %3140
  br i1 %3109, label %.lr.ph3892.split.us.preheader, label %.lr.ph3892.split

.lr.ph3892.split.us.preheader:                    ; preds = %.lr.ph3892
  %invariant.gep6682 = getelementptr float, ptr %3, i64 %3140
  br label %.lr.ph3892.split.us

.lr.ph3892.split.us:                              ; preds = %.lr.ph3892.split.us.preheader, %._crit_edge3680.split.us.us
  %indvars.iv5830 = phi i64 [ 0, %.lr.ph3892.split.us.preheader ], [ %indvars.iv.next5831, %._crit_edge3680.split.us.us ]
  %3143 = phi i32 [ %3138, %.lr.ph3892.split.us.preheader ], [ %.lcssa3008.us, %._crit_edge3680.split.us.us ]
  %3144 = phi i32 [ %3139, %.lr.ph3892.split.us.preheader ], [ %.lcssa3009.us, %._crit_edge3680.split.us.us ]
  %3145 = load double, ptr %3107, align 8, !tbaa !25
  %3146 = fcmp oeq double %3145, 0.000000e+00
  br i1 %3146, label %3147, label %3148

3147:                                             ; preds = %.lr.ph3892.split.us
  %gep6681 = getelementptr float, ptr %invariant.gep6680, i64 %indvars.iv5830
  store float 0.000000e+00, ptr %gep6681, align 4, !tbaa !27
  br label %3148

3148:                                             ; preds = %3147, %.lr.ph3892.split.us
  %3149 = load i32, ptr %3108, align 8, !tbaa !52
  %3150 = icmp sgt i32 %3149, 0
  br i1 %3150, label %.lr.ph3679.us, label %._crit_edge3680.split.us.us

._crit_edge3680.split.us.us:                      ; preds = %3158, %3148
  %.lcssa3009.us = phi i32 [ %3144, %3148 ], [ %.lcssa3007.us.us, %3158 ]
  %.lcssa3008.us = phi i32 [ %3143, %3148 ], [ %.lcssa3006.us.us, %3158 ]
  %indvars.iv.next5831 = add nuw nsw i64 %indvars.iv5830, 1
  %exitcond5834.not = icmp eq i64 %indvars.iv.next5831, %wide.trip.count5833
  br i1 %exitcond5834.not, label %._crit_edge3893, label %.lr.ph3892.split.us, !llvm.loop !257

.lr.ph3679.us:                                    ; preds = %3148
  %3151 = mul nsw i64 %indvars.iv5830, %3118
  %3152 = mul nuw nsw i64 %indvars.iv5830, %3115
  %gep6683 = getelementptr float, ptr %invariant.gep6682, i64 %indvars.iv5830
  br label %3153

3153:                                             ; preds = %3158, %.lr.ph3679.us
  %indvars.iv5827 = phi i64 [ %indvars.iv.next5828, %3158 ], [ 0, %.lr.ph3679.us ]
  %3154 = phi i32 [ %.lcssa3006.us.us, %3158 ], [ %3143, %.lr.ph3679.us ]
  %3155 = phi i32 [ %.lcssa3007.us.us, %3158 ], [ %3144, %.lr.ph3679.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %50, ptr noundef nonnull %51, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5827, ptr noundef nonnull %0)
  %3156 = sdiv i32 %.fr4927, %.fr4938
  %3157 = icmp sgt i32 %3156, 0
  br i1 %3157, label %.preheader2930.lr.ph.us.us, label %3158

3158:                                             ; preds = %._crit_edge3546.split.us.us.us, %3153
  %.lcssa3007.us.us = phi i32 [ %.us-phi3610.us.us, %._crit_edge3546.split.us.us.us ], [ %3155, %3153 ]
  %.lcssa3006.us.us = phi i32 [ %.us-phi3612.us.us, %._crit_edge3546.split.us.us.us ], [ %3154, %3153 ]
  %indvars.iv.next5828 = add nuw nsw i64 %indvars.iv5827, 1
  %3159 = load i32, ptr %3108, align 8, !tbaa !52
  %3160 = sext i32 %3159 to i64
  %3161 = icmp slt i64 %indvars.iv.next5828, %3160
  br i1 %3161, label %3153, label %._crit_edge3680.split.us.us, !llvm.loop !258

.preheader2930.lr.ph.us.us:                       ; preds = %3153
  %3162 = load ptr, ptr %50, align 8
  %3163 = load i64, ptr %5, align 8
  %3164 = getelementptr i16, ptr %3162, i64 %3163
  %3165 = getelementptr i16, ptr %3164, i64 %3151
  %invariant.gep3551.us.us = getelementptr i16, ptr %3164, i64 %3152
  %3166 = load ptr, ptr %51, align 8
  %3167 = load i64, ptr %6, align 8
  %3168 = getelementptr i16, ptr %3166, i64 %3167
  %3169 = getelementptr i16, ptr %3168, i64 %3141
  %invariant.gep.us3685.us = getelementptr i16, ptr %3168, i64 %indvars.iv5835
  %3170 = getelementptr i16, ptr %3168, i64 %3142
  %3171 = load i32, ptr %3110, align 8, !tbaa !74
  %3172 = icmp eq i32 %3171, 0
  %3173 = icmp sgt i32 %3171, 0
  %3174 = load i32, ptr %3111, align 4, !tbaa !73
  %3175 = icmp sgt i32 %3174, 0
  %3176 = icmp eq i32 %3174, 0
  %.promoted.us.us3898 = load float, ptr %gep6683, align 4, !tbaa !27
  br i1 %3175, label %.preheader2930.lr.ph.split.us.split.us.us.us, label %.preheader2930.lr.ph.split.us.split.us3695.us

.preheader2930.us.us3686.us3899:                  ; preds = %.preheader2930.us.us3686.us3899.preheader, %._crit_edge3501.split.split.us3564.us.split.split.us
  %.us-phi.us35713608.us3687.us3900 = phi float [ %.lcssa7396, %._crit_edge3501.split.split.us3564.us.split.split.us ], [ %.promoted.us.us3898, %.preheader2930.us.us3686.us3899.preheader ]
  %.2226053545.us.us3688.us3901 = phi i32 [ %3189, %._crit_edge3501.split.split.us3564.us.split.split.us ], [ 0, %.preheader2930.us.us3686.us3899.preheader ]
  br i1 %lcmp.mod7584.not, label %.thread2890.us3559.us.us.prol.loopexit, label %.thread2890.us3559.us.us.prol

.thread2890.us3559.us.us.prol:                    ; preds = %.preheader2930.us.us3686.us3899, %.thread2890.us3559.us.us.prol
  %3177 = phi float [ %3178, %.thread2890.us3559.us.us.prol ], [ %.us-phi.us35713608.us3687.us3900, %.preheader2930.us.us3686.us3899 ]
  %.1926383499.us3552.us.us.prol = phi i32 [ %.192638.us3562.us.us.prol, %.thread2890.us3559.us.us.prol ], [ %.1926383498, %.preheader2930.us.us3686.us3899 ]
  %prol.iter7585 = phi i32 [ %prol.iter7585.next, %.thread2890.us3559.us.us.prol ], [ 0, %.preheader2930.us.us3686.us3899 ]
  %3178 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3177)
  %.192638.us3562.us.us.prol = add nsw i32 %.1926383499.us3552.us.us.prol, -1
  %prol.iter7585.next = add i32 %prol.iter7585, 1
  %prol.iter7585.cmp.not = icmp eq i32 %prol.iter7585.next, %xtraiter7583
  br i1 %prol.iter7585.cmp.not, label %.thread2890.us3559.us.us.prol.loopexit, label %.thread2890.us3559.us.us.prol, !llvm.loop !259

.thread2890.us3559.us.us.prol.loopexit:           ; preds = %.thread2890.us3559.us.us.prol, %.preheader2930.us.us3686.us3899
  %.unr7586 = phi float [ %.us-phi.us35713608.us3687.us3900, %.preheader2930.us.us3686.us3899 ], [ %3178, %.thread2890.us3559.us.us.prol ]
  %.1926383499.us3552.us.us.unr = phi i32 [ %.1926383498, %.preheader2930.us.us3686.us3899 ], [ %.192638.us3562.us.us.prol, %.thread2890.us3559.us.us.prol ]
  %.lcssa7396.unr = phi float [ poison, %.preheader2930.us.us3686.us3899 ], [ %3178, %.thread2890.us3559.us.us.prol ]
  br i1 %3121, label %._crit_edge3501.split.split.us3564.us.split.split.us, label %.thread2890.us3559.us.us

.thread2890.us3559.us.us:                         ; preds = %.thread2890.us3559.us.us.prol.loopexit, %.thread2890.us3559.us.us
  %3179 = phi float [ %3187, %.thread2890.us3559.us.us ], [ %.unr7586, %.thread2890.us3559.us.us.prol.loopexit ]
  %.1926383499.us3552.us.us = phi i32 [ %.192638.us3562.us.us.7, %.thread2890.us3559.us.us ], [ %.1926383499.us3552.us.us.unr, %.thread2890.us3559.us.us.prol.loopexit ]
  %3180 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3179)
  %3181 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3180)
  %3182 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3181)
  %3183 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3182)
  %3184 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3183)
  %3185 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3184)
  %3186 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3185)
  %3187 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us, float %.sroa.0193.5.us3561.us.us, float %3186)
  %.192638.us3562.us.us.7 = add nsw i32 %.1926383499.us3552.us.us, -8
  %3188 = icmp sgt i32 %.1926383499.us3552.us.us, 7
  br i1 %3188, label %.thread2890.us3559.us.us, label %._crit_edge3501.split.split.us3564.us.split.split.us, !llvm.loop !260

._crit_edge3501.split.split.us3564.us.split.split.us: ; preds = %.thread2890.us3559.us.us, %.thread2890.us3559.us.us.prol.loopexit
  %.lcssa7396 = phi float [ %.lcssa7396.unr, %.thread2890.us3559.us.us.prol.loopexit ], [ %3187, %.thread2890.us3559.us.us ]
  %3189 = add nuw nsw i32 %.2226053545.us.us3688.us3901, 1
  %exitcond5759.not = icmp eq i32 %3189, %3156
  br i1 %exitcond5759.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us3686.us3899, !llvm.loop !261

.preheader2930.lr.ph.split.us.split.us3695.us:    ; preds = %.preheader2930.lr.ph.us.us
  br i1 %3172, label %.preheader2930.lr.ph.split.us.split.split.us.us.us, label %.preheader2930.lr.ph.split.us.split.split.us3712.us

._crit_edge3546.split.us.us.us:                   ; preds = %._crit_edge3501.split.split.us3564.us.split.split.us, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us, %._crit_edge3501.split.split.us3564.us.split.us.us.us, %._crit_edge3501.split.split.us.split.us3583.us.us.us, %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us, %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us, %._crit_edge3501.split.us.us.us.us.us
  %.us-phi.us3696.us = phi float [ %.us-phi3639.us.us, %._crit_edge3501.split.us.us.us.us.us ], [ %.lcssa7406, %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us ], [ %.lcssa7405, %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us ], [ %.lcssa7404, %._crit_edge3501.split.split.us.split.us3583.us.us.us ], [ %.us-phi3839.us, %._crit_edge3501.split.split.us3564.us.split.us.us.us ], [ %.lcssa7398, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us ], [ %.lcssa7397, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us ], [ %.lcssa7396, %._crit_edge3501.split.split.us3564.us.split.split.us ]
  %.us-phi3610.us.us = phi i32 [ %.us-phi3640.us.us, %._crit_edge3501.split.us.us.us.us.us ], [ %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.lcssa, %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us ], [ %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.lcssa, %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us ], [ %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.lcssa, %._crit_edge3501.split.split.us.split.us3583.us.us.us ], [ %.us-phi3840.us, %._crit_edge3501.split.split.us3564.us.split.us.us.us ], [ %3341, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us ], [ %3341, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us ], [ %3342, %._crit_edge3501.split.split.us3564.us.split.split.us ]
  %.us-phi3612.us.us = phi i32 [ %.us-phi3642.us.us, %._crit_edge3501.split.us.us.us.us.us ], [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.lcssa, %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us ], [ %3237, %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us ], [ %3217, %._crit_edge3501.split.split.us.split.us3583.us.us.us ], [ %.us-phi3842.us, %._crit_edge3501.split.split.us3564.us.split.us.us.us ], [ %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.lcssa, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us ], [ %3363, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us ], [ %3343, %._crit_edge3501.split.split.us3564.us.split.split.us ]
  store float %.us-phi.us3696.us, ptr %gep6683, align 4, !tbaa !27
  br label %3158

.preheader2930.lr.ph.split.us.split.us.us.us:     ; preds = %.preheader2930.lr.ph.us.us
  %3190 = load i32, ptr %3112, align 4, !tbaa !262
  %3191 = icmp sgt i32 %3190, 0
  %wide.trip.count5825 = zext nneg i32 %3156 to i64
  %3192 = icmp eq i32 %3190, 0
  br label %.preheader2930.us.us.us.us

.preheader2930.us.us.us.us:                       ; preds = %._crit_edge3501.split.us.us.us.us.us, %.preheader2930.lr.ph.split.us.split.us.us.us
  %indvars.iv5822 = phi i64 [ %indvars.iv.next5823, %._crit_edge3501.split.us.us.us.us.us ], [ 0, %.preheader2930.lr.ph.split.us.split.us.us.us ]
  %.us-phi.us35713608.us.us.us = phi float [ %.us-phi3639.us.us, %._crit_edge3501.split.us.us.us.us.us ], [ %.promoted.us.us3898, %.preheader2930.lr.ph.split.us.split.us.us.us ]
  %3193 = phi i32 [ %.us-phi3642.us.us, %._crit_edge3501.split.us.us.us.us.us ], [ %3154, %.preheader2930.lr.ph.split.us.split.us.us.us ]
  %3194 = phi i32 [ %.us-phi3640.us.us, %._crit_edge3501.split.us.us.us.us.us ], [ %3155, %.preheader2930.lr.ph.split.us.split.us.us.us ]
  %3195 = trunc nuw nsw i64 %indvars.iv5822 to i32
  %factor.op.mul.reass.us.us3609.us.us = mul i32 %factor.op.mul3542, %3195
  %factor.op.mul3496.reass.us.us.us.us = mul i32 %factor.op.mul, %3195
  %3196 = mul nuw nsw i64 %indvars.iv5822, %3115
  %3197 = getelementptr i16, ptr %3165, i64 %3196
  %3198 = sext i32 %factor.op.mul.reass.us.us3609.us.us to i64
  %gep.us3563.us.us.us = getelementptr i16, ptr %invariant.gep3551.us.us, i64 %3198
  %3199 = sext i32 %factor.op.mul3496.reass.us.us.us.us to i64
  %3200 = getelementptr i16, ptr %3170, i64 %3199
  br i1 %3191, label %.lr.ph3500.split.us.us.us.split.us.us.us, label %.lr.ph3500.split.us.us.us.split.us3738.us

.lr.ph3500.split.us.us.us.split.split.us3752.us:  ; preds = %.lr.ph3500.split.us.us.us.split.us3738.us, %.thread2890.us.us.us.us3703.us
  %indvars.iv5807 = phi i64 [ %indvars.iv.next5808, %.thread2890.us.us.us.us3703.us ], [ %3116, %.lr.ph3500.split.us.us.us.split.us3738.us ]
  %3201 = phi float [ %3215, %.thread2890.us.us.us.us3703.us ], [ %.us-phi.us35713608.us.us.us, %.lr.ph3500.split.us.us.us.split.us3738.us ]
  %3202 = phi i32 [ %.sroa.0193.5.in.us.us.us.us.us, %.thread2890.us.us.us.us3703.us ], [ %3193, %.lr.ph3500.split.us.us.us.split.us3738.us ]
  %3203 = phi i32 [ %.sroa.0204.5.in.us.us.us.us3701.us, %.thread2890.us.us.us.us3703.us ], [ %3194, %.lr.ph3500.split.us.us.us.split.us3738.us ]
  %.sroa.0204.0.insert.mask.us.us.us.us3698.us = and i32 %3203, -65536
  br i1 %3173, label %3204, label %3210

3204:                                             ; preds = %.lr.ph3500.split.us.us.us.split.split.us3752.us
  %3205 = load i32, ptr %3099, align 8, !tbaa !225
  %3206 = icmp eq i32 %3205, 0
  br i1 %3206, label %3207, label %3210

3207:                                             ; preds = %3204
  %3208 = getelementptr i16, ptr %3197, i64 %indvars.iv5807
  %3209 = load i16, ptr %3208, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us.us.us.us3699.us = zext i16 %3209 to i32
  %.sroa.0204.2.insert.shift207.us.us.us.us3700.us = shl nuw i32 %.sroa.0204.2.insert.ext206.us.us.us.us3699.us, 16
  br label %3210

3210:                                             ; preds = %3207, %3204, %.lr.ph3500.split.us.us.us.split.split.us3752.us
  %.sroa.0204.5.in.us.us.us.us3701.us = phi i32 [ %.sroa.0204.2.insert.shift207.us.us.us.us3700.us, %3207 ], [ %.sroa.0204.0.insert.mask.us.us.us.us3698.us, %3204 ], [ %.sroa.0204.0.insert.mask.us.us.us.us3698.us, %.lr.ph3500.split.us.us.us.split.split.us3752.us ]
  %.sroa.0204.5.us.us.us.us3702.us = bitcast i32 %.sroa.0204.5.in.us.us.us.us3701.us to float
  %.sroa.0193.0.insert.mask.us.us.us.us.us = and i32 %3202, -65536
  br i1 %3192, label %3211, label %.thread2890.us.us.us.us3703.us

3211:                                             ; preds = %3210
  %3212 = add nsw i64 %indvars.iv5807, %3196
  %3213 = mul nsw i64 %3212, %3117
  %gep.us.us3572.us.us.us = getelementptr i16, ptr %invariant.gep.us3685.us, i64 %3213
  %3214 = load i16, ptr %gep.us.us3572.us.us.us, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext195.us.us.us.us.us = zext i16 %3214 to i32
  %.sroa.0193.2.insert.shift196.us.us.us.us.us = shl nuw i32 %.sroa.0193.2.insert.ext195.us.us.us.us.us, 16
  br label %.thread2890.us.us.us.us3703.us

.thread2890.us.us.us.us3703.us:                   ; preds = %3211, %3210
  %.sroa.0193.5.in.us.us.us.us.us = phi i32 [ %.sroa.0193.2.insert.shift196.us.us.us.us.us, %3211 ], [ %.sroa.0193.0.insert.mask.us.us.us.us.us, %3210 ]
  %.sroa.0193.5.us.us.us.us3704.us = bitcast i32 %.sroa.0193.5.in.us.us.us.us.us to float
  %3215 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3702.us, float %.sroa.0193.5.us.us.us.us3704.us, float %3201)
  %indvars.iv.next5808 = add nsw i64 %indvars.iv5807, -1
  %3216 = icmp sgt i64 %indvars.iv5807, 0
  br i1 %3216, label %.lr.ph3500.split.us.us.us.split.split.us3752.us, label %._crit_edge3501.split.us.us.us.us.us, !llvm.loop !260

.preheader2930.lr.ph.split.us.split.split.us3712.us: ; preds = %.preheader2930.lr.ph.split.us.split.us3695.us
  br i1 %3173, label %.preheader2930.lr.ph.split.us.split.split.us3712.split.us.us, label %.preheader2930.lr.ph.split.us.split.split.us3712.split.us3908

.preheader2930.lr.ph.split.us.split.split.us.us.us: ; preds = %.preheader2930.lr.ph.split.us.split.us3695.us
  br i1 %3176, label %.preheader2930.lr.ph.split.us.split.split.us.split.us.us.us, label %.preheader2930.us.us3614.us3714.us.preheader

.preheader2930.us.us3614.us3714.us.preheader:     ; preds = %.preheader2930.lr.ph.split.us.split.split.us.us.us
  %3217 = and i32 %3154, -65536
  %wide.trip.count5789 = zext nneg i32 %3156 to i64
  %.sroa.0193.0.insert.mask.us3517.us3580.us.us.us = and i32 %3154, -65536
  %.sroa.0193.5.us3520.us3581.us.us.us = bitcast i32 %.sroa.0193.0.insert.mask.us3517.us3580.us.us.us to float
  br label %.preheader2930.us.us3614.us3714.us

.preheader2930.us.us3614.us3714.us:               ; preds = %.preheader2930.us.us3614.us3714.us.preheader, %._crit_edge3501.split.split.us.split.us3583.us.us.us
  %indvars.iv5786 = phi i64 [ 0, %.preheader2930.us.us3614.us3714.us.preheader ], [ %indvars.iv.next5787, %._crit_edge3501.split.split.us.split.us3583.us.us.us ]
  %.us-phi.us35713608.us3615.us3715.us = phi float [ %.promoted.us.us3898, %.preheader2930.us.us3614.us3714.us.preheader ], [ %.lcssa7404, %._crit_edge3501.split.split.us.split.us3583.us.us.us ]
  %3218 = trunc nuw nsw i64 %indvars.iv5786 to i32
  %factor.op.mul.reass.us.us3617.us3717.us = mul i32 %factor.op.mul3542, %3218
  %3219 = sext i32 %factor.op.mul.reass.us.us3617.us3717.us to i64
  %gep.us3563.us3618.us3718.us = getelementptr i16, ptr %invariant.gep3551.us.us, i64 %3219
  br i1 %lcmp.mod7617.not, label %.thread2890.us3518.us3575.us.us.us.prol.loopexit, label %.thread2890.us3518.us3575.us.us.us.prol

.thread2890.us3518.us3575.us.us.us.prol:          ; preds = %.preheader2930.us.us3614.us3714.us, %.thread2890.us3518.us3575.us.us.us.prol
  %indvars.iv5783.prol = phi i64 [ %indvars.iv.next5784.prol, %.thread2890.us3518.us3575.us.us.us.prol ], [ %3113, %.preheader2930.us.us3614.us3714.us ]
  %3220 = phi float [ %3223, %.thread2890.us3518.us3575.us.us.us.prol ], [ %.us-phi.us35713608.us3615.us3715.us, %.preheader2930.us.us3614.us3714.us ]
  %prol.iter7618 = phi i64 [ %prol.iter7618.next, %.thread2890.us3518.us3575.us.us.us.prol ], [ 0, %.preheader2930.us.us3614.us3714.us ]
  %3221 = getelementptr i16, ptr %gep.us3563.us3618.us3718.us, i64 %indvars.iv5783.prol
  %3222 = load i16, ptr %3221, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.prol = zext i16 %3222 to i32
  %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.prol, 16
  %.sroa.0204.5.us3516.us3579.us.us.us.prol = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.prol to float
  %3223 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us3579.us.us.us.prol, float %.sroa.0193.5.us3520.us3581.us.us.us, float %3220)
  %indvars.iv.next5784.prol = add nsw i64 %indvars.iv5783.prol, -1
  %prol.iter7618.next = add i64 %prol.iter7618, 1
  %prol.iter7618.cmp.not = icmp eq i64 %prol.iter7618.next, %xtraiter7616
  br i1 %prol.iter7618.cmp.not, label %.thread2890.us3518.us3575.us.us.us.prol.loopexit, label %.thread2890.us3518.us3575.us.us.us.prol, !llvm.loop !263

.thread2890.us3518.us3575.us.us.us.prol.loopexit: ; preds = %.thread2890.us3518.us3575.us.us.us.prol, %.preheader2930.us.us3614.us3714.us
  %indvars.iv5783.unr = phi i64 [ %3113, %.preheader2930.us.us3614.us3714.us ], [ %indvars.iv.next5784.prol, %.thread2890.us3518.us3575.us.us.us.prol ]
  %.unr7619 = phi float [ %.us-phi.us35713608.us3615.us3715.us, %.preheader2930.us.us3614.us3714.us ], [ %3223, %.thread2890.us3518.us3575.us.us.us.prol ]
  %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2930.us.us3614.us3714.us ], [ %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.prol, %.thread2890.us3518.us3575.us.us.us.prol ]
  %.lcssa7404.unr = phi float [ poison, %.preheader2930.us.us3614.us3714.us ], [ %3223, %.thread2890.us3518.us3575.us.us.us.prol ]
  br i1 %3130, label %._crit_edge3501.split.split.us.split.us3583.us.us.us, label %.preheader2930.us.us3614.us3714.us.new

.preheader2930.us.us3614.us3714.us.new:           ; preds = %.thread2890.us3518.us3575.us.us.us.prol.loopexit
  %invariant.gep7869 = getelementptr i8, ptr %gep.us3563.us3618.us3718.us, i64 -2
  %invariant.gep7871 = getelementptr i8, ptr %gep.us3563.us3618.us3718.us, i64 -4
  %invariant.gep7873 = getelementptr i8, ptr %gep.us3563.us3618.us3718.us, i64 -6
  br label %.thread2890.us3518.us3575.us.us.us

.thread2890.us3518.us3575.us.us.us:               ; preds = %.thread2890.us3518.us3575.us.us.us, %.preheader2930.us.us3614.us3714.us.new
  %indvars.iv5783 = phi i64 [ %indvars.iv5783.unr, %.preheader2930.us.us3614.us3714.us.new ], [ %indvars.iv.next5784.3, %.thread2890.us3518.us3575.us.us.us ]
  %3224 = phi float [ %.unr7619, %.preheader2930.us.us3614.us3714.us.new ], [ %3233, %.thread2890.us3518.us3575.us.us.us ]
  %3225 = getelementptr i16, ptr %gep.us3563.us3618.us3718.us, i64 %indvars.iv5783
  %3226 = load i16, ptr %3225, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us = zext i16 %3226 to i32
  %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us, 16
  %.sroa.0204.5.us3516.us3579.us.us.us = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us to float
  %3227 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us3579.us.us.us, float %.sroa.0193.5.us3520.us3581.us.us.us, float %3224)
  %gep7870 = getelementptr i16, ptr %invariant.gep7869, i64 %indvars.iv5783
  %3228 = load i16, ptr %gep7870, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.1 = zext i16 %3228 to i32
  %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.1, 16
  %.sroa.0204.5.us3516.us3579.us.us.us.1 = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.1 to float
  %3229 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us3579.us.us.us.1, float %.sroa.0193.5.us3520.us3581.us.us.us, float %3227)
  %gep7872 = getelementptr i16, ptr %invariant.gep7871, i64 %indvars.iv5783
  %3230 = load i16, ptr %gep7872, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.2 = zext i16 %3230 to i32
  %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.2 = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.2, 16
  %.sroa.0204.5.us3516.us3579.us.us.us.2 = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.2 to float
  %3231 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us3579.us.us.us.2, float %.sroa.0193.5.us3520.us3581.us.us.us, float %3229)
  %gep7874 = getelementptr i16, ptr %invariant.gep7873, i64 %indvars.iv5783
  %3232 = load i16, ptr %gep7874, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.3 = zext i16 %3232 to i32
  %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.3 = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us3577.us.us.us.3, 16
  %.sroa.0204.5.us3516.us3579.us.us.us.3 = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.3 to float
  %3233 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us3579.us.us.us.3, float %.sroa.0193.5.us3520.us3581.us.us.us, float %3231)
  %indvars.iv.next5784.3 = add nsw i64 %indvars.iv5783, -4
  %3234 = icmp sgt i64 %indvars.iv5783, 3
  br i1 %3234, label %.thread2890.us3518.us3575.us.us.us, label %._crit_edge3501.split.split.us.split.us3583.us.us.us, !llvm.loop !260

._crit_edge3501.split.split.us.split.us3583.us.us.us: ; preds = %.thread2890.us3518.us3575.us.us.us, %.thread2890.us3518.us3575.us.us.us.prol.loopexit
  %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.lcssa = phi i32 [ %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.lcssa.unr, %.thread2890.us3518.us3575.us.us.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift.us3514.us3578.us.us.us.3, %.thread2890.us3518.us3575.us.us.us ]
  %.lcssa7404 = phi float [ %.lcssa7404.unr, %.thread2890.us3518.us3575.us.us.us.prol.loopexit ], [ %3233, %.thread2890.us3518.us3575.us.us.us ]
  %indvars.iv.next5787 = add nuw nsw i64 %indvars.iv5786, 1
  %exitcond5790.not = icmp eq i64 %indvars.iv.next5787, %wide.trip.count5789
  br i1 %exitcond5790.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us3614.us3714.us, !llvm.loop !261

.preheader2930.lr.ph.split.us.split.split.us.split.us.us.us: ; preds = %.preheader2930.lr.ph.split.us.split.split.us.us.us
  %3235 = load i32, ptr %3112, align 4, !tbaa !262
  %3236 = icmp eq i32 %3235, 0
  br i1 %3236, label %.preheader2930.us.us3614.us.us.us.us.preheader, label %.preheader2930.us.us3614.us.us3726.us.preheader

.preheader2930.us.us3614.us.us3726.us.preheader:  ; preds = %.preheader2930.lr.ph.split.us.split.split.us.split.us.us.us
  %3237 = and i32 %3154, -65536
  %wide.trip.count5797 = zext nneg i32 %3156 to i64
  %.sroa.0193.0.insert.mask.us3517.us.us.us.us.us.us = and i32 %3154, -65536
  %.sroa.0193.5.us3520.us.us3595.us.us.us.us = bitcast i32 %.sroa.0193.0.insert.mask.us3517.us.us.us.us.us.us to float
  br label %.preheader2930.us.us3614.us.us3726.us

.preheader2930.us.us3614.us.us.us.us.preheader:   ; preds = %.preheader2930.lr.ph.split.us.split.split.us.split.us.us.us
  %wide.trip.count5805 = zext nneg i32 %3156 to i64
  br label %.preheader2930.us.us3614.us.us.us.us

.preheader2930.us.us3614.us.us3726.us:            ; preds = %.preheader2930.us.us3614.us.us3726.us.preheader, %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us
  %indvars.iv5794 = phi i64 [ 0, %.preheader2930.us.us3614.us.us3726.us.preheader ], [ %indvars.iv.next5795, %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us ]
  %.us-phi.us35713608.us3615.us.us3727.us = phi float [ %.promoted.us.us3898, %.preheader2930.us.us3614.us.us3726.us.preheader ], [ %.lcssa7405, %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us ]
  %3238 = trunc nuw nsw i64 %indvars.iv5794 to i32
  %factor.op.mul.reass.us.us3617.us.us3729.us = mul i32 %factor.op.mul3542, %3238
  %3239 = sext i32 %factor.op.mul.reass.us.us3617.us.us3729.us to i64
  %gep.us3563.us3618.us.us3730.us = getelementptr i16, ptr %invariant.gep3551.us.us, i64 %3239
  br i1 %lcmp.mod7621.not, label %.thread2890.us3518.us.us3590.us.us.us.us.prol.loopexit, label %.thread2890.us3518.us.us3590.us.us.us.us.prol

.thread2890.us3518.us.us3590.us.us.us.us.prol:    ; preds = %.preheader2930.us.us3614.us.us3726.us, %.thread2890.us3518.us.us3590.us.us.us.us.prol
  %indvars.iv5791.prol = phi i64 [ %indvars.iv.next5792.prol, %.thread2890.us3518.us.us3590.us.us.us.us.prol ], [ %3113, %.preheader2930.us.us3614.us.us3726.us ]
  %3240 = phi float [ %3243, %.thread2890.us3518.us.us3590.us.us.us.us.prol ], [ %.us-phi.us35713608.us3615.us.us3727.us, %.preheader2930.us.us3614.us.us3726.us ]
  %prol.iter7622 = phi i64 [ %prol.iter7622.next, %.thread2890.us3518.us.us3590.us.us.us.us.prol ], [ 0, %.preheader2930.us.us3614.us.us3726.us ]
  %3241 = getelementptr i16, ptr %gep.us3563.us3618.us.us3730.us, i64 %indvars.iv5791.prol
  %3242 = load i16, ptr %3241, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.prol = zext i16 %3242 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.prol, 16
  %.sroa.0204.5.us3516.us.us3594.us.us.us.us.prol = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.prol to float
  %3243 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us3594.us.us.us.us.prol, float %.sroa.0193.5.us3520.us.us3595.us.us.us.us, float %3240)
  %indvars.iv.next5792.prol = add nsw i64 %indvars.iv5791.prol, -1
  %prol.iter7622.next = add i64 %prol.iter7622, 1
  %prol.iter7622.cmp.not = icmp eq i64 %prol.iter7622.next, %xtraiter7620
  br i1 %prol.iter7622.cmp.not, label %.thread2890.us3518.us.us3590.us.us.us.us.prol.loopexit, label %.thread2890.us3518.us.us3590.us.us.us.us.prol, !llvm.loop !264

.thread2890.us3518.us.us3590.us.us.us.us.prol.loopexit: ; preds = %.thread2890.us3518.us.us3590.us.us.us.us.prol, %.preheader2930.us.us3614.us.us3726.us
  %indvars.iv5791.unr = phi i64 [ %3113, %.preheader2930.us.us3614.us.us3726.us ], [ %indvars.iv.next5792.prol, %.thread2890.us3518.us.us3590.us.us.us.us.prol ]
  %.unr7623 = phi float [ %.us-phi.us35713608.us3615.us.us3727.us, %.preheader2930.us.us3614.us.us3726.us ], [ %3243, %.thread2890.us3518.us.us3590.us.us.us.us.prol ]
  %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2930.us.us3614.us.us3726.us ], [ %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.prol, %.thread2890.us3518.us.us3590.us.us.us.us.prol ]
  %.lcssa7405.unr = phi float [ poison, %.preheader2930.us.us3614.us.us3726.us ], [ %3243, %.thread2890.us3518.us.us3590.us.us.us.us.prol ]
  br i1 %3131, label %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us, label %.preheader2930.us.us3614.us.us3726.us.new

.preheader2930.us.us3614.us.us3726.us.new:        ; preds = %.thread2890.us3518.us.us3590.us.us.us.us.prol.loopexit
  %invariant.gep7875 = getelementptr i8, ptr %gep.us3563.us3618.us.us3730.us, i64 -2
  %invariant.gep7877 = getelementptr i8, ptr %gep.us3563.us3618.us.us3730.us, i64 -4
  %invariant.gep7879 = getelementptr i8, ptr %gep.us3563.us3618.us.us3730.us, i64 -6
  br label %.thread2890.us3518.us.us3590.us.us.us.us

.thread2890.us3518.us.us3590.us.us.us.us:         ; preds = %.thread2890.us3518.us.us3590.us.us.us.us, %.preheader2930.us.us3614.us.us3726.us.new
  %indvars.iv5791 = phi i64 [ %indvars.iv5791.unr, %.preheader2930.us.us3614.us.us3726.us.new ], [ %indvars.iv.next5792.3, %.thread2890.us3518.us.us3590.us.us.us.us ]
  %3244 = phi float [ %.unr7623, %.preheader2930.us.us3614.us.us3726.us.new ], [ %3253, %.thread2890.us3518.us.us3590.us.us.us.us ]
  %3245 = getelementptr i16, ptr %gep.us3563.us3618.us.us3730.us, i64 %indvars.iv5791
  %3246 = load i16, ptr %3245, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us = zext i16 %3246 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us, 16
  %.sroa.0204.5.us3516.us.us3594.us.us.us.us = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us to float
  %3247 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us3594.us.us.us.us, float %.sroa.0193.5.us3520.us.us3595.us.us.us.us, float %3244)
  %gep7876 = getelementptr i16, ptr %invariant.gep7875, i64 %indvars.iv5791
  %3248 = load i16, ptr %gep7876, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.1 = zext i16 %3248 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.1, 16
  %.sroa.0204.5.us3516.us.us3594.us.us.us.us.1 = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.1 to float
  %3249 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us3594.us.us.us.us.1, float %.sroa.0193.5.us3520.us.us3595.us.us.us.us, float %3247)
  %gep7878 = getelementptr i16, ptr %invariant.gep7877, i64 %indvars.iv5791
  %3250 = load i16, ptr %gep7878, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.2 = zext i16 %3250 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.2 = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.2, 16
  %.sroa.0204.5.us3516.us.us3594.us.us.us.us.2 = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.2 to float
  %3251 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us3594.us.us.us.us.2, float %.sroa.0193.5.us3520.us.us3595.us.us.us.us, float %3249)
  %gep7880 = getelementptr i16, ptr %invariant.gep7879, i64 %indvars.iv5791
  %3252 = load i16, ptr %gep7880, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.3 = zext i16 %3252 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.3 = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us3592.us.us.us.us.3, 16
  %.sroa.0204.5.us3516.us.us3594.us.us.us.us.3 = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.3 to float
  %3253 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us3594.us.us.us.us.3, float %.sroa.0193.5.us3520.us.us3595.us.us.us.us, float %3251)
  %indvars.iv.next5792.3 = add nsw i64 %indvars.iv5791, -4
  %3254 = icmp sgt i64 %indvars.iv5791, 3
  br i1 %3254, label %.thread2890.us3518.us.us3590.us.us.us.us, label %._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us, !llvm.loop !260

._crit_edge3501.split.split.us.split.us.split.us3597.us.us.us.us: ; preds = %.thread2890.us3518.us.us3590.us.us.us.us, %.thread2890.us3518.us.us3590.us.us.us.us.prol.loopexit
  %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.lcssa = phi i32 [ %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.lcssa.unr, %.thread2890.us3518.us.us3590.us.us.us.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift.us3514.us.us3593.us.us.us.us.3, %.thread2890.us3518.us.us3590.us.us.us.us ]
  %.lcssa7405 = phi float [ %.lcssa7405.unr, %.thread2890.us3518.us.us3590.us.us.us.us.prol.loopexit ], [ %3253, %.thread2890.us3518.us.us3590.us.us.us.us ]
  %indvars.iv.next5795 = add nuw nsw i64 %indvars.iv5794, 1
  %exitcond5798.not = icmp eq i64 %indvars.iv.next5795, %wide.trip.count5797
  br i1 %exitcond5798.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us3614.us.us3726.us, !llvm.loop !261

.preheader2930.us.us3614.us.us.us.us:             ; preds = %.preheader2930.us.us3614.us.us.us.us.preheader, %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us
  %indvars.iv5802 = phi i64 [ 0, %.preheader2930.us.us3614.us.us.us.us.preheader ], [ %indvars.iv.next5803, %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us ]
  %.us-phi.us35713608.us3615.us.us.us.us = phi float [ %.promoted.us.us3898, %.preheader2930.us.us3614.us.us.us.us.preheader ], [ %.lcssa7406, %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us ]
  %3255 = trunc nuw nsw i64 %indvars.iv5802 to i32
  %factor.op.mul.reass.us.us3617.us.us.us.us = mul i32 %factor.op.mul3542, %3255
  %3256 = sext i32 %factor.op.mul.reass.us.us3617.us.us.us.us to i64
  %gep.us3563.us3618.us.us.us.us = getelementptr i16, ptr %invariant.gep3551.us.us, i64 %3256
  %3257 = mul nuw nsw i64 %indvars.iv5802, %3115
  %3258 = getelementptr i16, ptr %3169, i64 %3257
  br i1 %lcmp.mod7625.not.not, label %.thread2890.us3518.us.us.us.us.us.us.us.us.prol, label %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit

.thread2890.us3518.us.us.us.us.us.us.us.us.prol:  ; preds = %.preheader2930.us.us3614.us.us.us.us
  %3259 = getelementptr i16, ptr %gep.us3563.us3618.us.us.us.us, i64 %3113
  %3260 = load i16, ptr %3259, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us.us.us.us.us.us.us.prol = zext i16 %3260 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us.us.us.us.us.us.us.prol, 16
  %.sroa.0204.5.us3516.us.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.prol to float
  %3261 = getelementptr i16, ptr %3258, i64 %3113
  %3262 = load i16, ptr %3261, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.us.us.prol = zext i16 %3262 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.us.us.prol, 16
  %.sroa.0193.5.us3520.us.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.prol to float
  %3263 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us.us.us.us.us.us.us.prol, float %.sroa.0193.5.us3520.us.us.us.us.us.us.us.us.prol, float %.us-phi.us35713608.us3615.us.us.us.us)
  br label %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit

.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit: ; preds = %.thread2890.us3518.us.us.us.us.us.us.us.us.prol, %.preheader2930.us.us3614.us.us.us.us
  %indvars.iv5799.unr = phi i64 [ %3113, %.preheader2930.us.us3614.us.us.us.us ], [ %indvars.iv.next5800.prol, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol ]
  %.unr7627 = phi float [ %.us-phi.us35713608.us3615.us.us.us.us, %.preheader2930.us.us3614.us.us.us.us ], [ %3263, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol ]
  %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2930.us.us3614.us.us.us.us ], [ %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.prol, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol ]
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2930.us.us3614.us.us.us.us ], [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.prol, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol ]
  %.lcssa7406.unr = phi float [ poison, %.preheader2930.us.us3614.us.us.us.us ], [ %3263, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol ]
  br i1 %3133, label %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us, label %.thread2890.us3518.us.us.us.us.us.us.us.us

.thread2890.us3518.us.us.us.us.us.us.us.us:       ; preds = %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit, %.thread2890.us3518.us.us.us.us.us.us.us.us
  %indvars.iv5799 = phi i64 [ %indvars.iv.next5800.1, %.thread2890.us3518.us.us.us.us.us.us.us.us ], [ %indvars.iv5799.unr, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit ]
  %3264 = phi float [ %3274, %.thread2890.us3518.us.us.us.us.us.us.us.us ], [ %.unr7627, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit ]
  %3265 = getelementptr i16, ptr %gep.us3563.us3618.us.us.us.us, i64 %indvars.iv5799
  %3266 = load i16, ptr %3265, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us.us.us.us.us.us.us = zext i16 %3266 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us.us.us.us.us.us.us, 16
  %.sroa.0204.5.us3516.us.us.us.us.us.us.us.us = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us to float
  %3267 = getelementptr i16, ptr %3258, i64 %indvars.iv5799
  %3268 = load i16, ptr %3267, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.us.us = zext i16 %3268 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.us.us, 16
  %.sroa.0193.5.us3520.us.us.us.us.us.us.us.us = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us to float
  %3269 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us.us.us.us.us.us.us, float %.sroa.0193.5.us3520.us.us.us.us.us.us.us.us, float %3264)
  %indvars.iv.next5800 = add nsw i64 %indvars.iv5799, -1
  %3270 = getelementptr i16, ptr %gep.us3563.us3618.us.us.us.us, i64 %indvars.iv.next5800
  %3271 = load i16, ptr %3270, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us3513.us.us.us.us.us.us.us.us.1 = zext i16 %3271 to i32
  %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext.us3513.us.us.us.us.us.us.us.us.1, 16
  %.sroa.0204.5.us3516.us.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.1 to float
  %3272 = getelementptr i16, ptr %3258, i64 %indvars.iv.next5800
  %3273 = load i16, ptr %3272, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.us.us.1 = zext i16 %3273 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.us.us.1, 16
  %.sroa.0193.5.us3520.us.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.1 to float
  %3274 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3516.us.us.us.us.us.us.us.us.1, float %.sroa.0193.5.us3520.us.us.us.us.us.us.us.us.1, float %3269)
  %indvars.iv.next5800.1 = add nsw i64 %indvars.iv5799, -2
  %3275 = icmp sgt i64 %indvars.iv5799, 1
  br i1 %3275, label %.thread2890.us3518.us.us.us.us.us.us.us.us, label %._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us, !llvm.loop !260

._crit_edge3501.split.split.us.split.us.split.us.us.us.us.us.us.us: ; preds = %.thread2890.us3518.us.us.us.us.us.us.us.us, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit
  %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.lcssa = phi i32 [ %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.lcssa.unr, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift.us3514.us.us.us.us.us.us.us.us.1, %.thread2890.us3518.us.us.us.us.us.us.us.us ]
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.lcssa = phi i32 [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.lcssa.unr, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.us.us.1, %.thread2890.us3518.us.us.us.us.us.us.us.us ]
  %.lcssa7406 = phi float [ %.lcssa7406.unr, %.thread2890.us3518.us.us.us.us.us.us.us.us.prol.loopexit ], [ %3274, %.thread2890.us3518.us.us.us.us.us.us.us.us ]
  %indvars.iv.next5803 = add nuw nsw i64 %indvars.iv5802, 1
  %exitcond5806.not = icmp eq i64 %indvars.iv.next5803, %wide.trip.count5805
  br i1 %exitcond5806.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us3614.us.us.us.us, !llvm.loop !261

.lr.ph3500.split.us.us.us.split.us3738.us:        ; preds = %.preheader2930.us.us.us.us
  br i1 %3172, label %.lr.ph3500.split.us.us.us.split.split.us.us.us, label %.lr.ph3500.split.us.us.us.split.split.us3752.us

._crit_edge3501.split.us.us.us.us.us:             ; preds = %.thread2890.us.us.us.us3703.us, %.thread2890.us.us.us.us3651.us3754.us.prol.loopexit, %.thread2890.us.us.us.us3651.us3754.us, %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit, %.thread2890.us.us.us.us3651.us.us.us, %.thread2890.us.us.us.us.us3740.us, %.thread2890.us.us.us.us.us.us.us.prol.loopexit, %.thread2890.us.us.us.us.us.us.us
  %.us-phi3639.us.us = phi float [ %.lcssa7411.unr, %.thread2890.us.us.us.us.us.us.us.prol.loopexit ], [ %3339, %.thread2890.us.us.us.us.us.us.us ], [ %3291, %.thread2890.us.us.us.us.us3740.us ], [ %.lcssa7409.unr, %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit ], [ %3327, %.thread2890.us.us.us.us3651.us.us.us ], [ %.lcssa7408.unr, %.thread2890.us.us.us.us3651.us3754.us.prol.loopexit ], [ %3313, %.thread2890.us.us.us.us3651.us3754.us ], [ %3215, %.thread2890.us.us.us.us3703.us ]
  %.us-phi3640.us.us = phi i32 [ %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr, %.thread2890.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.1, %.thread2890.us.us.us.us.us.us.us ], [ %.sroa.0204.5.in.us.us.us.us.us.us, %.thread2890.us.us.us.us.us3740.us ], [ %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.lcssa.unr, %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.1, %.thread2890.us.us.us.us3651.us.us.us ], [ %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.lcssa.unr, %.thread2890.us.us.us.us3651.us3754.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.3, %.thread2890.us.us.us.us3651.us3754.us ], [ %.sroa.0204.5.in.us.us.us.us3701.us, %.thread2890.us.us.us.us3703.us ]
  %.us-phi3642.us.us = phi i32 [ %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr, %.thread2890.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.1, %.thread2890.us.us.us.us.us.us.us ], [ %.sroa.0193.2.insert.shift.us.us.us.us.us3743.us, %.thread2890.us.us.us.us.us3740.us ], [ %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.lcssa.unr, %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit ], [ %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.1, %.thread2890.us.us.us.us3651.us.us.us ], [ %3299, %.thread2890.us.us.us.us3651.us3754.us ], [ %3299, %.thread2890.us.us.us.us3651.us3754.us.prol.loopexit ], [ %.sroa.0193.5.in.us.us.us.us.us, %.thread2890.us.us.us.us3703.us ]
  %indvars.iv.next5823 = add nuw nsw i64 %indvars.iv5822, 1
  %exitcond5826.not = icmp eq i64 %indvars.iv.next5823, %wide.trip.count5825
  br i1 %exitcond5826.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us.us.us, !llvm.loop !261

.lr.ph3500.split.us.us.us.split.us.us.us:         ; preds = %.preheader2930.us.us.us.us
  br i1 %3172, label %.thread2890.us.us.us.us.us.us.us.preheader, label %.lr.ph3500.split.us.us.us.split.us.split.us3768.us

.thread2890.us.us.us.us.us.us.us.preheader:       ; preds = %.lr.ph3500.split.us.us.us.split.us.us.us
  br i1 %lcmp.mod7637.not.not, label %.thread2890.us.us.us.us.us.us.us.prol, label %.thread2890.us.us.us.us.us.us.us.prol.loopexit

.thread2890.us.us.us.us.us.us.us.prol:            ; preds = %.thread2890.us.us.us.us.us.us.us.preheader
  %3276 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %3113
  %3277 = load i16, ptr %3276, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us.us.us.us.prol = zext i16 %3277 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us.us.us.us.prol, 16
  %.sroa.0204.5.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.prol to float
  %3278 = getelementptr i16, ptr %3200, i64 %3113
  %3279 = load i16, ptr %3278, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext.us.us.us.us.us.us.us.prol = zext i16 %3279 to i32
  %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.0193.2.insert.ext.us.us.us.us.us.us.us.prol, 16
  %.sroa.0193.5.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.prol to float
  %3280 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us.us.us.us.prol, float %.sroa.0193.5.us.us.us.us.us.us.us.prol, float %.us-phi.us35713608.us.us.us)
  br label %.thread2890.us.us.us.us.us.us.us.prol.loopexit

.thread2890.us.us.us.us.us.us.us.prol.loopexit:   ; preds = %.thread2890.us.us.us.us.us.us.us.prol, %.thread2890.us.us.us.us.us.us.us.preheader
  %indvars.iv5819.unr = phi i64 [ %3113, %.thread2890.us.us.us.us.us.us.us.preheader ], [ %indvars.iv.next5820.prol, %.thread2890.us.us.us.us.us.us.us.prol ]
  %.unr7639 = phi float [ %.us-phi.us35713608.us.us.us, %.thread2890.us.us.us.us.us.us.us.preheader ], [ %3280, %.thread2890.us.us.us.us.us.us.us.prol ]
  %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2890.us.us.us.us.us.us.us.preheader ], [ %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.prol, %.thread2890.us.us.us.us.us.us.us.prol ]
  %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2890.us.us.us.us.us.us.us.preheader ], [ %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.prol, %.thread2890.us.us.us.us.us.us.us.prol ]
  %.lcssa7411.unr = phi float [ poison, %.thread2890.us.us.us.us.us.us.us.preheader ], [ %3280, %.thread2890.us.us.us.us.us.us.us.prol ]
  br i1 %3137, label %._crit_edge3501.split.us.us.us.us.us, label %.thread2890.us.us.us.us.us.us.us

.lr.ph3500.split.us.us.us.split.us.split.us3768.us: ; preds = %.lr.ph3500.split.us.us.us.split.us.us.us, %.thread2890.us.us.us.us.us3740.us
  %indvars.iv5816 = phi i64 [ %indvars.iv.next5817, %.thread2890.us.us.us.us.us3740.us ], [ %3113, %.lr.ph3500.split.us.us.us.split.us.us.us ]
  %3281 = phi float [ %3291, %.thread2890.us.us.us.us.us3740.us ], [ %.us-phi.us35713608.us.us.us, %.lr.ph3500.split.us.us.us.split.us.us.us ]
  %3282 = phi i32 [ %.sroa.0204.5.in.us.us.us.us.us.us, %.thread2890.us.us.us.us.us3740.us ], [ %3194, %.lr.ph3500.split.us.us.us.split.us.us.us ]
  %.sroa.0204.0.insert.mask.us.us.us.us.us.us = and i32 %3282, -65536
  br i1 %3173, label %3283, label %.thread2890.us.us.us.us.us3740.us

3283:                                             ; preds = %.lr.ph3500.split.us.us.us.split.us.split.us3768.us
  %3284 = load i32, ptr %3099, align 8, !tbaa !225
  %3285 = icmp eq i32 %3284, 0
  br i1 %3285, label %3286, label %.thread2890.us.us.us.us.us3740.us

3286:                                             ; preds = %3283
  %3287 = getelementptr i16, ptr %3197, i64 %indvars.iv5816
  %3288 = load i16, ptr %3287, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us.us.us.us.us.us = zext i16 %3288 to i32
  %.sroa.0204.2.insert.shift207.us.us.us.us.us.us = shl nuw i32 %.sroa.0204.2.insert.ext206.us.us.us.us.us.us, 16
  br label %.thread2890.us.us.us.us.us3740.us

.thread2890.us.us.us.us.us3740.us:                ; preds = %3286, %3283, %.lr.ph3500.split.us.us.us.split.us.split.us3768.us
  %.sroa.0204.5.in.us.us.us.us.us.us = phi i32 [ %.sroa.0204.2.insert.shift207.us.us.us.us.us.us, %3286 ], [ %.sroa.0204.0.insert.mask.us.us.us.us.us.us, %3283 ], [ %.sroa.0204.0.insert.mask.us.us.us.us.us.us, %.lr.ph3500.split.us.us.us.split.us.split.us3768.us ]
  %.sroa.0204.5.us.us.us.us.us3741.us = bitcast i32 %.sroa.0204.5.in.us.us.us.us.us.us to float
  %3289 = getelementptr i16, ptr %3200, i64 %indvars.iv5816
  %3290 = load i16, ptr %3289, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext.us.us.us.us.us3742.us = zext i16 %3290 to i32
  %.sroa.0193.2.insert.shift.us.us.us.us.us3743.us = shl nuw i32 %.sroa.0193.2.insert.ext.us.us.us.us.us3742.us, 16
  %.sroa.0193.5.us.us.us.us.us3744.us = bitcast i32 %.sroa.0193.2.insert.shift.us.us.us.us.us3743.us to float
  %3291 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us.us3741.us, float %.sroa.0193.5.us.us.us.us.us3744.us, float %3281)
  %indvars.iv.next5817 = add nsw i64 %indvars.iv5816, -1
  %3292 = icmp sgt i64 %indvars.iv5816, 0
  br i1 %3292, label %.lr.ph3500.split.us.us.us.split.us.split.us3768.us, label %._crit_edge3501.split.us.us.us.us.us, !llvm.loop !260

.lr.ph3500.split.us.us.us.split.split.us.us.us:   ; preds = %.lr.ph3500.split.us.us.us.split.us3738.us
  br i1 %3192, label %.thread2890.us.us.us.us3651.us.us.us.preheader, label %.thread2890.us.us.us.us3651.us3754.us.preheader

.thread2890.us.us.us.us3651.us.us.us.preheader:   ; preds = %.lr.ph3500.split.us.us.us.split.split.us.us.us
  br i1 %lcmp.mod7633.not, label %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit, label %.thread2890.us.us.us.us3651.us.us.us.prol

.thread2890.us.us.us.us3651.us.us.us.prol:        ; preds = %.thread2890.us.us.us.us3651.us.us.us.preheader
  %3293 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %3116
  %3294 = load i16, ptr %3293, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us.us.us.prol = zext i16 %3294 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us.us.us.prol, 16
  %.sroa.0204.5.us.us.us.us3649.us.us.us.prol = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.prol to float
  %3295 = add nuw nsw i64 %3116, %3196
  %3296 = mul nsw i64 %3295, %3117
  %gep.us.us3572.us.us.us.us.us.prol = getelementptr i16, ptr %invariant.gep.us3685.us, i64 %3296
  %3297 = load i16, ptr %gep.us.us3572.us.us.us.us.us.prol, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext195.us.us.us.us.us.us.us.prol = zext i16 %3297 to i32
  %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.0193.2.insert.ext195.us.us.us.us.us.us.us.prol, 16
  %.sroa.0193.5.us.us.us.us3653.us.us.us.prol = bitcast i32 %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.prol to float
  %3298 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us.us.us.prol, float %.sroa.0193.5.us.us.us.us3653.us.us.us.prol, float %.us-phi.us35713608.us.us.us)
  br label %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit

.thread2890.us.us.us.us3651.us.us.us.prol.loopexit: ; preds = %.thread2890.us.us.us.us3651.us.us.us.prol, %.thread2890.us.us.us.us3651.us.us.us.preheader
  %indvars.iv5813.unr = phi i64 [ %3116, %.thread2890.us.us.us.us3651.us.us.us.preheader ], [ %indvars.iv.next5814.prol, %.thread2890.us.us.us.us3651.us.us.us.prol ]
  %.unr7635 = phi float [ %.us-phi.us35713608.us.us.us, %.thread2890.us.us.us.us3651.us.us.us.preheader ], [ %3298, %.thread2890.us.us.us.us3651.us.us.us.prol ]
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2890.us.us.us.us3651.us.us.us.preheader ], [ %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.prol, %.thread2890.us.us.us.us3651.us.us.us.prol ]
  %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2890.us.us.us.us3651.us.us.us.preheader ], [ %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.prol, %.thread2890.us.us.us.us3651.us.us.us.prol ]
  %.lcssa7409.unr = phi float [ poison, %.thread2890.us.us.us.us3651.us.us.us.preheader ], [ %3298, %.thread2890.us.us.us.us3651.us.us.us.prol ]
  br i1 %3135, label %._crit_edge3501.split.us.us.us.us.us, label %.thread2890.us.us.us.us3651.us.us.us

.thread2890.us.us.us.us3651.us3754.us.preheader:  ; preds = %.lr.ph3500.split.us.us.us.split.split.us.us.us
  %3299 = and i32 %3193, -65536
  %.sroa.0193.0.insert.mask.us.us.us.us3650.us.us = and i32 %3193, -65536
  %.sroa.0193.5.us.us.us.us3653.us3759.us = bitcast i32 %.sroa.0193.0.insert.mask.us.us.us.us3650.us.us to float
  br i1 %lcmp.mod7629.not, label %.thread2890.us.us.us.us3651.us3754.us.prol.loopexit, label %.thread2890.us.us.us.us3651.us3754.us.prol

.thread2890.us.us.us.us3651.us3754.us.prol:       ; preds = %.thread2890.us.us.us.us3651.us3754.us.preheader, %.thread2890.us.us.us.us3651.us3754.us.prol
  %indvars.iv5810.prol = phi i64 [ %indvars.iv.next5811.prol, %.thread2890.us.us.us.us3651.us3754.us.prol ], [ %3113, %.thread2890.us.us.us.us3651.us3754.us.preheader ]
  %3300 = phi float [ %3303, %.thread2890.us.us.us.us3651.us3754.us.prol ], [ %.us-phi.us35713608.us.us.us, %.thread2890.us.us.us.us3651.us3754.us.preheader ]
  %prol.iter7630 = phi i64 [ %prol.iter7630.next, %.thread2890.us.us.us.us3651.us3754.us.prol ], [ 0, %.thread2890.us.us.us.us3651.us3754.us.preheader ]
  %3301 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %indvars.iv5810.prol
  %3302 = load i16, ptr %3301, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.prol = zext i16 %3302 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.prol, 16
  %.sroa.0204.5.us.us.us.us3649.us3758.us.prol = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.prol to float
  %3303 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us3758.us.prol, float %.sroa.0193.5.us.us.us.us3653.us3759.us, float %3300)
  %indvars.iv.next5811.prol = add nsw i64 %indvars.iv5810.prol, -1
  %prol.iter7630.next = add i64 %prol.iter7630, 1
  %prol.iter7630.cmp.not = icmp eq i64 %prol.iter7630.next, %xtraiter7628
  br i1 %prol.iter7630.cmp.not, label %.thread2890.us.us.us.us3651.us3754.us.prol.loopexit, label %.thread2890.us.us.us.us3651.us3754.us.prol, !llvm.loop !265

.thread2890.us.us.us.us3651.us3754.us.prol.loopexit: ; preds = %.thread2890.us.us.us.us3651.us3754.us.prol, %.thread2890.us.us.us.us3651.us3754.us.preheader
  %indvars.iv5810.unr = phi i64 [ %3113, %.thread2890.us.us.us.us3651.us3754.us.preheader ], [ %indvars.iv.next5811.prol, %.thread2890.us.us.us.us3651.us3754.us.prol ]
  %.unr7631 = phi float [ %.us-phi.us35713608.us.us.us, %.thread2890.us.us.us.us3651.us3754.us.preheader ], [ %3303, %.thread2890.us.us.us.us3651.us3754.us.prol ]
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.lcssa.unr = phi i32 [ poison, %.thread2890.us.us.us.us3651.us3754.us.preheader ], [ %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.prol, %.thread2890.us.us.us.us3651.us3754.us.prol ]
  %.lcssa7408.unr = phi float [ poison, %.thread2890.us.us.us.us3651.us3754.us.preheader ], [ %3303, %.thread2890.us.us.us.us3651.us3754.us.prol ]
  br i1 %3134, label %._crit_edge3501.split.us.us.us.us.us, label %.thread2890.us.us.us.us3651.us3754.us.preheader.new

.thread2890.us.us.us.us3651.us3754.us.preheader.new: ; preds = %.thread2890.us.us.us.us3651.us3754.us.prol.loopexit
  %invariant.gep7881 = getelementptr i8, ptr %gep.us3563.us.us.us, i64 -2
  %invariant.gep7883 = getelementptr i8, ptr %gep.us3563.us.us.us, i64 -4
  %invariant.gep7885 = getelementptr i8, ptr %gep.us3563.us.us.us, i64 -6
  br label %.thread2890.us.us.us.us3651.us3754.us

.thread2890.us.us.us.us3651.us3754.us:            ; preds = %.thread2890.us.us.us.us3651.us3754.us, %.thread2890.us.us.us.us3651.us3754.us.preheader.new
  %indvars.iv5810 = phi i64 [ %indvars.iv5810.unr, %.thread2890.us.us.us.us3651.us3754.us.preheader.new ], [ %indvars.iv.next5811.3, %.thread2890.us.us.us.us3651.us3754.us ]
  %3304 = phi float [ %.unr7631, %.thread2890.us.us.us.us3651.us3754.us.preheader.new ], [ %3313, %.thread2890.us.us.us.us3651.us3754.us ]
  %3305 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %indvars.iv5810
  %3306 = load i16, ptr %3305, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us = zext i16 %3306 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us, 16
  %.sroa.0204.5.us.us.us.us3649.us3758.us = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us to float
  %3307 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us3758.us, float %.sroa.0193.5.us.us.us.us3653.us3759.us, float %3304)
  %gep7882 = getelementptr i16, ptr %invariant.gep7881, i64 %indvars.iv5810
  %3308 = load i16, ptr %gep7882, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.1 = zext i16 %3308 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.1, 16
  %.sroa.0204.5.us.us.us.us3649.us3758.us.1 = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.1 to float
  %3309 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us3758.us.1, float %.sroa.0193.5.us.us.us.us3653.us3759.us, float %3307)
  %gep7884 = getelementptr i16, ptr %invariant.gep7883, i64 %indvars.iv5810
  %3310 = load i16, ptr %gep7884, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.2 = zext i16 %3310 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.2 = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.2, 16
  %.sroa.0204.5.us.us.us.us3649.us3758.us.2 = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.2 to float
  %3311 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us3758.us.2, float %.sroa.0193.5.us.us.us.us3653.us3759.us, float %3309)
  %gep7886 = getelementptr i16, ptr %invariant.gep7885, i64 %indvars.iv5810
  %3312 = load i16, ptr %gep7886, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.3 = zext i16 %3312 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.3 = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us3756.us.3, 16
  %.sroa.0204.5.us.us.us.us3649.us3758.us.3 = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us3757.us.3 to float
  %3313 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us3758.us.3, float %.sroa.0193.5.us.us.us.us3653.us3759.us, float %3311)
  %indvars.iv.next5811.3 = add nsw i64 %indvars.iv5810, -4
  %3314 = icmp sgt i64 %indvars.iv5810, 3
  br i1 %3314, label %.thread2890.us.us.us.us3651.us3754.us, label %._crit_edge3501.split.us.us.us.us.us, !llvm.loop !260

.thread2890.us.us.us.us3651.us.us.us:             ; preds = %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit, %.thread2890.us.us.us.us3651.us.us.us
  %indvars.iv5813 = phi i64 [ %indvars.iv.next5814.1, %.thread2890.us.us.us.us3651.us.us.us ], [ %indvars.iv5813.unr, %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit ]
  %3315 = phi float [ %3327, %.thread2890.us.us.us.us3651.us.us.us ], [ %.unr7635, %.thread2890.us.us.us.us3651.us.us.us.prol.loopexit ]
  %3316 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %indvars.iv5813
  %3317 = load i16, ptr %3316, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us.us.us = zext i16 %3317 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us.us.us, 16
  %.sroa.0204.5.us.us.us.us3649.us.us.us = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us to float
  %3318 = add nsw i64 %indvars.iv5813, %3196
  %3319 = mul nsw i64 %3318, %3117
  %gep.us.us3572.us.us.us.us.us = getelementptr i16, ptr %invariant.gep.us3685.us, i64 %3319
  %3320 = load i16, ptr %gep.us.us3572.us.us.us.us.us, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext195.us.us.us.us.us.us.us = zext i16 %3320 to i32
  %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us = shl nuw i32 %.sroa.0193.2.insert.ext195.us.us.us.us.us.us.us, 16
  %.sroa.0193.5.us.us.us.us3653.us.us.us = bitcast i32 %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us to float
  %3321 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us.us.us, float %.sroa.0193.5.us.us.us.us3653.us.us.us, float %3315)
  %indvars.iv.next5814 = add nsw i64 %indvars.iv5813, -1
  %3322 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %indvars.iv.next5814
  %3323 = load i16, ptr %3322, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us3646.us.us.us.1 = zext i16 %3323 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us3646.us.us.us.1, 16
  %.sroa.0204.5.us.us.us.us3649.us.us.us.1 = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us3647.us.us.us.1 to float
  %3324 = add nsw i64 %indvars.iv.next5814, %3196
  %3325 = mul nsw i64 %3324, %3117
  %gep.us.us3572.us.us.us.us.us.1 = getelementptr i16, ptr %invariant.gep.us3685.us, i64 %3325
  %3326 = load i16, ptr %gep.us.us3572.us.us.us.us.us.1, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext195.us.us.us.us.us.us.us.1 = zext i16 %3326 to i32
  %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.0193.2.insert.ext195.us.us.us.us.us.us.us.1, 16
  %.sroa.0193.5.us.us.us.us3653.us.us.us.1 = bitcast i32 %.sroa.0193.2.insert.shift196.us.us.us.us.us.us.us.1 to float
  %3327 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us3649.us.us.us.1, float %.sroa.0193.5.us.us.us.us3653.us.us.us.1, float %3321)
  %indvars.iv.next5814.1 = add nsw i64 %indvars.iv5813, -2
  %3328 = icmp sgt i64 %indvars.iv5813, 1
  br i1 %3328, label %.thread2890.us.us.us.us3651.us.us.us, label %._crit_edge3501.split.us.us.us.us.us, !llvm.loop !260

.thread2890.us.us.us.us.us.us.us:                 ; preds = %.thread2890.us.us.us.us.us.us.us.prol.loopexit, %.thread2890.us.us.us.us.us.us.us
  %indvars.iv5819 = phi i64 [ %indvars.iv.next5820.1, %.thread2890.us.us.us.us.us.us.us ], [ %indvars.iv5819.unr, %.thread2890.us.us.us.us.us.us.us.prol.loopexit ]
  %3329 = phi float [ %3339, %.thread2890.us.us.us.us.us.us.us ], [ %.unr7639, %.thread2890.us.us.us.us.us.us.us.prol.loopexit ]
  %3330 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %indvars.iv5819
  %3331 = load i16, ptr %3330, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us.us.us.us = zext i16 %3331 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us.us.us.us, 16
  %.sroa.0204.5.us.us.us.us.us.us.us = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us to float
  %3332 = getelementptr i16, ptr %3200, i64 %indvars.iv5819
  %3333 = load i16, ptr %3332, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext.us.us.us.us.us.us.us = zext i16 %3333 to i32
  %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us = shl nuw i32 %.sroa.0193.2.insert.ext.us.us.us.us.us.us.us, 16
  %.sroa.0193.5.us.us.us.us.us.us.us = bitcast i32 %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us to float
  %3334 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us.us.us.us, float %.sroa.0193.5.us.us.us.us.us.us.us, float %3329)
  %indvars.iv.next5820 = add nsw i64 %indvars.iv5819, -1
  %3335 = getelementptr i16, ptr %gep.us3563.us.us.us, i64 %indvars.iv.next5820
  %3336 = load i16, ptr %3335, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext.us.us.us.us.us.us.us.1 = zext i16 %3336 to i32
  %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext.us.us.us.us.us.us.us.1, 16
  %.sroa.0204.5.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.0204.2.insert.shift.us.us.us.us.us.us.us.1 to float
  %3337 = getelementptr i16, ptr %3200, i64 %indvars.iv.next5820
  %3338 = load i16, ptr %3337, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext.us.us.us.us.us.us.us.1 = zext i16 %3338 to i32
  %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.0193.2.insert.ext.us.us.us.us.us.us.us.1, 16
  %.sroa.0193.5.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.0193.2.insert.shift.us.us.us.us.us.us.us.1 to float
  %3339 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us.us.us.us.us.us.us.1, float %.sroa.0193.5.us.us.us.us.us.us.us.1, float %3334)
  %indvars.iv.next5820.1 = add nsw i64 %indvars.iv5819, -2
  %3340 = icmp sgt i64 %indvars.iv5819, 1
  br i1 %3340, label %.thread2890.us.us.us.us.us.us.us, label %._crit_edge3501.split.us.us.us.us.us, !llvm.loop !260

.preheader2930.lr.ph.split.us.split.split.us3712.split.us3908: ; preds = %.preheader2930.lr.ph.split.us.split.split.us3712.us
  %3341 = and i32 %3155, -65536
  br i1 %3176, label %.preheader2930.lr.ph.split.us.split.split.us3712.split.split.us.us, label %.preheader2930.us.us3686.us3899.preheader

.preheader2930.us.us3686.us3899.preheader:        ; preds = %.preheader2930.lr.ph.split.us.split.split.us3712.split.us3908
  %3342 = and i32 %3155, -65536
  %3343 = and i32 %3154, -65536
  %.sroa.0204.5.us3557.us.us = bitcast i32 %3341 to float
  %.sroa.0193.0.insert.mask.us3558.us.us = and i32 %3154, -65536
  %.sroa.0193.5.us3561.us.us = bitcast i32 %.sroa.0193.0.insert.mask.us3558.us.us to float
  br label %.preheader2930.us.us3686.us3899

.preheader2930.lr.ph.split.us.split.split.us3712.split.us.us: ; preds = %.preheader2930.lr.ph.split.us.split.split.us3712.us
  %3344 = load i32, ptr %3099, align 8, !tbaa !225
  %3345 = icmp eq i32 %3344, 0
  %wide.trip.count5781 = zext nneg i32 %3156 to i64
  br label %.preheader2930.us.us3686.us.us

.preheader2930.us.us3686.us.us:                   ; preds = %._crit_edge3501.split.split.us3564.us.split.us.us.us, %.preheader2930.lr.ph.split.us.split.split.us3712.split.us.us
  %indvars.iv5778 = phi i64 [ %indvars.iv.next5779, %._crit_edge3501.split.split.us3564.us.split.us.us.us ], [ 0, %.preheader2930.lr.ph.split.us.split.split.us3712.split.us.us ]
  %.us-phi.us35713608.us3687.us.us = phi float [ %.us-phi3839.us, %._crit_edge3501.split.split.us3564.us.split.us.us.us ], [ %.promoted.us.us3898, %.preheader2930.lr.ph.split.us.split.split.us3712.split.us.us ]
  %3346 = phi i32 [ %.us-phi3842.us, %._crit_edge3501.split.split.us3564.us.split.us.us.us ], [ %3154, %.preheader2930.lr.ph.split.us.split.split.us3712.split.us.us ]
  %3347 = phi i32 [ %.us-phi3840.us, %._crit_edge3501.split.split.us3564.us.split.us.us.us ], [ %3155, %.preheader2930.lr.ph.split.us.split.split.us3712.split.us.us ]
  %3348 = mul nuw nsw i64 %indvars.iv5778, %3114
  %3349 = getelementptr i16, ptr %3165, i64 %3348
  %3350 = getelementptr i16, ptr %3169, i64 %3348
  br i1 %3176, label %.preheader2930.us.us3686.split.us.us.split.us.us, label %.preheader2930.us.us3686.split.us.us.split.us3935

.thread2890.us3559.us.us.us.us3909:               ; preds = %.thread2890.us3559.us.us.us.us3909.prol.loopexit, %.thread2890.us3559.us.us.us.us3909
  %3351 = phi float [ %3359, %.thread2890.us3559.us.us.us.us3909 ], [ %.unr7598, %.thread2890.us3559.us.us.us.us3909.prol.loopexit ]
  %.1926383499.us3552.us.us.us.us3910 = phi i32 [ %.192638.us3562.us.us.us.us3915.7, %.thread2890.us3559.us.us.us.us3909 ], [ %.1926383499.us3552.us.us.us.us3910.unr, %.thread2890.us3559.us.us.us.us3909.prol.loopexit ]
  %3352 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3351)
  %3353 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3352)
  %3354 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3353)
  %3355 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3354)
  %3356 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3355)
  %3357 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3356)
  %3358 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3357)
  %3359 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3358)
  %.192638.us3562.us.us.us.us3915.7 = add nsw i32 %.1926383499.us3552.us.us.us.us3910, -8
  %3360 = icmp sgt i32 %.1926383499.us3552.us.us.us.us3910, 7
  br i1 %3360, label %.thread2890.us3559.us.us.us.us3909, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, !llvm.loop !260

.preheader2930.lr.ph.split.us.split.split.us3712.split.split.us.us: ; preds = %.preheader2930.lr.ph.split.us.split.split.us3712.split.us3908
  %3361 = load i32, ptr %3112, align 4, !tbaa !262
  %3362 = icmp eq i32 %3361, 0
  %.sroa.0204.0.insert.mask.us3553.us.us3779.us.us.us.us = and i32 %3155, -65536
  %.sroa.0204.5.us3557.us.us3780.us.us.us.us = bitcast i32 %.sroa.0204.0.insert.mask.us3553.us.us3779.us.us.us.us to float
  br i1 %3362, label %.preheader2930.us.us3686.us3809.us.us.preheader, label %.preheader2930.us.us3686.us3809.us3925.preheader

.preheader2930.us.us3686.us3809.us3925.preheader: ; preds = %.preheader2930.lr.ph.split.us.split.split.us3712.split.split.us.us
  %3363 = and i32 %3154, -65536
  %.sroa.0193.0.insert.mask.us3558.us.us3781.us.us = and i32 %3154, -65536
  %.sroa.0193.5.us3561.us.us3786.us3816.us = bitcast i32 %.sroa.0193.0.insert.mask.us3558.us.us3781.us.us to float
  br label %.preheader2930.us.us3686.us3809.us3925

.preheader2930.us.us3686.us3809.us.us.preheader:  ; preds = %.preheader2930.lr.ph.split.us.split.split.us3712.split.split.us.us
  %wide.trip.count5767 = zext nneg i32 %3156 to i64
  br label %.preheader2930.us.us3686.us3809.us.us

.preheader2930.us.us3686.us3809.us3925:           ; preds = %.preheader2930.us.us3686.us3809.us3925.preheader, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us
  %.us-phi.us35713608.us3687.us3810.us3926 = phi float [ %.lcssa7397, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us ], [ %.promoted.us.us3898, %.preheader2930.us.us3686.us3809.us3925.preheader ]
  %.2226053545.us.us3688.us3811.us3927 = phi i32 [ %3376, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us ], [ 0, %.preheader2930.us.us3686.us3809.us3925.preheader ]
  br i1 %lcmp.mod7588.not, label %.thread2890.us3559.us.us3784.us3812.us.prol.loopexit, label %.thread2890.us3559.us.us3784.us3812.us.prol

.thread2890.us3559.us.us3784.us3812.us.prol:      ; preds = %.preheader2930.us.us3686.us3809.us3925, %.thread2890.us3559.us.us3784.us3812.us.prol
  %3364 = phi float [ %3365, %.thread2890.us3559.us.us3784.us3812.us.prol ], [ %.us-phi.us35713608.us3687.us3810.us3926, %.preheader2930.us.us3686.us3809.us3925 ]
  %.1926383499.us3552.us.us3778.us3813.us.prol = phi i32 [ %.192638.us3562.us.us3787.us3817.us.prol, %.thread2890.us3559.us.us3784.us3812.us.prol ], [ %.1926383498, %.preheader2930.us.us3686.us3809.us3925 ]
  %prol.iter7589 = phi i32 [ %prol.iter7589.next, %.thread2890.us3559.us.us3784.us3812.us.prol ], [ 0, %.preheader2930.us.us3686.us3809.us3925 ]
  %3365 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3364)
  %.192638.us3562.us.us3787.us3817.us.prol = add nsw i32 %.1926383499.us3552.us.us3778.us3813.us.prol, -1
  %prol.iter7589.next = add i32 %prol.iter7589, 1
  %prol.iter7589.cmp.not = icmp eq i32 %prol.iter7589.next, %xtraiter7587
  br i1 %prol.iter7589.cmp.not, label %.thread2890.us3559.us.us3784.us3812.us.prol.loopexit, label %.thread2890.us3559.us.us3784.us3812.us.prol, !llvm.loop !266

.thread2890.us3559.us.us3784.us3812.us.prol.loopexit: ; preds = %.thread2890.us3559.us.us3784.us3812.us.prol, %.preheader2930.us.us3686.us3809.us3925
  %.unr7590 = phi float [ %.us-phi.us35713608.us3687.us3810.us3926, %.preheader2930.us.us3686.us3809.us3925 ], [ %3365, %.thread2890.us3559.us.us3784.us3812.us.prol ]
  %.1926383499.us3552.us.us3778.us3813.us.unr = phi i32 [ %.1926383498, %.preheader2930.us.us3686.us3809.us3925 ], [ %.192638.us3562.us.us3787.us3817.us.prol, %.thread2890.us3559.us.us3784.us3812.us.prol ]
  %.lcssa7397.unr = phi float [ poison, %.preheader2930.us.us3686.us3809.us3925 ], [ %3365, %.thread2890.us3559.us.us3784.us3812.us.prol ]
  br i1 %3122, label %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us, label %.thread2890.us3559.us.us3784.us3812.us

.thread2890.us3559.us.us3784.us3812.us:           ; preds = %.thread2890.us3559.us.us3784.us3812.us.prol.loopexit, %.thread2890.us3559.us.us3784.us3812.us
  %3366 = phi float [ %3374, %.thread2890.us3559.us.us3784.us3812.us ], [ %.unr7590, %.thread2890.us3559.us.us3784.us3812.us.prol.loopexit ]
  %.1926383499.us3552.us.us3778.us3813.us = phi i32 [ %.192638.us3562.us.us3787.us3817.us.7, %.thread2890.us3559.us.us3784.us3812.us ], [ %.1926383499.us3552.us.us3778.us3813.us.unr, %.thread2890.us3559.us.us3784.us3812.us.prol.loopexit ]
  %3367 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3366)
  %3368 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3367)
  %3369 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3368)
  %3370 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3369)
  %3371 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3370)
  %3372 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3371)
  %3373 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3372)
  %3374 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us3816.us, float %3373)
  %.192638.us3562.us.us3787.us3817.us.7 = add nsw i32 %.1926383499.us3552.us.us3778.us3813.us, -8
  %3375 = icmp sgt i32 %.1926383499.us3552.us.us3778.us3813.us, 7
  br i1 %3375, label %.thread2890.us3559.us.us3784.us3812.us, label %._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us, !llvm.loop !260

._crit_edge3501.split.split.us3564.us.split.split.us.split.us3818.us: ; preds = %.thread2890.us3559.us.us3784.us3812.us, %.thread2890.us3559.us.us3784.us3812.us.prol.loopexit
  %.lcssa7397 = phi float [ %.lcssa7397.unr, %.thread2890.us3559.us.us3784.us3812.us.prol.loopexit ], [ %3374, %.thread2890.us3559.us.us3784.us3812.us ]
  %3376 = add nuw nsw i32 %.2226053545.us.us3688.us3811.us3927, 1
  %exitcond5760.not = icmp eq i32 %3376, %3156
  br i1 %exitcond5760.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us3686.us3809.us3925, !llvm.loop !261

.preheader2930.us.us3686.us3809.us.us:            ; preds = %.preheader2930.us.us3686.us3809.us.us.preheader, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us
  %indvars.iv5764 = phi i64 [ 0, %.preheader2930.us.us3686.us3809.us.us.preheader ], [ %indvars.iv.next5765, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us ]
  %.us-phi.us35713608.us3687.us3810.us.us = phi float [ %.promoted.us.us3898, %.preheader2930.us.us3686.us3809.us.us.preheader ], [ %.lcssa7398, %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us ]
  %3377 = mul nuw nsw i64 %indvars.iv5764, %3114
  %3378 = getelementptr i16, ptr %3169, i64 %3377
  br i1 %lcmp.mod7592.not, label %.thread2890.us3559.us.us3784.us.us.us.us.prol.loopexit, label %.thread2890.us3559.us.us3784.us.us.us.us.prol

.thread2890.us3559.us.us3784.us.us.us.us.prol:    ; preds = %.preheader2930.us.us3686.us3809.us.us, %.thread2890.us3559.us.us3784.us.us.us.us.prol
  %indvars.iv5761.prol = phi i64 [ %indvars.iv.next5762.prol, %.thread2890.us3559.us.us3784.us.us.us.us.prol ], [ %3113, %.preheader2930.us.us3686.us3809.us.us ]
  %3379 = phi float [ %3382, %.thread2890.us3559.us.us3784.us.us.us.us.prol ], [ %.us-phi.us35713608.us3687.us3810.us.us, %.preheader2930.us.us3686.us3809.us.us ]
  %prol.iter7593 = phi i64 [ %prol.iter7593.next, %.thread2890.us3559.us.us3784.us.us.us.us.prol ], [ 0, %.preheader2930.us.us3686.us3809.us.us ]
  %3380 = getelementptr i16, ptr %3378, i64 %indvars.iv5761.prol
  %3381 = load i16, ptr %3380, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.prol = zext i16 %3381 to i32
  %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.prol = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.prol, 16
  %.sroa.0193.5.us3561.us.us3786.us.us.us.us.prol = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.prol to float
  %3382 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us.us.us.us.prol, float %3379)
  %indvars.iv.next5762.prol = add nsw i64 %indvars.iv5761.prol, -1
  %prol.iter7593.next = add i64 %prol.iter7593, 1
  %prol.iter7593.cmp.not = icmp eq i64 %prol.iter7593.next, %xtraiter7591
  br i1 %prol.iter7593.cmp.not, label %.thread2890.us3559.us.us3784.us.us.us.us.prol.loopexit, label %.thread2890.us3559.us.us3784.us.us.us.us.prol, !llvm.loop !267

.thread2890.us3559.us.us3784.us.us.us.us.prol.loopexit: ; preds = %.thread2890.us3559.us.us3784.us.us.us.us.prol, %.preheader2930.us.us3686.us3809.us.us
  %indvars.iv5761.unr = phi i64 [ %3113, %.preheader2930.us.us3686.us3809.us.us ], [ %indvars.iv.next5762.prol, %.thread2890.us3559.us.us3784.us.us.us.us.prol ]
  %.unr7594 = phi float [ %.us-phi.us35713608.us3687.us3810.us.us, %.preheader2930.us.us3686.us3809.us.us ], [ %3382, %.thread2890.us3559.us.us3784.us.us.us.us.prol ]
  %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2930.us.us3686.us3809.us.us ], [ %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.prol, %.thread2890.us3559.us.us3784.us.us.us.us.prol ]
  %.lcssa7398.unr = phi float [ poison, %.preheader2930.us.us3686.us3809.us.us ], [ %3382, %.thread2890.us3559.us.us3784.us.us.us.us.prol ]
  br i1 %3123, label %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us, label %.preheader2930.us.us3686.us3809.us.us.new

.preheader2930.us.us3686.us3809.us.us.new:        ; preds = %.thread2890.us3559.us.us3784.us.us.us.us.prol.loopexit
  %invariant.gep7851 = getelementptr i8, ptr %3378, i64 -2
  %invariant.gep7853 = getelementptr i8, ptr %3378, i64 -4
  %invariant.gep7855 = getelementptr i8, ptr %3378, i64 -6
  br label %.thread2890.us3559.us.us3784.us.us.us.us

.thread2890.us3559.us.us3784.us.us.us.us:         ; preds = %.thread2890.us3559.us.us3784.us.us.us.us, %.preheader2930.us.us3686.us3809.us.us.new
  %indvars.iv5761 = phi i64 [ %indvars.iv5761.unr, %.preheader2930.us.us3686.us3809.us.us.new ], [ %indvars.iv.next5762.3, %.thread2890.us3559.us.us3784.us.us.us.us ]
  %3383 = phi float [ %.unr7594, %.preheader2930.us.us3686.us3809.us.us.new ], [ %3392, %.thread2890.us3559.us.us3784.us.us.us.us ]
  %3384 = getelementptr i16, ptr %3378, i64 %indvars.iv5761
  %3385 = load i16, ptr %3384, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us = zext i16 %3385 to i32
  %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us, 16
  %.sroa.0193.5.us3561.us.us3786.us.us.us.us = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us to float
  %3386 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us.us.us.us, float %3383)
  %gep7852 = getelementptr i16, ptr %invariant.gep7851, i64 %indvars.iv5761
  %3387 = load i16, ptr %gep7852, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.1 = zext i16 %3387 to i32
  %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.1 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.1, 16
  %.sroa.0193.5.us3561.us.us3786.us.us.us.us.1 = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.1 to float
  %3388 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us.us.us.us.1, float %3386)
  %gep7854 = getelementptr i16, ptr %invariant.gep7853, i64 %indvars.iv5761
  %3389 = load i16, ptr %gep7854, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.2 = zext i16 %3389 to i32
  %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.2 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.2, 16
  %.sroa.0193.5.us3561.us.us3786.us.us.us.us.2 = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.2 to float
  %3390 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us.us.us.us.2, float %3388)
  %gep7856 = getelementptr i16, ptr %invariant.gep7855, i64 %indvars.iv5761
  %3391 = load i16, ptr %gep7856, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.3 = zext i16 %3391 to i32
  %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.3 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us3782.us.us.us.us.3, 16
  %.sroa.0193.5.us3561.us.us3786.us.us.us.us.3 = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.3 to float
  %3392 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us3780.us.us.us.us, float %.sroa.0193.5.us3561.us.us3786.us.us.us.us.3, float %3390)
  %indvars.iv.next5762.3 = add nsw i64 %indvars.iv5761, -4
  %3393 = icmp sgt i64 %indvars.iv5761, 3
  br i1 %3393, label %.thread2890.us3559.us.us3784.us.us.us.us, label %._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us, !llvm.loop !260

._crit_edge3501.split.split.us3564.us.split.split.us.split.us.us.us.us: ; preds = %.thread2890.us3559.us.us3784.us.us.us.us, %.thread2890.us3559.us.us3784.us.us.us.us.prol.loopexit
  %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.lcssa = phi i32 [ %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.lcssa.unr, %.thread2890.us3559.us.us3784.us.us.us.us.prol.loopexit ], [ %.sroa.0193.2.insert.shift201.us.us.us3783.us.us.us.us.3, %.thread2890.us3559.us.us3784.us.us.us.us ]
  %.lcssa7398 = phi float [ %.lcssa7398.unr, %.thread2890.us3559.us.us3784.us.us.us.us.prol.loopexit ], [ %3392, %.thread2890.us3559.us.us3784.us.us.us.us ]
  %indvars.iv.next5765 = add nuw nsw i64 %indvars.iv5764, 1
  %exitcond5768.not = icmp eq i64 %indvars.iv.next5765, %wide.trip.count5767
  br i1 %exitcond5768.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us3686.us3809.us.us, !llvm.loop !261

.preheader2930.us.us3686.split.us.us.split.us3935: ; preds = %.preheader2930.us.us3686.us.us
  %.sroa.0193.0.insert.mask.us3558.us.us.us.us3851.us = and i32 %3346, -65536
  br i1 %3345, label %.thread2890.us3559.us.us.us.us3848.us.preheader, label %.thread2890.us3559.us.us.us.us3909.preheader

.thread2890.us3559.us.us.us.us3909.preheader:     ; preds = %.preheader2930.us.us3686.split.us.us.split.us3935
  %3394 = and i32 %3347, -65536
  %.sroa.0204.0.insert.mask.us3553.us.us.us.us3911 = and i32 %3347, -65536
  %.sroa.0204.5.us3557.us.us.us.us3912 = bitcast i32 %.sroa.0204.0.insert.mask.us3553.us.us.us.us3911 to float
  %.sroa.0193.0.insert.mask.us3558.us.us.us.us3913 = and i32 %3346, -65536
  %.sroa.0193.5.us3561.us.us.us.us3914 = bitcast i32 %.sroa.0193.0.insert.mask.us3558.us.us.us.us3913 to float
  br i1 %lcmp.mod7596.not, label %.thread2890.us3559.us.us.us.us3909.prol.loopexit, label %.thread2890.us3559.us.us.us.us3909.prol

.thread2890.us3559.us.us.us.us3909.prol:          ; preds = %.thread2890.us3559.us.us.us.us3909.preheader, %.thread2890.us3559.us.us.us.us3909.prol
  %3395 = phi float [ %3396, %.thread2890.us3559.us.us.us.us3909.prol ], [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us3909.preheader ]
  %.1926383499.us3552.us.us.us.us3910.prol = phi i32 [ %.192638.us3562.us.us.us.us3915.prol, %.thread2890.us3559.us.us.us.us3909.prol ], [ %.1926383498, %.thread2890.us3559.us.us.us.us3909.preheader ]
  %prol.iter7597 = phi i32 [ %prol.iter7597.next, %.thread2890.us3559.us.us.us.us3909.prol ], [ 0, %.thread2890.us3559.us.us.us.us3909.preheader ]
  %3396 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3912, float %.sroa.0193.5.us3561.us.us.us.us3914, float %3395)
  %.192638.us3562.us.us.us.us3915.prol = add nsw i32 %.1926383499.us3552.us.us.us.us3910.prol, -1
  %prol.iter7597.next = add i32 %prol.iter7597, 1
  %prol.iter7597.cmp.not = icmp eq i32 %prol.iter7597.next, %xtraiter7595
  br i1 %prol.iter7597.cmp.not, label %.thread2890.us3559.us.us.us.us3909.prol.loopexit, label %.thread2890.us3559.us.us.us.us3909.prol, !llvm.loop !268

.thread2890.us3559.us.us.us.us3909.prol.loopexit: ; preds = %.thread2890.us3559.us.us.us.us3909.prol, %.thread2890.us3559.us.us.us.us3909.preheader
  %.unr7598 = phi float [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us3909.preheader ], [ %3396, %.thread2890.us3559.us.us.us.us3909.prol ]
  %.1926383499.us3552.us.us.us.us3910.unr = phi i32 [ %.1926383498, %.thread2890.us3559.us.us.us.us3909.preheader ], [ %.192638.us3562.us.us.us.us3915.prol, %.thread2890.us3559.us.us.us.us3909.prol ]
  %.lcssa7399.unr = phi float [ poison, %.thread2890.us3559.us.us.us.us3909.preheader ], [ %3396, %.thread2890.us3559.us.us.us.us3909.prol ]
  br i1 %3124, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, label %.thread2890.us3559.us.us.us.us3909

.thread2890.us3559.us.us.us.us3848.us.preheader:  ; preds = %.preheader2930.us.us3686.split.us.us.split.us3935
  %3397 = and i32 %3346, -65536
  %.sroa.0193.5.us3561.us.us.us.us3852.us = bitcast i32 %.sroa.0193.0.insert.mask.us3558.us.us.us.us3851.us to float
  br i1 %lcmp.mod7600.not, label %.thread2890.us3559.us.us.us.us3848.us.prol.loopexit, label %.thread2890.us3559.us.us.us.us3848.us.prol

.thread2890.us3559.us.us.us.us3848.us.prol:       ; preds = %.thread2890.us3559.us.us.us.us3848.us.preheader, %.thread2890.us3559.us.us.us.us3848.us.prol
  %indvars.iv5769.prol = phi i64 [ %indvars.iv.next5770.prol, %.thread2890.us3559.us.us.us.us3848.us.prol ], [ %3113, %.thread2890.us3559.us.us.us.us3848.us.preheader ]
  %3398 = phi float [ %3401, %.thread2890.us3559.us.us.us.us3848.us.prol ], [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us3848.us.preheader ]
  %prol.iter7601 = phi i64 [ %prol.iter7601.next, %.thread2890.us3559.us.us.us.us3848.us.prol ], [ 0, %.thread2890.us3559.us.us.us.us3848.us.preheader ]
  %3399 = getelementptr i16, ptr %3349, i64 %indvars.iv5769.prol
  %3400 = load i16, ptr %3399, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.prol = zext i16 %3400 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.prol, 16
  %.sroa.0204.5.us3557.us.us.us.us3850.us.prol = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.prol to float
  %3401 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3850.us.prol, float %.sroa.0193.5.us3561.us.us.us.us3852.us, float %3398)
  %indvars.iv.next5770.prol = add nsw i64 %indvars.iv5769.prol, -1
  %prol.iter7601.next = add i64 %prol.iter7601, 1
  %prol.iter7601.cmp.not = icmp eq i64 %prol.iter7601.next, %xtraiter7599
  br i1 %prol.iter7601.cmp.not, label %.thread2890.us3559.us.us.us.us3848.us.prol.loopexit, label %.thread2890.us3559.us.us.us.us3848.us.prol, !llvm.loop !269

.thread2890.us3559.us.us.us.us3848.us.prol.loopexit: ; preds = %.thread2890.us3559.us.us.us.us3848.us.prol, %.thread2890.us3559.us.us.us.us3848.us.preheader
  %indvars.iv5769.unr = phi i64 [ %3113, %.thread2890.us3559.us.us.us.us3848.us.preheader ], [ %indvars.iv.next5770.prol, %.thread2890.us3559.us.us.us.us3848.us.prol ]
  %.unr7602 = phi float [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us3848.us.preheader ], [ %3401, %.thread2890.us3559.us.us.us.us3848.us.prol ]
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.lcssa.unr = phi i32 [ poison, %.thread2890.us3559.us.us.us.us3848.us.preheader ], [ %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.prol, %.thread2890.us3559.us.us.us.us3848.us.prol ]
  %.lcssa7400.unr = phi float [ poison, %.thread2890.us3559.us.us.us.us3848.us.preheader ], [ %3401, %.thread2890.us3559.us.us.us.us3848.us.prol ]
  br i1 %3125, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, label %.thread2890.us3559.us.us.us.us3848.us.preheader.new

.thread2890.us3559.us.us.us.us3848.us.preheader.new: ; preds = %.thread2890.us3559.us.us.us.us3848.us.prol.loopexit
  %invariant.gep7857 = getelementptr i8, ptr %3349, i64 -2
  %invariant.gep7859 = getelementptr i8, ptr %3349, i64 -4
  %invariant.gep7861 = getelementptr i8, ptr %3349, i64 -6
  br label %.thread2890.us3559.us.us.us.us3848.us

._crit_edge3501.split.split.us3564.us.split.us.us.us: ; preds = %.thread2890.us3559.us.us.us.us3909.prol.loopexit, %.thread2890.us3559.us.us.us.us3909, %.thread2890.us3559.us.us.us.us3848.us.prol.loopexit, %.thread2890.us3559.us.us.us.us3848.us, %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit, %.thread2890.us3559.us.us.us.us.us3936, %.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit, %.thread2890.us3559.us.us.us.us.us3875.us, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit, %.thread2890.us3559.us.us.us.us.us.us.1
  %.us-phi3839.us = phi float [ %.lcssa7403.unr, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit ], [ %3452, %.thread2890.us3559.us.us.us.us.us.us.1 ], [ %.lcssa7402.unr, %.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit ], [ %3463, %.thread2890.us3559.us.us.us.us.us3875.us ], [ %.lcssa7401.unr, %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit ], [ %3418, %.thread2890.us3559.us.us.us.us.us3936 ], [ %.lcssa7400.unr, %.thread2890.us3559.us.us.us.us3848.us.prol.loopexit ], [ %3429, %.thread2890.us3559.us.us.us.us3848.us ], [ %.lcssa7399.unr, %.thread2890.us3559.us.us.us.us3909.prol.loopexit ], [ %3359, %.thread2890.us3559.us.us.us.us3909 ]
  %.us-phi3840.us = phi i32 [ %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.lcssa.unr, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.1, %.thread2890.us3559.us.us.us.us.us.us.1 ], [ %3431, %.thread2890.us3559.us.us.us.us.us3875.us ], [ %3431, %.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit ], [ %3431, %.thread2890.us3559.us.us.us.us.us3936 ], [ %3431, %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit ], [ %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.lcssa.unr, %.thread2890.us3559.us.us.us.us3848.us.prol.loopexit ], [ %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.3, %.thread2890.us3559.us.us.us.us3848.us ], [ %3394, %.thread2890.us3559.us.us.us.us3909 ], [ %3394, %.thread2890.us3559.us.us.us.us3909.prol.loopexit ]
  %.us-phi3842.us = phi i32 [ %.sroa.0193.5.in.us3560.us.us.us.us.us.us.lcssa.unr, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit ], [ %.sroa.0193.5.in.us3560.us.us.us.us.us.us.1, %.thread2890.us3559.us.us.us.us.us.us.1 ], [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.lcssa.unr, %.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit ], [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.3, %.thread2890.us3559.us.us.us.us.us3875.us ], [ %3432, %.thread2890.us3559.us.us.us.us.us3936 ], [ %3432, %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit ], [ %3397, %.thread2890.us3559.us.us.us.us3848.us ], [ %3397, %.thread2890.us3559.us.us.us.us3848.us.prol.loopexit ], [ %.sroa.0193.0.insert.mask.us3558.us.us.us.us3851.us, %.thread2890.us3559.us.us.us.us3909 ], [ %.sroa.0193.0.insert.mask.us3558.us.us.us.us3851.us, %.thread2890.us3559.us.us.us.us3909.prol.loopexit ]
  %indvars.iv.next5779 = add nuw nsw i64 %indvars.iv5778, 1
  %exitcond5782.not = icmp eq i64 %indvars.iv.next5779, %wide.trip.count5781
  br i1 %exitcond5782.not, label %._crit_edge3546.split.us.us.us, label %.preheader2930.us.us3686.us.us, !llvm.loop !261

.preheader2930.us.us3686.split.us.us.split.us.us: ; preds = %.preheader2930.us.us3686.us.us
  %3402 = load i32, ptr %3112, align 4, !tbaa !262
  %3403 = icmp eq i32 %3402, 0
  br i1 %3345, label %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader, label %.preheader2930.us.us3686.split.us.us.split.us.split.us3950

.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader: ; preds = %.preheader2930.us.us3686.split.us.us.split.us.us
  br i1 %lcmp.mod7612.not.not, label %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol, label %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit

.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol: ; preds = %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader
  %3404 = getelementptr i16, ptr %3349, i64 %3113
  %3405 = load i16, ptr %3404, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us.us.us.prol = zext i16 %3405 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us.us.us.prol, 16
  %.sroa.0204.5.us3557.us.us.us.us.us.us.prol = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.prol to float
  %.sroa.0193.0.insert.mask.us3558.us.us.us.us.us.us.prol = and i32 %3346, -65536
  br i1 %3403, label %3406, label %.thread2890.us3559.us.us.us.us.us.us.prol

3406:                                             ; preds = %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol
  %3407 = getelementptr i16, ptr %3350, i64 %3113
  %3408 = load i16, ptr %3407, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.prol = zext i16 %3408 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.prol, 16
  br label %.thread2890.us3559.us.us.us.us.us.us.prol

.thread2890.us3559.us.us.us.us.us.us.prol:        ; preds = %3406, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol
  %.sroa.0193.5.in.us3560.us.us.us.us.us.us.prol = phi i32 [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.prol, %3406 ], [ %.sroa.0193.0.insert.mask.us3558.us.us.us.us.us.us.prol, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol ]
  %.sroa.0193.5.us3561.us.us.us.us.us.us.prol = bitcast i32 %.sroa.0193.5.in.us3560.us.us.us.us.us.us.prol to float
  %3409 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us.us.prol, float %.sroa.0193.5.us3561.us.us.us.us.us.us.prol, float %.us-phi.us35713608.us3687.us.us)
  br label %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit

.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit: ; preds = %.thread2890.us3559.us.us.us.us.us.us.prol, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader
  %indvars.iv5775.unr = phi i64 [ %3113, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader ], [ %indvars.iv.next5776.prol, %.thread2890.us3559.us.us.us.us.us.us.prol ]
  %.unr7614 = phi float [ %.us-phi.us35713608.us3687.us.us, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader ], [ %3409, %.thread2890.us3559.us.us.us.us.us.us.prol ]
  %.unr7615 = phi i32 [ %3346, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader ], [ %.sroa.0193.5.in.us3560.us.us.us.us.us.us.prol, %.thread2890.us3559.us.us.us.us.us.us.prol ]
  %.sroa.0193.5.in.us3560.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader ], [ %.sroa.0193.5.in.us3560.us.us.us.us.us.us.prol, %.thread2890.us3559.us.us.us.us.us.us.prol ]
  %.lcssa7403.unr = phi float [ poison, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader ], [ %3409, %.thread2890.us3559.us.us.us.us.us.us.prol ]
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.preheader ], [ %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.prol, %.thread2890.us3559.us.us.us.us.us.us.prol ]
  br i1 %3129, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, label %.preheader2930.us.us3686.split.us.us.split.us.split.us.us

.thread2890.us3559.us.us.us.us.us3936:            ; preds = %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit, %.thread2890.us3559.us.us.us.us.us3936
  %3410 = phi float [ %3418, %.thread2890.us3559.us.us.us.us.us3936 ], [ %.unr7606, %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit ]
  %.1926383499.us3552.us.us.us.us.us3937 = phi i32 [ %.192638.us3562.us.us.us.us.us3941.7, %.thread2890.us3559.us.us.us.us.us3936 ], [ %.1926383499.us3552.us.us.us.us.us3937.unr, %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit ]
  %3411 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3410)
  %3412 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3411)
  %3413 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3412)
  %3414 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3413)
  %3415 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3414)
  %3416 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3415)
  %3417 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3416)
  %3418 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3417)
  %.192638.us3562.us.us.us.us.us3941.7 = add nsw i32 %.1926383499.us3552.us.us.us.us.us3937, -8
  %3419 = icmp sgt i32 %.1926383499.us3552.us.us.us.us.us3937, 7
  br i1 %3419, label %.thread2890.us3559.us.us.us.us.us3936, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, !llvm.loop !260

.thread2890.us3559.us.us.us.us3848.us:            ; preds = %.thread2890.us3559.us.us.us.us3848.us, %.thread2890.us3559.us.us.us.us3848.us.preheader.new
  %indvars.iv5769 = phi i64 [ %indvars.iv5769.unr, %.thread2890.us3559.us.us.us.us3848.us.preheader.new ], [ %indvars.iv.next5770.3, %.thread2890.us3559.us.us.us.us3848.us ]
  %3420 = phi float [ %.unr7602, %.thread2890.us3559.us.us.us.us3848.us.preheader.new ], [ %3429, %.thread2890.us3559.us.us.us.us3848.us ]
  %3421 = getelementptr i16, ptr %3349, i64 %indvars.iv5769
  %3422 = load i16, ptr %3421, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us = zext i16 %3422 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us, 16
  %.sroa.0204.5.us3557.us.us.us.us3850.us = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us to float
  %3423 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3850.us, float %.sroa.0193.5.us3561.us.us.us.us3852.us, float %3420)
  %gep7858 = getelementptr i16, ptr %invariant.gep7857, i64 %indvars.iv5769
  %3424 = load i16, ptr %gep7858, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.1 = zext i16 %3424 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.1, 16
  %.sroa.0204.5.us3557.us.us.us.us3850.us.1 = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.1 to float
  %3425 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3850.us.1, float %.sroa.0193.5.us3561.us.us.us.us3852.us, float %3423)
  %gep7860 = getelementptr i16, ptr %invariant.gep7859, i64 %indvars.iv5769
  %3426 = load i16, ptr %gep7860, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.2 = zext i16 %3426 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.2 = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.2, 16
  %.sroa.0204.5.us3557.us.us.us.us3850.us.2 = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.2 to float
  %3427 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3850.us.2, float %.sroa.0193.5.us3561.us.us.us.us3852.us, float %3425)
  %gep7862 = getelementptr i16, ptr %invariant.gep7861, i64 %indvars.iv5769
  %3428 = load i16, ptr %gep7862, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.3 = zext i16 %3428 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.3 = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us3846.us.3, 16
  %.sroa.0204.5.us3557.us.us.us.us3850.us.3 = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us3847.us.3 to float
  %3429 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us3850.us.3, float %.sroa.0193.5.us3561.us.us.us.us3852.us, float %3427)
  %indvars.iv.next5770.3 = add nsw i64 %indvars.iv5769, -4
  %3430 = icmp sgt i64 %indvars.iv5769, 3
  br i1 %3430, label %.thread2890.us3559.us.us.us.us3848.us, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, !llvm.loop !260

.preheader2930.us.us3686.split.us.us.split.us.split.us3950: ; preds = %.preheader2930.us.us3686.split.us.us.split.us.us
  %3431 = and i32 %3347, -65536
  br i1 %3403, label %.thread2890.us3559.us.us.us.us.us3875.us.preheader, label %.thread2890.us3559.us.us.us.us.us3936.preheader

.thread2890.us3559.us.us.us.us.us3936.preheader:  ; preds = %.preheader2930.us.us3686.split.us.us.split.us.split.us3950
  %3432 = and i32 %3346, -65536
  %.sroa.0204.0.insert.mask.us3553.us.us.us.us.us = and i32 %3347, -65536
  %.sroa.0204.5.us3557.us.us.us.us.us3938 = bitcast i32 %.sroa.0204.0.insert.mask.us3553.us.us.us.us.us to float
  %.sroa.0193.0.insert.mask.us3558.us.us.us.us.us3939 = and i32 %3346, -65536
  %.sroa.0193.5.us3561.us.us.us.us.us3940 = bitcast i32 %.sroa.0193.0.insert.mask.us3558.us.us.us.us.us3939 to float
  br i1 %lcmp.mod7604.not, label %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit, label %.thread2890.us3559.us.us.us.us.us3936.prol

.thread2890.us3559.us.us.us.us.us3936.prol:       ; preds = %.thread2890.us3559.us.us.us.us.us3936.preheader, %.thread2890.us3559.us.us.us.us.us3936.prol
  %3433 = phi float [ %3434, %.thread2890.us3559.us.us.us.us.us3936.prol ], [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us.us3936.preheader ]
  %.1926383499.us3552.us.us.us.us.us3937.prol = phi i32 [ %.192638.us3562.us.us.us.us.us3941.prol, %.thread2890.us3559.us.us.us.us.us3936.prol ], [ %.1926383498, %.thread2890.us3559.us.us.us.us.us3936.preheader ]
  %prol.iter7605 = phi i32 [ %prol.iter7605.next, %.thread2890.us3559.us.us.us.us.us3936.prol ], [ 0, %.thread2890.us3559.us.us.us.us.us3936.preheader ]
  %3434 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3938, float %.sroa.0193.5.us3561.us.us.us.us.us3940, float %3433)
  %.192638.us3562.us.us.us.us.us3941.prol = add nsw i32 %.1926383499.us3552.us.us.us.us.us3937.prol, -1
  %prol.iter7605.next = add i32 %prol.iter7605, 1
  %prol.iter7605.cmp.not = icmp eq i32 %prol.iter7605.next, %xtraiter7603
  br i1 %prol.iter7605.cmp.not, label %.thread2890.us3559.us.us.us.us.us3936.prol.loopexit, label %.thread2890.us3559.us.us.us.us.us3936.prol, !llvm.loop !270

.thread2890.us3559.us.us.us.us.us3936.prol.loopexit: ; preds = %.thread2890.us3559.us.us.us.us.us3936.prol, %.thread2890.us3559.us.us.us.us.us3936.preheader
  %.unr7606 = phi float [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us.us3936.preheader ], [ %3434, %.thread2890.us3559.us.us.us.us.us3936.prol ]
  %.1926383499.us3552.us.us.us.us.us3937.unr = phi i32 [ %.1926383498, %.thread2890.us3559.us.us.us.us.us3936.preheader ], [ %.192638.us3562.us.us.us.us.us3941.prol, %.thread2890.us3559.us.us.us.us.us3936.prol ]
  %.lcssa7401.unr = phi float [ poison, %.thread2890.us3559.us.us.us.us.us3936.preheader ], [ %3434, %.thread2890.us3559.us.us.us.us.us3936.prol ]
  br i1 %3126, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, label %.thread2890.us3559.us.us.us.us.us3936

.thread2890.us3559.us.us.us.us.us3875.us.preheader: ; preds = %.preheader2930.us.us3686.split.us.us.split.us.split.us3950
  %.sroa.0204.0.insert.mask.us3553.us.us.us.us.us3870.us = and i32 %3347, -65536
  %.sroa.0204.5.us3557.us.us.us.us.us3871.us = bitcast i32 %.sroa.0204.0.insert.mask.us3553.us.us.us.us.us3870.us to float
  br i1 %lcmp.mod7608.not, label %.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit, label %.thread2890.us3559.us.us.us.us.us3875.us.prol

.thread2890.us3559.us.us.us.us.us3875.us.prol:    ; preds = %.thread2890.us3559.us.us.us.us.us3875.us.preheader, %.thread2890.us3559.us.us.us.us.us3875.us.prol
  %indvars.iv5772.prol = phi i64 [ %indvars.iv.next5773.prol, %.thread2890.us3559.us.us.us.us.us3875.us.prol ], [ %3113, %.thread2890.us3559.us.us.us.us.us3875.us.preheader ]
  %3435 = phi float [ %3438, %.thread2890.us3559.us.us.us.us.us3875.us.prol ], [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us.us3875.us.preheader ]
  %prol.iter7609 = phi i64 [ %prol.iter7609.next, %.thread2890.us3559.us.us.us.us.us3875.us.prol ], [ 0, %.thread2890.us3559.us.us.us.us.us3875.us.preheader ]
  %3436 = getelementptr i16, ptr %3350, i64 %indvars.iv5772.prol
  %3437 = load i16, ptr %3436, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.prol = zext i16 %3437 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.prol = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.prol, 16
  %.sroa.0193.5.us3561.us.us.us.us.us3877.us.prol = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.prol to float
  %3438 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3871.us, float %.sroa.0193.5.us3561.us.us.us.us.us3877.us.prol, float %3435)
  %indvars.iv.next5773.prol = add nsw i64 %indvars.iv5772.prol, -1
  %prol.iter7609.next = add i64 %prol.iter7609, 1
  %prol.iter7609.cmp.not = icmp eq i64 %prol.iter7609.next, %xtraiter7607
  br i1 %prol.iter7609.cmp.not, label %.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit, label %.thread2890.us3559.us.us.us.us.us3875.us.prol, !llvm.loop !271

.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit: ; preds = %.thread2890.us3559.us.us.us.us.us3875.us.prol, %.thread2890.us3559.us.us.us.us.us3875.us.preheader
  %indvars.iv5772.unr = phi i64 [ %3113, %.thread2890.us3559.us.us.us.us.us3875.us.preheader ], [ %indvars.iv.next5773.prol, %.thread2890.us3559.us.us.us.us.us3875.us.prol ]
  %.unr7610 = phi float [ %.us-phi.us35713608.us3687.us.us, %.thread2890.us3559.us.us.us.us.us3875.us.preheader ], [ %3438, %.thread2890.us3559.us.us.us.us.us3875.us.prol ]
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.lcssa.unr = phi i32 [ poison, %.thread2890.us3559.us.us.us.us.us3875.us.preheader ], [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.prol, %.thread2890.us3559.us.us.us.us.us3875.us.prol ]
  %.lcssa7402.unr = phi float [ poison, %.thread2890.us3559.us.us.us.us.us3875.us.preheader ], [ %3438, %.thread2890.us3559.us.us.us.us.us3875.us.prol ]
  br i1 %3127, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, label %.thread2890.us3559.us.us.us.us.us3875.us.preheader.new

.thread2890.us3559.us.us.us.us.us3875.us.preheader.new: ; preds = %.thread2890.us3559.us.us.us.us.us3875.us.prol.loopexit
  %invariant.gep7863 = getelementptr i8, ptr %3350, i64 -2
  %invariant.gep7865 = getelementptr i8, ptr %3350, i64 -4
  %invariant.gep7867 = getelementptr i8, ptr %3350, i64 -6
  br label %.thread2890.us3559.us.us.us.us.us3875.us

.preheader2930.us.us3686.split.us.us.split.us.split.us.us: ; preds = %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit, %.thread2890.us3559.us.us.us.us.us.us.1
  %indvars.iv5775 = phi i64 [ %indvars.iv.next5776.1, %.thread2890.us3559.us.us.us.us.us.us.1 ], [ %indvars.iv5775.unr, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit ]
  %3439 = phi float [ %3452, %.thread2890.us3559.us.us.us.us.us.us.1 ], [ %.unr7614, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit ]
  %3440 = phi i32 [ %.sroa.0193.5.in.us3560.us.us.us.us.us.us.1, %.thread2890.us3559.us.us.us.us.us.us.1 ], [ %.unr7615, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us.prol.loopexit ]
  %3441 = getelementptr i16, ptr %3349, i64 %indvars.iv5775
  %3442 = load i16, ptr %3441, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us.us.us = zext i16 %3442 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us.us.us, 16
  %.sroa.0204.5.us3557.us.us.us.us.us.us = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us to float
  %.sroa.0193.0.insert.mask.us3558.us.us.us.us.us.us = and i32 %3440, -65536
  br i1 %3403, label %3443, label %.thread2890.us3559.us.us.us.us.us.us

3443:                                             ; preds = %.preheader2930.us.us3686.split.us.us.split.us.split.us.us
  %3444 = getelementptr i16, ptr %3350, i64 %indvars.iv5775
  %3445 = load i16, ptr %3444, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us = zext i16 %3445 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us, 16
  br label %.thread2890.us3559.us.us.us.us.us.us

.thread2890.us3559.us.us.us.us.us.us:             ; preds = %3443, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us
  %.sroa.0193.5.in.us3560.us.us.us.us.us.us = phi i32 [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us, %3443 ], [ %.sroa.0193.0.insert.mask.us3558.us.us.us.us.us.us, %.preheader2930.us.us3686.split.us.us.split.us.split.us.us ]
  %.sroa.0193.5.us3561.us.us.us.us.us.us = bitcast i32 %.sroa.0193.5.in.us3560.us.us.us.us.us.us to float
  %3446 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us.us, float %.sroa.0193.5.us3561.us.us.us.us.us.us, float %3439)
  %indvars.iv.next5776 = add nsw i64 %indvars.iv5775, -1
  %3447 = getelementptr i16, ptr %3349, i64 %indvars.iv.next5776
  %3448 = load i16, ptr %3447, align 2, !tbaa !38
  %.sroa.0204.2.insert.ext206.us3554.us.us.us.us.us.us.1 = zext i16 %3448 to i32
  %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.0204.2.insert.ext206.us3554.us.us.us.us.us.us.1, 16
  %.sroa.0204.5.us3557.us.us.us.us.us.us.1 = bitcast i32 %.sroa.0204.2.insert.shift207.us3555.us.us.us.us.us.us.1 to float
  br i1 %3403, label %3449, label %.thread2890.us3559.us.us.us.us.us.us.1

3449:                                             ; preds = %.thread2890.us3559.us.us.us.us.us.us
  %3450 = getelementptr i16, ptr %3350, i64 %indvars.iv.next5776
  %3451 = load i16, ptr %3450, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.1 = zext i16 %3451 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us.us.1, 16
  br label %.thread2890.us3559.us.us.us.us.us.us.1

.thread2890.us3559.us.us.us.us.us.us.1:           ; preds = %3449, %.thread2890.us3559.us.us.us.us.us.us
  %.sroa.0193.5.in.us3560.us.us.us.us.us.us.1 = phi i32 [ %.sroa.0193.2.insert.shift201.us.us.us.us.us.us.us.1, %3449 ], [ %.sroa.0193.5.in.us3560.us.us.us.us.us.us, %.thread2890.us3559.us.us.us.us.us.us ]
  %.sroa.0193.5.us3561.us.us.us.us.us.us.1 = bitcast i32 %.sroa.0193.5.in.us3560.us.us.us.us.us.us.1 to float
  %3452 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us.us.1, float %.sroa.0193.5.us3561.us.us.us.us.us.us.1, float %3446)
  %indvars.iv.next5776.1 = add nsw i64 %indvars.iv5775, -2
  %3453 = icmp sgt i64 %indvars.iv5775, 1
  br i1 %3453, label %.preheader2930.us.us3686.split.us.us.split.us.split.us.us, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, !llvm.loop !260

.thread2890.us3559.us.us.us.us.us3875.us:         ; preds = %.thread2890.us3559.us.us.us.us.us3875.us, %.thread2890.us3559.us.us.us.us.us3875.us.preheader.new
  %indvars.iv5772 = phi i64 [ %indvars.iv5772.unr, %.thread2890.us3559.us.us.us.us.us3875.us.preheader.new ], [ %indvars.iv.next5773.3, %.thread2890.us3559.us.us.us.us.us3875.us ]
  %3454 = phi float [ %.unr7610, %.thread2890.us3559.us.us.us.us.us3875.us.preheader.new ], [ %3463, %.thread2890.us3559.us.us.us.us.us3875.us ]
  %3455 = getelementptr i16, ptr %3350, i64 %indvars.iv5772
  %3456 = load i16, ptr %3455, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us = zext i16 %3456 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us, 16
  %.sroa.0193.5.us3561.us.us.us.us.us3877.us = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us to float
  %3457 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3871.us, float %.sroa.0193.5.us3561.us.us.us.us.us3877.us, float %3454)
  %gep7864 = getelementptr i16, ptr %invariant.gep7863, i64 %indvars.iv5772
  %3458 = load i16, ptr %gep7864, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.1 = zext i16 %3458 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.1 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.1, 16
  %.sroa.0193.5.us3561.us.us.us.us.us3877.us.1 = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.1 to float
  %3459 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3871.us, float %.sroa.0193.5.us3561.us.us.us.us.us3877.us.1, float %3457)
  %gep7866 = getelementptr i16, ptr %invariant.gep7865, i64 %indvars.iv5772
  %3460 = load i16, ptr %gep7866, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.2 = zext i16 %3460 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.2 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.2, 16
  %.sroa.0193.5.us3561.us.us.us.us.us3877.us.2 = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.2 to float
  %3461 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3871.us, float %.sroa.0193.5.us3561.us.us.us.us.us3877.us.2, float %3459)
  %gep7868 = getelementptr i16, ptr %invariant.gep7867, i64 %indvars.iv5772
  %3462 = load i16, ptr %gep7868, align 2, !tbaa !38
  %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.3 = zext i16 %3462 to i32
  %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.3 = shl nuw i32 %.sroa.0193.2.insert.ext200.us.us.us.us.us.us3873.us.3, 16
  %.sroa.0193.5.us3561.us.us.us.us.us3877.us.3 = bitcast i32 %.sroa.0193.2.insert.shift201.us.us.us.us.us.us3874.us.3 to float
  %3463 = call float @llvm.fmuladd.f32(float %.sroa.0204.5.us3557.us.us.us.us.us3871.us, float %.sroa.0193.5.us3561.us.us.us.us.us3877.us.3, float %3461)
  %indvars.iv.next5773.3 = add nsw i64 %indvars.iv5772, -4
  %3464 = icmp sgt i64 %indvars.iv5772, 3
  br i1 %3464, label %.thread2890.us3559.us.us.us.us.us3875.us, label %._crit_edge3501.split.split.us3564.us.split.us.us.us, !llvm.loop !260

.lr.ph3892.split:                                 ; preds = %.lr.ph3892, %._crit_edge3680.split
  %indvars.iv5754 = phi i64 [ %indvars.iv.next5755, %._crit_edge3680.split ], [ 0, %.lr.ph3892 ]
  %3465 = load double, ptr %3107, align 8, !tbaa !25
  %3466 = fcmp oeq double %3465, 0.000000e+00
  br i1 %3466, label %3467, label %3468

3467:                                             ; preds = %.lr.ph3892.split
  %gep6679 = getelementptr float, ptr %invariant.gep6680, i64 %indvars.iv5754
  store float 0.000000e+00, ptr %gep6679, align 4, !tbaa !27
  br label %3468

3468:                                             ; preds = %3467, %.lr.ph3892.split
  %3469 = load i32, ptr %3108, align 8, !tbaa !52
  %3470 = icmp sgt i32 %3469, 0
  br i1 %3470, label %.lr.ph3679, label %._crit_edge3680.split

.lr.ph3679:                                       ; preds = %3468, %.lr.ph3679
  %indvars.iv5751 = phi i64 [ %indvars.iv.next5752, %.lr.ph3679 ], [ 0, %3468 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %50, ptr noundef nonnull %51, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5751, ptr noundef nonnull %0)
  %indvars.iv.next5752 = add nuw nsw i64 %indvars.iv5751, 1
  %3471 = load i32, ptr %3108, align 8, !tbaa !52
  %3472 = sext i32 %3471 to i64
  %3473 = icmp slt i64 %indvars.iv.next5752, %3472
  br i1 %3473, label %.lr.ph3679, label %._crit_edge3680.split, !llvm.loop !258

._crit_edge3680.split:                            ; preds = %.lr.ph3679, %3468
  %indvars.iv.next5755 = add nuw nsw i64 %indvars.iv5754, 1
  %exitcond5758.not = icmp eq i64 %indvars.iv.next5755, %wide.trip.count5757
  br i1 %exitcond5758.not, label %._crit_edge3893, label %.lr.ph3892.split, !llvm.loop !257

._crit_edge3893:                                  ; preds = %._crit_edge3680.split, %._crit_edge3680.split.us.us, %.preheader2931
  %.lcssa3011 = phi i32 [ %3139, %.preheader2931 ], [ %.lcssa3009.us, %._crit_edge3680.split.us.us ], [ %3139, %._crit_edge3680.split ]
  %.lcssa3010 = phi i32 [ %3138, %.preheader2931 ], [ %.lcssa3008.us, %._crit_edge3680.split.us.us ], [ %3138, %._crit_edge3680.split ]
  %indvars.iv.next5836 = add nuw nsw i64 %indvars.iv5835, 1
  %exitcond5839.not = icmp eq i64 %indvars.iv.next5836, %wide.trip.count5838
  br i1 %exitcond5839.not, label %._crit_edge3960, label %.preheader2931, !llvm.loop !272

._crit_edge3960:                                  ; preds = %._crit_edge3893, %3104
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  br label %.loopexit

.thread2888:                                      ; preds = %2800, %2799, %2945, %2949, %3094, %3090, %3086
  %3474 = phi i1 [ true, %3094 ], [ true, %3090 ], [ true, %3086 ], [ false, %2949 ], [ false, %2945 ], [ false, %2799 ], [ false, %2800 ]
  br i1 %2332, label %3475, label %3603

3475:                                             ; preds = %.thread2888
  %3476 = getelementptr inbounds i8, ptr %0, i64 4
  %3477 = load i32, ptr %3476, align 4, !tbaa !24
  %3478 = icmp eq i32 %3477, 2
  br i1 %3478, label %3479, label %3603

3479:                                             ; preds = %3475
  %3480 = getelementptr inbounds i8, ptr %0, i64 8
  %3481 = load i32, ptr %3480, align 8, !tbaa !26
  %3482 = icmp eq i32 %3481, 1
  br i1 %3482, label %3483, label %3603

3483:                                             ; preds = %3479
  %3484 = getelementptr inbounds i8, ptr %0, i64 12
  %3485 = load i32, ptr %3484, align 4, !tbaa !70
  %3486 = icmp eq i32 %3485, 1
  br i1 %3486, label %3487, label %3603

3487:                                             ; preds = %3483
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  store ptr %1, ptr %52, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #8
  store ptr %2, ptr %53, align 8, !tbaa !50
  %3488 = getelementptr inbounds i8, ptr %0, i64 72
  %3489 = load i32, ptr %3488, align 8, !tbaa !225
  %.not2815 = icmp eq i32 %3489, 0
  br i1 %.not2815, label %3493, label %3490

3490:                                             ; preds = %3487
  %3491 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 2) #8
  %3492 = freeze i32 %3491
  br label %3493

3493:                                             ; preds = %3487, %3490
  %.fr4947 = phi i32 [ %3492, %3490 ], [ 1, %3487 ]
  %3494 = icmp sgt i32 %79, 0
  br i1 %3494, label %.preheader2907.lr.ph, label %._crit_edge4920

.preheader2907.lr.ph:                             ; preds = %3493
  %3495 = icmp sgt i32 %77, 0
  %3496 = getelementptr inbounds i8, ptr %0, i64 56
  %3497 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4881 = mul i32 %.fr4947, %71
  %factor.op.mul4882 = mul i32 %.fr4947, %73
  %3498 = icmp sgt i32 %.fr4947, 0
  %3499 = getelementptr inbounds i8, ptr %0, i64 64
  %3500 = getelementptr inbounds i8, ptr %0, i64 68
  %3501 = getelementptr inbounds i8, ptr %0, i64 76
  %3502 = sext i32 %.fr4947 to i64
  %3503 = sext i32 %73 to i64
  %3504 = sext i32 %71 to i64
  %3505 = sext i32 %75 to i64
  %wide.trip.count6328 = zext nneg i32 %79 to i64
  %wide.trip.count6312 = zext nneg i32 %77 to i64
  %wide.trip.count6324 = zext nneg i32 %77 to i64
  br label %.preheader2907

.preheader2907:                                   ; preds = %.preheader2907.lr.ph, %._crit_edge4910
  %indvars.iv6326 = phi i64 [ 0, %.preheader2907.lr.ph ], [ %indvars.iv.next6327, %._crit_edge4910 ]
  %3506 = phi i32 [ undef, %.preheader2907.lr.ph ], [ %.lcssa2983, %._crit_edge4910 ]
  %.sroa.4181.04917 = phi i8 [ undef, %.preheader2907.lr.ph ], [ %.sroa.4181.1.lcssa, %._crit_edge4910 ]
  br i1 %3495, label %.lr.ph4909, label %._crit_edge4910

.lr.ph4909:                                       ; preds = %.preheader2907
  %3507 = mul nsw i64 %indvars.iv6326, %3505
  %3508 = mul nsw i64 %indvars.iv6326, %3503
  %3509 = mul nsw i64 %indvars.iv6326, %3502
  %invariant.gep6736 = getelementptr float, ptr %3, i64 %3507
  br i1 %3498, label %.lr.ph4909.split.us.preheader, label %.lr.ph4909.split

.lr.ph4909.split.us.preheader:                    ; preds = %.lr.ph4909
  %invariant.gep6738 = getelementptr float, ptr %3, i64 %3507
  br label %.lr.ph4909.split.us

.lr.ph4909.split.us:                              ; preds = %.lr.ph4909.split.us.preheader, %._crit_edge4898.split.us.us
  %indvars.iv6322 = phi i64 [ 0, %.lr.ph4909.split.us.preheader ], [ %indvars.iv.next6323, %._crit_edge4898.split.us.us ]
  %3510 = phi i32 [ %3506, %.lr.ph4909.split.us.preheader ], [ %.lcssa2982.us, %._crit_edge4898.split.us.us ]
  %.sroa.4181.14906.us = phi i8 [ %.sroa.4181.04917, %.lr.ph4909.split.us.preheader ], [ %.sroa.4181.2.lcssa.us, %._crit_edge4898.split.us.us ]
  %3511 = load double, ptr %3496, align 8, !tbaa !25
  %3512 = fcmp oeq double %3511, 0.000000e+00
  br i1 %3512, label %3513, label %3514

3513:                                             ; preds = %.lr.ph4909.split.us
  %gep6737 = getelementptr float, ptr %invariant.gep6736, i64 %indvars.iv6322
  store float 0.000000e+00, ptr %gep6737, align 4, !tbaa !27
  br label %3514

3514:                                             ; preds = %3513, %.lr.ph4909.split.us
  %3515 = load i32, ptr %3497, align 8, !tbaa !52
  %3516 = icmp sgt i32 %3515, 0
  br i1 %3516, label %.lr.ph4897.us, label %._crit_edge4898.split.us.us

._crit_edge4898.split.us.us:                      ; preds = %._crit_edge4886.split.us.us.us, %3514
  %.sroa.4181.2.lcssa.us = phi i8 [ %.sroa.4181.14906.us, %3514 ], [ %.sroa.4181.3.lcssa.us.us, %._crit_edge4886.split.us.us.us ]
  %.lcssa2982.us = phi i32 [ %3510, %3514 ], [ %.lcssa2981.us.us, %._crit_edge4886.split.us.us.us ]
  %indvars.iv.next6323 = add nuw nsw i64 %indvars.iv6322, 1
  %exitcond6325.not = icmp eq i64 %indvars.iv.next6323, %wide.trip.count6324
  br i1 %exitcond6325.not, label %._crit_edge4910, label %.lr.ph4909.split.us, !llvm.loop !273

.lr.ph4897.us:                                    ; preds = %3514
  %3517 = mul nsw i64 %indvars.iv6322, %3504
  %3518 = mul nuw nsw i64 %indvars.iv6322, %3502
  %gep6739 = getelementptr float, ptr %invariant.gep6738, i64 %indvars.iv6322
  br label %3519

3519:                                             ; preds = %._crit_edge4886.split.us.us.us, %.lr.ph4897.us
  %indvars.iv6320 = phi i64 [ %indvars.iv.next6321, %._crit_edge4886.split.us.us.us ], [ 0, %.lr.ph4897.us ]
  %3520 = phi i32 [ %.lcssa2981.us.us, %._crit_edge4886.split.us.us.us ], [ %3510, %.lr.ph4897.us ]
  %.sroa.4181.24893.us.us = phi i8 [ %.sroa.4181.3.lcssa.us.us, %._crit_edge4886.split.us.us.us ], [ %.sroa.4181.14906.us, %.lr.ph4897.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6320, ptr noundef nonnull %0)
  %3521 = sdiv i32 %.fr4927, %.fr4947
  %3522 = icmp sgt i32 %3521, 0
  br i1 %3522, label %.preheader.us.us.us.preheader, label %._crit_edge4886.split.us.us.us

.preheader.us.us.us.preheader:                    ; preds = %3519
  %wide.trip.count6318 = zext nneg i32 %3521 to i64
  br label %.preheader.us.us.us

._crit_edge4886.split.us.us.us:                   ; preds = %._crit_edge4877.us.us.us, %3519
  %.sroa.4181.3.lcssa.us.us = phi i8 [ %.sroa.4181.24893.us.us, %3519 ], [ %.sroa.4181.5.us.us.us, %._crit_edge4877.us.us.us ]
  %.lcssa2981.us.us = phi i32 [ %3520, %3519 ], [ %.sroa.0168.5.in.us.us.us, %._crit_edge4877.us.us.us ]
  %indvars.iv.next6321 = add nuw nsw i64 %indvars.iv6320, 1
  %3523 = load i32, ptr %3497, align 8, !tbaa !52
  %3524 = sext i32 %3523 to i64
  %3525 = icmp slt i64 %indvars.iv.next6321, %3524
  br i1 %3525, label %3519, label %._crit_edge4898.split.us.us, !llvm.loop !274

.preheader.us.us.us:                              ; preds = %.preheader.us.us.us.preheader, %._crit_edge4877.us.us.us
  %indvars.iv6316 = phi i64 [ 0, %.preheader.us.us.us.preheader ], [ %indvars.iv.next6317, %._crit_edge4877.us.us.us ]
  %3526 = phi i32 [ %3520, %.preheader.us.us.us.preheader ], [ %.sroa.0168.5.in.us.us.us, %._crit_edge4877.us.us.us ]
  %.sroa.4181.34883.us.us.us = phi i8 [ %.sroa.4181.24893.us.us, %.preheader.us.us.us.preheader ], [ %.sroa.4181.5.us.us.us, %._crit_edge4877.us.us.us ]
  %3527 = trunc nuw nsw i64 %indvars.iv6316 to i32
  %factor.op.mul4870.reass.us.us.us = mul i32 %factor.op.mul4881, %3527
  %factor.op.mul4871.reass.us.us.us = mul i32 %factor.op.mul4882, %3527
  %3528 = mul nuw nsw i64 %indvars.iv6316, %3502
  %3529 = sext i32 %factor.op.mul4870.reass.us.us.us to i64
  %3530 = sext i32 %factor.op.mul4871.reass.us.us.us to i64
  br label %3531

3531:                                             ; preds = %.thread2892.us.us.us, %.preheader.us.us.us
  %indvars.iv6314 = phi i64 [ %indvars.iv.next6315, %.thread2892.us.us.us ], [ %3502, %.preheader.us.us.us ]
  %3532 = phi i32 [ %.sroa.0168.5.in.us.us.us, %.thread2892.us.us.us ], [ %3526, %.preheader.us.us.us ]
  %.sroa.4181.44874.us.us.us = phi i8 [ %.sroa.4181.5.us.us.us, %.thread2892.us.us.us ], [ %.sroa.4181.34883.us.us.us, %.preheader.us.us.us ]
  %indvars.iv.next6315 = add nsw i64 %indvars.iv6314, -1
  %3533 = load i32, ptr %3499, align 8, !tbaa !74
  %3534 = icmp eq i32 %3533, 0
  br i1 %3534, label %3546, label %3535

3535:                                             ; preds = %3531
  %3536 = icmp sgt i32 %3533, 0
  br i1 %3536, label %3537, label %3554

3537:                                             ; preds = %3535
  %3538 = load i32, ptr %3488, align 8, !tbaa !225
  %3539 = icmp eq i32 %3538, 0
  br i1 %3539, label %3540, label %3554

3540:                                             ; preds = %3537
  %3541 = load ptr, ptr %52, align 8, !tbaa !50
  %3542 = load i64, ptr %5, align 8, !tbaa !19
  %3543 = getelementptr i8, ptr %3541, i64 %3542
  %3544 = getelementptr i8, ptr %3543, i64 %3517
  %3545 = getelementptr i8, ptr %3544, i64 %3528
  br label %.sink.split

3546:                                             ; preds = %3531
  %3547 = load ptr, ptr %52, align 8, !tbaa !50
  %3548 = load i64, ptr %5, align 8, !tbaa !19
  %3549 = getelementptr i8, ptr %3547, i64 %3548
  %3550 = getelementptr i8, ptr %3549, i64 %3529
  %3551 = getelementptr i8, ptr %3550, i64 %3518
  br label %.sink.split

.sink.split:                                      ; preds = %3540, %3546
  %.sink6746 = phi ptr [ %3551, %3546 ], [ %3545, %3540 ]
  %3552 = getelementptr i8, ptr %.sink6746, i64 %indvars.iv.next6315
  %3553 = load i8, ptr %3552, align 1, !tbaa !41
  br label %3554

3554:                                             ; preds = %.sink.split, %3537, %3535
  %.sroa.4181.5.us.us.us = phi i8 [ %.sroa.4181.44874.us.us.us, %3537 ], [ %.sroa.4181.44874.us.us.us, %3535 ], [ %3553, %.sink.split ]
  %.sroa.4181.0.insert.ext.us.us.us = zext i8 %.sroa.4181.5.us.us.us to i16
  %.sroa.4181.0.insert.shift.us.us.us = shl nuw i16 %.sroa.4181.0.insert.ext.us.us.us, 8
  %3555 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.4181.0.insert.shift.us.us.us) #8
  %.sroa.0168.0.insert.mask.us.us.us = and i32 %3532, -65536
  %3556 = load i32, ptr %3500, align 4, !tbaa !73
  %3557 = icmp sgt i32 %3556, 0
  br i1 %3557, label %3570, label %3558

3558:                                             ; preds = %3554
  %3559 = icmp eq i32 %3556, 0
  br i1 %3559, label %3560, label %.thread2892.us.us.us

3560:                                             ; preds = %3558
  %3561 = load i32, ptr %3501, align 4, !tbaa !262
  %3562 = icmp eq i32 %3561, 0
  br i1 %3562, label %3563, label %.thread2892.us.us.us

3563:                                             ; preds = %3560
  %3564 = load ptr, ptr %53, align 8, !tbaa !50
  %3565 = load i64, ptr %6, align 8, !tbaa !19
  %3566 = getelementptr i16, ptr %3564, i64 %3565
  %3567 = getelementptr i16, ptr %3566, i64 %3508
  %3568 = getelementptr i16, ptr %3567, i64 %3528
  %3569 = getelementptr i16, ptr %3568, i64 %indvars.iv.next6315
  br label %.thread2892.us.us.us.sink.split

3570:                                             ; preds = %3554
  %3571 = load i32, ptr %3501, align 4, !tbaa !262
  %3572 = icmp sgt i32 %3571, 0
  br i1 %3572, label %3583, label %3573

3573:                                             ; preds = %3570
  %3574 = icmp eq i32 %3571, 0
  br i1 %3574, label %3575, label %.thread2892.us.us.us

3575:                                             ; preds = %3573
  %3576 = load ptr, ptr %53, align 8, !tbaa !50
  %3577 = load i64, ptr %6, align 8, !tbaa !19
  %3578 = add nsw i64 %indvars.iv.next6315, %3528
  %3579 = mul nsw i64 %3578, %3503
  %3580 = getelementptr i16, ptr %3576, i64 %3577
  %3581 = getelementptr i16, ptr %3580, i64 %3579
  %3582 = getelementptr i16, ptr %3581, i64 %indvars.iv6326
  br label %.thread2892.us.us.us.sink.split

3583:                                             ; preds = %3570
  %3584 = load ptr, ptr %53, align 8, !tbaa !50
  %3585 = load i64, ptr %6, align 8, !tbaa !19
  %3586 = getelementptr i16, ptr %3584, i64 %3585
  %3587 = getelementptr i16, ptr %3586, i64 %3509
  %3588 = getelementptr i16, ptr %3587, i64 %3530
  %3589 = getelementptr i16, ptr %3588, i64 %indvars.iv.next6315
  br label %.thread2892.us.us.us.sink.split

.thread2892.us.us.us.sink.split:                  ; preds = %3563, %3575, %3583
  %.sink6747 = phi ptr [ %3589, %3583 ], [ %3582, %3575 ], [ %3569, %3563 ]
  %3590 = load i16, ptr %.sink6747, align 2, !tbaa !38
  %.sroa.0168.2.insert.ext.us.us.us = zext i16 %3590 to i32
  %.sroa.0168.2.insert.shift.us.us.us = shl nuw i32 %.sroa.0168.2.insert.ext.us.us.us, 16
  br label %.thread2892.us.us.us

.thread2892.us.us.us:                             ; preds = %.thread2892.us.us.us.sink.split, %3573, %3560, %3558
  %.sroa.0168.5.in.us.us.us = phi i32 [ %.sroa.0168.0.insert.mask.us.us.us, %3560 ], [ %.sroa.0168.0.insert.mask.us.us.us, %3558 ], [ %.sroa.0168.0.insert.mask.us.us.us, %3573 ], [ %.sroa.0168.2.insert.shift.us.us.us, %.thread2892.us.us.us.sink.split ]
  %.sroa.0168.5.us.us.us = bitcast i32 %.sroa.0168.5.in.us.us.us to float
  %3591 = load float, ptr %gep6739, align 4, !tbaa !27
  %3592 = call float @llvm.fmuladd.f32(float %3555, float %.sroa.0168.5.us.us.us, float %3591)
  store float %3592, ptr %gep6739, align 4, !tbaa !27
  %3593 = icmp sgt i64 %indvars.iv6314, 1
  br i1 %3593, label %3531, label %._crit_edge4877.us.us.us, !llvm.loop !275

._crit_edge4877.us.us.us:                         ; preds = %.thread2892.us.us.us
  %indvars.iv.next6317 = add nuw nsw i64 %indvars.iv6316, 1
  %exitcond6319.not = icmp eq i64 %indvars.iv.next6317, %wide.trip.count6318
  br i1 %exitcond6319.not, label %._crit_edge4886.split.us.us.us, label %.preheader.us.us.us, !llvm.loop !276

.lr.ph4909.split:                                 ; preds = %.lr.ph4909, %._crit_edge4898.split
  %indvars.iv6309 = phi i64 [ %indvars.iv.next6310, %._crit_edge4898.split ], [ 0, %.lr.ph4909 ]
  %3594 = load double, ptr %3496, align 8, !tbaa !25
  %3595 = fcmp oeq double %3594, 0.000000e+00
  br i1 %3595, label %3596, label %3597

3596:                                             ; preds = %.lr.ph4909.split
  %gep6735 = getelementptr float, ptr %invariant.gep6736, i64 %indvars.iv6309
  store float 0.000000e+00, ptr %gep6735, align 4, !tbaa !27
  br label %3597

3597:                                             ; preds = %3596, %.lr.ph4909.split
  %3598 = load i32, ptr %3497, align 8, !tbaa !52
  %3599 = icmp sgt i32 %3598, 0
  br i1 %3599, label %.lr.ph4897, label %._crit_edge4898.split

.lr.ph4897:                                       ; preds = %3597, %.lr.ph4897
  %indvars.iv6306 = phi i64 [ %indvars.iv.next6307, %.lr.ph4897 ], [ 0, %3597 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6306, ptr noundef nonnull %0)
  %indvars.iv.next6307 = add nuw nsw i64 %indvars.iv6306, 1
  %3600 = load i32, ptr %3497, align 8, !tbaa !52
  %3601 = sext i32 %3600 to i64
  %3602 = icmp slt i64 %indvars.iv.next6307, %3601
  br i1 %3602, label %.lr.ph4897, label %._crit_edge4898.split, !llvm.loop !274

._crit_edge4898.split:                            ; preds = %.lr.ph4897, %3597
  %indvars.iv.next6310 = add nuw nsw i64 %indvars.iv6309, 1
  %exitcond6313.not = icmp eq i64 %indvars.iv.next6310, %wide.trip.count6312
  br i1 %exitcond6313.not, label %._crit_edge4910, label %.lr.ph4909.split, !llvm.loop !273

._crit_edge4910:                                  ; preds = %._crit_edge4898.split, %._crit_edge4898.split.us.us, %.preheader2907
  %.sroa.4181.1.lcssa = phi i8 [ %.sroa.4181.04917, %.preheader2907 ], [ %.sroa.4181.2.lcssa.us, %._crit_edge4898.split.us.us ], [ %.sroa.4181.04917, %._crit_edge4898.split ]
  %.lcssa2983 = phi i32 [ %3506, %.preheader2907 ], [ %.lcssa2982.us, %._crit_edge4898.split.us.us ], [ %3506, %._crit_edge4898.split ]
  %indvars.iv.next6327 = add nuw nsw i64 %indvars.iv6326, 1
  %exitcond6329.not = icmp eq i64 %indvars.iv.next6327, %wide.trip.count6328
  br i1 %exitcond6329.not, label %._crit_edge4920, label %.preheader2907, !llvm.loop !277

._crit_edge4920:                                  ; preds = %._crit_edge4910, %3493
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  br label %.loopexit

3603:                                             ; preds = %3483, %3479, %3475, %.thread2888
  %3604 = icmp eq i32 %712, 5
  br i1 %3604, label %3605, label %3862

3605:                                             ; preds = %3603
  %3606 = getelementptr inbounds i8, ptr %0, i64 4
  %3607 = load i32, ptr %3606, align 4, !tbaa !24
  %3608 = icmp eq i32 %3607, 2
  br i1 %3608, label %3609, label %3862

3609:                                             ; preds = %3605
  %3610 = getelementptr inbounds i8, ptr %0, i64 8
  %3611 = load i32, ptr %3610, align 8, !tbaa !26
  %3612 = icmp eq i32 %3611, 1
  br i1 %3612, label %3613, label %3733

3613:                                             ; preds = %3609
  %3614 = getelementptr inbounds i8, ptr %0, i64 12
  %3615 = load i32, ptr %3614, align 4, !tbaa !70
  %3616 = icmp eq i32 %3615, 1
  br i1 %3616, label %3617, label %3733

3617:                                             ; preds = %3613
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  store ptr %1, ptr %54, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #8
  store ptr %2, ptr %55, align 8, !tbaa !50
  %3618 = getelementptr inbounds i8, ptr %0, i64 72
  %3619 = load i32, ptr %3618, align 8, !tbaa !225
  %.not2814 = icmp eq i32 %3619, 0
  br i1 %.not2814, label %3623, label %3620

3620:                                             ; preds = %3617
  %3621 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 2) #8
  %3622 = freeze i32 %3621
  br label %3623

3623:                                             ; preds = %3617, %3620
  %.fr4946 = phi i32 [ %3622, %3620 ], [ 1, %3617 ]
  %3624 = icmp sgt i32 %79, 0
  br i1 %3624, label %.preheader2909.lr.ph, label %._crit_edge4869

.preheader2909.lr.ph:                             ; preds = %3623
  %3625 = icmp sgt i32 %77, 0
  %3626 = getelementptr inbounds i8, ptr %0, i64 56
  %3627 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4840 = mul i32 %.fr4946, %71
  %factor.op.mul4841 = mul i32 %.fr4946, %73
  %3628 = icmp sgt i32 %.fr4946, 0
  %3629 = getelementptr inbounds i8, ptr %0, i64 64
  %3630 = getelementptr inbounds i8, ptr %0, i64 68
  %3631 = getelementptr inbounds i8, ptr %0, i64 76
  %3632 = sext i32 %.fr4946 to i64
  %3633 = sext i32 %73 to i64
  %3634 = sext i32 %71 to i64
  %3635 = sext i32 %75 to i64
  %wide.trip.count6304 = zext nneg i32 %79 to i64
  %wide.trip.count6283 = zext nneg i32 %77 to i64
  %wide.trip.count6299 = zext nneg i32 %77 to i64
  br label %.preheader2909

.preheader2909:                                   ; preds = %.preheader2909.lr.ph, %._crit_edge4862
  %indvars.iv6301 = phi i64 [ 0, %.preheader2909.lr.ph ], [ %indvars.iv.next6302, %._crit_edge4862 ]
  %3636 = phi i32 [ undef, %.preheader2909.lr.ph ], [ %.lcssa2987, %._crit_edge4862 ]
  br i1 %3625, label %.lr.ph4861, label %._crit_edge4862

.lr.ph4861:                                       ; preds = %.preheader2909
  %3637 = mul nsw i64 %indvars.iv6301, %3635
  %3638 = mul nsw i64 %indvars.iv6301, %3633
  %3639 = mul nsw i64 %indvars.iv6301, %3632
  %invariant.gep6730 = getelementptr float, ptr %3, i64 %3637
  br i1 %3628, label %.lr.ph4861.split.us.preheader, label %.lr.ph4861.split

.lr.ph4861.split.us.preheader:                    ; preds = %.lr.ph4861
  %invariant.gep6732 = getelementptr float, ptr %3, i64 %3637
  br label %.lr.ph4861.split.us

.lr.ph4861.split.us:                              ; preds = %.lr.ph4861.split.us.preheader, %._crit_edge4853.split.us.us
  %indvars.iv6296 = phi i64 [ 0, %.lr.ph4861.split.us.preheader ], [ %indvars.iv.next6297, %._crit_edge4853.split.us.us ]
  %3640 = phi i32 [ %3636, %.lr.ph4861.split.us.preheader ], [ %.lcssa2986.us, %._crit_edge4853.split.us.us ]
  %3641 = load double, ptr %3626, align 8, !tbaa !25
  %3642 = fcmp oeq double %3641, 0.000000e+00
  br i1 %3642, label %3643, label %3644

3643:                                             ; preds = %.lr.ph4861.split.us
  %gep6731 = getelementptr float, ptr %invariant.gep6730, i64 %indvars.iv6296
  store float 0.000000e+00, ptr %gep6731, align 4, !tbaa !27
  br label %3644

3644:                                             ; preds = %3643, %.lr.ph4861.split.us
  %3645 = load i32, ptr %3627, align 8, !tbaa !52
  %3646 = icmp sgt i32 %3645, 0
  br i1 %3646, label %.lr.ph4852.us, label %._crit_edge4853.split.us.us

._crit_edge4853.split.us.us:                      ; preds = %._crit_edge4844.split.us.us.us, %3644
  %.lcssa2986.us = phi i32 [ %3640, %3644 ], [ %.lcssa2985.us.us, %._crit_edge4844.split.us.us.us ]
  %indvars.iv.next6297 = add nuw nsw i64 %indvars.iv6296, 1
  %exitcond6300.not = icmp eq i64 %indvars.iv.next6297, %wide.trip.count6299
  br i1 %exitcond6300.not, label %._crit_edge4862, label %.lr.ph4861.split.us, !llvm.loop !278

.lr.ph4852.us:                                    ; preds = %3644
  %3647 = mul nsw i64 %indvars.iv6296, %3634
  %3648 = mul nuw nsw i64 %indvars.iv6296, %3632
  %gep6733 = getelementptr float, ptr %invariant.gep6732, i64 %indvars.iv6296
  br label %3649

3649:                                             ; preds = %._crit_edge4844.split.us.us.us, %.lr.ph4852.us
  %indvars.iv6293 = phi i64 [ %indvars.iv.next6294, %._crit_edge4844.split.us.us.us ], [ 0, %.lr.ph4852.us ]
  %3650 = phi i32 [ %.lcssa2985.us.us, %._crit_edge4844.split.us.us.us ], [ %3640, %.lr.ph4852.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %54, ptr noundef nonnull %55, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6293, ptr noundef nonnull %0)
  %3651 = sdiv i32 %.fr4927, %.fr4946
  %3652 = icmp sgt i32 %3651, 0
  br i1 %3652, label %.preheader2908.us.us.us.preheader, label %._crit_edge4844.split.us.us.us

.preheader2908.us.us.us.preheader:                ; preds = %3649
  %wide.trip.count6291 = zext nneg i32 %3651 to i64
  br label %.preheader2908.us.us.us

._crit_edge4844.split.us.us.us:                   ; preds = %._crit_edge4837.us.us.us, %3649
  %.lcssa2985.us.us = phi i32 [ %3650, %3649 ], [ %.sroa.0145.5.in.us.us.us, %._crit_edge4837.us.us.us ]
  %indvars.iv.next6294 = add nuw nsw i64 %indvars.iv6293, 1
  %3653 = load i32, ptr %3627, align 8, !tbaa !52
  %3654 = sext i32 %3653 to i64
  %3655 = icmp slt i64 %indvars.iv.next6294, %3654
  br i1 %3655, label %3649, label %._crit_edge4853.split.us.us, !llvm.loop !279

.preheader2908.us.us.us:                          ; preds = %.preheader2908.us.us.us.preheader, %._crit_edge4837.us.us.us
  %indvars.iv6288 = phi i64 [ 0, %.preheader2908.us.us.us.preheader ], [ %indvars.iv.next6289, %._crit_edge4837.us.us.us ]
  %3656 = phi i32 [ %3650, %.preheader2908.us.us.us.preheader ], [ %.sroa.0145.5.in.us.us.us, %._crit_edge4837.us.us.us ]
  %3657 = trunc nuw nsw i64 %indvars.iv6288 to i32
  %factor.op.mul4831.reass.us.us.us = mul i32 %factor.op.mul4840, %3657
  %factor.op.mul4832.reass.us.us.us = mul i32 %factor.op.mul4841, %3657
  %3658 = mul nuw nsw i64 %indvars.iv6288, %3632
  %3659 = sext i32 %factor.op.mul4831.reass.us.us.us to i64
  %3660 = sext i32 %factor.op.mul4832.reass.us.us.us to i64
  br label %3661

3661:                                             ; preds = %.thread2894.us.us.us, %.preheader2908.us.us.us
  %indvars.iv6285 = phi i64 [ %indvars.iv.next6286, %.thread2894.us.us.us ], [ %3632, %.preheader2908.us.us.us ]
  %3662 = phi i32 [ %.sroa.0145.5.in.us.us.us, %.thread2894.us.us.us ], [ %3656, %.preheader2908.us.us.us ]
  %indvars.iv.next6286 = add nsw i64 %indvars.iv6285, -1
  %3663 = load i32, ptr %3629, align 8, !tbaa !74
  %3664 = icmp eq i32 %3663, 0
  br i1 %3664, label %3676, label %3665

3665:                                             ; preds = %3661
  %3666 = icmp sgt i32 %3663, 0
  br i1 %3666, label %3667, label %3685

3667:                                             ; preds = %3665
  %3668 = load i32, ptr %3618, align 8, !tbaa !225
  %3669 = icmp eq i32 %3668, 0
  br i1 %3669, label %3670, label %3685

3670:                                             ; preds = %3667
  %3671 = load ptr, ptr %54, align 8, !tbaa !50
  %3672 = load i64, ptr %5, align 8, !tbaa !19
  %3673 = getelementptr i8, ptr %3671, i64 %3672
  %3674 = getelementptr i8, ptr %3673, i64 %3647
  %3675 = getelementptr i8, ptr %3674, i64 %3658
  br label %.sink.split6748

3676:                                             ; preds = %3661
  %3677 = load ptr, ptr %54, align 8, !tbaa !50
  %3678 = load i64, ptr %5, align 8, !tbaa !19
  %3679 = getelementptr i8, ptr %3677, i64 %3678
  %3680 = getelementptr i8, ptr %3679, i64 %3659
  %3681 = getelementptr i8, ptr %3680, i64 %3648
  br label %.sink.split6748

.sink.split6748:                                  ; preds = %3670, %3676
  %.sink = phi ptr [ %3681, %3676 ], [ %3675, %3670 ]
  %3682 = getelementptr i8, ptr %.sink, i64 %indvars.iv.next6286
  %3683 = load i8, ptr %3682, align 1, !tbaa !41
  %3684 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %3683) #8
  br label %3685

3685:                                             ; preds = %.sink.split6748, %3667, %3665
  %.02722.us.us.us = phi float [ 0.000000e+00, %3667 ], [ 0.000000e+00, %3665 ], [ %3684, %.sink.split6748 ]
  %.sroa.0145.0.insert.mask.us.us.us = and i32 %3662, -65536
  %3686 = load i32, ptr %3630, align 4, !tbaa !73
  %3687 = icmp sgt i32 %3686, 0
  br i1 %3687, label %3700, label %3688

3688:                                             ; preds = %3685
  %3689 = icmp eq i32 %3686, 0
  br i1 %3689, label %3690, label %.thread2894.us.us.us

3690:                                             ; preds = %3688
  %3691 = load i32, ptr %3631, align 4, !tbaa !262
  %3692 = icmp eq i32 %3691, 0
  br i1 %3692, label %3693, label %.thread2894.us.us.us

3693:                                             ; preds = %3690
  %3694 = load ptr, ptr %55, align 8, !tbaa !50
  %3695 = load i64, ptr %6, align 8, !tbaa !19
  %3696 = getelementptr i16, ptr %3694, i64 %3695
  %3697 = getelementptr i16, ptr %3696, i64 %3638
  %3698 = getelementptr i16, ptr %3697, i64 %3658
  %3699 = getelementptr i16, ptr %3698, i64 %indvars.iv.next6286
  br label %.thread2894.us.us.us.sink.split

3700:                                             ; preds = %3685
  %3701 = load i32, ptr %3631, align 4, !tbaa !262
  %3702 = icmp sgt i32 %3701, 0
  br i1 %3702, label %3713, label %3703

3703:                                             ; preds = %3700
  %3704 = icmp eq i32 %3701, 0
  br i1 %3704, label %3705, label %.thread2894.us.us.us

3705:                                             ; preds = %3703
  %3706 = load ptr, ptr %55, align 8, !tbaa !50
  %3707 = load i64, ptr %6, align 8, !tbaa !19
  %3708 = add nsw i64 %indvars.iv.next6286, %3658
  %3709 = mul nsw i64 %3708, %3633
  %3710 = getelementptr i16, ptr %3706, i64 %3707
  %3711 = getelementptr i16, ptr %3710, i64 %3709
  %3712 = getelementptr i16, ptr %3711, i64 %indvars.iv6301
  br label %.thread2894.us.us.us.sink.split

3713:                                             ; preds = %3700
  %3714 = load ptr, ptr %55, align 8, !tbaa !50
  %3715 = load i64, ptr %6, align 8, !tbaa !19
  %3716 = getelementptr i16, ptr %3714, i64 %3715
  %3717 = getelementptr i16, ptr %3716, i64 %3639
  %3718 = getelementptr i16, ptr %3717, i64 %3660
  %3719 = getelementptr i16, ptr %3718, i64 %indvars.iv.next6286
  br label %.thread2894.us.us.us.sink.split

.thread2894.us.us.us.sink.split:                  ; preds = %3693, %3705, %3713
  %.sink6751 = phi ptr [ %3719, %3713 ], [ %3712, %3705 ], [ %3699, %3693 ]
  %3720 = load i16, ptr %.sink6751, align 2, !tbaa !38
  %.sroa.0145.2.insert.ext.us.us.us = zext i16 %3720 to i32
  %.sroa.0145.2.insert.shift.us.us.us = shl nuw i32 %.sroa.0145.2.insert.ext.us.us.us, 16
  br label %.thread2894.us.us.us

.thread2894.us.us.us:                             ; preds = %.thread2894.us.us.us.sink.split, %3703, %3690, %3688
  %.sroa.0145.5.in.us.us.us = phi i32 [ %.sroa.0145.0.insert.mask.us.us.us, %3690 ], [ %.sroa.0145.0.insert.mask.us.us.us, %3688 ], [ %.sroa.0145.0.insert.mask.us.us.us, %3703 ], [ %.sroa.0145.2.insert.shift.us.us.us, %.thread2894.us.us.us.sink.split ]
  %.sroa.0145.5.us.us.us = bitcast i32 %.sroa.0145.5.in.us.us.us to float
  %3721 = load float, ptr %gep6733, align 4, !tbaa !27
  %3722 = call float @llvm.fmuladd.f32(float %.02722.us.us.us, float %.sroa.0145.5.us.us.us, float %3721)
  store float %3722, ptr %gep6733, align 4, !tbaa !27
  %3723 = icmp sgt i64 %indvars.iv6285, 1
  br i1 %3723, label %3661, label %._crit_edge4837.us.us.us, !llvm.loop !280

._crit_edge4837.us.us.us:                         ; preds = %.thread2894.us.us.us
  %indvars.iv.next6289 = add nuw nsw i64 %indvars.iv6288, 1
  %exitcond6292.not = icmp eq i64 %indvars.iv.next6289, %wide.trip.count6291
  br i1 %exitcond6292.not, label %._crit_edge4844.split.us.us.us, label %.preheader2908.us.us.us, !llvm.loop !281

.lr.ph4861.split:                                 ; preds = %.lr.ph4861, %._crit_edge4853.split
  %indvars.iv6280 = phi i64 [ %indvars.iv.next6281, %._crit_edge4853.split ], [ 0, %.lr.ph4861 ]
  %3724 = load double, ptr %3626, align 8, !tbaa !25
  %3725 = fcmp oeq double %3724, 0.000000e+00
  br i1 %3725, label %3726, label %3727

3726:                                             ; preds = %.lr.ph4861.split
  %gep6729 = getelementptr float, ptr %invariant.gep6730, i64 %indvars.iv6280
  store float 0.000000e+00, ptr %gep6729, align 4, !tbaa !27
  br label %3727

3727:                                             ; preds = %3726, %.lr.ph4861.split
  %3728 = load i32, ptr %3627, align 8, !tbaa !52
  %3729 = icmp sgt i32 %3728, 0
  br i1 %3729, label %.lr.ph4852, label %._crit_edge4853.split

.lr.ph4852:                                       ; preds = %3727, %.lr.ph4852
  %indvars.iv6277 = phi i64 [ %indvars.iv.next6278, %.lr.ph4852 ], [ 0, %3727 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %54, ptr noundef nonnull %55, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6277, ptr noundef nonnull %0)
  %indvars.iv.next6278 = add nuw nsw i64 %indvars.iv6277, 1
  %3730 = load i32, ptr %3627, align 8, !tbaa !52
  %3731 = sext i32 %3730 to i64
  %3732 = icmp slt i64 %indvars.iv.next6278, %3731
  br i1 %3732, label %.lr.ph4852, label %._crit_edge4853.split, !llvm.loop !279

._crit_edge4853.split:                            ; preds = %.lr.ph4852, %3727
  %indvars.iv.next6281 = add nuw nsw i64 %indvars.iv6280, 1
  %exitcond6284.not = icmp eq i64 %indvars.iv.next6281, %wide.trip.count6283
  br i1 %exitcond6284.not, label %._crit_edge4862, label %.lr.ph4861.split, !llvm.loop !278

._crit_edge4862:                                  ; preds = %._crit_edge4853.split, %._crit_edge4853.split.us.us, %.preheader2909
  %.lcssa2987 = phi i32 [ %3636, %.preheader2909 ], [ %.lcssa2986.us, %._crit_edge4853.split.us.us ], [ %3636, %._crit_edge4853.split ]
  %indvars.iv.next6302 = add nuw nsw i64 %indvars.iv6301, 1
  %exitcond6305.not = icmp eq i64 %indvars.iv.next6302, %wide.trip.count6304
  br i1 %exitcond6305.not, label %._crit_edge4869, label %.preheader2909, !llvm.loop !282

._crit_edge4869:                                  ; preds = %._crit_edge4862, %3623
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  br label %.loopexit

3733:                                             ; preds = %3613, %3609
  %3734 = getelementptr inbounds i8, ptr %0, i64 8
  %3735 = load i32, ptr %3734, align 8, !tbaa !26
  %3736 = icmp eq i32 %3735, 2
  br i1 %3736, label %3737, label %3862

3737:                                             ; preds = %3733
  %3738 = getelementptr inbounds i8, ptr %0, i64 12
  %3739 = load i32, ptr %3738, align 4, !tbaa !70
  %3740 = icmp eq i32 %3739, 1
  br i1 %3740, label %3741, label %3862

3741:                                             ; preds = %3737
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #8
  store ptr %1, ptr %56, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #8
  store ptr %2, ptr %57, align 8, !tbaa !50
  %3742 = getelementptr inbounds i8, ptr %0, i64 72
  %3743 = load i32, ptr %3742, align 8, !tbaa !225
  %.not2813 = icmp eq i32 %3743, 0
  br i1 %.not2813, label %3747, label %3744

3744:                                             ; preds = %3741
  %3745 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 2) #8
  %3746 = freeze i32 %3745
  br label %3747

3747:                                             ; preds = %3741, %3744
  %.fr4945 = phi i32 [ %3746, %3744 ], [ 1, %3741 ]
  %3748 = icmp sgt i32 %79, 0
  br i1 %3748, label %.preheader2911.lr.ph, label %._crit_edge4830

.preheader2911.lr.ph:                             ; preds = %3747
  %3749 = icmp sgt i32 %77, 0
  %3750 = getelementptr inbounds i8, ptr %0, i64 56
  %3751 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4791 = mul i32 %.fr4945, %71
  %factor.op.mul4792 = mul i32 %.fr4945, %73
  %3752 = icmp sgt i32 %.fr4945, 0
  %3753 = getelementptr inbounds i8, ptr %0, i64 64
  %3754 = getelementptr inbounds i8, ptr %0, i64 68
  %3755 = getelementptr inbounds i8, ptr %0, i64 76
  %3756 = sext i32 %.fr4945 to i64
  %3757 = sext i32 %73 to i64
  %3758 = sext i32 %71 to i64
  %3759 = sext i32 %75 to i64
  %wide.trip.count6275 = zext nneg i32 %79 to i64
  %wide.trip.count6254 = zext nneg i32 %77 to i64
  %wide.trip.count6270 = zext nneg i32 %77 to i64
  br label %.preheader2911

.preheader2911:                                   ; preds = %.preheader2911.lr.ph, %._crit_edge4820
  %indvars.iv6272 = phi i64 [ 0, %.preheader2911.lr.ph ], [ %indvars.iv.next6273, %._crit_edge4820 ]
  %3760 = phi i32 [ undef, %.preheader2911.lr.ph ], [ %.lcssa2991, %._crit_edge4820 ]
  br i1 %3749, label %.lr.ph4819, label %._crit_edge4820

.lr.ph4819:                                       ; preds = %.preheader2911
  %3761 = mul nsw i64 %indvars.iv6272, %3759
  %3762 = mul nsw i64 %indvars.iv6272, %3757
  %3763 = mul nsw i64 %indvars.iv6272, %3756
  %invariant.gep6724 = getelementptr i16, ptr %3, i64 %3761
  %invariant.gep6726 = getelementptr i16, ptr %3, i64 %3761
  br i1 %3752, label %.lr.ph4819.split.us, label %.lr.ph4819.split

.lr.ph4819.split.us:                              ; preds = %.lr.ph4819, %._crit_edge4808.split.us.us
  %indvars.iv6267 = phi i64 [ %indvars.iv.next6268, %._crit_edge4808.split.us.us ], [ 0, %.lr.ph4819 ]
  %3764 = phi i32 [ %.lcssa2990.us, %._crit_edge4808.split.us.us ], [ %3760, %.lr.ph4819 ]
  %3765 = load double, ptr %3750, align 8, !tbaa !25
  %3766 = fcmp oeq double %3765, 0.000000e+00
  br i1 %3766, label %3770, label %3767

3767:                                             ; preds = %.lr.ph4819.split.us
  %gep6725 = getelementptr i16, ptr %invariant.gep6724, i64 %indvars.iv6267
  %3768 = load i16, ptr %gep6725, align 2, !tbaa !38
  %.sroa.0130.2.insert.ext.us = zext i16 %3768 to i32
  %.sroa.0130.2.insert.shift.us = shl nuw i32 %.sroa.0130.2.insert.ext.us, 16
  %3769 = bitcast i32 %.sroa.0130.2.insert.shift.us to float
  br label %3770

3770:                                             ; preds = %3767, %.lr.ph4819.split.us
  %.02714.us = phi float [ %3769, %3767 ], [ 0.000000e+00, %.lr.ph4819.split.us ]
  %3771 = load i32, ptr %3751, align 8, !tbaa !52
  %3772 = icmp sgt i32 %3771, 0
  br i1 %3772, label %.lr.ph4807.us, label %._crit_edge4808.split.us.us

._crit_edge4808.split.us.us:                      ; preds = %._crit_edge4796.split.us.us.us, %3770
  %.12715.lcssa.us = phi float [ %.02714.us, %3770 ], [ %.22716.lcssa.us.us, %._crit_edge4796.split.us.us.us ]
  %.lcssa2990.us = phi i32 [ %3764, %3770 ], [ %.lcssa2989.us.us, %._crit_edge4796.split.us.us.us ]
  %3773 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.12715.lcssa.us) #8
  %gep6727 = getelementptr i16, ptr %invariant.gep6726, i64 %indvars.iv6267
  store i16 %3773, ptr %gep6727, align 2, !tbaa !38
  %indvars.iv.next6268 = add nuw nsw i64 %indvars.iv6267, 1
  %exitcond6271.not = icmp eq i64 %indvars.iv.next6268, %wide.trip.count6270
  br i1 %exitcond6271.not, label %._crit_edge4820, label %.lr.ph4819.split.us, !llvm.loop !283

.lr.ph4807.us:                                    ; preds = %3770
  %3774 = mul nsw i64 %indvars.iv6267, %3758
  %3775 = mul nuw nsw i64 %indvars.iv6267, %3756
  br label %3776

3776:                                             ; preds = %._crit_edge4796.split.us.us.us, %.lr.ph4807.us
  %indvars.iv6264 = phi i64 [ %indvars.iv.next6265, %._crit_edge4796.split.us.us.us ], [ 0, %.lr.ph4807.us ]
  %3777 = phi i32 [ %.lcssa2989.us.us, %._crit_edge4796.split.us.us.us ], [ %3764, %.lr.ph4807.us ]
  %.127154803.us.us = phi float [ %.22716.lcssa.us.us, %._crit_edge4796.split.us.us.us ], [ %.02714.us, %.lr.ph4807.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %56, ptr noundef nonnull %57, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6264, ptr noundef nonnull %0)
  %3778 = sdiv i32 %.fr4927, %.fr4945
  %3779 = icmp sgt i32 %3778, 0
  br i1 %3779, label %.preheader2910.us.us.us.preheader, label %._crit_edge4796.split.us.us.us

.preheader2910.us.us.us.preheader:                ; preds = %3776
  %wide.trip.count6262 = zext nneg i32 %3778 to i64
  br label %.preheader2910.us.us.us

._crit_edge4796.split.us.us.us:                   ; preds = %._crit_edge4787.us.us.us, %3776
  %.22716.lcssa.us.us = phi float [ %.127154803.us.us, %3776 ], [ %3848, %._crit_edge4787.us.us.us ]
  %.lcssa2989.us.us = phi i32 [ %3777, %3776 ], [ %.sroa.0118.5.in.us.us.us, %._crit_edge4787.us.us.us ]
  %indvars.iv.next6265 = add nuw nsw i64 %indvars.iv6264, 1
  %3780 = load i32, ptr %3751, align 8, !tbaa !52
  %3781 = sext i32 %3780 to i64
  %3782 = icmp slt i64 %indvars.iv.next6265, %3781
  br i1 %3782, label %3776, label %._crit_edge4808.split.us.us, !llvm.loop !284

.preheader2910.us.us.us:                          ; preds = %.preheader2910.us.us.us.preheader, %._crit_edge4787.us.us.us
  %indvars.iv6259 = phi i64 [ 0, %.preheader2910.us.us.us.preheader ], [ %indvars.iv.next6260, %._crit_edge4787.us.us.us ]
  %3783 = phi i32 [ %3777, %.preheader2910.us.us.us.preheader ], [ %.sroa.0118.5.in.us.us.us, %._crit_edge4787.us.us.us ]
  %.227164793.us.us.us = phi float [ %.127154803.us.us, %.preheader2910.us.us.us.preheader ], [ %3848, %._crit_edge4787.us.us.us ]
  %3784 = trunc nuw nsw i64 %indvars.iv6259 to i32
  %factor.op.mul4780.reass.us.us.us = mul i32 %factor.op.mul4791, %3784
  %factor.op.mul4781.reass.us.us.us = mul i32 %factor.op.mul4792, %3784
  %3785 = mul nuw nsw i64 %indvars.iv6259, %3756
  %3786 = sext i32 %factor.op.mul4780.reass.us.us.us to i64
  %3787 = sext i32 %factor.op.mul4781.reass.us.us.us to i64
  br label %3788

3788:                                             ; preds = %.thread2898.us.us.us, %.preheader2910.us.us.us
  %indvars.iv6256 = phi i64 [ %indvars.iv.next6257, %.thread2898.us.us.us ], [ %3756, %.preheader2910.us.us.us ]
  %3789 = phi i32 [ %.sroa.0118.5.in.us.us.us, %.thread2898.us.us.us ], [ %3783, %.preheader2910.us.us.us ]
  %.327174784.us.us.us = phi float [ %3848, %.thread2898.us.us.us ], [ %.227164793.us.us.us, %.preheader2910.us.us.us ]
  %indvars.iv.next6257 = add nsw i64 %indvars.iv6256, -1
  %3790 = load i32, ptr %3753, align 8, !tbaa !74
  %3791 = icmp eq i32 %3790, 0
  br i1 %3791, label %3803, label %3792

3792:                                             ; preds = %3788
  %3793 = icmp sgt i32 %3790, 0
  br i1 %3793, label %3794, label %3812

3794:                                             ; preds = %3792
  %3795 = load i32, ptr %3742, align 8, !tbaa !225
  %3796 = icmp eq i32 %3795, 0
  br i1 %3796, label %3797, label %3812

3797:                                             ; preds = %3794
  %3798 = load ptr, ptr %56, align 8, !tbaa !50
  %3799 = load i64, ptr %5, align 8, !tbaa !19
  %3800 = getelementptr i8, ptr %3798, i64 %3799
  %3801 = getelementptr i8, ptr %3800, i64 %3774
  %3802 = getelementptr i8, ptr %3801, i64 %3785
  br label %.sink.split6752

3803:                                             ; preds = %3788
  %3804 = load ptr, ptr %56, align 8, !tbaa !50
  %3805 = load i64, ptr %5, align 8, !tbaa !19
  %3806 = getelementptr i8, ptr %3804, i64 %3805
  %3807 = getelementptr i8, ptr %3806, i64 %3786
  %3808 = getelementptr i8, ptr %3807, i64 %3775
  br label %.sink.split6752

.sink.split6752:                                  ; preds = %3797, %3803
  %.sink6755 = phi ptr [ %3808, %3803 ], [ %3802, %3797 ]
  %3809 = getelementptr i8, ptr %.sink6755, i64 %indvars.iv.next6257
  %3810 = load i8, ptr %3809, align 1, !tbaa !41
  %3811 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %3810) #8
  br label %3812

3812:                                             ; preds = %.sink.split6752, %3794, %3792
  %.02707.us.us.us = phi float [ 0.000000e+00, %3794 ], [ 0.000000e+00, %3792 ], [ %3811, %.sink.split6752 ]
  %.sroa.0118.0.insert.mask.us.us.us = and i32 %3789, -65536
  %3813 = load i32, ptr %3754, align 4, !tbaa !73
  %3814 = icmp sgt i32 %3813, 0
  br i1 %3814, label %3827, label %3815

3815:                                             ; preds = %3812
  %3816 = icmp eq i32 %3813, 0
  br i1 %3816, label %3817, label %.thread2898.us.us.us

3817:                                             ; preds = %3815
  %3818 = load i32, ptr %3755, align 4, !tbaa !262
  %3819 = icmp eq i32 %3818, 0
  br i1 %3819, label %3820, label %.thread2898.us.us.us

3820:                                             ; preds = %3817
  %3821 = load ptr, ptr %57, align 8, !tbaa !50
  %3822 = load i64, ptr %6, align 8, !tbaa !19
  %3823 = getelementptr i16, ptr %3821, i64 %3822
  %3824 = getelementptr i16, ptr %3823, i64 %3762
  %3825 = getelementptr i16, ptr %3824, i64 %3785
  %3826 = getelementptr i16, ptr %3825, i64 %indvars.iv.next6257
  br label %.thread2898.us.us.us.sink.split

3827:                                             ; preds = %3812
  %3828 = load i32, ptr %3755, align 4, !tbaa !262
  %3829 = icmp sgt i32 %3828, 0
  br i1 %3829, label %3840, label %3830

3830:                                             ; preds = %3827
  %3831 = icmp eq i32 %3828, 0
  br i1 %3831, label %3832, label %.thread2898.us.us.us

3832:                                             ; preds = %3830
  %3833 = load ptr, ptr %57, align 8, !tbaa !50
  %3834 = load i64, ptr %6, align 8, !tbaa !19
  %3835 = add nsw i64 %indvars.iv.next6257, %3785
  %3836 = mul nsw i64 %3835, %3757
  %3837 = getelementptr i16, ptr %3833, i64 %3834
  %3838 = getelementptr i16, ptr %3837, i64 %3836
  %3839 = getelementptr i16, ptr %3838, i64 %indvars.iv6272
  br label %.thread2898.us.us.us.sink.split

3840:                                             ; preds = %3827
  %3841 = load ptr, ptr %57, align 8, !tbaa !50
  %3842 = load i64, ptr %6, align 8, !tbaa !19
  %3843 = getelementptr i16, ptr %3841, i64 %3842
  %3844 = getelementptr i16, ptr %3843, i64 %3763
  %3845 = getelementptr i16, ptr %3844, i64 %3787
  %3846 = getelementptr i16, ptr %3845, i64 %indvars.iv.next6257
  br label %.thread2898.us.us.us.sink.split

.thread2898.us.us.us.sink.split:                  ; preds = %3820, %3832, %3840
  %.sink6757 = phi ptr [ %3846, %3840 ], [ %3839, %3832 ], [ %3826, %3820 ]
  %3847 = load i16, ptr %.sink6757, align 2, !tbaa !38
  %.sroa.0118.2.insert.ext.us.us.us = zext i16 %3847 to i32
  %.sroa.0118.2.insert.shift.us.us.us = shl nuw i32 %.sroa.0118.2.insert.ext.us.us.us, 16
  br label %.thread2898.us.us.us

.thread2898.us.us.us:                             ; preds = %.thread2898.us.us.us.sink.split, %3830, %3817, %3815
  %.sroa.0118.5.in.us.us.us = phi i32 [ %.sroa.0118.0.insert.mask.us.us.us, %3817 ], [ %.sroa.0118.0.insert.mask.us.us.us, %3815 ], [ %.sroa.0118.0.insert.mask.us.us.us, %3830 ], [ %.sroa.0118.2.insert.shift.us.us.us, %.thread2898.us.us.us.sink.split ]
  %.sroa.0118.5.us.us.us = bitcast i32 %.sroa.0118.5.in.us.us.us to float
  %3848 = call float @llvm.fmuladd.f32(float %.02707.us.us.us, float %.sroa.0118.5.us.us.us, float %.327174784.us.us.us)
  %3849 = icmp sgt i64 %indvars.iv6256, 1
  br i1 %3849, label %3788, label %._crit_edge4787.us.us.us, !llvm.loop !285

._crit_edge4787.us.us.us:                         ; preds = %.thread2898.us.us.us
  %indvars.iv.next6260 = add nuw nsw i64 %indvars.iv6259, 1
  %exitcond6263.not = icmp eq i64 %indvars.iv.next6260, %wide.trip.count6262
  br i1 %exitcond6263.not, label %._crit_edge4796.split.us.us.us, label %.preheader2910.us.us.us, !llvm.loop !286

.lr.ph4819.split:                                 ; preds = %.lr.ph4819, %._crit_edge4808.split
  %indvars.iv6251 = phi i64 [ %indvars.iv.next6252, %._crit_edge4808.split ], [ 0, %.lr.ph4819 ]
  %3850 = load double, ptr %3750, align 8, !tbaa !25
  %3851 = fcmp oeq double %3850, 0.000000e+00
  br i1 %3851, label %3855, label %3852

3852:                                             ; preds = %.lr.ph4819.split
  %gep6721 = getelementptr i16, ptr %invariant.gep6724, i64 %indvars.iv6251
  %3853 = load i16, ptr %gep6721, align 2, !tbaa !38
  %.sroa.0130.2.insert.ext = zext i16 %3853 to i32
  %.sroa.0130.2.insert.shift = shl nuw i32 %.sroa.0130.2.insert.ext, 16
  %3854 = bitcast i32 %.sroa.0130.2.insert.shift to float
  br label %3855

3855:                                             ; preds = %.lr.ph4819.split, %3852
  %.02714 = phi float [ %3854, %3852 ], [ 0.000000e+00, %.lr.ph4819.split ]
  %3856 = load i32, ptr %3751, align 8, !tbaa !52
  %3857 = icmp sgt i32 %3856, 0
  br i1 %3857, label %.lr.ph4807, label %._crit_edge4808.split

.lr.ph4807:                                       ; preds = %3855, %.lr.ph4807
  %indvars.iv6248 = phi i64 [ %indvars.iv.next6249, %.lr.ph4807 ], [ 0, %3855 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %56, ptr noundef nonnull %57, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6248, ptr noundef nonnull %0)
  %indvars.iv.next6249 = add nuw nsw i64 %indvars.iv6248, 1
  %3858 = load i32, ptr %3751, align 8, !tbaa !52
  %3859 = sext i32 %3858 to i64
  %3860 = icmp slt i64 %indvars.iv.next6249, %3859
  br i1 %3860, label %.lr.ph4807, label %._crit_edge4808.split, !llvm.loop !284

._crit_edge4808.split:                            ; preds = %.lr.ph4807, %3855
  %3861 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.02714) #8
  %gep6723 = getelementptr i16, ptr %invariant.gep6726, i64 %indvars.iv6251
  store i16 %3861, ptr %gep6723, align 2, !tbaa !38
  %indvars.iv.next6252 = add nuw nsw i64 %indvars.iv6251, 1
  %exitcond6255.not = icmp eq i64 %indvars.iv.next6252, %wide.trip.count6254
  br i1 %exitcond6255.not, label %._crit_edge4820, label %.lr.ph4819.split, !llvm.loop !283

._crit_edge4820:                                  ; preds = %._crit_edge4808.split, %._crit_edge4808.split.us.us, %.preheader2911
  %.lcssa2991 = phi i32 [ %3760, %.preheader2911 ], [ %.lcssa2990.us, %._crit_edge4808.split.us.us ], [ %3760, %._crit_edge4808.split ]
  %indvars.iv.next6273 = add nuw nsw i64 %indvars.iv6272, 1
  %exitcond6276.not = icmp eq i64 %indvars.iv.next6273, %wide.trip.count6275
  br i1 %exitcond6276.not, label %._crit_edge4830, label %.preheader2911, !llvm.loop !287

._crit_edge4830:                                  ; preds = %._crit_edge4820, %3747
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #8
  br label %.loopexit

3862:                                             ; preds = %3605, %3603, %3737, %3733
  br i1 %2332, label %3863, label %3996

3863:                                             ; preds = %3862
  %3864 = getelementptr inbounds i8, ptr %0, i64 4
  %3865 = load i32, ptr %3864, align 4, !tbaa !24
  %3866 = icmp eq i32 %3865, 2
  br i1 %3866, label %3867, label %3996

3867:                                             ; preds = %3863
  %3868 = getelementptr inbounds i8, ptr %0, i64 8
  %3869 = load i32, ptr %3868, align 8, !tbaa !26
  %3870 = icmp eq i32 %3869, 2
  br i1 %3870, label %3871, label %3996

3871:                                             ; preds = %3867
  %3872 = getelementptr inbounds i8, ptr %0, i64 12
  %3873 = load i32, ptr %3872, align 4, !tbaa !70
  %3874 = icmp eq i32 %3873, 1
  br i1 %3874, label %3875, label %3996

3875:                                             ; preds = %3871
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #8
  store ptr %1, ptr %58, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #8
  store ptr %2, ptr %59, align 8, !tbaa !50
  %3876 = getelementptr inbounds i8, ptr %0, i64 72
  %3877 = load i32, ptr %3876, align 8, !tbaa !225
  %.not2812 = icmp eq i32 %3877, 0
  br i1 %.not2812, label %3881, label %3878

3878:                                             ; preds = %3875
  %3879 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 2) #8
  %3880 = freeze i32 %3879
  br label %3881

3881:                                             ; preds = %3875, %3878
  %.fr4944 = phi i32 [ %3880, %3878 ], [ 1, %3875 ]
  %3882 = icmp sgt i32 %79, 0
  br i1 %3882, label %.preheader2913.lr.ph, label %._crit_edge4779

.preheader2913.lr.ph:                             ; preds = %3881
  %3883 = icmp sgt i32 %77, 0
  %3884 = getelementptr inbounds i8, ptr %0, i64 56
  %3885 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4731 = mul i32 %.fr4944, %71
  %factor.op.mul4732 = mul i32 %.fr4944, %73
  %3886 = icmp sgt i32 %.fr4944, 0
  %3887 = getelementptr inbounds i8, ptr %0, i64 64
  %3888 = getelementptr inbounds i8, ptr %0, i64 68
  %3889 = getelementptr inbounds i8, ptr %0, i64 76
  %3890 = sext i32 %.fr4944 to i64
  %3891 = sext i32 %73 to i64
  %3892 = sext i32 %71 to i64
  %3893 = sext i32 %75 to i64
  %wide.trip.count6246 = zext nneg i32 %79 to i64
  %wide.trip.count6230 = zext nneg i32 %77 to i64
  %wide.trip.count6242 = zext nneg i32 %77 to i64
  br label %.preheader2913

.preheader2913:                                   ; preds = %.preheader2913.lr.ph, %._crit_edge4767
  %indvars.iv6244 = phi i64 [ 0, %.preheader2913.lr.ph ], [ %indvars.iv.next6245, %._crit_edge4767 ]
  %3894 = phi i32 [ undef, %.preheader2913.lr.ph ], [ %.lcssa2995, %._crit_edge4767 ]
  %.sroa.4102.04776 = phi i8 [ undef, %.preheader2913.lr.ph ], [ %.sroa.4102.1.lcssa, %._crit_edge4767 ]
  br i1 %3883, label %.lr.ph4766, label %._crit_edge4767

.lr.ph4766:                                       ; preds = %.preheader2913
  %3895 = mul nsw i64 %indvars.iv6244, %3893
  %3896 = mul nsw i64 %indvars.iv6244, %3891
  %3897 = mul nsw i64 %indvars.iv6244, %3890
  %invariant.gep6716 = getelementptr i16, ptr %3, i64 %3895
  %invariant.gep6718 = getelementptr i16, ptr %3, i64 %3895
  br i1 %3886, label %.lr.ph4766.split.us, label %.lr.ph4766.split

.lr.ph4766.split.us:                              ; preds = %.lr.ph4766, %._crit_edge4751.split.us.us
  %indvars.iv6240 = phi i64 [ %indvars.iv.next6241, %._crit_edge4751.split.us.us ], [ 0, %.lr.ph4766 ]
  %3898 = phi i32 [ %.lcssa2994.us, %._crit_edge4751.split.us.us ], [ %3894, %.lr.ph4766 ]
  %.sroa.4102.14763.us = phi i8 [ %.sroa.4102.2.lcssa.us, %._crit_edge4751.split.us.us ], [ %.sroa.4102.04776, %.lr.ph4766 ]
  %3899 = load double, ptr %3884, align 8, !tbaa !25
  %3900 = fcmp oeq double %3899, 0.000000e+00
  br i1 %3900, label %3904, label %3901

3901:                                             ; preds = %.lr.ph4766.split.us
  %gep6717 = getelementptr i16, ptr %invariant.gep6716, i64 %indvars.iv6240
  %3902 = load i16, ptr %gep6717, align 2, !tbaa !38
  %.sroa.0103.2.insert.ext.us = zext i16 %3902 to i32
  %.sroa.0103.2.insert.shift.us = shl nuw i32 %.sroa.0103.2.insert.ext.us, 16
  %3903 = bitcast i32 %.sroa.0103.2.insert.shift.us to float
  br label %3904

3904:                                             ; preds = %3901, %.lr.ph4766.split.us
  %.02702.us = phi float [ %3903, %3901 ], [ 0.000000e+00, %.lr.ph4766.split.us ]
  %3905 = load i32, ptr %3885, align 8, !tbaa !52
  %3906 = icmp sgt i32 %3905, 0
  br i1 %3906, label %.lr.ph4750.us, label %._crit_edge4751.split.us.us

._crit_edge4751.split.us.us:                      ; preds = %._crit_edge4737.split.us.us.us, %3904
  %.12703.lcssa.us = phi float [ %.02702.us, %3904 ], [ %.22704.lcssa.us.us, %._crit_edge4737.split.us.us.us ]
  %.sroa.4102.2.lcssa.us = phi i8 [ %.sroa.4102.14763.us, %3904 ], [ %.sroa.4102.3.lcssa.us.us, %._crit_edge4737.split.us.us.us ]
  %.lcssa2994.us = phi i32 [ %3898, %3904 ], [ %.lcssa2993.us.us, %._crit_edge4737.split.us.us.us ]
  %3907 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.12703.lcssa.us) #8
  %gep6719 = getelementptr i16, ptr %invariant.gep6718, i64 %indvars.iv6240
  store i16 %3907, ptr %gep6719, align 2, !tbaa !38
  %indvars.iv.next6241 = add nuw nsw i64 %indvars.iv6240, 1
  %exitcond6243.not = icmp eq i64 %indvars.iv.next6241, %wide.trip.count6242
  br i1 %exitcond6243.not, label %._crit_edge4767, label %.lr.ph4766.split.us, !llvm.loop !288

.lr.ph4750.us:                                    ; preds = %3904
  %3908 = mul nsw i64 %indvars.iv6240, %3892
  %3909 = mul nuw nsw i64 %indvars.iv6240, %3890
  br label %3910

3910:                                             ; preds = %._crit_edge4737.split.us.us.us, %.lr.ph4750.us
  %indvars.iv6238 = phi i64 [ %indvars.iv.next6239, %._crit_edge4737.split.us.us.us ], [ 0, %.lr.ph4750.us ]
  %3911 = phi i32 [ %.lcssa2993.us.us, %._crit_edge4737.split.us.us.us ], [ %3898, %.lr.ph4750.us ]
  %.sroa.4102.24746.us.us = phi i8 [ %.sroa.4102.3.lcssa.us.us, %._crit_edge4737.split.us.us.us ], [ %.sroa.4102.14763.us, %.lr.ph4750.us ]
  %.127034745.us.us = phi float [ %.22704.lcssa.us.us, %._crit_edge4737.split.us.us.us ], [ %.02702.us, %.lr.ph4750.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %58, ptr noundef nonnull %59, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6238, ptr noundef nonnull %0)
  %3912 = sdiv i32 %.fr4927, %.fr4944
  %3913 = icmp sgt i32 %3912, 0
  br i1 %3913, label %.preheader2912.us.us.us.preheader, label %._crit_edge4737.split.us.us.us

.preheader2912.us.us.us.preheader:                ; preds = %3910
  %wide.trip.count6236 = zext nneg i32 %3912 to i64
  br label %.preheader2912.us.us.us

._crit_edge4737.split.us.us.us:                   ; preds = %._crit_edge4726.us.us.us, %3910
  %.22704.lcssa.us.us = phi float [ %.127034745.us.us, %3910 ], [ %3982, %._crit_edge4726.us.us.us ]
  %.sroa.4102.3.lcssa.us.us = phi i8 [ %.sroa.4102.24746.us.us, %3910 ], [ %.sroa.4102.5.us.us.us, %._crit_edge4726.us.us.us ]
  %.lcssa2993.us.us = phi i32 [ %3911, %3910 ], [ %.sroa.089.5.in.us.us.us, %._crit_edge4726.us.us.us ]
  %indvars.iv.next6239 = add nuw nsw i64 %indvars.iv6238, 1
  %3914 = load i32, ptr %3885, align 8, !tbaa !52
  %3915 = sext i32 %3914 to i64
  %3916 = icmp slt i64 %indvars.iv.next6239, %3915
  br i1 %3916, label %3910, label %._crit_edge4751.split.us.us, !llvm.loop !289

.preheader2912.us.us.us:                          ; preds = %.preheader2912.us.us.us.preheader, %._crit_edge4726.us.us.us
  %indvars.iv6234 = phi i64 [ 0, %.preheader2912.us.us.us.preheader ], [ %indvars.iv.next6235, %._crit_edge4726.us.us.us ]
  %3917 = phi i32 [ %3911, %.preheader2912.us.us.us.preheader ], [ %.sroa.089.5.in.us.us.us, %._crit_edge4726.us.us.us ]
  %.sroa.4102.34734.us.us.us = phi i8 [ %.sroa.4102.24746.us.us, %.preheader2912.us.us.us.preheader ], [ %.sroa.4102.5.us.us.us, %._crit_edge4726.us.us.us ]
  %.227044733.us.us.us = phi float [ %.127034745.us.us, %.preheader2912.us.us.us.preheader ], [ %3982, %._crit_edge4726.us.us.us ]
  %3918 = trunc nuw nsw i64 %indvars.iv6234 to i32
  %factor.op.mul4718.reass.us.us.us = mul i32 %factor.op.mul4731, %3918
  %factor.op.mul4719.reass.us.us.us = mul i32 %factor.op.mul4732, %3918
  %3919 = mul nuw nsw i64 %indvars.iv6234, %3890
  %3920 = sext i32 %factor.op.mul4718.reass.us.us.us to i64
  %3921 = sext i32 %factor.op.mul4719.reass.us.us.us to i64
  br label %3922

3922:                                             ; preds = %.thread2900.us.us.us, %.preheader2912.us.us.us
  %indvars.iv6232 = phi i64 [ %indvars.iv.next6233, %.thread2900.us.us.us ], [ %3890, %.preheader2912.us.us.us ]
  %3923 = phi i32 [ %.sroa.089.5.in.us.us.us, %.thread2900.us.us.us ], [ %3917, %.preheader2912.us.us.us ]
  %.sroa.4102.44723.us.us.us = phi i8 [ %.sroa.4102.5.us.us.us, %.thread2900.us.us.us ], [ %.sroa.4102.34734.us.us.us, %.preheader2912.us.us.us ]
  %.327054722.us.us.us = phi float [ %3982, %.thread2900.us.us.us ], [ %.227044733.us.us.us, %.preheader2912.us.us.us ]
  %indvars.iv.next6233 = add nsw i64 %indvars.iv6232, -1
  %3924 = load i32, ptr %3887, align 8, !tbaa !74
  %3925 = icmp eq i32 %3924, 0
  br i1 %3925, label %3937, label %3926

3926:                                             ; preds = %3922
  %3927 = icmp sgt i32 %3924, 0
  br i1 %3927, label %3928, label %3945

3928:                                             ; preds = %3926
  %3929 = load i32, ptr %3876, align 8, !tbaa !225
  %3930 = icmp eq i32 %3929, 0
  br i1 %3930, label %3931, label %3945

3931:                                             ; preds = %3928
  %3932 = load ptr, ptr %58, align 8, !tbaa !50
  %3933 = load i64, ptr %5, align 8, !tbaa !19
  %3934 = getelementptr i8, ptr %3932, i64 %3933
  %3935 = getelementptr i8, ptr %3934, i64 %3908
  %3936 = getelementptr i8, ptr %3935, i64 %3919
  br label %.sink.split6758

3937:                                             ; preds = %3922
  %3938 = load ptr, ptr %58, align 8, !tbaa !50
  %3939 = load i64, ptr %5, align 8, !tbaa !19
  %3940 = getelementptr i8, ptr %3938, i64 %3939
  %3941 = getelementptr i8, ptr %3940, i64 %3920
  %3942 = getelementptr i8, ptr %3941, i64 %3909
  br label %.sink.split6758

.sink.split6758:                                  ; preds = %3931, %3937
  %.sink6760 = phi ptr [ %3942, %3937 ], [ %3936, %3931 ]
  %3943 = getelementptr i8, ptr %.sink6760, i64 %indvars.iv.next6233
  %3944 = load i8, ptr %3943, align 1, !tbaa !41
  br label %3945

3945:                                             ; preds = %.sink.split6758, %3928, %3926
  %.sroa.4102.5.us.us.us = phi i8 [ %.sroa.4102.44723.us.us.us, %3928 ], [ %.sroa.4102.44723.us.us.us, %3926 ], [ %3944, %.sink.split6758 ]
  %.sroa.4102.0.insert.ext.us.us.us = zext i8 %.sroa.4102.5.us.us.us to i16
  %.sroa.4102.0.insert.shift.us.us.us = shl nuw i16 %.sroa.4102.0.insert.ext.us.us.us, 8
  %3946 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.4102.0.insert.shift.us.us.us) #8
  %.sroa.089.0.insert.mask.us.us.us = and i32 %3923, -65536
  %3947 = load i32, ptr %3888, align 4, !tbaa !73
  %3948 = icmp sgt i32 %3947, 0
  br i1 %3948, label %3961, label %3949

3949:                                             ; preds = %3945
  %3950 = icmp eq i32 %3947, 0
  br i1 %3950, label %3951, label %.thread2900.us.us.us

3951:                                             ; preds = %3949
  %3952 = load i32, ptr %3889, align 4, !tbaa !262
  %3953 = icmp eq i32 %3952, 0
  br i1 %3953, label %3954, label %.thread2900.us.us.us

3954:                                             ; preds = %3951
  %3955 = load ptr, ptr %59, align 8, !tbaa !50
  %3956 = load i64, ptr %6, align 8, !tbaa !19
  %3957 = getelementptr i16, ptr %3955, i64 %3956
  %3958 = getelementptr i16, ptr %3957, i64 %3896
  %3959 = getelementptr i16, ptr %3958, i64 %3919
  %3960 = getelementptr i16, ptr %3959, i64 %indvars.iv.next6233
  br label %.thread2900.us.us.us.sink.split

3961:                                             ; preds = %3945
  %3962 = load i32, ptr %3889, align 4, !tbaa !262
  %3963 = icmp sgt i32 %3962, 0
  br i1 %3963, label %3974, label %3964

3964:                                             ; preds = %3961
  %3965 = icmp eq i32 %3962, 0
  br i1 %3965, label %3966, label %.thread2900.us.us.us

3966:                                             ; preds = %3964
  %3967 = load ptr, ptr %59, align 8, !tbaa !50
  %3968 = load i64, ptr %6, align 8, !tbaa !19
  %3969 = add nsw i64 %indvars.iv.next6233, %3919
  %3970 = mul nsw i64 %3969, %3891
  %3971 = getelementptr i16, ptr %3967, i64 %3968
  %3972 = getelementptr i16, ptr %3971, i64 %3970
  %3973 = getelementptr i16, ptr %3972, i64 %indvars.iv6244
  br label %.thread2900.us.us.us.sink.split

3974:                                             ; preds = %3961
  %3975 = load ptr, ptr %59, align 8, !tbaa !50
  %3976 = load i64, ptr %6, align 8, !tbaa !19
  %3977 = getelementptr i16, ptr %3975, i64 %3976
  %3978 = getelementptr i16, ptr %3977, i64 %3897
  %3979 = getelementptr i16, ptr %3978, i64 %3921
  %3980 = getelementptr i16, ptr %3979, i64 %indvars.iv.next6233
  br label %.thread2900.us.us.us.sink.split

.thread2900.us.us.us.sink.split:                  ; preds = %3954, %3966, %3974
  %.sink6762 = phi ptr [ %3980, %3974 ], [ %3973, %3966 ], [ %3960, %3954 ]
  %3981 = load i16, ptr %.sink6762, align 2, !tbaa !38
  %.sroa.089.2.insert.ext.us.us.us = zext i16 %3981 to i32
  %.sroa.089.2.insert.shift.us.us.us = shl nuw i32 %.sroa.089.2.insert.ext.us.us.us, 16
  br label %.thread2900.us.us.us

.thread2900.us.us.us:                             ; preds = %.thread2900.us.us.us.sink.split, %3964, %3951, %3949
  %.sroa.089.5.in.us.us.us = phi i32 [ %.sroa.089.0.insert.mask.us.us.us, %3951 ], [ %.sroa.089.0.insert.mask.us.us.us, %3949 ], [ %.sroa.089.0.insert.mask.us.us.us, %3964 ], [ %.sroa.089.2.insert.shift.us.us.us, %.thread2900.us.us.us.sink.split ]
  %.sroa.089.5.us.us.us = bitcast i32 %.sroa.089.5.in.us.us.us to float
  %3982 = call float @llvm.fmuladd.f32(float %3946, float %.sroa.089.5.us.us.us, float %.327054722.us.us.us)
  %3983 = icmp sgt i64 %indvars.iv6232, 1
  br i1 %3983, label %3922, label %._crit_edge4726.us.us.us, !llvm.loop !290

._crit_edge4726.us.us.us:                         ; preds = %.thread2900.us.us.us
  %indvars.iv.next6235 = add nuw nsw i64 %indvars.iv6234, 1
  %exitcond6237.not = icmp eq i64 %indvars.iv.next6235, %wide.trip.count6236
  br i1 %exitcond6237.not, label %._crit_edge4737.split.us.us.us, label %.preheader2912.us.us.us, !llvm.loop !291

.lr.ph4766.split:                                 ; preds = %.lr.ph4766, %._crit_edge4751.split
  %indvars.iv6227 = phi i64 [ %indvars.iv.next6228, %._crit_edge4751.split ], [ 0, %.lr.ph4766 ]
  %3984 = load double, ptr %3884, align 8, !tbaa !25
  %3985 = fcmp oeq double %3984, 0.000000e+00
  br i1 %3985, label %3989, label %3986

3986:                                             ; preds = %.lr.ph4766.split
  %gep6713 = getelementptr i16, ptr %invariant.gep6716, i64 %indvars.iv6227
  %3987 = load i16, ptr %gep6713, align 2, !tbaa !38
  %.sroa.0103.2.insert.ext = zext i16 %3987 to i32
  %.sroa.0103.2.insert.shift = shl nuw i32 %.sroa.0103.2.insert.ext, 16
  %3988 = bitcast i32 %.sroa.0103.2.insert.shift to float
  br label %3989

3989:                                             ; preds = %.lr.ph4766.split, %3986
  %.02702 = phi float [ %3988, %3986 ], [ 0.000000e+00, %.lr.ph4766.split ]
  %3990 = load i32, ptr %3885, align 8, !tbaa !52
  %3991 = icmp sgt i32 %3990, 0
  br i1 %3991, label %.lr.ph4750, label %._crit_edge4751.split

.lr.ph4750:                                       ; preds = %3989, %.lr.ph4750
  %indvars.iv6224 = phi i64 [ %indvars.iv.next6225, %.lr.ph4750 ], [ 0, %3989 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %58, ptr noundef nonnull %59, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6224, ptr noundef nonnull %0)
  %indvars.iv.next6225 = add nuw nsw i64 %indvars.iv6224, 1
  %3992 = load i32, ptr %3885, align 8, !tbaa !52
  %3993 = sext i32 %3992 to i64
  %3994 = icmp slt i64 %indvars.iv.next6225, %3993
  br i1 %3994, label %.lr.ph4750, label %._crit_edge4751.split, !llvm.loop !289

._crit_edge4751.split:                            ; preds = %.lr.ph4750, %3989
  %3995 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.02702) #8
  %gep6715 = getelementptr i16, ptr %invariant.gep6718, i64 %indvars.iv6227
  store i16 %3995, ptr %gep6715, align 2, !tbaa !38
  %indvars.iv.next6228 = add nuw nsw i64 %indvars.iv6227, 1
  %exitcond6231.not = icmp eq i64 %indvars.iv.next6228, %wide.trip.count6230
  br i1 %exitcond6231.not, label %._crit_edge4767, label %.lr.ph4766.split, !llvm.loop !288

._crit_edge4767:                                  ; preds = %._crit_edge4751.split, %._crit_edge4751.split.us.us, %.preheader2913
  %.sroa.4102.1.lcssa = phi i8 [ %.sroa.4102.04776, %.preheader2913 ], [ %.sroa.4102.2.lcssa.us, %._crit_edge4751.split.us.us ], [ %.sroa.4102.04776, %._crit_edge4751.split ]
  %.lcssa2995 = phi i32 [ %3894, %.preheader2913 ], [ %.lcssa2994.us, %._crit_edge4751.split.us.us ], [ %3894, %._crit_edge4751.split ]
  %indvars.iv.next6245 = add nuw nsw i64 %indvars.iv6244, 1
  %exitcond6247.not = icmp eq i64 %indvars.iv.next6245, %wide.trip.count6246
  br i1 %exitcond6247.not, label %._crit_edge4779, label %.preheader2913, !llvm.loop !292

._crit_edge4779:                                  ; preds = %._crit_edge4767, %3881
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #8
  br label %.loopexit

3996:                                             ; preds = %3871, %3867, %3863, %3862
  br i1 %3474, label %3997, label %4364

3997:                                             ; preds = %3996
  %3998 = getelementptr inbounds i8, ptr %0, i64 4
  %3999 = load i32, ptr %3998, align 4, !tbaa !24
  %4000 = icmp eq i32 %3999, 2
  br i1 %4000, label %4001, label %4364

4001:                                             ; preds = %3997
  %4002 = getelementptr inbounds i8, ptr %0, i64 8
  %4003 = load i32, ptr %4002, align 8, !tbaa !26
  %4004 = icmp eq i32 %4003, 2
  br i1 %4004, label %4005, label %4364

4005:                                             ; preds = %4001
  %4006 = getelementptr inbounds i8, ptr %0, i64 12
  %4007 = load i32, ptr %4006, align 4, !tbaa !70
  %4008 = icmp eq i32 %4007, 1
  br i1 %4008, label %4009, label %4364

4009:                                             ; preds = %4005
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #8
  store ptr %1, ptr %60, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #8
  store ptr %2, ptr %61, align 8, !tbaa !50
  %4010 = getelementptr inbounds i8, ptr %0, i64 72
  %4011 = load i32, ptr %4010, align 8, !tbaa !225
  %.not2811 = icmp eq i32 %4011, 0
  br i1 %.not2811, label %4015, label %4012

4012:                                             ; preds = %4009
  %4013 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %712) #8
  %4014 = freeze i32 %4013
  br label %4015

4015:                                             ; preds = %4009, %4012
  %.fr4943 = phi i32 [ %4014, %4012 ], [ 1, %4009 ]
  %4016 = icmp sgt i32 %79, 0
  br i1 %4016, label %.preheader2915.lr.ph, label %._crit_edge4717

.preheader2915.lr.ph:                             ; preds = %4015
  %4017 = icmp sgt i32 %77, 0
  %4018 = getelementptr inbounds i8, ptr %0, i64 56
  %4019 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4278 = mul i32 %.fr4943, %71
  %factor.op.mul4279 = mul i32 %.fr4943, %73
  %.2426434232 = add i32 %.fr4943, -1
  %4020 = icmp sgt i32 %.fr4943, 0
  %4021 = getelementptr inbounds i8, ptr %0, i64 64
  %4022 = getelementptr inbounds i8, ptr %0, i64 68
  %4023 = getelementptr inbounds i8, ptr %0, i64 76
  %4024 = zext i32 %.2426434232 to i64
  %4025 = zext i32 %.fr4943 to i64
  %4026 = sext i32 %.fr4943 to i64
  %4027 = add nsw i64 %4026, -1
  %4028 = sext i32 %73 to i64
  %4029 = sext i32 %71 to i64
  %4030 = sext i32 %75 to i64
  %wide.trip.count6222 = zext nneg i32 %79 to i64
  %wide.trip.count6141 = zext nneg i32 %77 to i64
  %wide.trip.count6217 = zext nneg i32 %77 to i64
  %4031 = add nuw nsw i64 %4024, 1
  %xtraiter7659 = and i32 %.fr4943, 7
  %lcmp.mod7660.not = icmp eq i32 %xtraiter7659, 0
  %4032 = icmp ult i32 %.fr4943, 8
  %xtraiter7662 = and i32 %.fr4943, 7
  %lcmp.mod7663.not = icmp eq i32 %xtraiter7662, 0
  %4033 = icmp ult i32 %.fr4943, 8
  %xtraiter7665 = and i64 %4031, 3
  %lcmp.mod7666.not = icmp eq i64 %xtraiter7665, 0
  %4034 = icmp ult i32 %.fr4943, 4
  %xtraiter7668 = and i32 %.fr4943, 7
  %lcmp.mod7669.not = icmp eq i32 %xtraiter7668, 0
  %4035 = icmp ult i32 %.fr4943, 8
  %xtraiter7671 = and i64 %4031, 3
  %lcmp.mod7672.not = icmp eq i64 %xtraiter7671, 0
  %4036 = icmp ult i32 %.fr4943, 4
  %xtraiter7674 = and i32 %.fr4943, 7
  %lcmp.mod7675.not = icmp eq i32 %xtraiter7674, 0
  %4037 = icmp ult i32 %.fr4943, 8
  %xtraiter7677 = and i64 %4031, 3
  %lcmp.mod7678.not = icmp eq i64 %xtraiter7677, 0
  %4038 = icmp ult i32 %.fr4943, 4
  %4039 = and i64 %4024, 1
  %lcmp.mod7681.not.not = icmp eq i64 %4039, 0
  %indvars.iv.next6160.prol = add nsw i64 %4024, -1
  %4040 = icmp eq i32 %.2426434232, 0
  %xtraiter7684 = and i64 %4031, 3
  %lcmp.mod7685.not = icmp eq i64 %xtraiter7684, 0
  %4041 = icmp ult i32 %.fr4943, 4
  %xtraiter7687 = and i64 %4031, 3
  %lcmp.mod7688.not = icmp eq i64 %xtraiter7687, 0
  %4042 = icmp ult i32 %.fr4943, 4
  %4043 = and i64 %4024, 1
  %lcmp.mod7691.not.not = icmp eq i64 %4043, 0
  %indvars.iv.next6184.prol = add nsw i64 %4024, -1
  %4044 = icmp eq i32 %.2426434232, 0
  %xtraiter7693 = and i64 %4031, 3
  %lcmp.mod7694.not = icmp eq i64 %xtraiter7693, 0
  %4045 = icmp ult i32 %.fr4943, 4
  %xtraiter7696 = and i64 %4026, 1
  %lcmp.mod7697.not = icmp eq i64 %xtraiter7696, 0
  %indvars.iv.next6198.prol = add nsw i64 %4026, -2
  %4046 = icmp eq i64 %4027, 0
  %4047 = and i64 %4024, 1
  %lcmp.mod7700.not.not = icmp eq i64 %4047, 0
  %indvars.iv.next6204.prol = add nsw i64 %4024, -1
  %4048 = icmp eq i32 %.2426434232, 0
  br label %.preheader2915

.preheader2915:                                   ; preds = %.preheader2915.lr.ph, %._crit_edge4646
  %indvars.iv6219 = phi i64 [ 0, %.preheader2915.lr.ph ], [ %indvars.iv.next6220, %._crit_edge4646 ]
  %4049 = phi i32 [ undef, %.preheader2915.lr.ph ], [ %.lcssa3002, %._crit_edge4646 ]
  %4050 = phi i32 [ undef, %.preheader2915.lr.ph ], [ %.lcssa3003, %._crit_edge4646 ]
  br i1 %4017, label %.lr.ph4645, label %._crit_edge4646

.lr.ph4645:                                       ; preds = %.preheader2915
  %4051 = mul nsw i64 %indvars.iv6219, %4030
  %4052 = mul nsw i64 %indvars.iv6219, %4028
  %4053 = mul nsw i64 %indvars.iv6219, %4026
  %invariant.gep6708 = getelementptr i16, ptr %3, i64 %4051
  %invariant.gep6710 = getelementptr i16, ptr %3, i64 %4051
  br i1 %4020, label %.lr.ph4645.split.us, label %.lr.ph4645.split

.lr.ph4645.split.us:                              ; preds = %.lr.ph4645, %._crit_edge4423.split.us.us
  %indvars.iv6214 = phi i64 [ %indvars.iv.next6215, %._crit_edge4423.split.us.us ], [ 0, %.lr.ph4645 ]
  %4054 = phi i32 [ %.lcssa3000.us, %._crit_edge4423.split.us.us ], [ %4049, %.lr.ph4645 ]
  %4055 = phi i32 [ %.lcssa3001.us, %._crit_edge4423.split.us.us ], [ %4050, %.lr.ph4645 ]
  %4056 = load double, ptr %4018, align 8, !tbaa !25
  %4057 = fcmp oeq double %4056, 0.000000e+00
  br i1 %4057, label %4061, label %4058

4058:                                             ; preds = %.lr.ph4645.split.us
  %gep6709 = getelementptr i16, ptr %invariant.gep6708, i64 %indvars.iv6214
  %4059 = load i16, ptr %gep6709, align 2, !tbaa !38
  %.sroa.074.2.insert.ext.us = zext i16 %4059 to i32
  %.sroa.074.2.insert.shift.us = shl nuw i32 %.sroa.074.2.insert.ext.us, 16
  %4060 = bitcast i32 %.sroa.074.2.insert.shift.us to float
  br label %4061

4061:                                             ; preds = %4058, %.lr.ph4645.split.us
  %.02690.us = phi float [ %4060, %4058 ], [ 0.000000e+00, %.lr.ph4645.split.us ]
  %4062 = load i32, ptr %4019, align 8, !tbaa !52
  %4063 = icmp sgt i32 %4062, 0
  br i1 %4063, label %.lr.ph4422.us, label %._crit_edge4423.split.us.us

._crit_edge4423.split.us.us:                      ; preds = %._crit_edge4284.split.us.us.us, %4061
  %.12691.lcssa.us = phi float [ %.02690.us, %4061 ], [ %.22692.lcssa.us.us, %._crit_edge4284.split.us.us.us ]
  %.lcssa3001.us = phi i32 [ %4055, %4061 ], [ %.lcssa2999.us.us, %._crit_edge4284.split.us.us.us ]
  %.lcssa3000.us = phi i32 [ %4054, %4061 ], [ %.lcssa2998.us.us, %._crit_edge4284.split.us.us.us ]
  %4064 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.12691.lcssa.us) #8
  %gep6711 = getelementptr i16, ptr %invariant.gep6710, i64 %indvars.iv6214
  store i16 %4064, ptr %gep6711, align 2, !tbaa !38
  %indvars.iv.next6215 = add nuw nsw i64 %indvars.iv6214, 1
  %exitcond6218.not = icmp eq i64 %indvars.iv.next6215, %wide.trip.count6217
  br i1 %exitcond6218.not, label %._crit_edge4646, label %.lr.ph4645.split.us, !llvm.loop !293

.lr.ph4422.us:                                    ; preds = %4061
  %4065 = mul nsw i64 %indvars.iv6214, %4029
  %4066 = mul nuw nsw i64 %indvars.iv6214, %4026
  br label %4067

4067:                                             ; preds = %._crit_edge4284.split.us.us.us, %.lr.ph4422.us
  %indvars.iv6211 = phi i64 [ %indvars.iv.next6212, %._crit_edge4284.split.us.us.us ], [ 0, %.lr.ph4422.us ]
  %4068 = phi i32 [ %.lcssa2998.us.us, %._crit_edge4284.split.us.us.us ], [ %4054, %.lr.ph4422.us ]
  %4069 = phi i32 [ %.lcssa2999.us.us, %._crit_edge4284.split.us.us.us ], [ %4055, %.lr.ph4422.us ]
  %.126914417.us.us = phi float [ %.22692.lcssa.us.us, %._crit_edge4284.split.us.us.us ], [ %.02690.us, %.lr.ph4422.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6211, ptr noundef nonnull %0)
  %4070 = sdiv i32 %.fr4927, %.fr4943
  %4071 = icmp sgt i32 %4070, 0
  br i1 %4071, label %.preheader2914.lr.ph.us.us, label %._crit_edge4284.split.us.us.us

._crit_edge4284.split.us.us.us:                   ; preds = %._crit_edge4236.split.split.us4304.us.split.split.us, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us, %._crit_edge4236.split.split.us4304.us.split.us.us.us, %._crit_edge4236.split.split.us.split.us4324.us.us.us, %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us, %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us, %._crit_edge4236.split.us.us.us.us.us, %4067
  %.22692.lcssa.us.us = phi float [ %.126914417.us.us, %4067 ], [ %.us-phi4380.us.us, %._crit_edge4236.split.us.us.us.us.us ], [ %.lcssa7356, %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us ], [ %.lcssa7355, %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us ], [ %.lcssa7354, %._crit_edge4236.split.split.us.split.us4324.us.us.us ], [ %.us-phi4589.us, %._crit_edge4236.split.split.us4304.us.split.us.us.us ], [ %.lcssa7348, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us ], [ %.lcssa7347, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us ], [ %.lcssa7346, %._crit_edge4236.split.split.us4304.us.split.split.us ]
  %.lcssa2999.us.us = phi i32 [ %4069, %4067 ], [ %.us-phi4381.us.us, %._crit_edge4236.split.us.us.us.us.us ], [ %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.lcssa, %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us ], [ %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.lcssa, %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us ], [ %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.lcssa, %._crit_edge4236.split.split.us.split.us4324.us.us.us ], [ %.us-phi4590.us, %._crit_edge4236.split.split.us4304.us.split.us.us.us ], [ %4241, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us ], [ %4241, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us ], [ %4242, %._crit_edge4236.split.split.us4304.us.split.split.us ]
  %.lcssa2998.us.us = phi i32 [ %4068, %4067 ], [ %.us-phi4383.us.us, %._crit_edge4236.split.us.us.us.us.us ], [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.lcssa, %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us ], [ %4145, %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us ], [ %4127, %._crit_edge4236.split.split.us.split.us4324.us.us.us ], [ %.us-phi4592.us, %._crit_edge4236.split.split.us4304.us.split.us.us.us ], [ %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.lcssa, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us ], [ %4262, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us ], [ %4243, %._crit_edge4236.split.split.us4304.us.split.split.us ]
  %indvars.iv.next6212 = add nuw nsw i64 %indvars.iv6211, 1
  %4072 = load i32, ptr %4019, align 8, !tbaa !52
  %4073 = sext i32 %4072 to i64
  %4074 = icmp slt i64 %indvars.iv.next6212, %4073
  br i1 %4074, label %4067, label %._crit_edge4423.split.us.us, !llvm.loop !294

.preheader2914.lr.ph.us.us:                       ; preds = %4067
  %4075 = load ptr, ptr %60, align 8
  %4076 = load i64, ptr %5, align 8
  %4077 = getelementptr i16, ptr %4075, i64 %4076
  %4078 = getelementptr i16, ptr %4077, i64 %4065
  %invariant.gep4290.us.us = getelementptr i16, ptr %4077, i64 %4066
  %4079 = load ptr, ptr %61, align 8
  %4080 = load i64, ptr %6, align 8
  %4081 = getelementptr i16, ptr %4079, i64 %4080
  %4082 = getelementptr i16, ptr %4081, i64 %4052
  %invariant.gep.us4429.us = getelementptr i16, ptr %4081, i64 %indvars.iv6219
  %4083 = getelementptr i16, ptr %4081, i64 %4053
  %4084 = load i32, ptr %4021, align 8, !tbaa !74
  %4085 = icmp eq i32 %4084, 0
  %4086 = icmp sgt i32 %4084, 0
  %4087 = load i32, ptr %4022, align 4, !tbaa !73
  %4088 = icmp sgt i32 %4087, 0
  %4089 = icmp eq i32 %4087, 0
  br i1 %4088, label %.preheader2914.lr.ph.split.us.split.us.us.us, label %.preheader2914.lr.ph.split.us.split.us4439.us

.preheader2914.us.us4430.us4652:                  ; preds = %.preheader2914.us.us4430.us4652.preheader, %._crit_edge4236.split.split.us4304.us.split.split.us
  %.2726104283.us.us4431.us4653 = phi i32 [ %4100, %._crit_edge4236.split.split.us4304.us.split.split.us ], [ 0, %.preheader2914.us.us4430.us4652.preheader ]
  %.226924280.us.us4432.us4654 = phi float [ %.lcssa7346, %._crit_edge4236.split.split.us4304.us.split.split.us ], [ %.126914417.us.us, %.preheader2914.us.us4430.us4652.preheader ]
  br i1 %lcmp.mod7660.not, label %.thread2902.us4299.us.us.prol.loopexit, label %.thread2902.us4299.us.us.prol

.thread2902.us4299.us.us.prol:                    ; preds = %.preheader2914.us.us4430.us4652, %.thread2902.us4299.us.us.prol
  %.2426434234.us4291.us.us.prol = phi i32 [ %.242643.us4302.us.us.prol, %.thread2902.us4299.us.us.prol ], [ %.2426434232, %.preheader2914.us.us4430.us4652 ]
  %.326934233.us4292.us.us.prol = phi float [ %4090, %.thread2902.us4299.us.us.prol ], [ %.226924280.us.us4432.us4654, %.preheader2914.us.us4430.us4652 ]
  %prol.iter7661 = phi i32 [ %prol.iter7661.next, %.thread2902.us4299.us.us.prol ], [ 0, %.preheader2914.us.us4430.us4652 ]
  %4090 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %.326934233.us4292.us.us.prol)
  %.242643.us4302.us.us.prol = add nsw i32 %.2426434234.us4291.us.us.prol, -1
  %prol.iter7661.next = add i32 %prol.iter7661, 1
  %prol.iter7661.cmp.not = icmp eq i32 %prol.iter7661.next, %xtraiter7659
  br i1 %prol.iter7661.cmp.not, label %.thread2902.us4299.us.us.prol.loopexit, label %.thread2902.us4299.us.us.prol, !llvm.loop !295

.thread2902.us4299.us.us.prol.loopexit:           ; preds = %.thread2902.us4299.us.us.prol, %.preheader2914.us.us4430.us4652
  %.2426434234.us4291.us.us.unr = phi i32 [ %.2426434232, %.preheader2914.us.us4430.us4652 ], [ %.242643.us4302.us.us.prol, %.thread2902.us4299.us.us.prol ]
  %.326934233.us4292.us.us.unr = phi float [ %.226924280.us.us4432.us4654, %.preheader2914.us.us4430.us4652 ], [ %4090, %.thread2902.us4299.us.us.prol ]
  %.lcssa7346.unr = phi float [ poison, %.preheader2914.us.us4430.us4652 ], [ %4090, %.thread2902.us4299.us.us.prol ]
  br i1 %4032, label %._crit_edge4236.split.split.us4304.us.split.split.us, label %.thread2902.us4299.us.us

.thread2902.us4299.us.us:                         ; preds = %.thread2902.us4299.us.us.prol.loopexit, %.thread2902.us4299.us.us
  %.2426434234.us4291.us.us = phi i32 [ %.242643.us4302.us.us.7, %.thread2902.us4299.us.us ], [ %.2426434234.us4291.us.us.unr, %.thread2902.us4299.us.us.prol.loopexit ]
  %.326934233.us4292.us.us = phi float [ %4098, %.thread2902.us4299.us.us ], [ %.326934233.us4292.us.us.unr, %.thread2902.us4299.us.us.prol.loopexit ]
  %4091 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %.326934233.us4292.us.us)
  %4092 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %4091)
  %4093 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %4092)
  %4094 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %4093)
  %4095 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %4094)
  %4096 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %4095)
  %4097 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %4096)
  %4098 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us, float %.sroa.057.5.us4301.us.us, float %4097)
  %.242643.us4302.us.us.7 = add nsw i32 %.2426434234.us4291.us.us, -8
  %4099 = icmp sgt i32 %.2426434234.us4291.us.us, 7
  br i1 %4099, label %.thread2902.us4299.us.us, label %._crit_edge4236.split.split.us4304.us.split.split.us, !llvm.loop !296

._crit_edge4236.split.split.us4304.us.split.split.us: ; preds = %.thread2902.us4299.us.us, %.thread2902.us4299.us.us.prol.loopexit
  %.lcssa7346 = phi float [ %.lcssa7346.unr, %.thread2902.us4299.us.us.prol.loopexit ], [ %4098, %.thread2902.us4299.us.us ]
  %4100 = add nuw nsw i32 %.2726104283.us.us4431.us4653, 1
  %exitcond6143.not = icmp eq i32 %4100, %4070
  br i1 %exitcond6143.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us4430.us4652, !llvm.loop !297

.preheader2914.lr.ph.split.us.split.us4439.us:    ; preds = %.preheader2914.lr.ph.us.us
  br i1 %4085, label %.preheader2914.lr.ph.split.us.split.split.us.us.us, label %.preheader2914.lr.ph.split.us.split.split.us4457.us

.preheader2914.lr.ph.split.us.split.us.us.us:     ; preds = %.preheader2914.lr.ph.us.us
  %4101 = load i32, ptr %4023, align 4, !tbaa !262
  %4102 = icmp sgt i32 %4101, 0
  %wide.trip.count6209 = zext nneg i32 %4070 to i64
  %4103 = icmp eq i32 %4101, 0
  br label %.preheader2914.us.us.us.us

.preheader2914.us.us.us.us:                       ; preds = %._crit_edge4236.split.us.us.us.us.us, %.preheader2914.lr.ph.split.us.split.us.us.us
  %indvars.iv6206 = phi i64 [ %indvars.iv.next6207, %._crit_edge4236.split.us.us.us.us.us ], [ 0, %.preheader2914.lr.ph.split.us.split.us.us.us ]
  %4104 = phi i32 [ %.us-phi4383.us.us, %._crit_edge4236.split.us.us.us.us.us ], [ %4068, %.preheader2914.lr.ph.split.us.split.us.us.us ]
  %4105 = phi i32 [ %.us-phi4381.us.us, %._crit_edge4236.split.us.us.us.us.us ], [ %4069, %.preheader2914.lr.ph.split.us.split.us.us.us ]
  %.226924280.us.us.us.us = phi float [ %.us-phi4380.us.us, %._crit_edge4236.split.us.us.us.us.us ], [ %.126914417.us.us, %.preheader2914.lr.ph.split.us.split.us.us.us ]
  %4106 = trunc nuw nsw i64 %indvars.iv6206 to i32
  %factor.op.mul4229.reass.us.us.us.us = mul i32 %factor.op.mul4278, %4106
  %factor.op.mul4230.reass.us.us.us.us = mul i32 %factor.op.mul4279, %4106
  %4107 = mul nuw nsw i64 %indvars.iv6206, %4026
  %4108 = getelementptr i16, ptr %4078, i64 %4107
  %4109 = sext i32 %factor.op.mul4229.reass.us.us.us.us to i64
  %gep.us4303.us.us.us = getelementptr i16, ptr %invariant.gep4290.us.us, i64 %4109
  %4110 = sext i32 %factor.op.mul4230.reass.us.us.us.us to i64
  %4111 = getelementptr i16, ptr %4083, i64 %4110
  br i1 %4102, label %.lr.ph4235.split.us.us.us.split.us.us.us, label %.lr.ph4235.split.us.us.us.split.us4483.us

.lr.ph4235.split.us.us.us.split.split.us4498.us:  ; preds = %.lr.ph4235.split.us.us.us.split.us4483.us, %.thread2902.us.us.us.us4448.us
  %indvars.iv6191 = phi i64 [ %indvars.iv.next6192, %.thread2902.us.us.us.us4448.us ], [ %4027, %.lr.ph4235.split.us.us.us.split.us4483.us ]
  %4112 = phi i32 [ %.sroa.057.5.in.us.us.us.us.us, %.thread2902.us.us.us.us4448.us ], [ %4104, %.lr.ph4235.split.us.us.us.split.us4483.us ]
  %4113 = phi i32 [ %.sroa.068.5.in.us.us.us.us4446.us, %.thread2902.us.us.us.us4448.us ], [ %4105, %.lr.ph4235.split.us.us.us.split.us4483.us ]
  %.326934233.us.us.us.us4442.us = phi float [ %4125, %.thread2902.us.us.us.us4448.us ], [ %.226924280.us.us.us.us, %.lr.ph4235.split.us.us.us.split.us4483.us ]
  %.sroa.068.0.insert.mask.us.us.us.us4443.us = and i32 %4113, -65536
  br i1 %4086, label %4114, label %4120

4114:                                             ; preds = %.lr.ph4235.split.us.us.us.split.split.us4498.us
  %4115 = load i32, ptr %4010, align 8, !tbaa !225
  %4116 = icmp eq i32 %4115, 0
  br i1 %4116, label %4117, label %4120

4117:                                             ; preds = %4114
  %4118 = getelementptr i16, ptr %4108, i64 %indvars.iv6191
  %4119 = load i16, ptr %4118, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us.us.us.us4444.us = zext i16 %4119 to i32
  %.sroa.068.2.insert.shift71.us.us.us.us4445.us = shl nuw i32 %.sroa.068.2.insert.ext70.us.us.us.us4444.us, 16
  br label %4120

4120:                                             ; preds = %4117, %4114, %.lr.ph4235.split.us.us.us.split.split.us4498.us
  %.sroa.068.5.in.us.us.us.us4446.us = phi i32 [ %.sroa.068.2.insert.shift71.us.us.us.us4445.us, %4117 ], [ %.sroa.068.0.insert.mask.us.us.us.us4443.us, %4114 ], [ %.sroa.068.0.insert.mask.us.us.us.us4443.us, %.lr.ph4235.split.us.us.us.split.split.us4498.us ]
  %.sroa.068.5.us.us.us.us4447.us = bitcast i32 %.sroa.068.5.in.us.us.us.us4446.us to float
  %.sroa.057.0.insert.mask.us.us.us.us.us = and i32 %4112, -65536
  br i1 %4103, label %4121, label %.thread2902.us.us.us.us4448.us

4121:                                             ; preds = %4120
  %4122 = add nsw i64 %indvars.iv6191, %4107
  %4123 = mul nsw i64 %4122, %4028
  %gep.us.us4312.us.us.us = getelementptr i16, ptr %invariant.gep.us4429.us, i64 %4123
  %4124 = load i16, ptr %gep.us.us4312.us.us.us, align 2, !tbaa !38
  %.sroa.057.2.insert.ext59.us.us.us.us.us = zext i16 %4124 to i32
  %.sroa.057.2.insert.shift60.us.us.us.us.us = shl nuw i32 %.sroa.057.2.insert.ext59.us.us.us.us.us, 16
  br label %.thread2902.us.us.us.us4448.us

.thread2902.us.us.us.us4448.us:                   ; preds = %4121, %4120
  %.sroa.057.5.in.us.us.us.us.us = phi i32 [ %.sroa.057.2.insert.shift60.us.us.us.us.us, %4121 ], [ %.sroa.057.0.insert.mask.us.us.us.us.us, %4120 ]
  %.sroa.057.5.us.us.us.us4449.us = bitcast i32 %.sroa.057.5.in.us.us.us.us.us to float
  %4125 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4447.us, float %.sroa.057.5.us.us.us.us4449.us, float %.326934233.us.us.us.us4442.us)
  %indvars.iv.next6192 = add nsw i64 %indvars.iv6191, -1
  %4126 = icmp sgt i64 %indvars.iv6191, 0
  br i1 %4126, label %.lr.ph4235.split.us.us.us.split.split.us4498.us, label %._crit_edge4236.split.us.us.us.us.us, !llvm.loop !296

.preheader2914.lr.ph.split.us.split.split.us4457.us: ; preds = %.preheader2914.lr.ph.split.us.split.us4439.us
  br i1 %4086, label %.preheader2914.lr.ph.split.us.split.split.us4457.split.us.us, label %.preheader2914.lr.ph.split.us.split.split.us4457.split.us4661

.preheader2914.lr.ph.split.us.split.split.us.us.us: ; preds = %.preheader2914.lr.ph.split.us.split.us4439.us
  br i1 %4089, label %.preheader2914.lr.ph.split.us.split.split.us.split.us.us.us, label %.preheader2914.us.us4355.us4459.us.preheader

.preheader2914.us.us4355.us4459.us.preheader:     ; preds = %.preheader2914.lr.ph.split.us.split.split.us.us.us
  %4127 = and i32 %4068, -65536
  %wide.trip.count6173 = zext nneg i32 %4070 to i64
  %.sroa.057.0.insert.mask.us4253.us4321.us.us.us = and i32 %4068, -65536
  %.sroa.057.5.us4256.us4322.us.us.us = bitcast i32 %.sroa.057.0.insert.mask.us4253.us4321.us.us.us to float
  br label %.preheader2914.us.us4355.us4459.us

.preheader2914.us.us4355.us4459.us:               ; preds = %.preheader2914.us.us4355.us4459.us.preheader, %._crit_edge4236.split.split.us.split.us4324.us.us.us
  %indvars.iv6170 = phi i64 [ 0, %.preheader2914.us.us4355.us4459.us.preheader ], [ %indvars.iv.next6171, %._crit_edge4236.split.split.us.split.us4324.us.us.us ]
  %.226924280.us.us4357.us4461.us = phi float [ %.126914417.us.us, %.preheader2914.us.us4355.us4459.us.preheader ], [ %.lcssa7354, %._crit_edge4236.split.split.us.split.us4324.us.us.us ]
  %4128 = trunc nuw nsw i64 %indvars.iv6170 to i32
  %factor.op.mul4229.reass.us.us4358.us4462.us = mul i32 %factor.op.mul4278, %4128
  %4129 = sext i32 %factor.op.mul4229.reass.us.us4358.us4462.us to i64
  %gep.us4303.us4359.us4463.us = getelementptr i16, ptr %invariant.gep4290.us.us, i64 %4129
  br i1 %lcmp.mod7685.not, label %.thread2902.us4254.us4315.us.us.us.prol.loopexit, label %.thread2902.us4254.us4315.us.us.us.prol

.thread2902.us4254.us4315.us.us.us.prol:          ; preds = %.preheader2914.us.us4355.us4459.us, %.thread2902.us4254.us4315.us.us.us.prol
  %indvars.iv6167.prol = phi i64 [ %indvars.iv.next6168.prol, %.thread2902.us4254.us4315.us.us.us.prol ], [ %4024, %.preheader2914.us.us4355.us4459.us ]
  %.326934233.us4247.us4317.us.us.us.prol = phi float [ %4132, %.thread2902.us4254.us4315.us.us.us.prol ], [ %.226924280.us.us4357.us4461.us, %.preheader2914.us.us4355.us4459.us ]
  %prol.iter7686 = phi i64 [ %prol.iter7686.next, %.thread2902.us4254.us4315.us.us.us.prol ], [ 0, %.preheader2914.us.us4355.us4459.us ]
  %4130 = getelementptr i16, ptr %gep.us4303.us4359.us4463.us, i64 %indvars.iv6167.prol
  %4131 = load i16, ptr %4130, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.prol = zext i16 %4131 to i32
  %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.prol = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.prol, 16
  %.sroa.068.5.us4252.us4320.us.us.us.prol = bitcast i32 %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.prol to float
  %4132 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us4320.us.us.us.prol, float %.sroa.057.5.us4256.us4322.us.us.us, float %.326934233.us4247.us4317.us.us.us.prol)
  %indvars.iv.next6168.prol = add nsw i64 %indvars.iv6167.prol, -1
  %prol.iter7686.next = add i64 %prol.iter7686, 1
  %prol.iter7686.cmp.not = icmp eq i64 %prol.iter7686.next, %xtraiter7684
  br i1 %prol.iter7686.cmp.not, label %.thread2902.us4254.us4315.us.us.us.prol.loopexit, label %.thread2902.us4254.us4315.us.us.us.prol, !llvm.loop !298

.thread2902.us4254.us4315.us.us.us.prol.loopexit: ; preds = %.thread2902.us4254.us4315.us.us.us.prol, %.preheader2914.us.us4355.us4459.us
  %indvars.iv6167.unr = phi i64 [ %4024, %.preheader2914.us.us4355.us4459.us ], [ %indvars.iv.next6168.prol, %.thread2902.us4254.us4315.us.us.us.prol ]
  %.326934233.us4247.us4317.us.us.us.unr = phi float [ %.226924280.us.us4357.us4461.us, %.preheader2914.us.us4355.us4459.us ], [ %4132, %.thread2902.us4254.us4315.us.us.us.prol ]
  %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2914.us.us4355.us4459.us ], [ %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.prol, %.thread2902.us4254.us4315.us.us.us.prol ]
  %.lcssa7354.unr = phi float [ poison, %.preheader2914.us.us4355.us4459.us ], [ %4132, %.thread2902.us4254.us4315.us.us.us.prol ]
  br i1 %4041, label %._crit_edge4236.split.split.us.split.us4324.us.us.us, label %.preheader2914.us.us4355.us4459.us.new

.preheader2914.us.us4355.us4459.us.new:           ; preds = %.thread2902.us4254.us4315.us.us.us.prol.loopexit
  %invariant.gep7905 = getelementptr i8, ptr %gep.us4303.us4359.us4463.us, i64 -2
  %invariant.gep7907 = getelementptr i8, ptr %gep.us4303.us4359.us4463.us, i64 -4
  %invariant.gep7909 = getelementptr i8, ptr %gep.us4303.us4359.us4463.us, i64 -6
  br label %.thread2902.us4254.us4315.us.us.us

.thread2902.us4254.us4315.us.us.us:               ; preds = %.thread2902.us4254.us4315.us.us.us, %.preheader2914.us.us4355.us4459.us.new
  %indvars.iv6167 = phi i64 [ %indvars.iv6167.unr, %.preheader2914.us.us4355.us4459.us.new ], [ %indvars.iv.next6168.3, %.thread2902.us4254.us4315.us.us.us ]
  %.326934233.us4247.us4317.us.us.us = phi float [ %.326934233.us4247.us4317.us.us.us.unr, %.preheader2914.us.us4355.us4459.us.new ], [ %4141, %.thread2902.us4254.us4315.us.us.us ]
  %4133 = getelementptr i16, ptr %gep.us4303.us4359.us4463.us, i64 %indvars.iv6167
  %4134 = load i16, ptr %4133, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us4318.us.us.us = zext i16 %4134 to i32
  %.sroa.068.2.insert.shift.us4250.us4319.us.us.us = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us4318.us.us.us, 16
  %.sroa.068.5.us4252.us4320.us.us.us = bitcast i32 %.sroa.068.2.insert.shift.us4250.us4319.us.us.us to float
  %4135 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us4320.us.us.us, float %.sroa.057.5.us4256.us4322.us.us.us, float %.326934233.us4247.us4317.us.us.us)
  %gep7906 = getelementptr i16, ptr %invariant.gep7905, i64 %indvars.iv6167
  %4136 = load i16, ptr %gep7906, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.1 = zext i16 %4136 to i32
  %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.1 = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.1, 16
  %.sroa.068.5.us4252.us4320.us.us.us.1 = bitcast i32 %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.1 to float
  %4137 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us4320.us.us.us.1, float %.sroa.057.5.us4256.us4322.us.us.us, float %4135)
  %gep7908 = getelementptr i16, ptr %invariant.gep7907, i64 %indvars.iv6167
  %4138 = load i16, ptr %gep7908, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.2 = zext i16 %4138 to i32
  %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.2 = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.2, 16
  %.sroa.068.5.us4252.us4320.us.us.us.2 = bitcast i32 %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.2 to float
  %4139 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us4320.us.us.us.2, float %.sroa.057.5.us4256.us4322.us.us.us, float %4137)
  %gep7910 = getelementptr i16, ptr %invariant.gep7909, i64 %indvars.iv6167
  %4140 = load i16, ptr %gep7910, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.3 = zext i16 %4140 to i32
  %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.3 = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us4318.us.us.us.3, 16
  %.sroa.068.5.us4252.us4320.us.us.us.3 = bitcast i32 %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.3 to float
  %4141 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us4320.us.us.us.3, float %.sroa.057.5.us4256.us4322.us.us.us, float %4139)
  %indvars.iv.next6168.3 = add nsw i64 %indvars.iv6167, -4
  %4142 = icmp sgt i64 %indvars.iv6167, 3
  br i1 %4142, label %.thread2902.us4254.us4315.us.us.us, label %._crit_edge4236.split.split.us.split.us4324.us.us.us, !llvm.loop !296

._crit_edge4236.split.split.us.split.us4324.us.us.us: ; preds = %.thread2902.us4254.us4315.us.us.us, %.thread2902.us4254.us4315.us.us.us.prol.loopexit
  %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.lcssa = phi i32 [ %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.lcssa.unr, %.thread2902.us4254.us4315.us.us.us.prol.loopexit ], [ %.sroa.068.2.insert.shift.us4250.us4319.us.us.us.3, %.thread2902.us4254.us4315.us.us.us ]
  %.lcssa7354 = phi float [ %.lcssa7354.unr, %.thread2902.us4254.us4315.us.us.us.prol.loopexit ], [ %4141, %.thread2902.us4254.us4315.us.us.us ]
  %indvars.iv.next6171 = add nuw nsw i64 %indvars.iv6170, 1
  %exitcond6174.not = icmp eq i64 %indvars.iv.next6171, %wide.trip.count6173
  br i1 %exitcond6174.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us4355.us4459.us, !llvm.loop !297

.preheader2914.lr.ph.split.us.split.split.us.split.us.us.us: ; preds = %.preheader2914.lr.ph.split.us.split.split.us.us.us
  %4143 = load i32, ptr %4023, align 4, !tbaa !262
  %4144 = icmp eq i32 %4143, 0
  br i1 %4144, label %.preheader2914.us.us4355.us.us.us.us.preheader, label %.preheader2914.us.us4355.us.us4471.us.preheader

.preheader2914.us.us4355.us.us4471.us.preheader:  ; preds = %.preheader2914.lr.ph.split.us.split.split.us.split.us.us.us
  %4145 = and i32 %4068, -65536
  %wide.trip.count6181 = zext nneg i32 %4070 to i64
  %.sroa.057.0.insert.mask.us4253.us.us.us.us.us.us = and i32 %4068, -65536
  %.sroa.057.5.us4256.us.us4337.us.us.us.us = bitcast i32 %.sroa.057.0.insert.mask.us4253.us.us.us.us.us.us to float
  br label %.preheader2914.us.us4355.us.us4471.us

.preheader2914.us.us4355.us.us.us.us.preheader:   ; preds = %.preheader2914.lr.ph.split.us.split.split.us.split.us.us.us
  %wide.trip.count6189 = zext nneg i32 %4070 to i64
  br label %.preheader2914.us.us4355.us.us.us.us

.preheader2914.us.us4355.us.us4471.us:            ; preds = %.preheader2914.us.us4355.us.us4471.us.preheader, %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us
  %indvars.iv6178 = phi i64 [ 0, %.preheader2914.us.us4355.us.us4471.us.preheader ], [ %indvars.iv.next6179, %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us ]
  %.226924280.us.us4357.us.us4473.us = phi float [ %.126914417.us.us, %.preheader2914.us.us4355.us.us4471.us.preheader ], [ %.lcssa7355, %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us ]
  %4146 = trunc nuw nsw i64 %indvars.iv6178 to i32
  %factor.op.mul4229.reass.us.us4358.us.us4474.us = mul i32 %factor.op.mul4278, %4146
  %4147 = sext i32 %factor.op.mul4229.reass.us.us4358.us.us4474.us to i64
  %gep.us4303.us4359.us.us4475.us = getelementptr i16, ptr %invariant.gep4290.us.us, i64 %4147
  br i1 %lcmp.mod7688.not, label %.thread2902.us4254.us.us4331.us.us.us.us.prol.loopexit, label %.thread2902.us4254.us.us4331.us.us.us.us.prol

.thread2902.us4254.us.us4331.us.us.us.us.prol:    ; preds = %.preheader2914.us.us4355.us.us4471.us, %.thread2902.us4254.us.us4331.us.us.us.us.prol
  %indvars.iv6175.prol = phi i64 [ %indvars.iv.next6176.prol, %.thread2902.us4254.us.us4331.us.us.us.us.prol ], [ %4024, %.preheader2914.us.us4355.us.us4471.us ]
  %.326934233.us4247.us.us4333.us.us.us.us.prol = phi float [ %4150, %.thread2902.us4254.us.us4331.us.us.us.us.prol ], [ %.226924280.us.us4357.us.us4473.us, %.preheader2914.us.us4355.us.us4471.us ]
  %prol.iter7689 = phi i64 [ %prol.iter7689.next, %.thread2902.us4254.us.us4331.us.us.us.us.prol ], [ 0, %.preheader2914.us.us4355.us.us4471.us ]
  %4148 = getelementptr i16, ptr %gep.us4303.us4359.us.us4475.us, i64 %indvars.iv6175.prol
  %4149 = load i16, ptr %4148, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.prol = zext i16 %4149 to i32
  %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.prol = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.prol, 16
  %.sroa.068.5.us4252.us.us4336.us.us.us.us.prol = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.prol to float
  %4150 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us4336.us.us.us.us.prol, float %.sroa.057.5.us4256.us.us4337.us.us.us.us, float %.326934233.us4247.us.us4333.us.us.us.us.prol)
  %indvars.iv.next6176.prol = add nsw i64 %indvars.iv6175.prol, -1
  %prol.iter7689.next = add i64 %prol.iter7689, 1
  %prol.iter7689.cmp.not = icmp eq i64 %prol.iter7689.next, %xtraiter7687
  br i1 %prol.iter7689.cmp.not, label %.thread2902.us4254.us.us4331.us.us.us.us.prol.loopexit, label %.thread2902.us4254.us.us4331.us.us.us.us.prol, !llvm.loop !299

.thread2902.us4254.us.us4331.us.us.us.us.prol.loopexit: ; preds = %.thread2902.us4254.us.us4331.us.us.us.us.prol, %.preheader2914.us.us4355.us.us4471.us
  %indvars.iv6175.unr = phi i64 [ %4024, %.preheader2914.us.us4355.us.us4471.us ], [ %indvars.iv.next6176.prol, %.thread2902.us4254.us.us4331.us.us.us.us.prol ]
  %.326934233.us4247.us.us4333.us.us.us.us.unr = phi float [ %.226924280.us.us4357.us.us4473.us, %.preheader2914.us.us4355.us.us4471.us ], [ %4150, %.thread2902.us4254.us.us4331.us.us.us.us.prol ]
  %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2914.us.us4355.us.us4471.us ], [ %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.prol, %.thread2902.us4254.us.us4331.us.us.us.us.prol ]
  %.lcssa7355.unr = phi float [ poison, %.preheader2914.us.us4355.us.us4471.us ], [ %4150, %.thread2902.us4254.us.us4331.us.us.us.us.prol ]
  br i1 %4042, label %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us, label %.preheader2914.us.us4355.us.us4471.us.new

.preheader2914.us.us4355.us.us4471.us.new:        ; preds = %.thread2902.us4254.us.us4331.us.us.us.us.prol.loopexit
  %invariant.gep7911 = getelementptr i8, ptr %gep.us4303.us4359.us.us4475.us, i64 -2
  %invariant.gep7913 = getelementptr i8, ptr %gep.us4303.us4359.us.us4475.us, i64 -4
  %invariant.gep7915 = getelementptr i8, ptr %gep.us4303.us4359.us.us4475.us, i64 -6
  br label %.thread2902.us4254.us.us4331.us.us.us.us

.thread2902.us4254.us.us4331.us.us.us.us:         ; preds = %.thread2902.us4254.us.us4331.us.us.us.us, %.preheader2914.us.us4355.us.us4471.us.new
  %indvars.iv6175 = phi i64 [ %indvars.iv6175.unr, %.preheader2914.us.us4355.us.us4471.us.new ], [ %indvars.iv.next6176.3, %.thread2902.us4254.us.us4331.us.us.us.us ]
  %.326934233.us4247.us.us4333.us.us.us.us = phi float [ %.326934233.us4247.us.us4333.us.us.us.us.unr, %.preheader2914.us.us4355.us.us4471.us.new ], [ %4159, %.thread2902.us4254.us.us4331.us.us.us.us ]
  %4151 = getelementptr i16, ptr %gep.us4303.us4359.us.us4475.us, i64 %indvars.iv6175
  %4152 = load i16, ptr %4151, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us = zext i16 %4152 to i32
  %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us, 16
  %.sroa.068.5.us4252.us.us4336.us.us.us.us = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us to float
  %4153 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us4336.us.us.us.us, float %.sroa.057.5.us4256.us.us4337.us.us.us.us, float %.326934233.us4247.us.us4333.us.us.us.us)
  %gep7912 = getelementptr i16, ptr %invariant.gep7911, i64 %indvars.iv6175
  %4154 = load i16, ptr %gep7912, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.1 = zext i16 %4154 to i32
  %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.1 = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.1, 16
  %.sroa.068.5.us4252.us.us4336.us.us.us.us.1 = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.1 to float
  %4155 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us4336.us.us.us.us.1, float %.sroa.057.5.us4256.us.us4337.us.us.us.us, float %4153)
  %gep7914 = getelementptr i16, ptr %invariant.gep7913, i64 %indvars.iv6175
  %4156 = load i16, ptr %gep7914, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.2 = zext i16 %4156 to i32
  %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.2 = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.2, 16
  %.sroa.068.5.us4252.us.us4336.us.us.us.us.2 = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.2 to float
  %4157 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us4336.us.us.us.us.2, float %.sroa.057.5.us4256.us.us4337.us.us.us.us, float %4155)
  %gep7916 = getelementptr i16, ptr %invariant.gep7915, i64 %indvars.iv6175
  %4158 = load i16, ptr %gep7916, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.3 = zext i16 %4158 to i32
  %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.3 = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us4334.us.us.us.us.3, 16
  %.sroa.068.5.us4252.us.us4336.us.us.us.us.3 = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.3 to float
  %4159 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us4336.us.us.us.us.3, float %.sroa.057.5.us4256.us.us4337.us.us.us.us, float %4157)
  %indvars.iv.next6176.3 = add nsw i64 %indvars.iv6175, -4
  %4160 = icmp sgt i64 %indvars.iv6175, 3
  br i1 %4160, label %.thread2902.us4254.us.us4331.us.us.us.us, label %._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us, !llvm.loop !296

._crit_edge4236.split.split.us.split.us.split.us4339.us.us.us.us: ; preds = %.thread2902.us4254.us.us4331.us.us.us.us, %.thread2902.us4254.us.us4331.us.us.us.us.prol.loopexit
  %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.lcssa = phi i32 [ %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.lcssa.unr, %.thread2902.us4254.us.us4331.us.us.us.us.prol.loopexit ], [ %.sroa.068.2.insert.shift.us4250.us.us4335.us.us.us.us.3, %.thread2902.us4254.us.us4331.us.us.us.us ]
  %.lcssa7355 = phi float [ %.lcssa7355.unr, %.thread2902.us4254.us.us4331.us.us.us.us.prol.loopexit ], [ %4159, %.thread2902.us4254.us.us4331.us.us.us.us ]
  %indvars.iv.next6179 = add nuw nsw i64 %indvars.iv6178, 1
  %exitcond6182.not = icmp eq i64 %indvars.iv.next6179, %wide.trip.count6181
  br i1 %exitcond6182.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us4355.us.us4471.us, !llvm.loop !297

.preheader2914.us.us4355.us.us.us.us:             ; preds = %.preheader2914.us.us4355.us.us.us.us.preheader, %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us
  %indvars.iv6186 = phi i64 [ 0, %.preheader2914.us.us4355.us.us.us.us.preheader ], [ %indvars.iv.next6187, %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us ]
  %.226924280.us.us4357.us.us.us.us = phi float [ %.126914417.us.us, %.preheader2914.us.us4355.us.us.us.us.preheader ], [ %.lcssa7356, %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us ]
  %4161 = trunc nuw nsw i64 %indvars.iv6186 to i32
  %factor.op.mul4229.reass.us.us4358.us.us.us.us = mul i32 %factor.op.mul4278, %4161
  %4162 = sext i32 %factor.op.mul4229.reass.us.us4358.us.us.us.us to i64
  %gep.us4303.us4359.us.us.us.us = getelementptr i16, ptr %invariant.gep4290.us.us, i64 %4162
  %4163 = mul nuw nsw i64 %indvars.iv6186, %4026
  %4164 = getelementptr i16, ptr %4082, i64 %4163
  br i1 %lcmp.mod7691.not.not, label %.thread2902.us4254.us.us.us.us.us.us.us.us.prol, label %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit

.thread2902.us4254.us.us.us.us.us.us.us.us.prol:  ; preds = %.preheader2914.us.us4355.us.us.us.us
  %4165 = getelementptr i16, ptr %gep.us4303.us4359.us.us.us.us, i64 %4024
  %4166 = load i16, ptr %4165, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us.us.us.us.us.us.us.prol = zext i16 %4166 to i32
  %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us.us.us.us.us.us.us.prol, 16
  %.sroa.068.5.us4252.us.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.prol to float
  %4167 = getelementptr i16, ptr %4164, i64 %4024
  %4168 = load i16, ptr %4167, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.us.us.prol = zext i16 %4168 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.us.us.prol, 16
  %.sroa.057.5.us4256.us.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.prol to float
  %4169 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us.us.us.us.us.us.us.prol, float %.sroa.057.5.us4256.us.us.us.us.us.us.us.us.prol, float %.226924280.us.us4357.us.us.us.us)
  br label %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit

.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit: ; preds = %.thread2902.us4254.us.us.us.us.us.us.us.us.prol, %.preheader2914.us.us4355.us.us.us.us
  %indvars.iv6183.unr = phi i64 [ %4024, %.preheader2914.us.us4355.us.us.us.us ], [ %indvars.iv.next6184.prol, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol ]
  %.326934233.us4247.us.us.us.us.us.us.us.us.unr = phi float [ %.226924280.us.us4357.us.us.us.us, %.preheader2914.us.us4355.us.us.us.us ], [ %4169, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol ]
  %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2914.us.us4355.us.us.us.us ], [ %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.prol, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol ]
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2914.us.us4355.us.us.us.us ], [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.prol, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol ]
  %.lcssa7356.unr = phi float [ poison, %.preheader2914.us.us4355.us.us.us.us ], [ %4169, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol ]
  br i1 %4044, label %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us, label %.thread2902.us4254.us.us.us.us.us.us.us.us

.thread2902.us4254.us.us.us.us.us.us.us.us:       ; preds = %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit, %.thread2902.us4254.us.us.us.us.us.us.us.us
  %indvars.iv6183 = phi i64 [ %indvars.iv.next6184.1, %.thread2902.us4254.us.us.us.us.us.us.us.us ], [ %indvars.iv6183.unr, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit ]
  %.326934233.us4247.us.us.us.us.us.us.us.us = phi float [ %4179, %.thread2902.us4254.us.us.us.us.us.us.us.us ], [ %.326934233.us4247.us.us.us.us.us.us.us.us.unr, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit ]
  %4170 = getelementptr i16, ptr %gep.us4303.us4359.us.us.us.us, i64 %indvars.iv6183
  %4171 = load i16, ptr %4170, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us.us.us.us.us.us.us = zext i16 %4171 to i32
  %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us.us.us.us.us.us.us, 16
  %.sroa.068.5.us4252.us.us.us.us.us.us.us.us = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us to float
  %4172 = getelementptr i16, ptr %4164, i64 %indvars.iv6183
  %4173 = load i16, ptr %4172, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.us.us = zext i16 %4173 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.us.us, 16
  %.sroa.057.5.us4256.us.us.us.us.us.us.us.us = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us to float
  %4174 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us.us.us.us.us.us.us, float %.sroa.057.5.us4256.us.us.us.us.us.us.us.us, float %.326934233.us4247.us.us.us.us.us.us.us.us)
  %indvars.iv.next6184 = add nsw i64 %indvars.iv6183, -1
  %4175 = getelementptr i16, ptr %gep.us4303.us4359.us.us.us.us, i64 %indvars.iv.next6184
  %4176 = load i16, ptr %4175, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us4249.us.us.us.us.us.us.us.us.1 = zext i16 %4176 to i32
  %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.068.2.insert.ext.us4249.us.us.us.us.us.us.us.us.1, 16
  %.sroa.068.5.us4252.us.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.1 to float
  %4177 = getelementptr i16, ptr %4164, i64 %indvars.iv.next6184
  %4178 = load i16, ptr %4177, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.us.us.1 = zext i16 %4178 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.us.us.1, 16
  %.sroa.057.5.us4256.us.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.1 to float
  %4179 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4252.us.us.us.us.us.us.us.us.1, float %.sroa.057.5.us4256.us.us.us.us.us.us.us.us.1, float %4174)
  %indvars.iv.next6184.1 = add nsw i64 %indvars.iv6183, -2
  %4180 = icmp sgt i64 %indvars.iv6183, 1
  br i1 %4180, label %.thread2902.us4254.us.us.us.us.us.us.us.us, label %._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us, !llvm.loop !296

._crit_edge4236.split.split.us.split.us.split.us.us.us.us.us.us.us: ; preds = %.thread2902.us4254.us.us.us.us.us.us.us.us, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit
  %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.lcssa = phi i32 [ %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.lcssa.unr, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.068.2.insert.shift.us4250.us.us.us.us.us.us.us.us.1, %.thread2902.us4254.us.us.us.us.us.us.us.us ]
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.lcssa = phi i32 [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.lcssa.unr, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.us.us.1, %.thread2902.us4254.us.us.us.us.us.us.us.us ]
  %.lcssa7356 = phi float [ %.lcssa7356.unr, %.thread2902.us4254.us.us.us.us.us.us.us.us.prol.loopexit ], [ %4179, %.thread2902.us4254.us.us.us.us.us.us.us.us ]
  %indvars.iv.next6187 = add nuw nsw i64 %indvars.iv6186, 1
  %exitcond6190.not = icmp eq i64 %indvars.iv.next6187, %wide.trip.count6189
  br i1 %exitcond6190.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us4355.us.us.us.us, !llvm.loop !297

.lr.ph4235.split.us.us.us.split.us4483.us:        ; preds = %.preheader2914.us.us.us.us
  br i1 %4085, label %.lr.ph4235.split.us.us.us.split.split.us.us.us, label %.lr.ph4235.split.us.us.us.split.split.us4498.us

._crit_edge4236.split.us.us.us.us.us:             ; preds = %.thread2902.us.us.us.us4448.us, %.thread2902.us.us.us.us4393.us4500.us.prol.loopexit, %.thread2902.us.us.us.us4393.us4500.us, %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit, %.thread2902.us.us.us.us4393.us.us.us, %.thread2902.us.us.us.us.us4486.us, %.thread2902.us.us.us.us.us.us.us.prol.loopexit, %.thread2902.us.us.us.us.us.us.us
  %.us-phi4380.us.us = phi float [ %.lcssa7361.unr, %.thread2902.us.us.us.us.us.us.us.prol.loopexit ], [ %4239, %.thread2902.us.us.us.us.us.us.us ], [ %4195, %.thread2902.us.us.us.us.us4486.us ], [ %.lcssa7359.unr, %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit ], [ %4228, %.thread2902.us.us.us.us4393.us.us.us ], [ %.lcssa7358.unr, %.thread2902.us.us.us.us4393.us4500.us.prol.loopexit ], [ %4215, %.thread2902.us.us.us.us4393.us4500.us ], [ %4125, %.thread2902.us.us.us.us4448.us ]
  %.us-phi4381.us.us = phi i32 [ %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr, %.thread2902.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.1, %.thread2902.us.us.us.us.us.us.us ], [ %.sroa.068.5.in.us.us.us.us.us.us, %.thread2902.us.us.us.us.us4486.us ], [ %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.lcssa.unr, %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit ], [ %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.1, %.thread2902.us.us.us.us4393.us.us.us ], [ %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.lcssa.unr, %.thread2902.us.us.us.us4393.us4500.us.prol.loopexit ], [ %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.3, %.thread2902.us.us.us.us4393.us4500.us ], [ %.sroa.068.5.in.us.us.us.us4446.us, %.thread2902.us.us.us.us4448.us ]
  %.us-phi4383.us.us = phi i32 [ %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr, %.thread2902.us.us.us.us.us.us.us.prol.loopexit ], [ %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.1, %.thread2902.us.us.us.us.us.us.us ], [ %.sroa.057.2.insert.shift.us.us.us.us.us4489.us, %.thread2902.us.us.us.us.us4486.us ], [ %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.lcssa.unr, %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit ], [ %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.1, %.thread2902.us.us.us.us4393.us.us.us ], [ %4203, %.thread2902.us.us.us.us4393.us4500.us ], [ %4203, %.thread2902.us.us.us.us4393.us4500.us.prol.loopexit ], [ %.sroa.057.5.in.us.us.us.us.us, %.thread2902.us.us.us.us4448.us ]
  %indvars.iv.next6207 = add nuw nsw i64 %indvars.iv6206, 1
  %exitcond6210.not = icmp eq i64 %indvars.iv.next6207, %wide.trip.count6209
  br i1 %exitcond6210.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us.us.us, !llvm.loop !297

.lr.ph4235.split.us.us.us.split.us.us.us:         ; preds = %.preheader2914.us.us.us.us
  br i1 %4085, label %.thread2902.us.us.us.us.us.us.us.preheader, label %.lr.ph4235.split.us.us.us.split.us.split.us4515.us

.thread2902.us.us.us.us.us.us.us.preheader:       ; preds = %.lr.ph4235.split.us.us.us.split.us.us.us
  br i1 %lcmp.mod7700.not.not, label %.thread2902.us.us.us.us.us.us.us.prol, label %.thread2902.us.us.us.us.us.us.us.prol.loopexit

.thread2902.us.us.us.us.us.us.us.prol:            ; preds = %.thread2902.us.us.us.us.us.us.us.preheader
  %4181 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %4024
  %4182 = load i16, ptr %4181, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us.us.us.us.prol = zext i16 %4182 to i32
  %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us.us.us.us.prol, 16
  %.sroa.068.5.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.prol to float
  %4183 = getelementptr i16, ptr %4111, i64 %4024
  %4184 = load i16, ptr %4183, align 2, !tbaa !38
  %.sroa.057.2.insert.ext.us.us.us.us.us.us.us.prol = zext i16 %4184 to i32
  %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.057.2.insert.ext.us.us.us.us.us.us.us.prol, 16
  %.sroa.057.5.us.us.us.us.us.us.us.prol = bitcast i32 %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.prol to float
  %4185 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us.us.us.us.prol, float %.sroa.057.5.us.us.us.us.us.us.us.prol, float %.226924280.us.us.us.us)
  br label %.thread2902.us.us.us.us.us.us.us.prol.loopexit

.thread2902.us.us.us.us.us.us.us.prol.loopexit:   ; preds = %.thread2902.us.us.us.us.us.us.us.prol, %.thread2902.us.us.us.us.us.us.us.preheader
  %indvars.iv6203.unr = phi i64 [ %4024, %.thread2902.us.us.us.us.us.us.us.preheader ], [ %indvars.iv.next6204.prol, %.thread2902.us.us.us.us.us.us.us.prol ]
  %.326934233.us.us.us.us.us.us.us.unr = phi float [ %.226924280.us.us.us.us, %.thread2902.us.us.us.us.us.us.us.preheader ], [ %4185, %.thread2902.us.us.us.us.us.us.us.prol ]
  %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2902.us.us.us.us.us.us.us.preheader ], [ %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.prol, %.thread2902.us.us.us.us.us.us.us.prol ]
  %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2902.us.us.us.us.us.us.us.preheader ], [ %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.prol, %.thread2902.us.us.us.us.us.us.us.prol ]
  %.lcssa7361.unr = phi float [ poison, %.thread2902.us.us.us.us.us.us.us.preheader ], [ %4185, %.thread2902.us.us.us.us.us.us.us.prol ]
  br i1 %4048, label %._crit_edge4236.split.us.us.us.us.us, label %.thread2902.us.us.us.us.us.us.us

.lr.ph4235.split.us.us.us.split.us.split.us4515.us: ; preds = %.lr.ph4235.split.us.us.us.split.us.us.us, %.thread2902.us.us.us.us.us4486.us
  %indvars.iv6200 = phi i64 [ %indvars.iv.next6201, %.thread2902.us.us.us.us.us4486.us ], [ %4024, %.lr.ph4235.split.us.us.us.split.us.us.us ]
  %4186 = phi i32 [ %.sroa.068.5.in.us.us.us.us.us.us, %.thread2902.us.us.us.us.us4486.us ], [ %4105, %.lr.ph4235.split.us.us.us.split.us.us.us ]
  %.326934233.us.us.us.us.us4485.us = phi float [ %4195, %.thread2902.us.us.us.us.us4486.us ], [ %.226924280.us.us.us.us, %.lr.ph4235.split.us.us.us.split.us.us.us ]
  %.sroa.068.0.insert.mask.us.us.us.us.us.us = and i32 %4186, -65536
  br i1 %4086, label %4187, label %.thread2902.us.us.us.us.us4486.us

4187:                                             ; preds = %.lr.ph4235.split.us.us.us.split.us.split.us4515.us
  %4188 = load i32, ptr %4010, align 8, !tbaa !225
  %4189 = icmp eq i32 %4188, 0
  br i1 %4189, label %4190, label %.thread2902.us.us.us.us.us4486.us

4190:                                             ; preds = %4187
  %4191 = getelementptr i16, ptr %4108, i64 %indvars.iv6200
  %4192 = load i16, ptr %4191, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us.us.us.us.us.us = zext i16 %4192 to i32
  %.sroa.068.2.insert.shift71.us.us.us.us.us.us = shl nuw i32 %.sroa.068.2.insert.ext70.us.us.us.us.us.us, 16
  br label %.thread2902.us.us.us.us.us4486.us

.thread2902.us.us.us.us.us4486.us:                ; preds = %4190, %4187, %.lr.ph4235.split.us.us.us.split.us.split.us4515.us
  %.sroa.068.5.in.us.us.us.us.us.us = phi i32 [ %.sroa.068.2.insert.shift71.us.us.us.us.us.us, %4190 ], [ %.sroa.068.0.insert.mask.us.us.us.us.us.us, %4187 ], [ %.sroa.068.0.insert.mask.us.us.us.us.us.us, %.lr.ph4235.split.us.us.us.split.us.split.us4515.us ]
  %.sroa.068.5.us.us.us.us.us4487.us = bitcast i32 %.sroa.068.5.in.us.us.us.us.us.us to float
  %4193 = getelementptr i16, ptr %4111, i64 %indvars.iv6200
  %4194 = load i16, ptr %4193, align 2, !tbaa !38
  %.sroa.057.2.insert.ext.us.us.us.us.us4488.us = zext i16 %4194 to i32
  %.sroa.057.2.insert.shift.us.us.us.us.us4489.us = shl nuw i32 %.sroa.057.2.insert.ext.us.us.us.us.us4488.us, 16
  %.sroa.057.5.us.us.us.us.us4490.us = bitcast i32 %.sroa.057.2.insert.shift.us.us.us.us.us4489.us to float
  %4195 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us.us4487.us, float %.sroa.057.5.us.us.us.us.us4490.us, float %.326934233.us.us.us.us.us4485.us)
  %indvars.iv.next6201 = add nsw i64 %indvars.iv6200, -1
  %4196 = icmp sgt i64 %indvars.iv6200, 0
  br i1 %4196, label %.lr.ph4235.split.us.us.us.split.us.split.us4515.us, label %._crit_edge4236.split.us.us.us.us.us, !llvm.loop !296

.lr.ph4235.split.us.us.us.split.split.us.us.us:   ; preds = %.lr.ph4235.split.us.us.us.split.us4483.us
  br i1 %4103, label %.thread2902.us.us.us.us4393.us.us.us.preheader, label %.thread2902.us.us.us.us4393.us4500.us.preheader

.thread2902.us.us.us.us4393.us.us.us.preheader:   ; preds = %.lr.ph4235.split.us.us.us.split.split.us.us.us
  br i1 %lcmp.mod7697.not, label %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit, label %.thread2902.us.us.us.us4393.us.us.us.prol

.thread2902.us.us.us.us4393.us.us.us.prol:        ; preds = %.thread2902.us.us.us.us4393.us.us.us.preheader
  %4197 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %4027
  %4198 = load i16, ptr %4197, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us.us.us.prol = zext i16 %4198 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.prol = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us.us.us.prol, 16
  %.sroa.068.5.us.us.us.us4391.us.us.us.prol = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.prol to float
  %4199 = add nuw nsw i64 %4027, %4107
  %4200 = mul nsw i64 %4199, %4028
  %gep.us.us4312.us.us.us.us.us.prol = getelementptr i16, ptr %invariant.gep.us4429.us, i64 %4200
  %4201 = load i16, ptr %gep.us.us4312.us.us.us.us.us.prol, align 2, !tbaa !38
  %.sroa.057.2.insert.ext59.us.us.us.us.us.us.us.prol = zext i16 %4201 to i32
  %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.057.2.insert.ext59.us.us.us.us.us.us.us.prol, 16
  %.sroa.057.5.us.us.us.us4395.us.us.us.prol = bitcast i32 %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.prol to float
  %4202 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us.us.us.prol, float %.sroa.057.5.us.us.us.us4395.us.us.us.prol, float %.226924280.us.us.us.us)
  br label %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit

.thread2902.us.us.us.us4393.us.us.us.prol.loopexit: ; preds = %.thread2902.us.us.us.us4393.us.us.us.prol, %.thread2902.us.us.us.us4393.us.us.us.preheader
  %indvars.iv6197.unr = phi i64 [ %4027, %.thread2902.us.us.us.us4393.us.us.us.preheader ], [ %indvars.iv.next6198.prol, %.thread2902.us.us.us.us4393.us.us.us.prol ]
  %.326934233.us.us.us.us4386.us.us.us.unr = phi float [ %.226924280.us.us.us.us, %.thread2902.us.us.us.us4393.us.us.us.preheader ], [ %4202, %.thread2902.us.us.us.us4393.us.us.us.prol ]
  %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2902.us.us.us.us4393.us.us.us.preheader ], [ %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.prol, %.thread2902.us.us.us.us4393.us.us.us.prol ]
  %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.thread2902.us.us.us.us4393.us.us.us.preheader ], [ %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.prol, %.thread2902.us.us.us.us4393.us.us.us.prol ]
  %.lcssa7359.unr = phi float [ poison, %.thread2902.us.us.us.us4393.us.us.us.preheader ], [ %4202, %.thread2902.us.us.us.us4393.us.us.us.prol ]
  br i1 %4046, label %._crit_edge4236.split.us.us.us.us.us, label %.thread2902.us.us.us.us4393.us.us.us

.thread2902.us.us.us.us4393.us4500.us.preheader:  ; preds = %.lr.ph4235.split.us.us.us.split.split.us.us.us
  %4203 = and i32 %4104, -65536
  %.sroa.057.0.insert.mask.us.us.us.us4392.us.us = and i32 %4104, -65536
  %.sroa.057.5.us.us.us.us4395.us4506.us = bitcast i32 %.sroa.057.0.insert.mask.us.us.us.us4392.us.us to float
  br i1 %lcmp.mod7694.not, label %.thread2902.us.us.us.us4393.us4500.us.prol.loopexit, label %.thread2902.us.us.us.us4393.us4500.us.prol

.thread2902.us.us.us.us4393.us4500.us.prol:       ; preds = %.thread2902.us.us.us.us4393.us4500.us.preheader, %.thread2902.us.us.us.us4393.us4500.us.prol
  %indvars.iv6194.prol = phi i64 [ %indvars.iv.next6195.prol, %.thread2902.us.us.us.us4393.us4500.us.prol ], [ %4024, %.thread2902.us.us.us.us4393.us4500.us.preheader ]
  %.326934233.us.us.us.us4386.us4502.us.prol = phi float [ %4206, %.thread2902.us.us.us.us4393.us4500.us.prol ], [ %.226924280.us.us.us.us, %.thread2902.us.us.us.us4393.us4500.us.preheader ]
  %prol.iter7695 = phi i64 [ %prol.iter7695.next, %.thread2902.us.us.us.us4393.us4500.us.prol ], [ 0, %.thread2902.us.us.us.us4393.us4500.us.preheader ]
  %4204 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %indvars.iv6194.prol
  %4205 = load i16, ptr %4204, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.prol = zext i16 %4205 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.prol = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.prol, 16
  %.sroa.068.5.us.us.us.us4391.us4505.us.prol = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.prol to float
  %4206 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us4505.us.prol, float %.sroa.057.5.us.us.us.us4395.us4506.us, float %.326934233.us.us.us.us4386.us4502.us.prol)
  %indvars.iv.next6195.prol = add nsw i64 %indvars.iv6194.prol, -1
  %prol.iter7695.next = add i64 %prol.iter7695, 1
  %prol.iter7695.cmp.not = icmp eq i64 %prol.iter7695.next, %xtraiter7693
  br i1 %prol.iter7695.cmp.not, label %.thread2902.us.us.us.us4393.us4500.us.prol.loopexit, label %.thread2902.us.us.us.us4393.us4500.us.prol, !llvm.loop !300

.thread2902.us.us.us.us4393.us4500.us.prol.loopexit: ; preds = %.thread2902.us.us.us.us4393.us4500.us.prol, %.thread2902.us.us.us.us4393.us4500.us.preheader
  %indvars.iv6194.unr = phi i64 [ %4024, %.thread2902.us.us.us.us4393.us4500.us.preheader ], [ %indvars.iv.next6195.prol, %.thread2902.us.us.us.us4393.us4500.us.prol ]
  %.326934233.us.us.us.us4386.us4502.us.unr = phi float [ %.226924280.us.us.us.us, %.thread2902.us.us.us.us4393.us4500.us.preheader ], [ %4206, %.thread2902.us.us.us.us4393.us4500.us.prol ]
  %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.lcssa.unr = phi i32 [ poison, %.thread2902.us.us.us.us4393.us4500.us.preheader ], [ %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.prol, %.thread2902.us.us.us.us4393.us4500.us.prol ]
  %.lcssa7358.unr = phi float [ poison, %.thread2902.us.us.us.us4393.us4500.us.preheader ], [ %4206, %.thread2902.us.us.us.us4393.us4500.us.prol ]
  br i1 %4045, label %._crit_edge4236.split.us.us.us.us.us, label %.thread2902.us.us.us.us4393.us4500.us.preheader.new

.thread2902.us.us.us.us4393.us4500.us.preheader.new: ; preds = %.thread2902.us.us.us.us4393.us4500.us.prol.loopexit
  %invariant.gep7917 = getelementptr i8, ptr %gep.us4303.us.us.us, i64 -2
  %invariant.gep7919 = getelementptr i8, ptr %gep.us4303.us.us.us, i64 -4
  %invariant.gep7921 = getelementptr i8, ptr %gep.us4303.us.us.us, i64 -6
  br label %.thread2902.us.us.us.us4393.us4500.us

.thread2902.us.us.us.us4393.us4500.us:            ; preds = %.thread2902.us.us.us.us4393.us4500.us, %.thread2902.us.us.us.us4393.us4500.us.preheader.new
  %indvars.iv6194 = phi i64 [ %indvars.iv6194.unr, %.thread2902.us.us.us.us4393.us4500.us.preheader.new ], [ %indvars.iv.next6195.3, %.thread2902.us.us.us.us4393.us4500.us ]
  %.326934233.us.us.us.us4386.us4502.us = phi float [ %.326934233.us.us.us.us4386.us4502.us.unr, %.thread2902.us.us.us.us4393.us4500.us.preheader.new ], [ %4215, %.thread2902.us.us.us.us4393.us4500.us ]
  %4207 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %indvars.iv6194
  %4208 = load i16, ptr %4207, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us = zext i16 %4208 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us, 16
  %.sroa.068.5.us.us.us.us4391.us4505.us = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us to float
  %4209 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us4505.us, float %.sroa.057.5.us.us.us.us4395.us4506.us, float %.326934233.us.us.us.us4386.us4502.us)
  %gep7918 = getelementptr i16, ptr %invariant.gep7917, i64 %indvars.iv6194
  %4210 = load i16, ptr %gep7918, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.1 = zext i16 %4210 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.1 = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.1, 16
  %.sroa.068.5.us.us.us.us4391.us4505.us.1 = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.1 to float
  %4211 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us4505.us.1, float %.sroa.057.5.us.us.us.us4395.us4506.us, float %4209)
  %gep7920 = getelementptr i16, ptr %invariant.gep7919, i64 %indvars.iv6194
  %4212 = load i16, ptr %gep7920, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.2 = zext i16 %4212 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.2 = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.2, 16
  %.sroa.068.5.us.us.us.us4391.us4505.us.2 = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.2 to float
  %4213 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us4505.us.2, float %.sroa.057.5.us.us.us.us4395.us4506.us, float %4211)
  %gep7922 = getelementptr i16, ptr %invariant.gep7921, i64 %indvars.iv6194
  %4214 = load i16, ptr %gep7922, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.3 = zext i16 %4214 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.3 = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us4503.us.3, 16
  %.sroa.068.5.us.us.us.us4391.us4505.us.3 = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us4504.us.3 to float
  %4215 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us4505.us.3, float %.sroa.057.5.us.us.us.us4395.us4506.us, float %4213)
  %indvars.iv.next6195.3 = add nsw i64 %indvars.iv6194, -4
  %4216 = icmp sgt i64 %indvars.iv6194, 3
  br i1 %4216, label %.thread2902.us.us.us.us4393.us4500.us, label %._crit_edge4236.split.us.us.us.us.us, !llvm.loop !296

.thread2902.us.us.us.us4393.us.us.us:             ; preds = %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit, %.thread2902.us.us.us.us4393.us.us.us
  %indvars.iv6197 = phi i64 [ %indvars.iv.next6198.1, %.thread2902.us.us.us.us4393.us.us.us ], [ %indvars.iv6197.unr, %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit ]
  %.326934233.us.us.us.us4386.us.us.us = phi float [ %4228, %.thread2902.us.us.us.us4393.us.us.us ], [ %.326934233.us.us.us.us4386.us.us.us.unr, %.thread2902.us.us.us.us4393.us.us.us.prol.loopexit ]
  %4217 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %indvars.iv6197
  %4218 = load i16, ptr %4217, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us.us.us = zext i16 %4218 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us.us.us, 16
  %.sroa.068.5.us.us.us.us4391.us.us.us = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us to float
  %4219 = add nsw i64 %indvars.iv6197, %4107
  %4220 = mul nsw i64 %4219, %4028
  %gep.us.us4312.us.us.us.us.us = getelementptr i16, ptr %invariant.gep.us4429.us, i64 %4220
  %4221 = load i16, ptr %gep.us.us4312.us.us.us.us.us, align 2, !tbaa !38
  %.sroa.057.2.insert.ext59.us.us.us.us.us.us.us = zext i16 %4221 to i32
  %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us = shl nuw i32 %.sroa.057.2.insert.ext59.us.us.us.us.us.us.us, 16
  %.sroa.057.5.us.us.us.us4395.us.us.us = bitcast i32 %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us to float
  %4222 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us.us.us, float %.sroa.057.5.us.us.us.us4395.us.us.us, float %.326934233.us.us.us.us4386.us.us.us)
  %indvars.iv.next6198 = add nsw i64 %indvars.iv6197, -1
  %4223 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %indvars.iv.next6198
  %4224 = load i16, ptr %4223, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us4388.us.us.us.1 = zext i16 %4224 to i32
  %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.1 = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us4388.us.us.us.1, 16
  %.sroa.068.5.us.us.us.us4391.us.us.us.1 = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us4389.us.us.us.1 to float
  %4225 = add nsw i64 %indvars.iv.next6198, %4107
  %4226 = mul nsw i64 %4225, %4028
  %gep.us.us4312.us.us.us.us.us.1 = getelementptr i16, ptr %invariant.gep.us4429.us, i64 %4226
  %4227 = load i16, ptr %gep.us.us4312.us.us.us.us.us.1, align 2, !tbaa !38
  %.sroa.057.2.insert.ext59.us.us.us.us.us.us.us.1 = zext i16 %4227 to i32
  %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.057.2.insert.ext59.us.us.us.us.us.us.us.1, 16
  %.sroa.057.5.us.us.us.us4395.us.us.us.1 = bitcast i32 %.sroa.057.2.insert.shift60.us.us.us.us.us.us.us.1 to float
  %4228 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us4391.us.us.us.1, float %.sroa.057.5.us.us.us.us4395.us.us.us.1, float %4222)
  %indvars.iv.next6198.1 = add nsw i64 %indvars.iv6197, -2
  %4229 = icmp sgt i64 %indvars.iv6197, 1
  br i1 %4229, label %.thread2902.us.us.us.us4393.us.us.us, label %._crit_edge4236.split.us.us.us.us.us, !llvm.loop !296

.thread2902.us.us.us.us.us.us.us:                 ; preds = %.thread2902.us.us.us.us.us.us.us.prol.loopexit, %.thread2902.us.us.us.us.us.us.us
  %indvars.iv6203 = phi i64 [ %indvars.iv.next6204.1, %.thread2902.us.us.us.us.us.us.us ], [ %indvars.iv6203.unr, %.thread2902.us.us.us.us.us.us.us.prol.loopexit ]
  %.326934233.us.us.us.us.us.us.us = phi float [ %4239, %.thread2902.us.us.us.us.us.us.us ], [ %.326934233.us.us.us.us.us.us.us.unr, %.thread2902.us.us.us.us.us.us.us.prol.loopexit ]
  %4230 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %indvars.iv6203
  %4231 = load i16, ptr %4230, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us.us.us.us = zext i16 %4231 to i32
  %.sroa.068.2.insert.shift.us.us.us.us.us.us.us = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us.us.us.us, 16
  %.sroa.068.5.us.us.us.us.us.us.us = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us.us.us.us to float
  %4232 = getelementptr i16, ptr %4111, i64 %indvars.iv6203
  %4233 = load i16, ptr %4232, align 2, !tbaa !38
  %.sroa.057.2.insert.ext.us.us.us.us.us.us.us = zext i16 %4233 to i32
  %.sroa.057.2.insert.shift.us.us.us.us.us.us.us = shl nuw i32 %.sroa.057.2.insert.ext.us.us.us.us.us.us.us, 16
  %.sroa.057.5.us.us.us.us.us.us.us = bitcast i32 %.sroa.057.2.insert.shift.us.us.us.us.us.us.us to float
  %4234 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us.us.us.us, float %.sroa.057.5.us.us.us.us.us.us.us, float %.326934233.us.us.us.us.us.us.us)
  %indvars.iv.next6204 = add nsw i64 %indvars.iv6203, -1
  %4235 = getelementptr i16, ptr %gep.us4303.us.us.us, i64 %indvars.iv.next6204
  %4236 = load i16, ptr %4235, align 2, !tbaa !38
  %.sroa.068.2.insert.ext.us.us.us.us.us.us.us.1 = zext i16 %4236 to i32
  %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.068.2.insert.ext.us.us.us.us.us.us.us.1, 16
  %.sroa.068.5.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.068.2.insert.shift.us.us.us.us.us.us.us.1 to float
  %4237 = getelementptr i16, ptr %4111, i64 %indvars.iv.next6204
  %4238 = load i16, ptr %4237, align 2, !tbaa !38
  %.sroa.057.2.insert.ext.us.us.us.us.us.us.us.1 = zext i16 %4238 to i32
  %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.057.2.insert.ext.us.us.us.us.us.us.us.1, 16
  %.sroa.057.5.us.us.us.us.us.us.us.1 = bitcast i32 %.sroa.057.2.insert.shift.us.us.us.us.us.us.us.1 to float
  %4239 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us.us.us.us.us.us.us.1, float %.sroa.057.5.us.us.us.us.us.us.us.1, float %4234)
  %indvars.iv.next6204.1 = add nsw i64 %indvars.iv6203, -2
  %4240 = icmp sgt i64 %indvars.iv6203, 1
  br i1 %4240, label %.thread2902.us.us.us.us.us.us.us, label %._crit_edge4236.split.us.us.us.us.us, !llvm.loop !296

.preheader2914.lr.ph.split.us.split.split.us4457.split.us4661: ; preds = %.preheader2914.lr.ph.split.us.split.split.us4457.us
  %4241 = and i32 %4069, -65536
  br i1 %4089, label %.preheader2914.lr.ph.split.us.split.split.us4457.split.split.us.us, label %.preheader2914.us.us4430.us4652.preheader

.preheader2914.us.us4430.us4652.preheader:        ; preds = %.preheader2914.lr.ph.split.us.split.split.us4457.split.us4661
  %4242 = and i32 %4069, -65536
  %4243 = and i32 %4068, -65536
  %.sroa.068.5.us4297.us.us = bitcast i32 %4241 to float
  %.sroa.057.0.insert.mask.us4298.us.us = and i32 %4068, -65536
  %.sroa.057.5.us4301.us.us = bitcast i32 %.sroa.057.0.insert.mask.us4298.us.us to float
  br label %.preheader2914.us.us4430.us4652

.preheader2914.lr.ph.split.us.split.split.us4457.split.us.us: ; preds = %.preheader2914.lr.ph.split.us.split.split.us4457.us
  %4244 = load i32, ptr %4010, align 8, !tbaa !225
  %4245 = icmp eq i32 %4244, 0
  %wide.trip.count6165 = zext nneg i32 %4070 to i64
  br label %.preheader2914.us.us4430.us.us

.preheader2914.us.us4430.us.us:                   ; preds = %._crit_edge4236.split.split.us4304.us.split.us.us.us, %.preheader2914.lr.ph.split.us.split.split.us4457.split.us.us
  %indvars.iv6162 = phi i64 [ %indvars.iv.next6163, %._crit_edge4236.split.split.us4304.us.split.us.us.us ], [ 0, %.preheader2914.lr.ph.split.us.split.split.us4457.split.us.us ]
  %4246 = phi i32 [ %.us-phi4592.us, %._crit_edge4236.split.split.us4304.us.split.us.us.us ], [ %4068, %.preheader2914.lr.ph.split.us.split.split.us4457.split.us.us ]
  %4247 = phi i32 [ %.us-phi4590.us, %._crit_edge4236.split.split.us4304.us.split.us.us.us ], [ %4069, %.preheader2914.lr.ph.split.us.split.split.us4457.split.us.us ]
  %.226924280.us.us4432.us.us = phi float [ %.us-phi4589.us, %._crit_edge4236.split.split.us4304.us.split.us.us.us ], [ %.126914417.us.us, %.preheader2914.lr.ph.split.us.split.split.us4457.split.us.us ]
  %4248 = mul nuw nsw i64 %indvars.iv6162, %4025
  %4249 = getelementptr i16, ptr %4078, i64 %4248
  %4250 = getelementptr i16, ptr %4082, i64 %4248
  br i1 %4089, label %.preheader2914.us.us4430.split.us.us.split.us.us, label %.preheader2914.us.us4430.split.us.us.split.us4689

.thread2902.us4299.us.us.us.us4662:               ; preds = %.thread2902.us4299.us.us.us.us4662.prol.loopexit, %.thread2902.us4299.us.us.us.us4662
  %.2426434234.us4291.us.us.us.us4663 = phi i32 [ %.242643.us4302.us.us.us.us4669.7, %.thread2902.us4299.us.us.us.us4662 ], [ %.2426434234.us4291.us.us.us.us4663.unr, %.thread2902.us4299.us.us.us.us4662.prol.loopexit ]
  %.326934233.us4292.us.us.us.us4664 = phi float [ %4258, %.thread2902.us4299.us.us.us.us4662 ], [ %.326934233.us4292.us.us.us.us4664.unr, %.thread2902.us4299.us.us.us.us4662.prol.loopexit ]
  %4251 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %.326934233.us4292.us.us.us.us4664)
  %4252 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %4251)
  %4253 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %4252)
  %4254 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %4253)
  %4255 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %4254)
  %4256 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %4255)
  %4257 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %4256)
  %4258 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %4257)
  %.242643.us4302.us.us.us.us4669.7 = add nsw i32 %.2426434234.us4291.us.us.us.us4663, -8
  %4259 = icmp sgt i32 %.2426434234.us4291.us.us.us.us4663, 7
  br i1 %4259, label %.thread2902.us4299.us.us.us.us4662, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, !llvm.loop !296

.preheader2914.lr.ph.split.us.split.split.us4457.split.split.us.us: ; preds = %.preheader2914.lr.ph.split.us.split.split.us4457.split.us4661
  %4260 = load i32, ptr %4023, align 4, !tbaa !262
  %4261 = icmp eq i32 %4260, 0
  %.sroa.068.0.insert.mask.us4293.us.us4528.us.us.us.us = and i32 %4069, -65536
  %.sroa.068.5.us4297.us.us4529.us.us.us.us = bitcast i32 %.sroa.068.0.insert.mask.us4293.us.us4528.us.us.us.us to float
  br i1 %4261, label %.preheader2914.us.us4430.us4558.us.us.preheader, label %.preheader2914.us.us4430.us4558.us4679.preheader

.preheader2914.us.us4430.us4558.us4679.preheader: ; preds = %.preheader2914.lr.ph.split.us.split.split.us4457.split.split.us.us
  %4262 = and i32 %4068, -65536
  %.sroa.057.0.insert.mask.us4298.us.us4530.us.us = and i32 %4068, -65536
  %.sroa.057.5.us4301.us.us4535.us4566.us = bitcast i32 %.sroa.057.0.insert.mask.us4298.us.us4530.us.us to float
  br label %.preheader2914.us.us4430.us4558.us4679

.preheader2914.us.us4430.us4558.us.us.preheader:  ; preds = %.preheader2914.lr.ph.split.us.split.split.us4457.split.split.us.us
  %wide.trip.count6151 = zext nneg i32 %4070 to i64
  br label %.preheader2914.us.us4430.us4558.us.us

.preheader2914.us.us4430.us4558.us4679:           ; preds = %.preheader2914.us.us4430.us4558.us4679.preheader, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us
  %.2726104283.us.us4431.us4559.us4680 = phi i32 [ %4273, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us ], [ 0, %.preheader2914.us.us4430.us4558.us4679.preheader ]
  %.226924280.us.us4432.us4560.us4681 = phi float [ %.lcssa7347, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us ], [ %.126914417.us.us, %.preheader2914.us.us4430.us4558.us4679.preheader ]
  br i1 %lcmp.mod7663.not, label %.thread2902.us4299.us.us4533.us4561.us.prol.loopexit, label %.thread2902.us4299.us.us4533.us4561.us.prol

.thread2902.us4299.us.us4533.us4561.us.prol:      ; preds = %.preheader2914.us.us4430.us4558.us4679, %.thread2902.us4299.us.us4533.us4561.us.prol
  %.2426434234.us4291.us.us4526.us4562.us.prol = phi i32 [ %.242643.us4302.us.us4536.us4567.us.prol, %.thread2902.us4299.us.us4533.us4561.us.prol ], [ %.2426434232, %.preheader2914.us.us4430.us4558.us4679 ]
  %.326934233.us4292.us.us4527.us4563.us.prol = phi float [ %4263, %.thread2902.us4299.us.us4533.us4561.us.prol ], [ %.226924280.us.us4432.us4560.us4681, %.preheader2914.us.us4430.us4558.us4679 ]
  %prol.iter7664 = phi i32 [ %prol.iter7664.next, %.thread2902.us4299.us.us4533.us4561.us.prol ], [ 0, %.preheader2914.us.us4430.us4558.us4679 ]
  %4263 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %.326934233.us4292.us.us4527.us4563.us.prol)
  %.242643.us4302.us.us4536.us4567.us.prol = add nsw i32 %.2426434234.us4291.us.us4526.us4562.us.prol, -1
  %prol.iter7664.next = add i32 %prol.iter7664, 1
  %prol.iter7664.cmp.not = icmp eq i32 %prol.iter7664.next, %xtraiter7662
  br i1 %prol.iter7664.cmp.not, label %.thread2902.us4299.us.us4533.us4561.us.prol.loopexit, label %.thread2902.us4299.us.us4533.us4561.us.prol, !llvm.loop !301

.thread2902.us4299.us.us4533.us4561.us.prol.loopexit: ; preds = %.thread2902.us4299.us.us4533.us4561.us.prol, %.preheader2914.us.us4430.us4558.us4679
  %.2426434234.us4291.us.us4526.us4562.us.unr = phi i32 [ %.2426434232, %.preheader2914.us.us4430.us4558.us4679 ], [ %.242643.us4302.us.us4536.us4567.us.prol, %.thread2902.us4299.us.us4533.us4561.us.prol ]
  %.326934233.us4292.us.us4527.us4563.us.unr = phi float [ %.226924280.us.us4432.us4560.us4681, %.preheader2914.us.us4430.us4558.us4679 ], [ %4263, %.thread2902.us4299.us.us4533.us4561.us.prol ]
  %.lcssa7347.unr = phi float [ poison, %.preheader2914.us.us4430.us4558.us4679 ], [ %4263, %.thread2902.us4299.us.us4533.us4561.us.prol ]
  br i1 %4033, label %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us, label %.thread2902.us4299.us.us4533.us4561.us

.thread2902.us4299.us.us4533.us4561.us:           ; preds = %.thread2902.us4299.us.us4533.us4561.us.prol.loopexit, %.thread2902.us4299.us.us4533.us4561.us
  %.2426434234.us4291.us.us4526.us4562.us = phi i32 [ %.242643.us4302.us.us4536.us4567.us.7, %.thread2902.us4299.us.us4533.us4561.us ], [ %.2426434234.us4291.us.us4526.us4562.us.unr, %.thread2902.us4299.us.us4533.us4561.us.prol.loopexit ]
  %.326934233.us4292.us.us4527.us4563.us = phi float [ %4271, %.thread2902.us4299.us.us4533.us4561.us ], [ %.326934233.us4292.us.us4527.us4563.us.unr, %.thread2902.us4299.us.us4533.us4561.us.prol.loopexit ]
  %4264 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %.326934233.us4292.us.us4527.us4563.us)
  %4265 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %4264)
  %4266 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %4265)
  %4267 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %4266)
  %4268 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %4267)
  %4269 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %4268)
  %4270 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %4269)
  %4271 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us4566.us, float %4270)
  %.242643.us4302.us.us4536.us4567.us.7 = add nsw i32 %.2426434234.us4291.us.us4526.us4562.us, -8
  %4272 = icmp sgt i32 %.2426434234.us4291.us.us4526.us4562.us, 7
  br i1 %4272, label %.thread2902.us4299.us.us4533.us4561.us, label %._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us, !llvm.loop !296

._crit_edge4236.split.split.us4304.us.split.split.us.split.us4568.us: ; preds = %.thread2902.us4299.us.us4533.us4561.us, %.thread2902.us4299.us.us4533.us4561.us.prol.loopexit
  %.lcssa7347 = phi float [ %.lcssa7347.unr, %.thread2902.us4299.us.us4533.us4561.us.prol.loopexit ], [ %4271, %.thread2902.us4299.us.us4533.us4561.us ]
  %4273 = add nuw nsw i32 %.2726104283.us.us4431.us4559.us4680, 1
  %exitcond6144.not = icmp eq i32 %4273, %4070
  br i1 %exitcond6144.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us4430.us4558.us4679, !llvm.loop !297

.preheader2914.us.us4430.us4558.us.us:            ; preds = %.preheader2914.us.us4430.us4558.us.us.preheader, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us
  %indvars.iv6148 = phi i64 [ 0, %.preheader2914.us.us4430.us4558.us.us.preheader ], [ %indvars.iv.next6149, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us ]
  %.226924280.us.us4432.us4560.us.us = phi float [ %.126914417.us.us, %.preheader2914.us.us4430.us4558.us.us.preheader ], [ %.lcssa7348, %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us ]
  %4274 = mul nuw nsw i64 %indvars.iv6148, %4025
  %4275 = getelementptr i16, ptr %4082, i64 %4274
  br i1 %lcmp.mod7666.not, label %.thread2902.us4299.us.us4533.us.us.us.us.prol.loopexit, label %.thread2902.us4299.us.us4533.us.us.us.us.prol

.thread2902.us4299.us.us4533.us.us.us.us.prol:    ; preds = %.preheader2914.us.us4430.us4558.us.us, %.thread2902.us4299.us.us4533.us.us.us.us.prol
  %indvars.iv6145.prol = phi i64 [ %indvars.iv.next6146.prol, %.thread2902.us4299.us.us4533.us.us.us.us.prol ], [ %4024, %.preheader2914.us.us4430.us4558.us.us ]
  %.326934233.us4292.us.us4527.us.us.us.us.prol = phi float [ %4278, %.thread2902.us4299.us.us4533.us.us.us.us.prol ], [ %.226924280.us.us4432.us4560.us.us, %.preheader2914.us.us4430.us4558.us.us ]
  %prol.iter7667 = phi i64 [ %prol.iter7667.next, %.thread2902.us4299.us.us4533.us.us.us.us.prol ], [ 0, %.preheader2914.us.us4430.us4558.us.us ]
  %4276 = getelementptr i16, ptr %4275, i64 %indvars.iv6145.prol
  %4277 = load i16, ptr %4276, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.prol = zext i16 %4277 to i32
  %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.prol = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.prol, 16
  %.sroa.057.5.us4301.us.us4535.us.us.us.us.prol = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.prol to float
  %4278 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us.us.us.us.prol, float %.326934233.us4292.us.us4527.us.us.us.us.prol)
  %indvars.iv.next6146.prol = add nsw i64 %indvars.iv6145.prol, -1
  %prol.iter7667.next = add i64 %prol.iter7667, 1
  %prol.iter7667.cmp.not = icmp eq i64 %prol.iter7667.next, %xtraiter7665
  br i1 %prol.iter7667.cmp.not, label %.thread2902.us4299.us.us4533.us.us.us.us.prol.loopexit, label %.thread2902.us4299.us.us4533.us.us.us.us.prol, !llvm.loop !302

.thread2902.us4299.us.us4533.us.us.us.us.prol.loopexit: ; preds = %.thread2902.us4299.us.us4533.us.us.us.us.prol, %.preheader2914.us.us4430.us4558.us.us
  %indvars.iv6145.unr = phi i64 [ %4024, %.preheader2914.us.us4430.us4558.us.us ], [ %indvars.iv.next6146.prol, %.thread2902.us4299.us.us4533.us.us.us.us.prol ]
  %.326934233.us4292.us.us4527.us.us.us.us.unr = phi float [ %.226924280.us.us4432.us4560.us.us, %.preheader2914.us.us4430.us4558.us.us ], [ %4278, %.thread2902.us4299.us.us4533.us.us.us.us.prol ]
  %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2914.us.us4430.us4558.us.us ], [ %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.prol, %.thread2902.us4299.us.us4533.us.us.us.us.prol ]
  %.lcssa7348.unr = phi float [ poison, %.preheader2914.us.us4430.us4558.us.us ], [ %4278, %.thread2902.us4299.us.us4533.us.us.us.us.prol ]
  br i1 %4034, label %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us, label %.preheader2914.us.us4430.us4558.us.us.new

.preheader2914.us.us4430.us4558.us.us.new:        ; preds = %.thread2902.us4299.us.us4533.us.us.us.us.prol.loopexit
  %invariant.gep7887 = getelementptr i8, ptr %4275, i64 -2
  %invariant.gep7889 = getelementptr i8, ptr %4275, i64 -4
  %invariant.gep7891 = getelementptr i8, ptr %4275, i64 -6
  br label %.thread2902.us4299.us.us4533.us.us.us.us

.thread2902.us4299.us.us4533.us.us.us.us:         ; preds = %.thread2902.us4299.us.us4533.us.us.us.us, %.preheader2914.us.us4430.us4558.us.us.new
  %indvars.iv6145 = phi i64 [ %indvars.iv6145.unr, %.preheader2914.us.us4430.us4558.us.us.new ], [ %indvars.iv.next6146.3, %.thread2902.us4299.us.us4533.us.us.us.us ]
  %.326934233.us4292.us.us4527.us.us.us.us = phi float [ %.326934233.us4292.us.us4527.us.us.us.us.unr, %.preheader2914.us.us4430.us4558.us.us.new ], [ %4287, %.thread2902.us4299.us.us4533.us.us.us.us ]
  %4279 = getelementptr i16, ptr %4275, i64 %indvars.iv6145
  %4280 = load i16, ptr %4279, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us = zext i16 %4280 to i32
  %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us, 16
  %.sroa.057.5.us4301.us.us4535.us.us.us.us = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us to float
  %4281 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us.us.us.us, float %.326934233.us4292.us.us4527.us.us.us.us)
  %gep7888 = getelementptr i16, ptr %invariant.gep7887, i64 %indvars.iv6145
  %4282 = load i16, ptr %gep7888, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.1 = zext i16 %4282 to i32
  %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.1 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.1, 16
  %.sroa.057.5.us4301.us.us4535.us.us.us.us.1 = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.1 to float
  %4283 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us.us.us.us.1, float %4281)
  %gep7890 = getelementptr i16, ptr %invariant.gep7889, i64 %indvars.iv6145
  %4284 = load i16, ptr %gep7890, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.2 = zext i16 %4284 to i32
  %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.2 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.2, 16
  %.sroa.057.5.us4301.us.us4535.us.us.us.us.2 = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.2 to float
  %4285 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us.us.us.us.2, float %4283)
  %gep7892 = getelementptr i16, ptr %invariant.gep7891, i64 %indvars.iv6145
  %4286 = load i16, ptr %gep7892, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.3 = zext i16 %4286 to i32
  %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.3 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us4531.us.us.us.us.3, 16
  %.sroa.057.5.us4301.us.us4535.us.us.us.us.3 = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.3 to float
  %4287 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us4529.us.us.us.us, float %.sroa.057.5.us4301.us.us4535.us.us.us.us.3, float %4285)
  %indvars.iv.next6146.3 = add nsw i64 %indvars.iv6145, -4
  %4288 = icmp sgt i64 %indvars.iv6145, 3
  br i1 %4288, label %.thread2902.us4299.us.us4533.us.us.us.us, label %._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us, !llvm.loop !296

._crit_edge4236.split.split.us4304.us.split.split.us.split.us.us.us.us: ; preds = %.thread2902.us4299.us.us4533.us.us.us.us, %.thread2902.us4299.us.us4533.us.us.us.us.prol.loopexit
  %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.lcssa = phi i32 [ %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.lcssa.unr, %.thread2902.us4299.us.us4533.us.us.us.us.prol.loopexit ], [ %.sroa.057.2.insert.shift65.us.us.us4532.us.us.us.us.3, %.thread2902.us4299.us.us4533.us.us.us.us ]
  %.lcssa7348 = phi float [ %.lcssa7348.unr, %.thread2902.us4299.us.us4533.us.us.us.us.prol.loopexit ], [ %4287, %.thread2902.us4299.us.us4533.us.us.us.us ]
  %indvars.iv.next6149 = add nuw nsw i64 %indvars.iv6148, 1
  %exitcond6152.not = icmp eq i64 %indvars.iv.next6149, %wide.trip.count6151
  br i1 %exitcond6152.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us4430.us4558.us.us, !llvm.loop !297

.preheader2914.us.us4430.split.us.us.split.us4689: ; preds = %.preheader2914.us.us4430.us.us
  %.sroa.057.0.insert.mask.us4298.us.us.us.us4602.us = and i32 %4246, -65536
  br i1 %4245, label %.thread2902.us4299.us.us.us.us4599.us.preheader, label %.thread2902.us4299.us.us.us.us4662.preheader

.thread2902.us4299.us.us.us.us4662.preheader:     ; preds = %.preheader2914.us.us4430.split.us.us.split.us4689
  %4289 = and i32 %4247, -65536
  %.sroa.068.0.insert.mask.us4293.us.us.us.us4665 = and i32 %4247, -65536
  %.sroa.068.5.us4297.us.us.us.us4666 = bitcast i32 %.sroa.068.0.insert.mask.us4293.us.us.us.us4665 to float
  %.sroa.057.0.insert.mask.us4298.us.us.us.us4667 = and i32 %4246, -65536
  %.sroa.057.5.us4301.us.us.us.us4668 = bitcast i32 %.sroa.057.0.insert.mask.us4298.us.us.us.us4667 to float
  br i1 %lcmp.mod7669.not, label %.thread2902.us4299.us.us.us.us4662.prol.loopexit, label %.thread2902.us4299.us.us.us.us4662.prol

.thread2902.us4299.us.us.us.us4662.prol:          ; preds = %.thread2902.us4299.us.us.us.us4662.preheader, %.thread2902.us4299.us.us.us.us4662.prol
  %.2426434234.us4291.us.us.us.us4663.prol = phi i32 [ %.242643.us4302.us.us.us.us4669.prol, %.thread2902.us4299.us.us.us.us4662.prol ], [ %.2426434232, %.thread2902.us4299.us.us.us.us4662.preheader ]
  %.326934233.us4292.us.us.us.us4664.prol = phi float [ %4290, %.thread2902.us4299.us.us.us.us4662.prol ], [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us4662.preheader ]
  %prol.iter7670 = phi i32 [ %prol.iter7670.next, %.thread2902.us4299.us.us.us.us4662.prol ], [ 0, %.thread2902.us4299.us.us.us.us4662.preheader ]
  %4290 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4666, float %.sroa.057.5.us4301.us.us.us.us4668, float %.326934233.us4292.us.us.us.us4664.prol)
  %.242643.us4302.us.us.us.us4669.prol = add nsw i32 %.2426434234.us4291.us.us.us.us4663.prol, -1
  %prol.iter7670.next = add i32 %prol.iter7670, 1
  %prol.iter7670.cmp.not = icmp eq i32 %prol.iter7670.next, %xtraiter7668
  br i1 %prol.iter7670.cmp.not, label %.thread2902.us4299.us.us.us.us4662.prol.loopexit, label %.thread2902.us4299.us.us.us.us4662.prol, !llvm.loop !303

.thread2902.us4299.us.us.us.us4662.prol.loopexit: ; preds = %.thread2902.us4299.us.us.us.us4662.prol, %.thread2902.us4299.us.us.us.us4662.preheader
  %.2426434234.us4291.us.us.us.us4663.unr = phi i32 [ %.2426434232, %.thread2902.us4299.us.us.us.us4662.preheader ], [ %.242643.us4302.us.us.us.us4669.prol, %.thread2902.us4299.us.us.us.us4662.prol ]
  %.326934233.us4292.us.us.us.us4664.unr = phi float [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us4662.preheader ], [ %4290, %.thread2902.us4299.us.us.us.us4662.prol ]
  %.lcssa7349.unr = phi float [ poison, %.thread2902.us4299.us.us.us.us4662.preheader ], [ %4290, %.thread2902.us4299.us.us.us.us4662.prol ]
  br i1 %4035, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, label %.thread2902.us4299.us.us.us.us4662

.thread2902.us4299.us.us.us.us4599.us.preheader:  ; preds = %.preheader2914.us.us4430.split.us.us.split.us4689
  %4291 = and i32 %4246, -65536
  %.sroa.057.5.us4301.us.us.us.us4603.us = bitcast i32 %.sroa.057.0.insert.mask.us4298.us.us.us.us4602.us to float
  br i1 %lcmp.mod7672.not, label %.thread2902.us4299.us.us.us.us4599.us.prol.loopexit, label %.thread2902.us4299.us.us.us.us4599.us.prol

.thread2902.us4299.us.us.us.us4599.us.prol:       ; preds = %.thread2902.us4299.us.us.us.us4599.us.preheader, %.thread2902.us4299.us.us.us.us4599.us.prol
  %indvars.iv6153.prol = phi i64 [ %indvars.iv.next6154.prol, %.thread2902.us4299.us.us.us.us4599.us.prol ], [ %4024, %.thread2902.us4299.us.us.us.us4599.us.preheader ]
  %.326934233.us4292.us.us.us.us4595.us.prol = phi float [ %4294, %.thread2902.us4299.us.us.us.us4599.us.prol ], [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us4599.us.preheader ]
  %prol.iter7673 = phi i64 [ %prol.iter7673.next, %.thread2902.us4299.us.us.us.us4599.us.prol ], [ 0, %.thread2902.us4299.us.us.us.us4599.us.preheader ]
  %4292 = getelementptr i16, ptr %4249, i64 %indvars.iv6153.prol
  %4293 = load i16, ptr %4292, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.prol = zext i16 %4293 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.prol = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.prol, 16
  %.sroa.068.5.us4297.us.us.us.us4601.us.prol = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.prol to float
  %4294 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4601.us.prol, float %.sroa.057.5.us4301.us.us.us.us4603.us, float %.326934233.us4292.us.us.us.us4595.us.prol)
  %indvars.iv.next6154.prol = add nsw i64 %indvars.iv6153.prol, -1
  %prol.iter7673.next = add i64 %prol.iter7673, 1
  %prol.iter7673.cmp.not = icmp eq i64 %prol.iter7673.next, %xtraiter7671
  br i1 %prol.iter7673.cmp.not, label %.thread2902.us4299.us.us.us.us4599.us.prol.loopexit, label %.thread2902.us4299.us.us.us.us4599.us.prol, !llvm.loop !304

.thread2902.us4299.us.us.us.us4599.us.prol.loopexit: ; preds = %.thread2902.us4299.us.us.us.us4599.us.prol, %.thread2902.us4299.us.us.us.us4599.us.preheader
  %indvars.iv6153.unr = phi i64 [ %4024, %.thread2902.us4299.us.us.us.us4599.us.preheader ], [ %indvars.iv.next6154.prol, %.thread2902.us4299.us.us.us.us4599.us.prol ]
  %.326934233.us4292.us.us.us.us4595.us.unr = phi float [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us4599.us.preheader ], [ %4294, %.thread2902.us4299.us.us.us.us4599.us.prol ]
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.lcssa.unr = phi i32 [ poison, %.thread2902.us4299.us.us.us.us4599.us.preheader ], [ %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.prol, %.thread2902.us4299.us.us.us.us4599.us.prol ]
  %.lcssa7350.unr = phi float [ poison, %.thread2902.us4299.us.us.us.us4599.us.preheader ], [ %4294, %.thread2902.us4299.us.us.us.us4599.us.prol ]
  br i1 %4036, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, label %.thread2902.us4299.us.us.us.us4599.us.preheader.new

.thread2902.us4299.us.us.us.us4599.us.preheader.new: ; preds = %.thread2902.us4299.us.us.us.us4599.us.prol.loopexit
  %invariant.gep7893 = getelementptr i8, ptr %4249, i64 -2
  %invariant.gep7895 = getelementptr i8, ptr %4249, i64 -4
  %invariant.gep7897 = getelementptr i8, ptr %4249, i64 -6
  br label %.thread2902.us4299.us.us.us.us4599.us

._crit_edge4236.split.split.us4304.us.split.us.us.us: ; preds = %.thread2902.us4299.us.us.us.us4662.prol.loopexit, %.thread2902.us4299.us.us.us.us4662, %.thread2902.us4299.us.us.us.us4599.us.prol.loopexit, %.thread2902.us4299.us.us.us.us4599.us, %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit, %.thread2902.us4299.us.us.us.us.us4690, %.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit, %.thread2902.us4299.us.us.us.us.us4627.us, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit, %.thread2902.us4299.us.us.us.us.us.us.1
  %.us-phi4589.us = phi float [ %.lcssa7353.unr, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit ], [ %4340, %.thread2902.us4299.us.us.us.us.us.us.1 ], [ %.lcssa7352.unr, %.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit ], [ %4350, %.thread2902.us4299.us.us.us.us.us4627.us ], [ %.lcssa7351.unr, %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit ], [ %4310, %.thread2902.us4299.us.us.us.us.us4690 ], [ %.lcssa7350.unr, %.thread2902.us4299.us.us.us.us4599.us.prol.loopexit ], [ %4320, %.thread2902.us4299.us.us.us.us4599.us ], [ %.lcssa7349.unr, %.thread2902.us4299.us.us.us.us4662.prol.loopexit ], [ %4258, %.thread2902.us4299.us.us.us.us4662 ]
  %.us-phi4590.us = phi i32 [ %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.lcssa.unr, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit ], [ %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.1, %.thread2902.us4299.us.us.us.us.us.us.1 ], [ %4322, %.thread2902.us4299.us.us.us.us.us4627.us ], [ %4322, %.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit ], [ %4322, %.thread2902.us4299.us.us.us.us.us4690 ], [ %4322, %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit ], [ %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.lcssa.unr, %.thread2902.us4299.us.us.us.us4599.us.prol.loopexit ], [ %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.3, %.thread2902.us4299.us.us.us.us4599.us ], [ %4289, %.thread2902.us4299.us.us.us.us4662 ], [ %4289, %.thread2902.us4299.us.us.us.us4662.prol.loopexit ]
  %.us-phi4592.us = phi i32 [ %.sroa.057.5.in.us4300.us.us.us.us.us.us.lcssa.unr, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit ], [ %.sroa.057.5.in.us4300.us.us.us.us.us.us.1, %.thread2902.us4299.us.us.us.us.us.us.1 ], [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.lcssa.unr, %.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit ], [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.3, %.thread2902.us4299.us.us.us.us.us4627.us ], [ %4323, %.thread2902.us4299.us.us.us.us.us4690 ], [ %4323, %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit ], [ %4291, %.thread2902.us4299.us.us.us.us4599.us ], [ %4291, %.thread2902.us4299.us.us.us.us4599.us.prol.loopexit ], [ %.sroa.057.0.insert.mask.us4298.us.us.us.us4602.us, %.thread2902.us4299.us.us.us.us4662 ], [ %.sroa.057.0.insert.mask.us4298.us.us.us.us4602.us, %.thread2902.us4299.us.us.us.us4662.prol.loopexit ]
  %indvars.iv.next6163 = add nuw nsw i64 %indvars.iv6162, 1
  %exitcond6166.not = icmp eq i64 %indvars.iv.next6163, %wide.trip.count6165
  br i1 %exitcond6166.not, label %._crit_edge4284.split.us.us.us, label %.preheader2914.us.us4430.us.us, !llvm.loop !297

.preheader2914.us.us4430.split.us.us.split.us.us: ; preds = %.preheader2914.us.us4430.us.us
  %4295 = load i32, ptr %4023, align 4, !tbaa !262
  %4296 = icmp eq i32 %4295, 0
  br i1 %4245, label %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader, label %.preheader2914.us.us4430.split.us.us.split.us.split.us4705

.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader: ; preds = %.preheader2914.us.us4430.split.us.us.split.us.us
  br i1 %lcmp.mod7681.not.not, label %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol, label %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit

.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol: ; preds = %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader
  %4297 = getelementptr i16, ptr %4249, i64 %4024
  %4298 = load i16, ptr %4297, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us.us.us.prol = zext i16 %4298 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us.us.us.prol, 16
  %.sroa.068.5.us4297.us.us.us.us.us.us.prol = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.prol to float
  %.sroa.057.0.insert.mask.us4298.us.us.us.us.us.us.prol = and i32 %4246, -65536
  br i1 %4296, label %4299, label %.thread2902.us4299.us.us.us.us.us.us.prol

4299:                                             ; preds = %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol
  %4300 = getelementptr i16, ptr %4250, i64 %4024
  %4301 = load i16, ptr %4300, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.prol = zext i16 %4301 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.prol = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.prol, 16
  br label %.thread2902.us4299.us.us.us.us.us.us.prol

.thread2902.us4299.us.us.us.us.us.us.prol:        ; preds = %4299, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol
  %.sroa.057.5.in.us4300.us.us.us.us.us.us.prol = phi i32 [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.prol, %4299 ], [ %.sroa.057.0.insert.mask.us4298.us.us.us.us.us.us.prol, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol ]
  %.sroa.057.5.us4301.us.us.us.us.us.us.prol = bitcast i32 %.sroa.057.5.in.us4300.us.us.us.us.us.us.prol to float
  %4302 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us.us.prol, float %.sroa.057.5.us4301.us.us.us.us.us.us.prol, float %.226924280.us.us4432.us.us)
  br label %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit

.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit: ; preds = %.thread2902.us4299.us.us.us.us.us.us.prol, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader
  %indvars.iv6159.unr = phi i64 [ %4024, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader ], [ %indvars.iv.next6160.prol, %.thread2902.us4299.us.us.us.us.us.us.prol ]
  %.unr7683 = phi i32 [ %4246, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader ], [ %.sroa.057.5.in.us4300.us.us.us.us.us.us.prol, %.thread2902.us4299.us.us.us.us.us.us.prol ]
  %.326934233.us4292.us.us.us.us.us.us.unr = phi float [ %.226924280.us.us4432.us.us, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader ], [ %4302, %.thread2902.us4299.us.us.us.us.us.us.prol ]
  %.sroa.057.5.in.us4300.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader ], [ %.sroa.057.5.in.us4300.us.us.us.us.us.us.prol, %.thread2902.us4299.us.us.us.us.us.us.prol ]
  %.lcssa7353.unr = phi float [ poison, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader ], [ %4302, %.thread2902.us4299.us.us.us.us.us.us.prol ]
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.lcssa.unr = phi i32 [ poison, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.preheader ], [ %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.prol, %.thread2902.us4299.us.us.us.us.us.us.prol ]
  br i1 %4040, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, label %.preheader2914.us.us4430.split.us.us.split.us.split.us.us

.thread2902.us4299.us.us.us.us.us4690:            ; preds = %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit, %.thread2902.us4299.us.us.us.us.us4690
  %.2426434234.us4291.us.us.us.us.us4691 = phi i32 [ %.242643.us4302.us.us.us.us.us4696.7, %.thread2902.us4299.us.us.us.us.us4690 ], [ %.2426434234.us4291.us.us.us.us.us4691.unr, %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit ]
  %.326934233.us4292.us.us.us.us.us4692 = phi float [ %4310, %.thread2902.us4299.us.us.us.us.us4690 ], [ %.326934233.us4292.us.us.us.us.us4692.unr, %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit ]
  %4303 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %.326934233.us4292.us.us.us.us.us4692)
  %4304 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %4303)
  %4305 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %4304)
  %4306 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %4305)
  %4307 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %4306)
  %4308 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %4307)
  %4309 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %4308)
  %4310 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %4309)
  %.242643.us4302.us.us.us.us.us4696.7 = add nsw i32 %.2426434234.us4291.us.us.us.us.us4691, -8
  %4311 = icmp sgt i32 %.2426434234.us4291.us.us.us.us.us4691, 7
  br i1 %4311, label %.thread2902.us4299.us.us.us.us.us4690, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, !llvm.loop !296

.thread2902.us4299.us.us.us.us4599.us:            ; preds = %.thread2902.us4299.us.us.us.us4599.us, %.thread2902.us4299.us.us.us.us4599.us.preheader.new
  %indvars.iv6153 = phi i64 [ %indvars.iv6153.unr, %.thread2902.us4299.us.us.us.us4599.us.preheader.new ], [ %indvars.iv.next6154.3, %.thread2902.us4299.us.us.us.us4599.us ]
  %.326934233.us4292.us.us.us.us4595.us = phi float [ %.326934233.us4292.us.us.us.us4595.us.unr, %.thread2902.us4299.us.us.us.us4599.us.preheader.new ], [ %4320, %.thread2902.us4299.us.us.us.us4599.us ]
  %4312 = getelementptr i16, ptr %4249, i64 %indvars.iv6153
  %4313 = load i16, ptr %4312, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us = zext i16 %4313 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us, 16
  %.sroa.068.5.us4297.us.us.us.us4601.us = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us to float
  %4314 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4601.us, float %.sroa.057.5.us4301.us.us.us.us4603.us, float %.326934233.us4292.us.us.us.us4595.us)
  %gep7894 = getelementptr i16, ptr %invariant.gep7893, i64 %indvars.iv6153
  %4315 = load i16, ptr %gep7894, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.1 = zext i16 %4315 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.1 = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.1, 16
  %.sroa.068.5.us4297.us.us.us.us4601.us.1 = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.1 to float
  %4316 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4601.us.1, float %.sroa.057.5.us4301.us.us.us.us4603.us, float %4314)
  %gep7896 = getelementptr i16, ptr %invariant.gep7895, i64 %indvars.iv6153
  %4317 = load i16, ptr %gep7896, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.2 = zext i16 %4317 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.2 = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.2, 16
  %.sroa.068.5.us4297.us.us.us.us4601.us.2 = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.2 to float
  %4318 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4601.us.2, float %.sroa.057.5.us4301.us.us.us.us4603.us, float %4316)
  %gep7898 = getelementptr i16, ptr %invariant.gep7897, i64 %indvars.iv6153
  %4319 = load i16, ptr %gep7898, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.3 = zext i16 %4319 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.3 = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us4597.us.3, 16
  %.sroa.068.5.us4297.us.us.us.us4601.us.3 = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us4598.us.3 to float
  %4320 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us4601.us.3, float %.sroa.057.5.us4301.us.us.us.us4603.us, float %4318)
  %indvars.iv.next6154.3 = add nsw i64 %indvars.iv6153, -4
  %4321 = icmp sgt i64 %indvars.iv6153, 3
  br i1 %4321, label %.thread2902.us4299.us.us.us.us4599.us, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, !llvm.loop !296

.preheader2914.us.us4430.split.us.us.split.us.split.us4705: ; preds = %.preheader2914.us.us4430.split.us.us.split.us.us
  %4322 = and i32 %4247, -65536
  br i1 %4296, label %.thread2902.us4299.us.us.us.us.us4627.us.preheader, label %.thread2902.us4299.us.us.us.us.us4690.preheader

.thread2902.us4299.us.us.us.us.us4690.preheader:  ; preds = %.preheader2914.us.us4430.split.us.us.split.us.split.us4705
  %4323 = and i32 %4246, -65536
  %.sroa.068.0.insert.mask.us4293.us.us.us.us.us = and i32 %4247, -65536
  %.sroa.068.5.us4297.us.us.us.us.us4693 = bitcast i32 %.sroa.068.0.insert.mask.us4293.us.us.us.us.us to float
  %.sroa.057.0.insert.mask.us4298.us.us.us.us.us4694 = and i32 %4246, -65536
  %.sroa.057.5.us4301.us.us.us.us.us4695 = bitcast i32 %.sroa.057.0.insert.mask.us4298.us.us.us.us.us4694 to float
  br i1 %lcmp.mod7675.not, label %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit, label %.thread2902.us4299.us.us.us.us.us4690.prol

.thread2902.us4299.us.us.us.us.us4690.prol:       ; preds = %.thread2902.us4299.us.us.us.us.us4690.preheader, %.thread2902.us4299.us.us.us.us.us4690.prol
  %.2426434234.us4291.us.us.us.us.us4691.prol = phi i32 [ %.242643.us4302.us.us.us.us.us4696.prol, %.thread2902.us4299.us.us.us.us.us4690.prol ], [ %.2426434232, %.thread2902.us4299.us.us.us.us.us4690.preheader ]
  %.326934233.us4292.us.us.us.us.us4692.prol = phi float [ %4324, %.thread2902.us4299.us.us.us.us.us4690.prol ], [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us.us4690.preheader ]
  %prol.iter7676 = phi i32 [ %prol.iter7676.next, %.thread2902.us4299.us.us.us.us.us4690.prol ], [ 0, %.thread2902.us4299.us.us.us.us.us4690.preheader ]
  %4324 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4693, float %.sroa.057.5.us4301.us.us.us.us.us4695, float %.326934233.us4292.us.us.us.us.us4692.prol)
  %.242643.us4302.us.us.us.us.us4696.prol = add nsw i32 %.2426434234.us4291.us.us.us.us.us4691.prol, -1
  %prol.iter7676.next = add i32 %prol.iter7676, 1
  %prol.iter7676.cmp.not = icmp eq i32 %prol.iter7676.next, %xtraiter7674
  br i1 %prol.iter7676.cmp.not, label %.thread2902.us4299.us.us.us.us.us4690.prol.loopexit, label %.thread2902.us4299.us.us.us.us.us4690.prol, !llvm.loop !305

.thread2902.us4299.us.us.us.us.us4690.prol.loopexit: ; preds = %.thread2902.us4299.us.us.us.us.us4690.prol, %.thread2902.us4299.us.us.us.us.us4690.preheader
  %.2426434234.us4291.us.us.us.us.us4691.unr = phi i32 [ %.2426434232, %.thread2902.us4299.us.us.us.us.us4690.preheader ], [ %.242643.us4302.us.us.us.us.us4696.prol, %.thread2902.us4299.us.us.us.us.us4690.prol ]
  %.326934233.us4292.us.us.us.us.us4692.unr = phi float [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us.us4690.preheader ], [ %4324, %.thread2902.us4299.us.us.us.us.us4690.prol ]
  %.lcssa7351.unr = phi float [ poison, %.thread2902.us4299.us.us.us.us.us4690.preheader ], [ %4324, %.thread2902.us4299.us.us.us.us.us4690.prol ]
  br i1 %4037, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, label %.thread2902.us4299.us.us.us.us.us4690

.thread2902.us4299.us.us.us.us.us4627.us.preheader: ; preds = %.preheader2914.us.us4430.split.us.us.split.us.split.us4705
  %.sroa.068.0.insert.mask.us4293.us.us.us.us.us4622.us = and i32 %4247, -65536
  %.sroa.068.5.us4297.us.us.us.us.us4623.us = bitcast i32 %.sroa.068.0.insert.mask.us4293.us.us.us.us.us4622.us to float
  br i1 %lcmp.mod7678.not, label %.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit, label %.thread2902.us4299.us.us.us.us.us4627.us.prol

.thread2902.us4299.us.us.us.us.us4627.us.prol:    ; preds = %.thread2902.us4299.us.us.us.us.us4627.us.preheader, %.thread2902.us4299.us.us.us.us.us4627.us.prol
  %indvars.iv6156.prol = phi i64 [ %indvars.iv.next6157.prol, %.thread2902.us4299.us.us.us.us.us4627.us.prol ], [ %4024, %.thread2902.us4299.us.us.us.us.us4627.us.preheader ]
  %.326934233.us4292.us.us.us.us.us4621.us.prol = phi float [ %4327, %.thread2902.us4299.us.us.us.us.us4627.us.prol ], [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us.us4627.us.preheader ]
  %prol.iter7679 = phi i64 [ %prol.iter7679.next, %.thread2902.us4299.us.us.us.us.us4627.us.prol ], [ 0, %.thread2902.us4299.us.us.us.us.us4627.us.preheader ]
  %4325 = getelementptr i16, ptr %4250, i64 %indvars.iv6156.prol
  %4326 = load i16, ptr %4325, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.prol = zext i16 %4326 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.prol = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.prol, 16
  %.sroa.057.5.us4301.us.us.us.us.us4629.us.prol = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.prol to float
  %4327 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4623.us, float %.sroa.057.5.us4301.us.us.us.us.us4629.us.prol, float %.326934233.us4292.us.us.us.us.us4621.us.prol)
  %indvars.iv.next6157.prol = add nsw i64 %indvars.iv6156.prol, -1
  %prol.iter7679.next = add i64 %prol.iter7679, 1
  %prol.iter7679.cmp.not = icmp eq i64 %prol.iter7679.next, %xtraiter7677
  br i1 %prol.iter7679.cmp.not, label %.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit, label %.thread2902.us4299.us.us.us.us.us4627.us.prol, !llvm.loop !306

.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit: ; preds = %.thread2902.us4299.us.us.us.us.us4627.us.prol, %.thread2902.us4299.us.us.us.us.us4627.us.preheader
  %indvars.iv6156.unr = phi i64 [ %4024, %.thread2902.us4299.us.us.us.us.us4627.us.preheader ], [ %indvars.iv.next6157.prol, %.thread2902.us4299.us.us.us.us.us4627.us.prol ]
  %.326934233.us4292.us.us.us.us.us4621.us.unr = phi float [ %.226924280.us.us4432.us.us, %.thread2902.us4299.us.us.us.us.us4627.us.preheader ], [ %4327, %.thread2902.us4299.us.us.us.us.us4627.us.prol ]
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.lcssa.unr = phi i32 [ poison, %.thread2902.us4299.us.us.us.us.us4627.us.preheader ], [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.prol, %.thread2902.us4299.us.us.us.us.us4627.us.prol ]
  %.lcssa7352.unr = phi float [ poison, %.thread2902.us4299.us.us.us.us.us4627.us.preheader ], [ %4327, %.thread2902.us4299.us.us.us.us.us4627.us.prol ]
  br i1 %4038, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, label %.thread2902.us4299.us.us.us.us.us4627.us.preheader.new

.thread2902.us4299.us.us.us.us.us4627.us.preheader.new: ; preds = %.thread2902.us4299.us.us.us.us.us4627.us.prol.loopexit
  %invariant.gep7899 = getelementptr i8, ptr %4250, i64 -2
  %invariant.gep7901 = getelementptr i8, ptr %4250, i64 -4
  %invariant.gep7903 = getelementptr i8, ptr %4250, i64 -6
  br label %.thread2902.us4299.us.us.us.us.us4627.us

.preheader2914.us.us4430.split.us.us.split.us.split.us.us: ; preds = %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit, %.thread2902.us4299.us.us.us.us.us.us.1
  %indvars.iv6159 = phi i64 [ %indvars.iv.next6160.1, %.thread2902.us4299.us.us.us.us.us.us.1 ], [ %indvars.iv6159.unr, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit ]
  %4328 = phi i32 [ %.sroa.057.5.in.us4300.us.us.us.us.us.us.1, %.thread2902.us4299.us.us.us.us.us.us.1 ], [ %.unr7683, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit ]
  %.326934233.us4292.us.us.us.us.us.us = phi float [ %4340, %.thread2902.us4299.us.us.us.us.us.us.1 ], [ %.326934233.us4292.us.us.us.us.us.us.unr, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us.prol.loopexit ]
  %4329 = getelementptr i16, ptr %4249, i64 %indvars.iv6159
  %4330 = load i16, ptr %4329, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us.us.us = zext i16 %4330 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us.us.us, 16
  %.sroa.068.5.us4297.us.us.us.us.us.us = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us to float
  %.sroa.057.0.insert.mask.us4298.us.us.us.us.us.us = and i32 %4328, -65536
  br i1 %4296, label %4331, label %.thread2902.us4299.us.us.us.us.us.us

4331:                                             ; preds = %.preheader2914.us.us4430.split.us.us.split.us.split.us.us
  %4332 = getelementptr i16, ptr %4250, i64 %indvars.iv6159
  %4333 = load i16, ptr %4332, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us = zext i16 %4333 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us, 16
  br label %.thread2902.us4299.us.us.us.us.us.us

.thread2902.us4299.us.us.us.us.us.us:             ; preds = %4331, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us
  %.sroa.057.5.in.us4300.us.us.us.us.us.us = phi i32 [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us, %4331 ], [ %.sroa.057.0.insert.mask.us4298.us.us.us.us.us.us, %.preheader2914.us.us4430.split.us.us.split.us.split.us.us ]
  %.sroa.057.5.us4301.us.us.us.us.us.us = bitcast i32 %.sroa.057.5.in.us4300.us.us.us.us.us.us to float
  %4334 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us.us, float %.sroa.057.5.us4301.us.us.us.us.us.us, float %.326934233.us4292.us.us.us.us.us.us)
  %indvars.iv.next6160 = add nsw i64 %indvars.iv6159, -1
  %4335 = getelementptr i16, ptr %4249, i64 %indvars.iv.next6160
  %4336 = load i16, ptr %4335, align 2, !tbaa !38
  %.sroa.068.2.insert.ext70.us4294.us.us.us.us.us.us.1 = zext i16 %4336 to i32
  %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.068.2.insert.ext70.us4294.us.us.us.us.us.us.1, 16
  %.sroa.068.5.us4297.us.us.us.us.us.us.1 = bitcast i32 %.sroa.068.2.insert.shift71.us4295.us.us.us.us.us.us.1 to float
  br i1 %4296, label %4337, label %.thread2902.us4299.us.us.us.us.us.us.1

4337:                                             ; preds = %.thread2902.us4299.us.us.us.us.us.us
  %4338 = getelementptr i16, ptr %4250, i64 %indvars.iv.next6160
  %4339 = load i16, ptr %4338, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.1 = zext i16 %4339 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.1 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us.us.1, 16
  br label %.thread2902.us4299.us.us.us.us.us.us.1

.thread2902.us4299.us.us.us.us.us.us.1:           ; preds = %4337, %.thread2902.us4299.us.us.us.us.us.us
  %.sroa.057.5.in.us4300.us.us.us.us.us.us.1 = phi i32 [ %.sroa.057.2.insert.shift65.us.us.us.us.us.us.us.1, %4337 ], [ %.sroa.057.5.in.us4300.us.us.us.us.us.us, %.thread2902.us4299.us.us.us.us.us.us ]
  %.sroa.057.5.us4301.us.us.us.us.us.us.1 = bitcast i32 %.sroa.057.5.in.us4300.us.us.us.us.us.us.1 to float
  %4340 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us.us.1, float %.sroa.057.5.us4301.us.us.us.us.us.us.1, float %4334)
  %indvars.iv.next6160.1 = add nsw i64 %indvars.iv6159, -2
  %4341 = icmp sgt i64 %indvars.iv6159, 1
  br i1 %4341, label %.preheader2914.us.us4430.split.us.us.split.us.split.us.us, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, !llvm.loop !296

.thread2902.us4299.us.us.us.us.us4627.us:         ; preds = %.thread2902.us4299.us.us.us.us.us4627.us, %.thread2902.us4299.us.us.us.us.us4627.us.preheader.new
  %indvars.iv6156 = phi i64 [ %indvars.iv6156.unr, %.thread2902.us4299.us.us.us.us.us4627.us.preheader.new ], [ %indvars.iv.next6157.3, %.thread2902.us4299.us.us.us.us.us4627.us ]
  %.326934233.us4292.us.us.us.us.us4621.us = phi float [ %.326934233.us4292.us.us.us.us.us4621.us.unr, %.thread2902.us4299.us.us.us.us.us4627.us.preheader.new ], [ %4350, %.thread2902.us4299.us.us.us.us.us4627.us ]
  %4342 = getelementptr i16, ptr %4250, i64 %indvars.iv6156
  %4343 = load i16, ptr %4342, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us = zext i16 %4343 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us, 16
  %.sroa.057.5.us4301.us.us.us.us.us4629.us = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us to float
  %4344 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4623.us, float %.sroa.057.5.us4301.us.us.us.us.us4629.us, float %.326934233.us4292.us.us.us.us.us4621.us)
  %gep7900 = getelementptr i16, ptr %invariant.gep7899, i64 %indvars.iv6156
  %4345 = load i16, ptr %gep7900, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.1 = zext i16 %4345 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.1 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.1, 16
  %.sroa.057.5.us4301.us.us.us.us.us4629.us.1 = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.1 to float
  %4346 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4623.us, float %.sroa.057.5.us4301.us.us.us.us.us4629.us.1, float %4344)
  %gep7902 = getelementptr i16, ptr %invariant.gep7901, i64 %indvars.iv6156
  %4347 = load i16, ptr %gep7902, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.2 = zext i16 %4347 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.2 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.2, 16
  %.sroa.057.5.us4301.us.us.us.us.us4629.us.2 = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.2 to float
  %4348 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4623.us, float %.sroa.057.5.us4301.us.us.us.us.us4629.us.2, float %4346)
  %gep7904 = getelementptr i16, ptr %invariant.gep7903, i64 %indvars.iv6156
  %4349 = load i16, ptr %gep7904, align 2, !tbaa !38
  %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.3 = zext i16 %4349 to i32
  %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.3 = shl nuw i32 %.sroa.057.2.insert.ext64.us.us.us.us.us.us4625.us.3, 16
  %.sroa.057.5.us4301.us.us.us.us.us4629.us.3 = bitcast i32 %.sroa.057.2.insert.shift65.us.us.us.us.us.us4626.us.3 to float
  %4350 = call float @llvm.fmuladd.f32(float %.sroa.068.5.us4297.us.us.us.us.us4623.us, float %.sroa.057.5.us4301.us.us.us.us.us4629.us.3, float %4348)
  %indvars.iv.next6157.3 = add nsw i64 %indvars.iv6156, -4
  %4351 = icmp sgt i64 %indvars.iv6156, 3
  br i1 %4351, label %.thread2902.us4299.us.us.us.us.us4627.us, label %._crit_edge4236.split.split.us4304.us.split.us.us.us, !llvm.loop !296

.lr.ph4645.split:                                 ; preds = %.lr.ph4645, %._crit_edge4423.split
  %indvars.iv6138 = phi i64 [ %indvars.iv.next6139, %._crit_edge4423.split ], [ 0, %.lr.ph4645 ]
  %4352 = load double, ptr %4018, align 8, !tbaa !25
  %4353 = fcmp oeq double %4352, 0.000000e+00
  br i1 %4353, label %4357, label %4354

4354:                                             ; preds = %.lr.ph4645.split
  %gep6705 = getelementptr i16, ptr %invariant.gep6708, i64 %indvars.iv6138
  %4355 = load i16, ptr %gep6705, align 2, !tbaa !38
  %.sroa.074.2.insert.ext = zext i16 %4355 to i32
  %.sroa.074.2.insert.shift = shl nuw i32 %.sroa.074.2.insert.ext, 16
  %4356 = bitcast i32 %.sroa.074.2.insert.shift to float
  br label %4357

4357:                                             ; preds = %.lr.ph4645.split, %4354
  %.02690 = phi float [ %4356, %4354 ], [ 0.000000e+00, %.lr.ph4645.split ]
  %4358 = load i32, ptr %4019, align 8, !tbaa !52
  %4359 = icmp sgt i32 %4358, 0
  br i1 %4359, label %.lr.ph4422, label %._crit_edge4423.split

.lr.ph4422:                                       ; preds = %4357, %.lr.ph4422
  %indvars.iv6135 = phi i64 [ %indvars.iv.next6136, %.lr.ph4422 ], [ 0, %4357 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6135, ptr noundef nonnull %0)
  %indvars.iv.next6136 = add nuw nsw i64 %indvars.iv6135, 1
  %4360 = load i32, ptr %4019, align 8, !tbaa !52
  %4361 = sext i32 %4360 to i64
  %4362 = icmp slt i64 %indvars.iv.next6136, %4361
  br i1 %4362, label %.lr.ph4422, label %._crit_edge4423.split, !llvm.loop !294

._crit_edge4423.split:                            ; preds = %.lr.ph4422, %4357
  %4363 = call zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef %.02690) #8
  %gep6707 = getelementptr i16, ptr %invariant.gep6710, i64 %indvars.iv6138
  store i16 %4363, ptr %gep6707, align 2, !tbaa !38
  %indvars.iv.next6139 = add nuw nsw i64 %indvars.iv6138, 1
  %exitcond6142.not = icmp eq i64 %indvars.iv.next6139, %wide.trip.count6141
  br i1 %exitcond6142.not, label %._crit_edge4646, label %.lr.ph4645.split, !llvm.loop !293

._crit_edge4646:                                  ; preds = %._crit_edge4423.split, %._crit_edge4423.split.us.us, %.preheader2915
  %.lcssa3003 = phi i32 [ %4050, %.preheader2915 ], [ %.lcssa3001.us, %._crit_edge4423.split.us.us ], [ %4050, %._crit_edge4423.split ]
  %.lcssa3002 = phi i32 [ %4049, %.preheader2915 ], [ %.lcssa3000.us, %._crit_edge4423.split.us.us ], [ %4049, %._crit_edge4423.split ]
  %indvars.iv.next6220 = add nuw nsw i64 %indvars.iv6219, 1
  %exitcond6223.not = icmp eq i64 %indvars.iv.next6220, %wide.trip.count6222
  br i1 %exitcond6223.not, label %._crit_edge4717, label %.preheader2915, !llvm.loop !307

._crit_edge4717:                                  ; preds = %._crit_edge4646, %4015
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  br label %.loopexit

4364:                                             ; preds = %4005, %4001, %3997, %3996
  br i1 %2332, label %4365, label %4483

4365:                                             ; preds = %4364
  %4366 = getelementptr inbounds i8, ptr %0, i64 4
  %4367 = load i32, ptr %4366, align 4, !tbaa !24
  %4368 = icmp eq i32 %4367, 4
  br i1 %4368, label %4369, label %4483

4369:                                             ; preds = %4365
  %4370 = getelementptr inbounds i8, ptr %0, i64 8
  %4371 = load i32, ptr %4370, align 8, !tbaa !26
  %4372 = icmp eq i32 %4371, 1
  br i1 %4372, label %4373, label %4483

4373:                                             ; preds = %4369
  %4374 = getelementptr inbounds i8, ptr %0, i64 12
  %4375 = load i32, ptr %4374, align 4, !tbaa !70
  %4376 = icmp eq i32 %4375, 1
  br i1 %4376, label %4377, label %4483

4377:                                             ; preds = %4373
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #8
  store ptr %1, ptr %62, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #8
  store ptr %2, ptr %63, align 8, !tbaa !50
  %4378 = getelementptr inbounds i8, ptr %0, i64 72
  %4379 = load i32, ptr %4378, align 8, !tbaa !225
  %.not2810 = icmp eq i32 %4379, 0
  br i1 %.not2810, label %4382, label %4380

4380:                                             ; preds = %4377
  %4381 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %712) #8
  br label %4382

4382:                                             ; preds = %4377, %4380
  %4383 = phi i32 [ %4381, %4380 ], [ 1, %4377 ]
  %4384 = getelementptr inbounds i8, ptr %0, i64 112
  %4385 = load i32, ptr %4384, align 8, !tbaa !52
  %4386 = icmp sgt i32 %4385, 0
  br i1 %4386, label %.lr.ph4227, label %._crit_edge4228

.lr.ph4227:                                       ; preds = %4382
  %4387 = icmp sgt i32 %79, 0
  %4388 = icmp sgt i32 %77, 0
  %4389 = getelementptr inbounds i8, ptr %0, i64 56
  %factor.op.mul4172 = mul i32 %4383, %71
  %4390 = icmp sgt i32 %4383, 0
  %4391 = sext i32 %75 to i64
  %4392 = shl nsw i64 %4391, 2
  %4393 = zext i32 %77 to i64
  %4394 = shl nuw nsw i64 %4393, 2
  %4395 = sext i32 %4383 to i64
  %4396 = sext i32 %73 to i64
  %wide.trip.count6077 = zext i32 %79 to i64
  %wide.trip.count6130 = zext nneg i32 %79 to i64
  %wide.trip.count6100 = zext nneg i32 %4383 to i64
  %wide.trip.count6115 = zext nneg i32 %4383 to i64
  %4397 = add nsw i64 %wide.trip.count6077, -1
  %xtraiter7649 = and i64 %wide.trip.count6077, 7
  %4398 = icmp ult i64 %4397, 7
  %unroll_iter7652 = and i64 %wide.trip.count6077, 2147483640
  %lcmp.mod7651.not = icmp eq i64 %xtraiter7649, 0
  %xtraiter7654 = and i64 %wide.trip.count6077, 7
  %4399 = icmp ult i64 %4397, 7
  %unroll_iter7657 = and i64 %wide.trip.count6077, 2147483640
  %lcmp.mod7656.not = icmp eq i64 %xtraiter7654, 0
  br label %4400

4400:                                             ; preds = %.lr.ph4227, %._crit_edge4187
  %indvars.iv6132 = phi i64 [ 0, %.lr.ph4227 ], [ %indvars.iv.next6133, %._crit_edge4187 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %62, ptr noundef nonnull %63, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6132, ptr noundef nonnull %0)
  br i1 %4387, label %.preheader2917.lr.ph, label %._crit_edge4187

.preheader2917.lr.ph:                             ; preds = %4400
  %4401 = icmp eq i64 %indvars.iv6132, 0
  br i1 %4388, label %.preheader2917.lr.ph.split.us, label %._crit_edge4187

.preheader2917.lr.ph.split.us:                    ; preds = %.preheader2917.lr.ph
  %4402 = sdiv i32 %.fr4927, %4383
  %4403 = icmp sgt i32 %4402, 0
  br i1 %4403, label %.preheader2917.lr.ph.split.us.split.us, label %.preheader2917.lr.ph.split.us.split

.preheader2917.lr.ph.split.us.split.us:           ; preds = %.preheader2917.lr.ph.split.us
  br i1 %4390, label %.preheader2917.lr.ph.split.us.split.us.split.us, label %.preheader2917.lr.ph.split.us.split.us.split

.preheader2917.lr.ph.split.us.split.us.split.us:  ; preds = %.preheader2917.lr.ph.split.us.split.us
  %wide.trip.count6105 = zext nneg i32 %4402 to i64
  %wide.trip.count6120 = zext nneg i32 %4402 to i64
  br label %.preheader2917.us.us.us

.preheader2917.us.us.us:                          ; preds = %._crit_edge4177.split.us.us.us.split.us.us, %.preheader2917.lr.ph.split.us.split.us.split.us
  %indvars.iv6127 = phi i64 [ %indvars.iv.next6128, %._crit_edge4177.split.us.us.us.split.us.us ], [ 0, %.preheader2917.lr.ph.split.us.split.us.split.us ]
  %4404 = mul nsw i64 %indvars.iv6127, %4391
  %4405 = mul nsw i64 %indvars.iv6127, %4396
  br i1 %4401, label %.lr.ph4176.split.us.us.us.split.us.us.split, label %.preheader2916.lr.ph.us.us.us.us.us.us.preheader

.preheader2916.lr.ph.us.us.us.us.us.us.preheader: ; preds = %.preheader2917.us.us.us
  %invariant.gep6702 = getelementptr float, ptr %3, i64 %4404
  br label %.preheader2916.lr.ph.us.us.us.us.us.us

.preheader2916.lr.ph.us.us.us.us.us.us:           ; preds = %.preheader2916.lr.ph.us.us.us.us.us.us.preheader, %._crit_edge4174.split.us.us.us.us.us.us.us
  %indvars.iv6107 = phi i64 [ 0, %.preheader2916.lr.ph.us.us.us.us.us.us.preheader ], [ %indvars.iv.next6108, %._crit_edge4174.split.us.us.us.us.us.us.us ]
  %4406 = mul nuw nsw i64 %indvars.iv6107, %4395
  %gep6703 = getelementptr float, ptr %invariant.gep6702, i64 %indvars.iv6107
  br label %.preheader2916.us.us.us.us.us.us.us

.preheader2916.us.us.us.us.us.us.us:              ; preds = %._crit_edge4171.us.us.us.us.us.us.us, %.preheader2916.lr.ph.us.us.us.us.us.us
  %indvars.iv6102 = phi i64 [ %indvars.iv.next6103, %._crit_edge4171.us.us.us.us.us.us.us ], [ 0, %.preheader2916.lr.ph.us.us.us.us.us.us ]
  %4407 = trunc nuw nsw i64 %indvars.iv6102 to i32
  %factor.op.mul4168.reass.us.us.us.us.us.us.us = mul i32 %factor.op.mul4172, %4407
  %4408 = sext i32 %factor.op.mul4168.reass.us.us.us.us.us.us.us to i64
  %4409 = mul nuw nsw i64 %indvars.iv6102, %4395
  br label %4410

4410:                                             ; preds = %4410, %.preheader2916.us.us.us.us.us.us.us
  %indvars.iv6097 = phi i64 [ %indvars.iv.next6098, %4410 ], [ 0, %.preheader2916.us.us.us.us.us.us.us ]
  %4411 = load ptr, ptr %62, align 8, !tbaa !50
  %4412 = load i64, ptr %5, align 8, !tbaa !19
  %4413 = getelementptr i8, ptr %4411, i64 %4412
  %4414 = getelementptr i8, ptr %4413, i64 %4408
  %4415 = getelementptr i8, ptr %4414, i64 %4406
  %4416 = getelementptr i8, ptr %4415, i64 %indvars.iv6097
  %4417 = load i8, ptr %4416, align 1, !tbaa !41
  %4418 = load ptr, ptr %63, align 8, !tbaa !50
  %4419 = load i64, ptr %6, align 8, !tbaa !19
  %4420 = getelementptr i8, ptr %4418, i64 %4419
  %4421 = getelementptr i8, ptr %4420, i64 %4405
  %4422 = getelementptr i8, ptr %4421, i64 %4409
  %4423 = getelementptr i8, ptr %4422, i64 %indvars.iv6097
  %4424 = load i8, ptr %4423, align 1, !tbaa !41
  %.sroa.449.0.insert.ext.us.us.us.us.us.us.us = zext i8 %4417 to i16
  %.sroa.449.0.insert.shift.us.us.us.us.us.us.us = shl nuw i16 %.sroa.449.0.insert.ext.us.us.us.us.us.us.us, 8
  %4425 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.449.0.insert.shift.us.us.us.us.us.us.us) #8
  %.sroa.447.0.insert.ext.us.us.us.us.us.us.us = zext i8 %4424 to i16
  %.sroa.447.0.insert.shift.us.us.us.us.us.us.us = shl nuw i16 %.sroa.447.0.insert.ext.us.us.us.us.us.us.us, 8
  %4426 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.447.0.insert.shift.us.us.us.us.us.us.us) #8
  %4427 = load float, ptr %gep6703, align 4, !tbaa !27
  %4428 = call float @llvm.fmuladd.f32(float %4425, float %4426, float %4427)
  store float %4428, ptr %gep6703, align 4, !tbaa !27
  %indvars.iv.next6098 = add nuw nsw i64 %indvars.iv6097, 1
  %exitcond6101.not = icmp eq i64 %indvars.iv.next6098, %wide.trip.count6100
  br i1 %exitcond6101.not, label %._crit_edge4171.us.us.us.us.us.us.us, label %4410, !llvm.loop !308

._crit_edge4171.us.us.us.us.us.us.us:             ; preds = %4410
  %indvars.iv.next6103 = add nuw nsw i64 %indvars.iv6102, 1
  %exitcond6106.not = icmp eq i64 %indvars.iv.next6103, %wide.trip.count6105
  br i1 %exitcond6106.not, label %._crit_edge4174.split.us.us.us.us.us.us.us, label %.preheader2916.us.us.us.us.us.us.us, !llvm.loop !309

._crit_edge4174.split.us.us.us.us.us.us.us:       ; preds = %._crit_edge4171.us.us.us.us.us.us.us
  %indvars.iv.next6108 = add nuw nsw i64 %indvars.iv6107, 1
  %exitcond6111.not = icmp eq i64 %indvars.iv.next6108, %4393
  br i1 %exitcond6111.not, label %._crit_edge4177.split.us.us.us.split.us.us, label %.preheader2916.lr.ph.us.us.us.us.us.us, !llvm.loop !310

.lr.ph4176.split.us.us.us.split.us.us.split:      ; preds = %.preheader2917.us.us.us, %._crit_edge4174.split.us.us.us.us.us.us
  %indvars.iv6122 = phi i64 [ %indvars.iv.next6123, %._crit_edge4174.split.us.us.us.us.us.us ], [ 0, %.preheader2917.us.us.us ]
  %4429 = load double, ptr %4389, align 8, !tbaa !25
  %4430 = fcmp oeq double %4429, 0.000000e+00
  %4431 = add nsw i64 %indvars.iv6122, %4404
  br i1 %4430, label %4432, label %.preheader2916.lr.ph.us.us.us.us.us

4432:                                             ; preds = %.lr.ph4176.split.us.us.us.split.us.us.split
  %4433 = getelementptr inbounds float, ptr %3, i64 %4431
  store float 0.000000e+00, ptr %4433, align 4, !tbaa !27
  br label %.preheader2916.lr.ph.us.us.us.us.us

.preheader2916.lr.ph.us.us.us.us.us:              ; preds = %.lr.ph4176.split.us.us.us.split.us.us.split, %4432
  %4434 = mul nuw nsw i64 %indvars.iv6122, %4395
  %4435 = getelementptr inbounds float, ptr %3, i64 %4431
  br label %.preheader2916.us.us.us.us.us.us

.preheader2916.us.us.us.us.us.us:                 ; preds = %._crit_edge4171.us.us.us.us.us.us, %.preheader2916.lr.ph.us.us.us.us.us
  %indvars.iv6117 = phi i64 [ %indvars.iv.next6118, %._crit_edge4171.us.us.us.us.us.us ], [ 0, %.preheader2916.lr.ph.us.us.us.us.us ]
  %4436 = trunc nuw nsw i64 %indvars.iv6117 to i32
  %factor.op.mul4168.reass.us.us.us.us.us.us = mul i32 %factor.op.mul4172, %4436
  %4437 = sext i32 %factor.op.mul4168.reass.us.us.us.us.us.us to i64
  %4438 = mul nuw nsw i64 %indvars.iv6117, %4395
  br label %4439

4439:                                             ; preds = %4439, %.preheader2916.us.us.us.us.us.us
  %indvars.iv6112 = phi i64 [ %indvars.iv.next6113, %4439 ], [ 0, %.preheader2916.us.us.us.us.us.us ]
  %4440 = load ptr, ptr %62, align 8, !tbaa !50
  %4441 = load i64, ptr %5, align 8, !tbaa !19
  %4442 = getelementptr i8, ptr %4440, i64 %4441
  %4443 = getelementptr i8, ptr %4442, i64 %4437
  %4444 = getelementptr i8, ptr %4443, i64 %4434
  %4445 = getelementptr i8, ptr %4444, i64 %indvars.iv6112
  %4446 = load i8, ptr %4445, align 1, !tbaa !41
  %4447 = load ptr, ptr %63, align 8, !tbaa !50
  %4448 = load i64, ptr %6, align 8, !tbaa !19
  %4449 = getelementptr i8, ptr %4447, i64 %4448
  %4450 = getelementptr i8, ptr %4449, i64 %4405
  %4451 = getelementptr i8, ptr %4450, i64 %4438
  %4452 = getelementptr i8, ptr %4451, i64 %indvars.iv6112
  %4453 = load i8, ptr %4452, align 1, !tbaa !41
  %.sroa.449.0.insert.ext.us.us.us.us.us.us = zext i8 %4446 to i16
  %.sroa.449.0.insert.shift.us.us.us.us.us.us = shl nuw i16 %.sroa.449.0.insert.ext.us.us.us.us.us.us, 8
  %4454 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.449.0.insert.shift.us.us.us.us.us.us) #8
  %.sroa.447.0.insert.ext.us.us.us.us.us.us = zext i8 %4453 to i16
  %.sroa.447.0.insert.shift.us.us.us.us.us.us = shl nuw i16 %.sroa.447.0.insert.ext.us.us.us.us.us.us, 8
  %4455 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.447.0.insert.shift.us.us.us.us.us.us) #8
  %4456 = load float, ptr %4435, align 4, !tbaa !27
  %4457 = call float @llvm.fmuladd.f32(float %4454, float %4455, float %4456)
  store float %4457, ptr %4435, align 4, !tbaa !27
  %indvars.iv.next6113 = add nuw nsw i64 %indvars.iv6112, 1
  %exitcond6116.not = icmp eq i64 %indvars.iv.next6113, %wide.trip.count6115
  br i1 %exitcond6116.not, label %._crit_edge4171.us.us.us.us.us.us, label %4439, !llvm.loop !308

._crit_edge4171.us.us.us.us.us.us:                ; preds = %4439
  %indvars.iv.next6118 = add nuw nsw i64 %indvars.iv6117, 1
  %exitcond6121.not = icmp eq i64 %indvars.iv.next6118, %wide.trip.count6120
  br i1 %exitcond6121.not, label %._crit_edge4174.split.us.us.us.us.us.us, label %.preheader2916.us.us.us.us.us.us, !llvm.loop !309

._crit_edge4174.split.us.us.us.us.us.us:          ; preds = %._crit_edge4171.us.us.us.us.us.us
  %indvars.iv.next6123 = add nuw nsw i64 %indvars.iv6122, 1
  %exitcond6126.not = icmp eq i64 %indvars.iv.next6123, %4393
  br i1 %exitcond6126.not, label %._crit_edge4177.split.us.us.us.split.us.us, label %.lr.ph4176.split.us.us.us.split.us.us.split, !llvm.loop !310

._crit_edge4177.split.us.us.us.split.us.us:       ; preds = %._crit_edge4174.split.us.us.us.us.us.us.us, %._crit_edge4174.split.us.us.us.us.us.us
  %indvars.iv.next6128 = add nuw nsw i64 %indvars.iv6127, 1
  %exitcond6131.not = icmp eq i64 %indvars.iv.next6128, %wide.trip.count6130
  br i1 %exitcond6131.not, label %._crit_edge4187, label %.preheader2917.us.us.us, !llvm.loop !311

.preheader2917.lr.ph.split.us.split.us.split:     ; preds = %.preheader2917.lr.ph.split.us.split.us
  br i1 %4401, label %.preheader2917.lr.ph.split.us.split.us.split.split.us, label %._crit_edge4187

.preheader2917.lr.ph.split.us.split.us.split.split.us: ; preds = %.preheader2917.lr.ph.split.us.split.us.split
  %4458 = load double, ptr %4389, align 8, !tbaa !25
  %4459 = fcmp oeq double %4458, 0.000000e+00
  br i1 %4459, label %.preheader2917.us.us.us4211.us.preheader, label %._crit_edge4187

.preheader2917.us.us.us4211.us.preheader:         ; preds = %.preheader2917.lr.ph.split.us.split.us.split.split.us
  br i1 %4399, label %._crit_edge4187.loopexit7363.unr-lcssa, label %.preheader2917.us.us.us4211.us

.preheader2917.us.us.us4211.us:                   ; preds = %.preheader2917.us.us.us4211.us.preheader, %.preheader2917.us.us.us4211.us
  %indvar6088 = phi i64 [ %indvar.next6089.7, %.preheader2917.us.us.us4211.us ], [ 0, %.preheader2917.us.us.us4211.us.preheader ]
  %niter7658 = phi i64 [ %niter7658.next.7, %.preheader2917.us.us.us4211.us ], [ 0, %.preheader2917.us.us.us4211.us.preheader ]
  %4460 = mul i64 %4392, %indvar6088
  %scevgep6090 = getelementptr i8, ptr %3, i64 %4460
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089 = or disjoint i64 %indvar6088, 1
  %4461 = mul i64 %4392, %indvar.next6089
  %scevgep6090.1 = getelementptr i8, ptr %3, i64 %4461
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.1, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.1 = or disjoint i64 %indvar6088, 2
  %4462 = mul i64 %4392, %indvar.next6089.1
  %scevgep6090.2 = getelementptr i8, ptr %3, i64 %4462
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.2, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.2 = or disjoint i64 %indvar6088, 3
  %4463 = mul i64 %4392, %indvar.next6089.2
  %scevgep6090.3 = getelementptr i8, ptr %3, i64 %4463
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.3, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.3 = or disjoint i64 %indvar6088, 4
  %4464 = mul i64 %4392, %indvar.next6089.3
  %scevgep6090.4 = getelementptr i8, ptr %3, i64 %4464
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.4, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.4 = or disjoint i64 %indvar6088, 5
  %4465 = mul i64 %4392, %indvar.next6089.4
  %scevgep6090.5 = getelementptr i8, ptr %3, i64 %4465
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.5, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.5 = or disjoint i64 %indvar6088, 6
  %4466 = mul i64 %4392, %indvar.next6089.5
  %scevgep6090.6 = getelementptr i8, ptr %3, i64 %4466
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.6, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.6 = or disjoint i64 %indvar6088, 7
  %4467 = mul i64 %4392, %indvar.next6089.6
  %scevgep6090.7 = getelementptr i8, ptr %3, i64 %4467
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.7, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.7 = add nuw nsw i64 %indvar6088, 8
  %niter7658.next.7 = add i64 %niter7658, 8
  %niter7658.ncmp.7 = icmp eq i64 %niter7658.next.7, %unroll_iter7657
  br i1 %niter7658.ncmp.7, label %._crit_edge4187.loopexit7363.unr-lcssa, label %.preheader2917.us.us.us4211.us, !llvm.loop !311

.preheader2917.lr.ph.split.us.split:              ; preds = %.preheader2917.lr.ph.split.us
  br i1 %4401, label %.preheader2917.lr.ph.split.us.split.split.us, label %._crit_edge4187

.preheader2917.lr.ph.split.us.split.split.us:     ; preds = %.preheader2917.lr.ph.split.us.split
  %4468 = load double, ptr %4389, align 8, !tbaa !25
  %4469 = fcmp oeq double %4468, 0.000000e+00
  br i1 %4469, label %.preheader2917.us.us4195.us.preheader, label %._crit_edge4187

.preheader2917.us.us4195.us.preheader:            ; preds = %.preheader2917.lr.ph.split.us.split.split.us
  br i1 %4398, label %._crit_edge4187.loopexit7364.unr-lcssa, label %.preheader2917.us.us4195.us

.preheader2917.us.us4195.us:                      ; preds = %.preheader2917.us.us4195.us.preheader, %.preheader2917.us.us4195.us
  %indvar6070 = phi i64 [ %indvar.next6071.7, %.preheader2917.us.us4195.us ], [ 0, %.preheader2917.us.us4195.us.preheader ]
  %niter7653 = phi i64 [ %niter7653.next.7, %.preheader2917.us.us4195.us ], [ 0, %.preheader2917.us.us4195.us.preheader ]
  %4470 = mul i64 %4392, %indvar6070
  %scevgep6072 = getelementptr i8, ptr %3, i64 %4470
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071 = or disjoint i64 %indvar6070, 1
  %4471 = mul i64 %4392, %indvar.next6071
  %scevgep6072.1 = getelementptr i8, ptr %3, i64 %4471
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.1, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.1 = or disjoint i64 %indvar6070, 2
  %4472 = mul i64 %4392, %indvar.next6071.1
  %scevgep6072.2 = getelementptr i8, ptr %3, i64 %4472
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.2, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.2 = or disjoint i64 %indvar6070, 3
  %4473 = mul i64 %4392, %indvar.next6071.2
  %scevgep6072.3 = getelementptr i8, ptr %3, i64 %4473
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.3, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.3 = or disjoint i64 %indvar6070, 4
  %4474 = mul i64 %4392, %indvar.next6071.3
  %scevgep6072.4 = getelementptr i8, ptr %3, i64 %4474
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.4, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.4 = or disjoint i64 %indvar6070, 5
  %4475 = mul i64 %4392, %indvar.next6071.4
  %scevgep6072.5 = getelementptr i8, ptr %3, i64 %4475
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.5, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.5 = or disjoint i64 %indvar6070, 6
  %4476 = mul i64 %4392, %indvar.next6071.5
  %scevgep6072.6 = getelementptr i8, ptr %3, i64 %4476
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.6, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.6 = or disjoint i64 %indvar6070, 7
  %4477 = mul i64 %4392, %indvar.next6071.6
  %scevgep6072.7 = getelementptr i8, ptr %3, i64 %4477
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.7, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.7 = add nuw nsw i64 %indvar6070, 8
  %niter7653.next.7 = add i64 %niter7653, 8
  %niter7653.ncmp.7 = icmp eq i64 %niter7653.next.7, %unroll_iter7652
  br i1 %niter7653.ncmp.7, label %._crit_edge4187.loopexit7364.unr-lcssa, label %.preheader2917.us.us4195.us, !llvm.loop !311

._crit_edge4187.loopexit7363.unr-lcssa:           ; preds = %.preheader2917.us.us.us4211.us, %.preheader2917.us.us.us4211.us.preheader
  %indvar6088.unr = phi i64 [ 0, %.preheader2917.us.us.us4211.us.preheader ], [ %indvar.next6089.7, %.preheader2917.us.us.us4211.us ]
  br i1 %lcmp.mod7656.not, label %._crit_edge4187, label %.preheader2917.us.us.us4211.us.epil

.preheader2917.us.us.us4211.us.epil:              ; preds = %._crit_edge4187.loopexit7363.unr-lcssa, %.preheader2917.us.us.us4211.us.epil
  %indvar6088.epil = phi i64 [ %indvar.next6089.epil, %.preheader2917.us.us.us4211.us.epil ], [ %indvar6088.unr, %._crit_edge4187.loopexit7363.unr-lcssa ]
  %epil.iter7655 = phi i64 [ %epil.iter7655.next, %.preheader2917.us.us.us4211.us.epil ], [ 0, %._crit_edge4187.loopexit7363.unr-lcssa ]
  %4478 = mul i64 %4392, %indvar6088.epil
  %scevgep6090.epil = getelementptr i8, ptr %3, i64 %4478
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6090.epil, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6089.epil = add nuw nsw i64 %indvar6088.epil, 1
  %epil.iter7655.next = add i64 %epil.iter7655, 1
  %epil.iter7655.cmp.not = icmp eq i64 %epil.iter7655.next, %xtraiter7654
  br i1 %epil.iter7655.cmp.not, label %._crit_edge4187, label %.preheader2917.us.us.us4211.us.epil, !llvm.loop !312

._crit_edge4187.loopexit7364.unr-lcssa:           ; preds = %.preheader2917.us.us4195.us, %.preheader2917.us.us4195.us.preheader
  %indvar6070.unr = phi i64 [ 0, %.preheader2917.us.us4195.us.preheader ], [ %indvar.next6071.7, %.preheader2917.us.us4195.us ]
  br i1 %lcmp.mod7651.not, label %._crit_edge4187, label %.preheader2917.us.us4195.us.epil

.preheader2917.us.us4195.us.epil:                 ; preds = %._crit_edge4187.loopexit7364.unr-lcssa, %.preheader2917.us.us4195.us.epil
  %indvar6070.epil = phi i64 [ %indvar.next6071.epil, %.preheader2917.us.us4195.us.epil ], [ %indvar6070.unr, %._crit_edge4187.loopexit7364.unr-lcssa ]
  %epil.iter7650 = phi i64 [ %epil.iter7650.next, %.preheader2917.us.us4195.us.epil ], [ 0, %._crit_edge4187.loopexit7364.unr-lcssa ]
  %4479 = mul i64 %4392, %indvar6070.epil
  %scevgep6072.epil = getelementptr i8, ptr %3, i64 %4479
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6072.epil, i8 0, i64 %4394, i1 false), !tbaa !27
  %indvar.next6071.epil = add nuw nsw i64 %indvar6070.epil, 1
  %epil.iter7650.next = add i64 %epil.iter7650, 1
  %epil.iter7650.cmp.not = icmp eq i64 %epil.iter7650.next, %xtraiter7649
  br i1 %epil.iter7650.cmp.not, label %._crit_edge4187, label %.preheader2917.us.us4195.us.epil, !llvm.loop !313

._crit_edge4187:                                  ; preds = %._crit_edge4187.loopexit7364.unr-lcssa, %.preheader2917.us.us4195.us.epil, %._crit_edge4187.loopexit7363.unr-lcssa, %.preheader2917.us.us.us4211.us.epil, %._crit_edge4177.split.us.us.us.split.us.us, %.preheader2917.lr.ph.split.us.split.split.us, %.preheader2917.lr.ph.split.us.split, %.preheader2917.lr.ph.split.us.split.us.split.split.us, %.preheader2917.lr.ph.split.us.split.us.split, %.preheader2917.lr.ph, %4400
  %indvars.iv.next6133 = add nuw nsw i64 %indvars.iv6132, 1
  %4480 = load i32, ptr %4384, align 8, !tbaa !52
  %4481 = sext i32 %4480 to i64
  %4482 = icmp slt i64 %indvars.iv.next6133, %4481
  br i1 %4482, label %4400, label %._crit_edge4228, !llvm.loop !314

._crit_edge4228:                                  ; preds = %._crit_edge4187, %4382
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %.loopexit

4483:                                             ; preds = %4373, %4369, %4365, %4364
  br i1 %3604, label %4484, label %4602

4484:                                             ; preds = %4483
  %4485 = getelementptr inbounds i8, ptr %0, i64 4
  %4486 = load i32, ptr %4485, align 4, !tbaa !24
  %4487 = icmp eq i32 %4486, 5
  br i1 %4487, label %4488, label %4602

4488:                                             ; preds = %4484
  %4489 = getelementptr inbounds i8, ptr %0, i64 8
  %4490 = load i32, ptr %4489, align 8, !tbaa !26
  %4491 = icmp eq i32 %4490, 1
  br i1 %4491, label %4492, label %4602

4492:                                             ; preds = %4488
  %4493 = getelementptr inbounds i8, ptr %0, i64 12
  %4494 = load i32, ptr %4493, align 4, !tbaa !70
  %4495 = icmp eq i32 %4494, 1
  br i1 %4495, label %4496, label %4602

4496:                                             ; preds = %4492
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #8
  store ptr %1, ptr %64, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #8
  store ptr %2, ptr %65, align 8, !tbaa !50
  %4497 = getelementptr inbounds i8, ptr %0, i64 72
  %4498 = load i32, ptr %4497, align 8, !tbaa !225
  %.not2809 = icmp eq i32 %4498, 0
  br i1 %.not2809, label %4501, label %4499

4499:                                             ; preds = %4496
  %4500 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 5) #8
  br label %4501

4501:                                             ; preds = %4496, %4499
  %4502 = phi i32 [ %4500, %4499 ], [ 1, %4496 ]
  %4503 = getelementptr inbounds i8, ptr %0, i64 112
  %4504 = load i32, ptr %4503, align 8, !tbaa !52
  %4505 = icmp sgt i32 %4504, 0
  br i1 %4505, label %.lr.ph4166, label %._crit_edge4167

.lr.ph4166:                                       ; preds = %4501
  %4506 = icmp sgt i32 %79, 0
  %4507 = icmp sgt i32 %77, 0
  %4508 = getelementptr inbounds i8, ptr %0, i64 56
  %factor.op.mul4111 = mul i32 %4502, %71
  %4509 = icmp sgt i32 %4502, 0
  %4510 = sext i32 %75 to i64
  %4511 = shl nsw i64 %4510, 2
  %4512 = zext i32 %77 to i64
  %4513 = shl nuw nsw i64 %4512, 2
  %4514 = sext i32 %4502 to i64
  %4515 = sext i32 %73 to i64
  %wide.trip.count6003 = zext i32 %79 to i64
  %wide.trip.count6056 = zext nneg i32 %79 to i64
  %wide.trip.count6026 = zext nneg i32 %4502 to i64
  %wide.trip.count6041 = zext nneg i32 %4502 to i64
  %4516 = add nsw i64 %wide.trip.count6003, -1
  %xtraiter7640 = and i64 %wide.trip.count6003, 7
  %4517 = icmp ult i64 %4516, 7
  %unroll_iter7642 = and i64 %wide.trip.count6003, 2147483640
  %lcmp.mod7641.not = icmp eq i64 %xtraiter7640, 0
  %xtraiter7644 = and i64 %wide.trip.count6003, 7
  %4518 = icmp ult i64 %4516, 7
  %unroll_iter7647 = and i64 %wide.trip.count6003, 2147483640
  %lcmp.mod7646.not = icmp eq i64 %xtraiter7644, 0
  br label %4519

4519:                                             ; preds = %.lr.ph4166, %._crit_edge4126
  %indvars.iv6058 = phi i64 [ 0, %.lr.ph4166 ], [ %indvars.iv.next6059, %._crit_edge4126 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv6058, ptr noundef nonnull %0)
  br i1 %4506, label %.preheader2919.lr.ph, label %._crit_edge4126

.preheader2919.lr.ph:                             ; preds = %4519
  %4520 = icmp eq i64 %indvars.iv6058, 0
  br i1 %4507, label %.preheader2919.lr.ph.split.us, label %._crit_edge4126

.preheader2919.lr.ph.split.us:                    ; preds = %.preheader2919.lr.ph
  %4521 = sdiv i32 %.fr4927, %4502
  %4522 = icmp sgt i32 %4521, 0
  br i1 %4522, label %.preheader2919.lr.ph.split.us.split.us, label %.preheader2919.lr.ph.split.us.split

.preheader2919.lr.ph.split.us.split.us:           ; preds = %.preheader2919.lr.ph.split.us
  br i1 %4509, label %.preheader2919.lr.ph.split.us.split.us.split.us, label %.preheader2919.lr.ph.split.us.split.us.split

.preheader2919.lr.ph.split.us.split.us.split.us:  ; preds = %.preheader2919.lr.ph.split.us.split.us
  %wide.trip.count6031 = zext nneg i32 %4521 to i64
  %wide.trip.count6046 = zext nneg i32 %4521 to i64
  br label %.preheader2919.us.us.us

.preheader2919.us.us.us:                          ; preds = %._crit_edge4116.split.us.us.us.split.us.us, %.preheader2919.lr.ph.split.us.split.us.split.us
  %indvars.iv6053 = phi i64 [ %indvars.iv.next6054, %._crit_edge4116.split.us.us.us.split.us.us ], [ 0, %.preheader2919.lr.ph.split.us.split.us.split.us ]
  %4523 = mul nsw i64 %indvars.iv6053, %4510
  %4524 = mul nsw i64 %indvars.iv6053, %4515
  br i1 %4520, label %.lr.ph4115.split.us.us.us.split.us.us.split, label %.preheader2918.lr.ph.us.us.us.us.us.us.preheader

.preheader2918.lr.ph.us.us.us.us.us.us.preheader: ; preds = %.preheader2919.us.us.us
  %invariant.gep6700 = getelementptr float, ptr %3, i64 %4523
  br label %.preheader2918.lr.ph.us.us.us.us.us.us

.preheader2918.lr.ph.us.us.us.us.us.us:           ; preds = %.preheader2918.lr.ph.us.us.us.us.us.us.preheader, %._crit_edge4113.split.us.us.us.us.us.us.us
  %indvars.iv6033 = phi i64 [ 0, %.preheader2918.lr.ph.us.us.us.us.us.us.preheader ], [ %indvars.iv.next6034, %._crit_edge4113.split.us.us.us.us.us.us.us ]
  %4525 = mul nuw nsw i64 %indvars.iv6033, %4514
  %gep6701 = getelementptr float, ptr %invariant.gep6700, i64 %indvars.iv6033
  br label %.preheader2918.us.us.us.us.us.us.us

.preheader2918.us.us.us.us.us.us.us:              ; preds = %._crit_edge4110.us.us.us.us.us.us.us, %.preheader2918.lr.ph.us.us.us.us.us.us
  %indvars.iv6028 = phi i64 [ %indvars.iv.next6029, %._crit_edge4110.us.us.us.us.us.us.us ], [ 0, %.preheader2918.lr.ph.us.us.us.us.us.us ]
  %4526 = trunc nuw nsw i64 %indvars.iv6028 to i32
  %factor.op.mul4107.reass.us.us.us.us.us.us.us = mul i32 %factor.op.mul4111, %4526
  %4527 = sext i32 %factor.op.mul4107.reass.us.us.us.us.us.us.us to i64
  %4528 = mul nuw nsw i64 %indvars.iv6028, %4514
  br label %4529

4529:                                             ; preds = %4529, %.preheader2918.us.us.us.us.us.us.us
  %indvars.iv6023 = phi i64 [ %indvars.iv.next6024, %4529 ], [ 0, %.preheader2918.us.us.us.us.us.us.us ]
  %4530 = load ptr, ptr %64, align 8, !tbaa !50
  %4531 = load i64, ptr %5, align 8, !tbaa !19
  %4532 = getelementptr i8, ptr %4530, i64 %4531
  %4533 = getelementptr i8, ptr %4532, i64 %4527
  %4534 = getelementptr i8, ptr %4533, i64 %4525
  %4535 = getelementptr i8, ptr %4534, i64 %indvars.iv6023
  %4536 = load i8, ptr %4535, align 1, !tbaa !41
  %4537 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4536) #8
  %4538 = load ptr, ptr %65, align 8, !tbaa !50
  %4539 = load i64, ptr %6, align 8, !tbaa !19
  %4540 = getelementptr i8, ptr %4538, i64 %4539
  %4541 = getelementptr i8, ptr %4540, i64 %4524
  %4542 = getelementptr i8, ptr %4541, i64 %4528
  %4543 = getelementptr i8, ptr %4542, i64 %indvars.iv6023
  %4544 = load i8, ptr %4543, align 1, !tbaa !41
  %4545 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4544) #8
  %4546 = load float, ptr %gep6701, align 4, !tbaa !27
  %4547 = call float @llvm.fmuladd.f32(float %4537, float %4545, float %4546)
  store float %4547, ptr %gep6701, align 4, !tbaa !27
  %indvars.iv.next6024 = add nuw nsw i64 %indvars.iv6023, 1
  %exitcond6027.not = icmp eq i64 %indvars.iv.next6024, %wide.trip.count6026
  br i1 %exitcond6027.not, label %._crit_edge4110.us.us.us.us.us.us.us, label %4529, !llvm.loop !315

._crit_edge4110.us.us.us.us.us.us.us:             ; preds = %4529
  %indvars.iv.next6029 = add nuw nsw i64 %indvars.iv6028, 1
  %exitcond6032.not = icmp eq i64 %indvars.iv.next6029, %wide.trip.count6031
  br i1 %exitcond6032.not, label %._crit_edge4113.split.us.us.us.us.us.us.us, label %.preheader2918.us.us.us.us.us.us.us, !llvm.loop !316

._crit_edge4113.split.us.us.us.us.us.us.us:       ; preds = %._crit_edge4110.us.us.us.us.us.us.us
  %indvars.iv.next6034 = add nuw nsw i64 %indvars.iv6033, 1
  %exitcond6037.not = icmp eq i64 %indvars.iv.next6034, %4512
  br i1 %exitcond6037.not, label %._crit_edge4116.split.us.us.us.split.us.us, label %.preheader2918.lr.ph.us.us.us.us.us.us, !llvm.loop !317

.lr.ph4115.split.us.us.us.split.us.us.split:      ; preds = %.preheader2919.us.us.us, %._crit_edge4113.split.us.us.us.us.us.us
  %indvars.iv6048 = phi i64 [ %indvars.iv.next6049, %._crit_edge4113.split.us.us.us.us.us.us ], [ 0, %.preheader2919.us.us.us ]
  %4548 = load double, ptr %4508, align 8, !tbaa !25
  %4549 = fcmp oeq double %4548, 0.000000e+00
  %4550 = add nsw i64 %indvars.iv6048, %4523
  br i1 %4549, label %4551, label %.preheader2918.lr.ph.us.us.us.us.us

4551:                                             ; preds = %.lr.ph4115.split.us.us.us.split.us.us.split
  %4552 = getelementptr inbounds float, ptr %3, i64 %4550
  store float 0.000000e+00, ptr %4552, align 4, !tbaa !27
  br label %.preheader2918.lr.ph.us.us.us.us.us

.preheader2918.lr.ph.us.us.us.us.us:              ; preds = %.lr.ph4115.split.us.us.us.split.us.us.split, %4551
  %4553 = mul nuw nsw i64 %indvars.iv6048, %4514
  %4554 = getelementptr inbounds float, ptr %3, i64 %4550
  br label %.preheader2918.us.us.us.us.us.us

.preheader2918.us.us.us.us.us.us:                 ; preds = %._crit_edge4110.us.us.us.us.us.us, %.preheader2918.lr.ph.us.us.us.us.us
  %indvars.iv6043 = phi i64 [ %indvars.iv.next6044, %._crit_edge4110.us.us.us.us.us.us ], [ 0, %.preheader2918.lr.ph.us.us.us.us.us ]
  %4555 = trunc nuw nsw i64 %indvars.iv6043 to i32
  %factor.op.mul4107.reass.us.us.us.us.us.us = mul i32 %factor.op.mul4111, %4555
  %4556 = sext i32 %factor.op.mul4107.reass.us.us.us.us.us.us to i64
  %4557 = mul nuw nsw i64 %indvars.iv6043, %4514
  br label %4558

4558:                                             ; preds = %4558, %.preheader2918.us.us.us.us.us.us
  %indvars.iv6038 = phi i64 [ %indvars.iv.next6039, %4558 ], [ 0, %.preheader2918.us.us.us.us.us.us ]
  %4559 = load ptr, ptr %64, align 8, !tbaa !50
  %4560 = load i64, ptr %5, align 8, !tbaa !19
  %4561 = getelementptr i8, ptr %4559, i64 %4560
  %4562 = getelementptr i8, ptr %4561, i64 %4556
  %4563 = getelementptr i8, ptr %4562, i64 %4553
  %4564 = getelementptr i8, ptr %4563, i64 %indvars.iv6038
  %4565 = load i8, ptr %4564, align 1, !tbaa !41
  %4566 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4565) #8
  %4567 = load ptr, ptr %65, align 8, !tbaa !50
  %4568 = load i64, ptr %6, align 8, !tbaa !19
  %4569 = getelementptr i8, ptr %4567, i64 %4568
  %4570 = getelementptr i8, ptr %4569, i64 %4524
  %4571 = getelementptr i8, ptr %4570, i64 %4557
  %4572 = getelementptr i8, ptr %4571, i64 %indvars.iv6038
  %4573 = load i8, ptr %4572, align 1, !tbaa !41
  %4574 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4573) #8
  %4575 = load float, ptr %4554, align 4, !tbaa !27
  %4576 = call float @llvm.fmuladd.f32(float %4566, float %4574, float %4575)
  store float %4576, ptr %4554, align 4, !tbaa !27
  %indvars.iv.next6039 = add nuw nsw i64 %indvars.iv6038, 1
  %exitcond6042.not = icmp eq i64 %indvars.iv.next6039, %wide.trip.count6041
  br i1 %exitcond6042.not, label %._crit_edge4110.us.us.us.us.us.us, label %4558, !llvm.loop !315

._crit_edge4110.us.us.us.us.us.us:                ; preds = %4558
  %indvars.iv.next6044 = add nuw nsw i64 %indvars.iv6043, 1
  %exitcond6047.not = icmp eq i64 %indvars.iv.next6044, %wide.trip.count6046
  br i1 %exitcond6047.not, label %._crit_edge4113.split.us.us.us.us.us.us, label %.preheader2918.us.us.us.us.us.us, !llvm.loop !316

._crit_edge4113.split.us.us.us.us.us.us:          ; preds = %._crit_edge4110.us.us.us.us.us.us
  %indvars.iv.next6049 = add nuw nsw i64 %indvars.iv6048, 1
  %exitcond6052.not = icmp eq i64 %indvars.iv.next6049, %4512
  br i1 %exitcond6052.not, label %._crit_edge4116.split.us.us.us.split.us.us, label %.lr.ph4115.split.us.us.us.split.us.us.split, !llvm.loop !317

._crit_edge4116.split.us.us.us.split.us.us:       ; preds = %._crit_edge4113.split.us.us.us.us.us.us.us, %._crit_edge4113.split.us.us.us.us.us.us
  %indvars.iv.next6054 = add nuw nsw i64 %indvars.iv6053, 1
  %exitcond6057.not = icmp eq i64 %indvars.iv.next6054, %wide.trip.count6056
  br i1 %exitcond6057.not, label %._crit_edge4126, label %.preheader2919.us.us.us, !llvm.loop !318

.preheader2919.lr.ph.split.us.split.us.split:     ; preds = %.preheader2919.lr.ph.split.us.split.us
  br i1 %4520, label %.preheader2919.lr.ph.split.us.split.us.split.split.us, label %._crit_edge4126

.preheader2919.lr.ph.split.us.split.us.split.split.us: ; preds = %.preheader2919.lr.ph.split.us.split.us.split
  %4577 = load double, ptr %4508, align 8, !tbaa !25
  %4578 = fcmp oeq double %4577, 0.000000e+00
  br i1 %4578, label %.preheader2919.us.us.us4150.us.preheader, label %._crit_edge4126

.preheader2919.us.us.us4150.us.preheader:         ; preds = %.preheader2919.lr.ph.split.us.split.us.split.split.us
  br i1 %4518, label %._crit_edge4126.loopexit7366.unr-lcssa, label %.preheader2919.us.us.us4150.us

.preheader2919.us.us.us4150.us:                   ; preds = %.preheader2919.us.us.us4150.us.preheader, %.preheader2919.us.us.us4150.us
  %indvar6014 = phi i64 [ %indvar.next6015.7, %.preheader2919.us.us.us4150.us ], [ 0, %.preheader2919.us.us.us4150.us.preheader ]
  %niter7648 = phi i64 [ %niter7648.next.7, %.preheader2919.us.us.us4150.us ], [ 0, %.preheader2919.us.us.us4150.us.preheader ]
  %4579 = mul i64 %4511, %indvar6014
  %scevgep6016 = getelementptr i8, ptr %3, i64 %4579
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015 = or disjoint i64 %indvar6014, 1
  %4580 = mul i64 %4511, %indvar.next6015
  %scevgep6016.1 = getelementptr i8, ptr %3, i64 %4580
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.1, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.1 = or disjoint i64 %indvar6014, 2
  %4581 = mul i64 %4511, %indvar.next6015.1
  %scevgep6016.2 = getelementptr i8, ptr %3, i64 %4581
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.2, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.2 = or disjoint i64 %indvar6014, 3
  %4582 = mul i64 %4511, %indvar.next6015.2
  %scevgep6016.3 = getelementptr i8, ptr %3, i64 %4582
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.3, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.3 = or disjoint i64 %indvar6014, 4
  %4583 = mul i64 %4511, %indvar.next6015.3
  %scevgep6016.4 = getelementptr i8, ptr %3, i64 %4583
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.4, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.4 = or disjoint i64 %indvar6014, 5
  %4584 = mul i64 %4511, %indvar.next6015.4
  %scevgep6016.5 = getelementptr i8, ptr %3, i64 %4584
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.5, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.5 = or disjoint i64 %indvar6014, 6
  %4585 = mul i64 %4511, %indvar.next6015.5
  %scevgep6016.6 = getelementptr i8, ptr %3, i64 %4585
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.6, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.6 = or disjoint i64 %indvar6014, 7
  %4586 = mul i64 %4511, %indvar.next6015.6
  %scevgep6016.7 = getelementptr i8, ptr %3, i64 %4586
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.7, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.7 = add nuw nsw i64 %indvar6014, 8
  %niter7648.next.7 = add i64 %niter7648, 8
  %niter7648.ncmp.7 = icmp eq i64 %niter7648.next.7, %unroll_iter7647
  br i1 %niter7648.ncmp.7, label %._crit_edge4126.loopexit7366.unr-lcssa, label %.preheader2919.us.us.us4150.us, !llvm.loop !318

.preheader2919.lr.ph.split.us.split:              ; preds = %.preheader2919.lr.ph.split.us
  br i1 %4520, label %.preheader2919.lr.ph.split.us.split.split.us, label %._crit_edge4126

.preheader2919.lr.ph.split.us.split.split.us:     ; preds = %.preheader2919.lr.ph.split.us.split
  %4587 = load double, ptr %4508, align 8, !tbaa !25
  %4588 = fcmp oeq double %4587, 0.000000e+00
  br i1 %4588, label %.preheader2919.us.us4134.us.preheader, label %._crit_edge4126

.preheader2919.us.us4134.us.preheader:            ; preds = %.preheader2919.lr.ph.split.us.split.split.us
  br i1 %4517, label %._crit_edge4126.loopexit7367.unr-lcssa, label %.preheader2919.us.us4134.us

.preheader2919.us.us4134.us:                      ; preds = %.preheader2919.us.us4134.us.preheader, %.preheader2919.us.us4134.us
  %indvar5996 = phi i64 [ %indvar.next5997.7, %.preheader2919.us.us4134.us ], [ 0, %.preheader2919.us.us4134.us.preheader ]
  %niter7643 = phi i64 [ %niter7643.next.7, %.preheader2919.us.us4134.us ], [ 0, %.preheader2919.us.us4134.us.preheader ]
  %4589 = mul i64 %4511, %indvar5996
  %scevgep5998 = getelementptr i8, ptr %3, i64 %4589
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997 = or disjoint i64 %indvar5996, 1
  %4590 = mul i64 %4511, %indvar.next5997
  %scevgep5998.1 = getelementptr i8, ptr %3, i64 %4590
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.1, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.1 = or disjoint i64 %indvar5996, 2
  %4591 = mul i64 %4511, %indvar.next5997.1
  %scevgep5998.2 = getelementptr i8, ptr %3, i64 %4591
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.2, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.2 = or disjoint i64 %indvar5996, 3
  %4592 = mul i64 %4511, %indvar.next5997.2
  %scevgep5998.3 = getelementptr i8, ptr %3, i64 %4592
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.3, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.3 = or disjoint i64 %indvar5996, 4
  %4593 = mul i64 %4511, %indvar.next5997.3
  %scevgep5998.4 = getelementptr i8, ptr %3, i64 %4593
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.4, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.4 = or disjoint i64 %indvar5996, 5
  %4594 = mul i64 %4511, %indvar.next5997.4
  %scevgep5998.5 = getelementptr i8, ptr %3, i64 %4594
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.5, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.5 = or disjoint i64 %indvar5996, 6
  %4595 = mul i64 %4511, %indvar.next5997.5
  %scevgep5998.6 = getelementptr i8, ptr %3, i64 %4595
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.6, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.6 = or disjoint i64 %indvar5996, 7
  %4596 = mul i64 %4511, %indvar.next5997.6
  %scevgep5998.7 = getelementptr i8, ptr %3, i64 %4596
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.7, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.7 = add nuw nsw i64 %indvar5996, 8
  %niter7643.next.7 = add i64 %niter7643, 8
  %niter7643.ncmp.7 = icmp eq i64 %niter7643.next.7, %unroll_iter7642
  br i1 %niter7643.ncmp.7, label %._crit_edge4126.loopexit7367.unr-lcssa, label %.preheader2919.us.us4134.us, !llvm.loop !318

._crit_edge4126.loopexit7366.unr-lcssa:           ; preds = %.preheader2919.us.us.us4150.us, %.preheader2919.us.us.us4150.us.preheader
  %indvar6014.unr = phi i64 [ 0, %.preheader2919.us.us.us4150.us.preheader ], [ %indvar.next6015.7, %.preheader2919.us.us.us4150.us ]
  br i1 %lcmp.mod7646.not, label %._crit_edge4126, label %.preheader2919.us.us.us4150.us.epil

.preheader2919.us.us.us4150.us.epil:              ; preds = %._crit_edge4126.loopexit7366.unr-lcssa, %.preheader2919.us.us.us4150.us.epil
  %indvar6014.epil = phi i64 [ %indvar.next6015.epil, %.preheader2919.us.us.us4150.us.epil ], [ %indvar6014.unr, %._crit_edge4126.loopexit7366.unr-lcssa ]
  %epil.iter7645 = phi i64 [ %epil.iter7645.next, %.preheader2919.us.us.us4150.us.epil ], [ 0, %._crit_edge4126.loopexit7366.unr-lcssa ]
  %4597 = mul i64 %4511, %indvar6014.epil
  %scevgep6016.epil = getelementptr i8, ptr %3, i64 %4597
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep6016.epil, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next6015.epil = add nuw nsw i64 %indvar6014.epil, 1
  %epil.iter7645.next = add i64 %epil.iter7645, 1
  %epil.iter7645.cmp.not = icmp eq i64 %epil.iter7645.next, %xtraiter7644
  br i1 %epil.iter7645.cmp.not, label %._crit_edge4126, label %.preheader2919.us.us.us4150.us.epil, !llvm.loop !319

._crit_edge4126.loopexit7367.unr-lcssa:           ; preds = %.preheader2919.us.us4134.us, %.preheader2919.us.us4134.us.preheader
  %indvar5996.unr = phi i64 [ 0, %.preheader2919.us.us4134.us.preheader ], [ %indvar.next5997.7, %.preheader2919.us.us4134.us ]
  br i1 %lcmp.mod7641.not, label %._crit_edge4126, label %.preheader2919.us.us4134.us.epil

.preheader2919.us.us4134.us.epil:                 ; preds = %._crit_edge4126.loopexit7367.unr-lcssa, %.preheader2919.us.us4134.us.epil
  %indvar5996.epil = phi i64 [ %indvar.next5997.epil, %.preheader2919.us.us4134.us.epil ], [ %indvar5996.unr, %._crit_edge4126.loopexit7367.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader2919.us.us4134.us.epil ], [ 0, %._crit_edge4126.loopexit7367.unr-lcssa ]
  %4598 = mul i64 %4511, %indvar5996.epil
  %scevgep5998.epil = getelementptr i8, ptr %3, i64 %4598
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep5998.epil, i8 0, i64 %4513, i1 false), !tbaa !27
  %indvar.next5997.epil = add nuw nsw i64 %indvar5996.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter7640
  br i1 %epil.iter.cmp.not, label %._crit_edge4126, label %.preheader2919.us.us4134.us.epil, !llvm.loop !320

._crit_edge4126:                                  ; preds = %._crit_edge4126.loopexit7367.unr-lcssa, %.preheader2919.us.us4134.us.epil, %._crit_edge4126.loopexit7366.unr-lcssa, %.preheader2919.us.us.us4150.us.epil, %._crit_edge4116.split.us.us.us.split.us.us, %.preheader2919.lr.ph.split.us.split.split.us, %.preheader2919.lr.ph.split.us.split, %.preheader2919.lr.ph.split.us.split.us.split.split.us, %.preheader2919.lr.ph.split.us.split.us.split, %.preheader2919.lr.ph, %4519
  %indvars.iv.next6059 = add nuw nsw i64 %indvars.iv6058, 1
  %4599 = load i32, ptr %4503, align 8, !tbaa !52
  %4600 = sext i32 %4599 to i64
  %4601 = icmp slt i64 %indvars.iv.next6059, %4600
  br i1 %4601, label %4519, label %._crit_edge4167, !llvm.loop !321

._crit_edge4167:                                  ; preds = %._crit_edge4126, %4501
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %.loopexit

4602:                                             ; preds = %4492, %4488, %4484, %4483
  br i1 %2332, label %4603, label %4681

4603:                                             ; preds = %4602
  %4604 = getelementptr inbounds i8, ptr %0, i64 4
  %4605 = load i32, ptr %4604, align 4, !tbaa !24
  %4606 = icmp eq i32 %4605, 4
  br i1 %4606, label %4607, label %4681

4607:                                             ; preds = %4603
  %4608 = getelementptr inbounds i8, ptr %0, i64 8
  %4609 = load i32, ptr %4608, align 8, !tbaa !26
  %4610 = icmp eq i32 %4609, 4
  br i1 %4610, label %4611, label %4681

4611:                                             ; preds = %4607
  %4612 = getelementptr inbounds i8, ptr %0, i64 12
  %4613 = load i32, ptr %4612, align 4, !tbaa !70
  %4614 = icmp eq i32 %4613, 1
  br i1 %4614, label %4615, label %4681

4615:                                             ; preds = %4611
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #8
  store ptr %1, ptr %66, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #8
  store ptr %2, ptr %67, align 8, !tbaa !50
  %4616 = getelementptr inbounds i8, ptr %0, i64 72
  %4617 = load i32, ptr %4616, align 8, !tbaa !225
  %.not2808 = icmp eq i32 %4617, 0
  br i1 %.not2808, label %4621, label %4618

4618:                                             ; preds = %4615
  %4619 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %712) #8
  %4620 = freeze i32 %4619
  br label %4621

4621:                                             ; preds = %4615, %4618
  %.fr4942 = phi i32 [ %4620, %4618 ], [ 1, %4615 ]
  %4622 = icmp sgt i32 %79, 0
  br i1 %4622, label %.preheader2921.lr.ph, label %._crit_edge4106

.preheader2921.lr.ph:                             ; preds = %4621
  %4623 = icmp sgt i32 %77, 0
  %4624 = getelementptr inbounds i8, ptr %0, i64 56
  %4625 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4088 = mul i32 %.fr4942, %71
  %4626 = icmp sgt i32 %.fr4942, 0
  %4627 = sext i32 %.fr4942 to i64
  %4628 = sext i32 %73 to i64
  %4629 = sext i32 %75 to i64
  %wide.trip.count5988 = zext nneg i32 %79 to i64
  %wide.trip.count5965 = zext nneg i32 %77 to i64
  %wide.trip.count5983 = zext nneg i32 %77 to i64
  %wide.trip.count5970 = zext nneg i32 %.fr4942 to i64
  br label %.preheader2921

.preheader2921:                                   ; preds = %.preheader2921.lr.ph, %._crit_edge4104
  %indvars.iv5985 = phi i64 [ 0, %.preheader2921.lr.ph ], [ %indvars.iv.next5986, %._crit_edge4104 ]
  br i1 %4623, label %.lr.ph4103, label %._crit_edge4104

.lr.ph4103:                                       ; preds = %.preheader2921
  %4630 = mul nsw i64 %indvars.iv5985, %4629
  %4631 = mul nsw i64 %indvars.iv5985, %4628
  %invariant.gep6696 = getelementptr i8, ptr %3, i64 %4630
  %invariant.gep6698 = getelementptr i8, ptr %3, i64 %4630
  br i1 %4626, label %.lr.ph4103.split.us, label %.lr.ph4103.split

.lr.ph4103.split.us:                              ; preds = %.lr.ph4103, %._crit_edge4097.split.us.us
  %indvars.iv5980 = phi i64 [ %indvars.iv.next5981, %._crit_edge4097.split.us.us ], [ 0, %.lr.ph4103 ]
  %4632 = load double, ptr %4624, align 8, !tbaa !25
  %4633 = fcmp oeq double %4632, 0.000000e+00
  br i1 %4633, label %4637, label %4634

4634:                                             ; preds = %.lr.ph4103.split.us
  %gep6697 = getelementptr i8, ptr %invariant.gep6696, i64 %indvars.iv5980
  %4635 = load i8, ptr %gep6697, align 1, !tbaa !41
  %.sroa.424.0.insert.ext.us = zext i8 %4635 to i16
  %.sroa.424.0.insert.shift.us = shl nuw i16 %.sroa.424.0.insert.ext.us, 8
  %4636 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.424.0.insert.shift.us) #8
  br label %4637

4637:                                             ; preds = %4634, %.lr.ph4103.split.us
  %.02658.us = phi float [ %4636, %4634 ], [ 0.000000e+00, %.lr.ph4103.split.us ]
  %4638 = load i32, ptr %4625, align 8, !tbaa !52
  %4639 = icmp sgt i32 %4638, 0
  br i1 %4639, label %.lr.ph4096.us, label %._crit_edge4097.split.us.us

._crit_edge4097.split.us.us:                      ; preds = %._crit_edge4091.split.us.us.us, %4637
  %.12659.lcssa.us = phi float [ %.02658.us, %4637 ], [ %.22660.lcssa.us.us, %._crit_edge4091.split.us.us.us ]
  %4640 = call zeroext i8 @libxsmm_convert_f32_to_bf8_rne(float noundef %.12659.lcssa.us) #8
  %gep6699 = getelementptr i8, ptr %invariant.gep6698, i64 %indvars.iv5980
  store i8 %4640, ptr %gep6699, align 1, !tbaa !41
  %indvars.iv.next5981 = add nuw nsw i64 %indvars.iv5980, 1
  %exitcond5984.not = icmp eq i64 %indvars.iv.next5981, %wide.trip.count5983
  br i1 %exitcond5984.not, label %._crit_edge4104, label %.lr.ph4103.split.us, !llvm.loop !322

.lr.ph4096.us:                                    ; preds = %4637
  %4641 = mul nuw nsw i64 %indvars.iv5980, %4627
  br label %4642

4642:                                             ; preds = %._crit_edge4091.split.us.us.us, %.lr.ph4096.us
  %indvars.iv5977 = phi i64 [ %indvars.iv.next5978, %._crit_edge4091.split.us.us.us ], [ 0, %.lr.ph4096.us ]
  %.126594093.us.us = phi float [ %.22660.lcssa.us.us, %._crit_edge4091.split.us.us.us ], [ %.02658.us, %.lr.ph4096.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5977, ptr noundef nonnull %0)
  %4643 = sdiv i32 %.fr4927, %.fr4942
  %4644 = icmp sgt i32 %4643, 0
  br i1 %4644, label %.preheader2920.us.us.us.preheader, label %._crit_edge4091.split.us.us.us

.preheader2920.us.us.us.preheader:                ; preds = %4642
  %wide.trip.count5975 = zext nneg i32 %4643 to i64
  br label %.preheader2920.us.us.us

._crit_edge4091.split.us.us.us:                   ; preds = %._crit_edge4086.us.us.us, %4642
  %.22660.lcssa.us.us = phi float [ %.126594093.us.us, %4642 ], [ %4668, %._crit_edge4086.us.us.us ]
  %indvars.iv.next5978 = add nuw nsw i64 %indvars.iv5977, 1
  %4645 = load i32, ptr %4625, align 8, !tbaa !52
  %4646 = sext i32 %4645 to i64
  %4647 = icmp slt i64 %indvars.iv.next5978, %4646
  br i1 %4647, label %4642, label %._crit_edge4097.split.us.us, !llvm.loop !323

.preheader2920.us.us.us:                          ; preds = %.preheader2920.us.us.us.preheader, %._crit_edge4086.us.us.us
  %indvars.iv5972 = phi i64 [ 0, %.preheader2920.us.us.us.preheader ], [ %indvars.iv.next5973, %._crit_edge4086.us.us.us ]
  %.226604089.us.us.us = phi float [ %.126594093.us.us, %.preheader2920.us.us.us.preheader ], [ %4668, %._crit_edge4086.us.us.us ]
  %4648 = trunc nuw nsw i64 %indvars.iv5972 to i32
  %factor.op.mul4082.reass.us.us.us = mul i32 %factor.op.mul4088, %4648
  %4649 = sext i32 %factor.op.mul4082.reass.us.us.us to i64
  %4650 = mul nuw nsw i64 %indvars.iv5972, %4627
  br label %4651

4651:                                             ; preds = %4651, %.preheader2920.us.us.us
  %indvars.iv5967 = phi i64 [ %indvars.iv.next5968, %4651 ], [ 0, %.preheader2920.us.us.us ]
  %.326614083.us.us.us = phi float [ %4668, %4651 ], [ %.226604089.us.us.us, %.preheader2920.us.us.us ]
  %4652 = load ptr, ptr %66, align 8, !tbaa !50
  %4653 = load i64, ptr %5, align 8, !tbaa !19
  %4654 = getelementptr i8, ptr %4652, i64 %4653
  %4655 = getelementptr i8, ptr %4654, i64 %4649
  %4656 = getelementptr i8, ptr %4655, i64 %4641
  %4657 = getelementptr i8, ptr %4656, i64 %indvars.iv5967
  %4658 = load i8, ptr %4657, align 1, !tbaa !41
  %4659 = load ptr, ptr %67, align 8, !tbaa !50
  %4660 = load i64, ptr %6, align 8, !tbaa !19
  %4661 = getelementptr i8, ptr %4659, i64 %4660
  %4662 = getelementptr i8, ptr %4661, i64 %4631
  %4663 = getelementptr i8, ptr %4662, i64 %4650
  %4664 = getelementptr i8, ptr %4663, i64 %indvars.iv5967
  %4665 = load i8, ptr %4664, align 1, !tbaa !41
  %.sroa.422.0.insert.ext.us.us.us = zext i8 %4658 to i16
  %.sroa.422.0.insert.shift.us.us.us = shl nuw i16 %.sroa.422.0.insert.ext.us.us.us, 8
  %4666 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.422.0.insert.shift.us.us.us) #8
  %.sroa.4.0.insert.ext.us.us.us = zext i8 %4665 to i16
  %.sroa.4.0.insert.shift.us.us.us = shl nuw i16 %.sroa.4.0.insert.ext.us.us.us, 8
  %4667 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.4.0.insert.shift.us.us.us) #8
  %4668 = call float @llvm.fmuladd.f32(float %4666, float %4667, float %.326614083.us.us.us)
  %indvars.iv.next5968 = add nuw nsw i64 %indvars.iv5967, 1
  %exitcond5971.not = icmp eq i64 %indvars.iv.next5968, %wide.trip.count5970
  br i1 %exitcond5971.not, label %._crit_edge4086.us.us.us, label %4651, !llvm.loop !324

._crit_edge4086.us.us.us:                         ; preds = %4651
  %indvars.iv.next5973 = add nuw nsw i64 %indvars.iv5972, 1
  %exitcond5976.not = icmp eq i64 %indvars.iv.next5973, %wide.trip.count5975
  br i1 %exitcond5976.not, label %._crit_edge4091.split.us.us.us, label %.preheader2920.us.us.us, !llvm.loop !325

.lr.ph4103.split:                                 ; preds = %.lr.ph4103, %._crit_edge4097.split
  %indvars.iv5962 = phi i64 [ %indvars.iv.next5963, %._crit_edge4097.split ], [ 0, %.lr.ph4103 ]
  %4669 = load double, ptr %4624, align 8, !tbaa !25
  %4670 = fcmp oeq double %4669, 0.000000e+00
  br i1 %4670, label %4674, label %4671

4671:                                             ; preds = %.lr.ph4103.split
  %gep6693 = getelementptr i8, ptr %invariant.gep6696, i64 %indvars.iv5962
  %4672 = load i8, ptr %gep6693, align 1, !tbaa !41
  %.sroa.424.0.insert.ext = zext i8 %4672 to i16
  %.sroa.424.0.insert.shift = shl nuw i16 %.sroa.424.0.insert.ext, 8
  %4673 = call float @libxsmm_convert_f16_to_f32(i16 noundef zeroext %.sroa.424.0.insert.shift) #8
  br label %4674

4674:                                             ; preds = %.lr.ph4103.split, %4671
  %.02658 = phi float [ %4673, %4671 ], [ 0.000000e+00, %.lr.ph4103.split ]
  %4675 = load i32, ptr %4625, align 8, !tbaa !52
  %4676 = icmp sgt i32 %4675, 0
  br i1 %4676, label %.lr.ph4096, label %._crit_edge4097.split

.lr.ph4096:                                       ; preds = %4674, %.lr.ph4096
  %indvars.iv5959 = phi i64 [ %indvars.iv.next5960, %.lr.ph4096 ], [ 0, %4674 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5959, ptr noundef nonnull %0)
  %indvars.iv.next5960 = add nuw nsw i64 %indvars.iv5959, 1
  %4677 = load i32, ptr %4625, align 8, !tbaa !52
  %4678 = sext i32 %4677 to i64
  %4679 = icmp slt i64 %indvars.iv.next5960, %4678
  br i1 %4679, label %.lr.ph4096, label %._crit_edge4097.split, !llvm.loop !323

._crit_edge4097.split:                            ; preds = %.lr.ph4096, %4674
  %4680 = call zeroext i8 @libxsmm_convert_f32_to_bf8_rne(float noundef %.02658) #8
  %gep6695 = getelementptr i8, ptr %invariant.gep6698, i64 %indvars.iv5962
  store i8 %4680, ptr %gep6695, align 1, !tbaa !41
  %indvars.iv.next5963 = add nuw nsw i64 %indvars.iv5962, 1
  %exitcond5966.not = icmp eq i64 %indvars.iv.next5963, %wide.trip.count5965
  br i1 %exitcond5966.not, label %._crit_edge4104, label %.lr.ph4103.split, !llvm.loop !322

._crit_edge4104:                                  ; preds = %._crit_edge4097.split, %._crit_edge4097.split.us.us, %.preheader2921
  %indvars.iv.next5986 = add nuw nsw i64 %indvars.iv5985, 1
  %exitcond5989.not = icmp eq i64 %indvars.iv.next5986, %wide.trip.count5988
  br i1 %exitcond5989.not, label %._crit_edge4106, label %.preheader2921, !llvm.loop !326

._crit_edge4106:                                  ; preds = %._crit_edge4104, %4621
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #8
  br label %.loopexit

4681:                                             ; preds = %4611, %4607, %4603, %4602
  br i1 %3604, label %4682, label %.loopexit

4682:                                             ; preds = %4681
  %4683 = getelementptr inbounds i8, ptr %0, i64 4
  %4684 = load i32, ptr %4683, align 4, !tbaa !24
  %4685 = icmp eq i32 %4684, 5
  br i1 %4685, label %4686, label %.loopexit

4686:                                             ; preds = %4682
  %4687 = getelementptr inbounds i8, ptr %0, i64 8
  %4688 = load i32, ptr %4687, align 8, !tbaa !26
  %4689 = icmp eq i32 %4688, 5
  br i1 %4689, label %4690, label %.loopexit

4690:                                             ; preds = %4686
  %4691 = getelementptr inbounds i8, ptr %0, i64 12
  %4692 = load i32, ptr %4691, align 4, !tbaa !70
  %4693 = icmp eq i32 %4692, 1
  br i1 %4693, label %4694, label %.loopexit

4694:                                             ; preds = %4690
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #8
  store ptr %1, ptr %68, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #8
  store ptr %2, ptr %69, align 8, !tbaa !50
  %4695 = getelementptr inbounds i8, ptr %0, i64 72
  %4696 = load i32, ptr %4695, align 8, !tbaa !225
  %.not2807 = icmp eq i32 %4696, 0
  br i1 %.not2807, label %4700, label %4697

4697:                                             ; preds = %4694
  %4698 = tail call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef 5) #8
  %4699 = freeze i32 %4698
  br label %4700

4700:                                             ; preds = %4694, %4697
  %.fr4941 = phi i32 [ %4699, %4697 ], [ 1, %4694 ]
  %4701 = icmp sgt i32 %79, 0
  br i1 %4701, label %.preheader2923.lr.ph, label %._crit_edge4081

.preheader2923.lr.ph:                             ; preds = %4700
  %4702 = icmp sgt i32 %77, 0
  %4703 = getelementptr inbounds i8, ptr %0, i64 56
  %4704 = getelementptr inbounds i8, ptr %0, i64 112
  %factor.op.mul4063 = mul i32 %.fr4941, %71
  %4705 = icmp sgt i32 %.fr4941, 0
  %4706 = sext i32 %.fr4941 to i64
  %4707 = sext i32 %73 to i64
  %4708 = sext i32 %75 to i64
  %wide.trip.count5957 = zext nneg i32 %79 to i64
  %wide.trip.count5934 = zext nneg i32 %77 to i64
  %wide.trip.count5952 = zext nneg i32 %77 to i64
  %wide.trip.count5939 = zext nneg i32 %.fr4941 to i64
  br label %.preheader2923

.preheader2923:                                   ; preds = %.preheader2923.lr.ph, %._crit_edge4079
  %indvars.iv5954 = phi i64 [ 0, %.preheader2923.lr.ph ], [ %indvars.iv.next5955, %._crit_edge4079 ]
  br i1 %4702, label %.lr.ph4078, label %._crit_edge4079

.lr.ph4078:                                       ; preds = %.preheader2923
  %4709 = mul nsw i64 %indvars.iv5954, %4708
  %4710 = mul nsw i64 %indvars.iv5954, %4707
  %invariant.gep6688 = getelementptr i8, ptr %3, i64 %4709
  %invariant.gep6690 = getelementptr i8, ptr %3, i64 %4709
  br i1 %4705, label %.lr.ph4078.split.us, label %.lr.ph4078.split

.lr.ph4078.split.us:                              ; preds = %.lr.ph4078, %._crit_edge4072.split.us.us
  %indvars.iv5949 = phi i64 [ %indvars.iv.next5950, %._crit_edge4072.split.us.us ], [ 0, %.lr.ph4078 ]
  %4711 = load double, ptr %4703, align 8, !tbaa !25
  %4712 = fcmp oeq double %4711, 0.000000e+00
  br i1 %4712, label %4716, label %4713

4713:                                             ; preds = %.lr.ph4078.split.us
  %gep6689 = getelementptr i8, ptr %invariant.gep6688, i64 %indvars.iv5949
  %4714 = load i8, ptr %gep6689, align 1, !tbaa !41
  %4715 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4714) #8
  br label %4716

4716:                                             ; preds = %4713, %.lr.ph4078.split.us
  %.02615.us = phi float [ %4715, %4713 ], [ 0.000000e+00, %.lr.ph4078.split.us ]
  %4717 = load i32, ptr %4704, align 8, !tbaa !52
  %4718 = icmp sgt i32 %4717, 0
  br i1 %4718, label %.lr.ph4071.us, label %._crit_edge4072.split.us.us

._crit_edge4072.split.us.us:                      ; preds = %._crit_edge4066.split.us.us.us, %4716
  %.12616.lcssa.us = phi float [ %.02615.us, %4716 ], [ %.22617.lcssa.us.us, %._crit_edge4066.split.us.us.us ]
  %4719 = call zeroext i8 @libxsmm_convert_f32_to_hf8_rne(float noundef %.12616.lcssa.us) #8
  %gep6691 = getelementptr i8, ptr %invariant.gep6690, i64 %indvars.iv5949
  store i8 %4719, ptr %gep6691, align 1, !tbaa !41
  %indvars.iv.next5950 = add nuw nsw i64 %indvars.iv5949, 1
  %exitcond5953.not = icmp eq i64 %indvars.iv.next5950, %wide.trip.count5952
  br i1 %exitcond5953.not, label %._crit_edge4079, label %.lr.ph4078.split.us, !llvm.loop !327

.lr.ph4071.us:                                    ; preds = %4716
  %4720 = mul nuw nsw i64 %indvars.iv5949, %4706
  br label %4721

4721:                                             ; preds = %._crit_edge4066.split.us.us.us, %.lr.ph4071.us
  %indvars.iv5946 = phi i64 [ %indvars.iv.next5947, %._crit_edge4066.split.us.us.us ], [ 0, %.lr.ph4071.us ]
  %.126164068.us.us = phi float [ %.22617.lcssa.us.us, %._crit_edge4066.split.us.us.us ], [ %.02615.us, %.lr.ph4071.us ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %68, ptr noundef nonnull %69, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5946, ptr noundef nonnull %0)
  %4722 = sdiv i32 %.fr4927, %.fr4941
  %4723 = icmp sgt i32 %4722, 0
  br i1 %4723, label %.preheader2922.us.us.us.preheader, label %._crit_edge4066.split.us.us.us

.preheader2922.us.us.us.preheader:                ; preds = %4721
  %wide.trip.count5944 = zext nneg i32 %4722 to i64
  br label %.preheader2922.us.us.us

._crit_edge4066.split.us.us.us:                   ; preds = %._crit_edge4061.us.us.us, %4721
  %.22617.lcssa.us.us = phi float [ %.126164068.us.us, %4721 ], [ %4747, %._crit_edge4061.us.us.us ]
  %indvars.iv.next5947 = add nuw nsw i64 %indvars.iv5946, 1
  %4724 = load i32, ptr %4704, align 8, !tbaa !52
  %4725 = sext i32 %4724 to i64
  %4726 = icmp slt i64 %indvars.iv.next5947, %4725
  br i1 %4726, label %4721, label %._crit_edge4072.split.us.us, !llvm.loop !328

.preheader2922.us.us.us:                          ; preds = %.preheader2922.us.us.us.preheader, %._crit_edge4061.us.us.us
  %indvars.iv5941 = phi i64 [ 0, %.preheader2922.us.us.us.preheader ], [ %indvars.iv.next5942, %._crit_edge4061.us.us.us ]
  %.226174064.us.us.us = phi float [ %.126164068.us.us, %.preheader2922.us.us.us.preheader ], [ %4747, %._crit_edge4061.us.us.us ]
  %4727 = trunc nuw nsw i64 %indvars.iv5941 to i32
  %factor.op.mul4057.reass.us.us.us = mul i32 %factor.op.mul4063, %4727
  %4728 = sext i32 %factor.op.mul4057.reass.us.us.us to i64
  %4729 = mul nuw nsw i64 %indvars.iv5941, %4706
  br label %4730

4730:                                             ; preds = %4730, %.preheader2922.us.us.us
  %indvars.iv5936 = phi i64 [ %indvars.iv.next5937, %4730 ], [ 0, %.preheader2922.us.us.us ]
  %.326184059.us.us.us = phi float [ %4747, %4730 ], [ %.226174064.us.us.us, %.preheader2922.us.us.us ]
  %4731 = load ptr, ptr %68, align 8, !tbaa !50
  %4732 = load i64, ptr %5, align 8, !tbaa !19
  %4733 = getelementptr i8, ptr %4731, i64 %4732
  %4734 = getelementptr i8, ptr %4733, i64 %4728
  %4735 = getelementptr i8, ptr %4734, i64 %4720
  %4736 = getelementptr i8, ptr %4735, i64 %indvars.iv5936
  %4737 = load i8, ptr %4736, align 1, !tbaa !41
  %4738 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4737) #8
  %4739 = load ptr, ptr %69, align 8, !tbaa !50
  %4740 = load i64, ptr %6, align 8, !tbaa !19
  %4741 = getelementptr i8, ptr %4739, i64 %4740
  %4742 = getelementptr i8, ptr %4741, i64 %4710
  %4743 = getelementptr i8, ptr %4742, i64 %4729
  %4744 = getelementptr i8, ptr %4743, i64 %indvars.iv5936
  %4745 = load i8, ptr %4744, align 1, !tbaa !41
  %4746 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4745) #8
  %4747 = call float @llvm.fmuladd.f32(float %4738, float %4746, float %.326184059.us.us.us)
  %indvars.iv.next5937 = add nuw nsw i64 %indvars.iv5936, 1
  %exitcond5940.not = icmp eq i64 %indvars.iv.next5937, %wide.trip.count5939
  br i1 %exitcond5940.not, label %._crit_edge4061.us.us.us, label %4730, !llvm.loop !329

._crit_edge4061.us.us.us:                         ; preds = %4730
  %indvars.iv.next5942 = add nuw nsw i64 %indvars.iv5941, 1
  %exitcond5945.not = icmp eq i64 %indvars.iv.next5942, %wide.trip.count5944
  br i1 %exitcond5945.not, label %._crit_edge4066.split.us.us.us, label %.preheader2922.us.us.us, !llvm.loop !330

.lr.ph4078.split:                                 ; preds = %.lr.ph4078, %._crit_edge4072.split
  %indvars.iv5931 = phi i64 [ %indvars.iv.next5932, %._crit_edge4072.split ], [ 0, %.lr.ph4078 ]
  %4748 = load double, ptr %4703, align 8, !tbaa !25
  %4749 = fcmp oeq double %4748, 0.000000e+00
  br i1 %4749, label %4753, label %4750

4750:                                             ; preds = %.lr.ph4078.split
  %gep6685 = getelementptr i8, ptr %invariant.gep6688, i64 %indvars.iv5931
  %4751 = load i8, ptr %gep6685, align 1, !tbaa !41
  %4752 = call float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext %4751) #8
  br label %4753

4753:                                             ; preds = %.lr.ph4078.split, %4750
  %.02615 = phi float [ %4752, %4750 ], [ 0.000000e+00, %.lr.ph4078.split ]
  %4754 = load i32, ptr %4704, align 8, !tbaa !52
  %4755 = icmp sgt i32 %4754, 0
  br i1 %4755, label %.lr.ph4071, label %._crit_edge4072.split

.lr.ph4071:                                       ; preds = %4753, %.lr.ph4071
  %indvars.iv5928 = phi i64 [ %indvars.iv.next5929, %.lr.ph4071 ], [ 0, %4753 ]
  call void @libxsmm_calculate_brgemm_offsets(ptr noundef nonnull %68, ptr noundef nonnull %69, ptr noundef nonnull %5, ptr noundef nonnull %6, i64 noundef %indvars.iv5928, ptr noundef nonnull %0)
  %indvars.iv.next5929 = add nuw nsw i64 %indvars.iv5928, 1
  %4756 = load i32, ptr %4704, align 8, !tbaa !52
  %4757 = sext i32 %4756 to i64
  %4758 = icmp slt i64 %indvars.iv.next5929, %4757
  br i1 %4758, label %.lr.ph4071, label %._crit_edge4072.split, !llvm.loop !328

._crit_edge4072.split:                            ; preds = %.lr.ph4071, %4753
  %4759 = call zeroext i8 @libxsmm_convert_f32_to_hf8_rne(float noundef %.02615) #8
  %gep6687 = getelementptr i8, ptr %invariant.gep6690, i64 %indvars.iv5931
  store i8 %4759, ptr %gep6687, align 1, !tbaa !41
  %indvars.iv.next5932 = add nuw nsw i64 %indvars.iv5931, 1
  %exitcond5935.not = icmp eq i64 %indvars.iv.next5932, %wide.trip.count5934
  br i1 %exitcond5935.not, label %._crit_edge4079, label %.lr.ph4078.split, !llvm.loop !327

._crit_edge4079:                                  ; preds = %._crit_edge4072.split, %._crit_edge4072.split.us.us, %.preheader2923
  %indvars.iv.next5955 = add nuw nsw i64 %indvars.iv5954, 1
  %exitcond5958.not = icmp eq i64 %indvars.iv.next5955, %wide.trip.count5957
  br i1 %exitcond5958.not, label %._crit_edge4081, label %.preheader2923, !llvm.loop !331

._crit_edge4081:                                  ; preds = %._crit_edge4079, %4700
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #8
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge3036, %._crit_edge3033, %._crit_edge3063, %._crit_edge3106, %._crit_edge3411, %._crit_edge3354, %._crit_edge3310, %._crit_edge3266, %._crit_edge3216, %._crit_edge3168, %._crit_edge3463, %._crit_edge3495, %._crit_edge4056, %._crit_edge4920, %._crit_edge4830, %._crit_edge4717, %._crit_edge4167, %4681, %4682, %4686, %4690, %._crit_edge4081, %._crit_edge4106, %._crit_edge4228, %._crit_edge4779, %._crit_edge4869, %._crit_edge3960, %._crit_edge4008, %._crit_edge3479, %._crit_edge3152, %._crit_edge3191, %._crit_edge3241, %._crit_edge3288, %._crit_edge3332, %._crit_edge3376, %._crit_edge3446, %._crit_edge3091
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  ret void
}

declare i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef) local_unnamed_addr #2

declare float @libxsmm_convert_bf16_to_f32(i16 noundef zeroext) local_unnamed_addr #2

declare float @libxsmm_convert_f16_to_f32(i16 noundef zeroext) local_unnamed_addr #2

declare zeroext i8 @libxsmm_extract_bit(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare float @libxsmm_convert_bf8_to_f32(i8 noundef zeroext) local_unnamed_addr #2

declare float @libxsmm_convert_hf8_to_f32(i8 noundef zeroext) local_unnamed_addr #2

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

declare zeroext i16 @libxsmm_convert_f32_to_bf16_rne(float noundef) local_unnamed_addr #2

declare zeroext i16 @libxsmm_convert_f32_to_f16(float noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare ptr @strstr(ptr noundef, ptr nocapture noundef) local_unnamed_addr #5

declare i32 @libxsmm_cpuid(ptr noundef) local_unnamed_addr #2

declare zeroext i8 @libxsmm_convert_f32_to_bf8_rne(float noundef) local_unnamed_addr #2

declare zeroext i8 @libxsmm_convert_f32_to_hf8_rne(float noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #7

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 28}
!6 = !{!"libxsmm_gemm_def", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !10, i64 48, !10, i64 56, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !11, i64 124, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184, !12, i64 192, !12, i64 200, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !13, i64 264, !13, i64 272, !12, i64 280, !12, i64 288, !12, i64 296, !12, i64 304, !12, i64 312, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !12, i64 344, !12, i64 352}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"float", !8, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"long long", !8, i64 0}
!14 = !{!6, !7, i64 32}
!15 = !{!6, !7, i64 36}
!16 = !{!6, !7, i64 16}
!17 = !{!6, !7, i64 20}
!18 = !{!6, !7, i64 24}
!19 = !{!13, !13, i64 0}
!20 = !{!6, !7, i64 252}
!21 = !{!6, !12, i64 344}
!22 = !{!6, !12, i64 312}
!23 = !{!6, !7, i64 0}
!24 = !{!6, !7, i64 4}
!25 = !{!6, !10, i64 56}
!26 = !{!6, !7, i64 8}
!27 = !{!11, !11, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.unroll.disable"}
!30 = distinct !{!30, !31, !32, !33}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!"llvm.loop.isvectorized", i32 1}
!33 = !{!"llvm.loop.unroll.runtime.disable"}
!34 = distinct !{!34, !31, !32, !33}
!35 = distinct !{!35, !29}
!36 = distinct !{!36, !31, !32}
!37 = distinct !{!37, !31, !32}
!38 = !{!39, !39, i64 0}
!39 = !{!"short", !8, i64 0}
!40 = distinct !{!40, !31}
!41 = !{!8, !8, i64 0}
!42 = distinct !{!42, !31}
!43 = distinct !{!43, !31}
!44 = distinct !{!44, !31}
!45 = distinct !{!45, !31}
!46 = distinct !{!46, !31}
!47 = distinct !{!47, !31}
!48 = !{!6, !7, i64 224}
!49 = !{!6, !7, i64 228}
!50 = !{!12, !12, i64 0}
!51 = !{!6, !7, i64 216}
!52 = !{!6, !7, i64 112}
!53 = distinct !{!53, !31}
!54 = distinct !{!54, !31}
!55 = distinct !{!55, !31}
!56 = distinct !{!56, !31}
!57 = distinct !{!57, !31}
!58 = !{!6, !7, i64 232}
!59 = distinct !{!59, !31}
!60 = distinct !{!60, !31}
!61 = distinct !{!61, !31}
!62 = distinct !{!62, !31}
!63 = distinct !{!63, !31}
!64 = !{!6, !7, i64 236}
!65 = !{!7, !7, i64 0}
!66 = distinct !{!66, !31}
!67 = distinct !{!67, !31}
!68 = distinct !{!68, !31}
!69 = distinct !{!69, !31}
!70 = !{!6, !7, i64 12}
!71 = !{!10, !10, i64 0}
!72 = distinct !{!72, !31}
!73 = !{!6, !7, i64 68}
!74 = !{!6, !7, i64 64}
!75 = distinct !{!75, !31}
!76 = distinct !{!76, !31}
!77 = distinct !{!77, !31}
!78 = distinct !{!78, !31}
!79 = distinct !{!79, !31}
!80 = distinct !{!80, !31}
!81 = distinct !{!81, !31}
!82 = distinct !{!82, !31}
!83 = distinct !{!83, !31}
!84 = distinct !{!84, !31, !32, !33}
!85 = distinct !{!85, !31, !33, !32}
!86 = distinct !{!86, !31}
!87 = distinct !{!87, !31}
!88 = !{!6, !7, i64 84}
!89 = !{!6, !7, i64 88}
!90 = distinct !{!90, !31}
!91 = distinct !{!91, !31}
!92 = !{!93}
!93 = distinct !{!93, !94}
!94 = distinct !{!94, !"LVerDomain"}
!95 = !{!96}
!96 = distinct !{!96, !94}
!97 = distinct !{!97, !31, !32, !33}
!98 = distinct !{!98, !31, !32}
!99 = distinct !{!99, !31}
!100 = distinct !{!100, !31}
!101 = distinct !{!101, !31}
!102 = distinct !{!102, !31}
!103 = !{!104}
!104 = distinct !{!104, !105}
!105 = distinct !{!105, !"LVerDomain"}
!106 = !{!107}
!107 = distinct !{!107, !105}
!108 = distinct !{!108, !31, !32, !33}
!109 = distinct !{!109, !31, !32}
!110 = distinct !{!110, !31}
!111 = distinct !{!111, !31}
!112 = distinct !{!112, !31}
!113 = distinct !{!113, !31}
!114 = !{!115}
!115 = distinct !{!115, !116}
!116 = distinct !{!116, !"LVerDomain"}
!117 = !{!118}
!118 = distinct !{!118, !116}
!119 = distinct !{!119, !31, !32, !33}
!120 = distinct !{!120, !31, !32}
!121 = distinct !{!121, !31}
!122 = distinct !{!122, !31}
!123 = distinct !{!123, !31}
!124 = distinct !{!124, !31}
!125 = !{!126}
!126 = distinct !{!126, !127}
!127 = distinct !{!127, !"LVerDomain"}
!128 = !{!129}
!129 = distinct !{!129, !127}
!130 = distinct !{!130, !31, !32, !33}
!131 = distinct !{!131, !31, !32}
!132 = distinct !{!132, !31}
!133 = distinct !{!133, !31}
!134 = !{!6, !11, i64 124}
!135 = distinct !{!135, !29}
!136 = !{!137}
!137 = distinct !{!137, !138}
!138 = distinct !{!138, !"LVerDomain"}
!139 = !{!140}
!140 = distinct !{!140, !138}
!141 = distinct !{!141, !31, !32, !33}
!142 = !{!143}
!143 = distinct !{!143, !144}
!144 = distinct !{!144, !"LVerDomain"}
!145 = !{!146}
!146 = distinct !{!146, !144}
!147 = distinct !{!147, !31, !32, !33}
!148 = distinct !{!148, !31, !32}
!149 = distinct !{!149, !31, !32}
!150 = distinct !{!150, !31}
!151 = distinct !{!151, !31, !32, !33}
!152 = distinct !{!152, !31, !33, !32}
!153 = distinct !{!153, !31}
!154 = distinct !{!154, !31, !155}
!155 = !{!"llvm.loop.unswitch.partial.disable"}
!156 = distinct !{!156, !31}
!157 = distinct !{!157, !29}
!158 = !{!159}
!159 = distinct !{!159, !160}
!160 = distinct !{!160, !"LVerDomain"}
!161 = !{!162}
!162 = distinct !{!162, !160}
!163 = distinct !{!163, !31, !32, !33}
!164 = !{!165}
!165 = distinct !{!165, !166}
!166 = distinct !{!166, !"LVerDomain"}
!167 = !{!168}
!168 = distinct !{!168, !166}
!169 = distinct !{!169, !31, !32, !33}
!170 = distinct !{!170, !31, !32}
!171 = distinct !{!171, !31, !32}
!172 = distinct !{!172, !31}
!173 = distinct !{!173, !31, !32, !33}
!174 = distinct !{!174, !31, !33, !32}
!175 = distinct !{!175, !31}
!176 = distinct !{!176, !31, !155}
!177 = distinct !{!177, !31}
!178 = distinct !{!178, !29}
!179 = !{!180}
!180 = distinct !{!180, !181}
!181 = distinct !{!181, !"LVerDomain"}
!182 = !{!183}
!183 = distinct !{!183, !181}
!184 = distinct !{!184, !31, !32, !33}
!185 = !{!186}
!186 = distinct !{!186, !187}
!187 = distinct !{!187, !"LVerDomain"}
!188 = !{!189}
!189 = distinct !{!189, !187}
!190 = distinct !{!190, !31, !32, !33}
!191 = distinct !{!191, !31, !32}
!192 = distinct !{!192, !31, !32}
!193 = distinct !{!193, !31}
!194 = distinct !{!194, !31, !32, !33}
!195 = distinct !{!195, !31, !33, !32}
!196 = distinct !{!196, !31}
!197 = distinct !{!197, !31, !155}
!198 = distinct !{!198, !31}
!199 = distinct !{!199, !29}
!200 = !{!201}
!201 = distinct !{!201, !202}
!202 = distinct !{!202, !"LVerDomain"}
!203 = !{!204}
!204 = distinct !{!204, !202}
!205 = distinct !{!205, !31, !32, !33}
!206 = !{!207}
!207 = distinct !{!207, !208}
!208 = distinct !{!208, !"LVerDomain"}
!209 = !{!210}
!210 = distinct !{!210, !208}
!211 = distinct !{!211, !31, !32, !33}
!212 = distinct !{!212, !31, !32}
!213 = distinct !{!213, !31, !32}
!214 = distinct !{!214, !31}
!215 = distinct !{!215, !31, !32, !33}
!216 = distinct !{!216, !31, !33, !32}
!217 = distinct !{!217, !31}
!218 = distinct !{!218, !31, !155}
!219 = distinct !{!219, !31}
!220 = distinct !{!220, !31}
!221 = !{!6, !12, i64 128}
!222 = distinct !{!222, !31}
!223 = distinct !{!223, !31}
!224 = distinct !{!224, !31}
!225 = !{!6, !7, i64 72}
!226 = distinct !{!226, !31}
!227 = distinct !{!227, !31}
!228 = distinct !{!228, !31}
!229 = distinct !{!229, !31}
!230 = distinct !{!230, !31}
!231 = !{!6, !7, i64 220}
!232 = distinct !{!232, !31}
!233 = !{!6, !7, i64 256}
!234 = !{!6, !12, i64 160}
!235 = !{!6, !12, i64 200}
!236 = distinct !{!236, !31}
!237 = distinct !{!237, !31}
!238 = distinct !{!238, !31}
!239 = distinct !{!239, !31}
!240 = distinct !{!240, !31}
!241 = distinct !{!241, !31}
!242 = distinct !{!242, !31}
!243 = distinct !{!243, !31}
!244 = distinct !{!244, !31}
!245 = distinct !{!245, !31}
!246 = distinct !{!246, !31}
!247 = distinct !{!247, !31}
!248 = distinct !{!248, !31}
!249 = distinct !{!249, !31}
!250 = distinct !{!250, !31}
!251 = distinct !{!251, !31}
!252 = distinct !{!252, !31}
!253 = distinct !{!253, !31}
!254 = distinct !{!254, !31}
!255 = distinct !{!255, !31}
!256 = distinct !{!256, !31}
!257 = distinct !{!257, !31}
!258 = distinct !{!258, !31}
!259 = distinct !{!259, !29}
!260 = distinct !{!260, !31}
!261 = distinct !{!261, !31}
!262 = !{!6, !7, i64 76}
!263 = distinct !{!263, !29}
!264 = distinct !{!264, !29}
!265 = distinct !{!265, !29}
!266 = distinct !{!266, !29}
!267 = distinct !{!267, !29}
!268 = distinct !{!268, !29}
!269 = distinct !{!269, !29}
!270 = distinct !{!270, !29}
!271 = distinct !{!271, !29}
!272 = distinct !{!272, !31}
!273 = distinct !{!273, !31}
!274 = distinct !{!274, !31}
!275 = distinct !{!275, !31}
!276 = distinct !{!276, !31}
!277 = distinct !{!277, !31}
!278 = distinct !{!278, !31}
!279 = distinct !{!279, !31}
!280 = distinct !{!280, !31}
!281 = distinct !{!281, !31}
!282 = distinct !{!282, !31}
!283 = distinct !{!283, !31}
!284 = distinct !{!284, !31}
!285 = distinct !{!285, !31}
!286 = distinct !{!286, !31}
!287 = distinct !{!287, !31}
!288 = distinct !{!288, !31}
!289 = distinct !{!289, !31}
!290 = distinct !{!290, !31}
!291 = distinct !{!291, !31}
!292 = distinct !{!292, !31}
!293 = distinct !{!293, !31}
!294 = distinct !{!294, !31}
!295 = distinct !{!295, !29}
!296 = distinct !{!296, !31}
!297 = distinct !{!297, !31}
!298 = distinct !{!298, !29}
!299 = distinct !{!299, !29}
!300 = distinct !{!300, !29}
!301 = distinct !{!301, !29}
!302 = distinct !{!302, !29}
!303 = distinct !{!303, !29}
!304 = distinct !{!304, !29}
!305 = distinct !{!305, !29}
!306 = distinct !{!306, !29}
!307 = distinct !{!307, !31}
!308 = distinct !{!308, !31}
!309 = distinct !{!309, !31}
!310 = distinct !{!310, !31}
!311 = distinct !{!311, !31}
!312 = distinct !{!312, !29}
!313 = distinct !{!313, !29}
!314 = distinct !{!314, !31}
!315 = distinct !{!315, !31}
!316 = distinct !{!316, !31}
!317 = distinct !{!317, !31}
!318 = distinct !{!318, !31}
!319 = distinct !{!319, !29}
!320 = distinct !{!320, !29}
!321 = distinct !{!321, !31}
!322 = distinct !{!322, !31}
!323 = distinct !{!323, !31}
!324 = distinct !{!324, !31}
!325 = distinct !{!325, !31}
!326 = distinct !{!326, !31}
!327 = distinct !{!327, !31}
!328 = distinct !{!328, !31}
!329 = distinct !{!329, !31}
!330 = distinct !{!330, !31}
!331 = distinct !{!331, !31}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopDeletionPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass