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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_gemm_descriptor = type <{ i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], i8, i64, i64, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, i32, i32, i32, i8 }>
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel = external hidden unnamed_addr constant [50 x i8], align 1
@.str = external hidden unnamed_addr constant [90 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mant = external hidden unnamed_addr constant [8 x float], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_sign = external hidden unnamed_addr constant [8 x i32], align 16
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mxfp4 = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_idx = external hidden unnamed_addr constant [8 x i32], align 16
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [10 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_f32 = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut_f32 = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut = external hidden unnamed_addr constant [32 x i16], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut = external hidden unnamed_addr constant [32 x i16], align 16
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_lo_i4 = external hidden unnamed_addr constant [8 x i32], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_hi_i4 = external hidden unnamed_addr constant [8 x i32], align 16
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.perm_rpt_zpt = external hidden unnamed_addr constant [64 x i8], align 16
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_512 = external hidden unnamed_addr constant [32 x i16], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_256 = external hidden unnamed_addr constant [16 x i16], align 16
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel = external hidden unnamed_addr constant [176 x i8], align 1

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

declare i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef) #1

declare i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef) #1

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef) #1

declare void @libxsmm_reset_loop_label_tracker(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #2 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %10 = alloca %struct.libxsmm_gemm_descriptor, align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca [2 x i32], align 4
  %24 = alloca [2 x i32], align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca [8 x float], align 16
  %41 = alloca [8 x i32], align 16
  %42 = alloca [32 x i8], align 16
  %43 = alloca [8 x i32], align 16
  %44 = alloca i32, align 4
  %45 = alloca [16 x i32], align 16
  %46 = alloca [16 x i32], align 16
  %47 = alloca [32 x i16], align 16
  %48 = alloca [32 x i16], align 16
  %49 = alloca [8 x i32], align 16
  %50 = alloca [8 x i32], align 16
  %51 = alloca [64 x i8], align 16
  %52 = alloca [16 x i32], align 16
  %53 = alloca [16 x i32], align 16
  %54 = alloca i32, align 4
  %55 = alloca [32 x i16], align 16
  %56 = alloca [16 x i16], align 16
  %57 = alloca i8, align 1
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, 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 688, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 95, ptr %10) #6
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 1 %71, i64 95, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  store ptr %10, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %72, i32 0, i32 6
  %74 = load i32, ptr %73, align 1, !tbaa !17
  %75 = and i32 %74, 2097152
  %76 = icmp ugt i32 %75, 0
  br i1 %76, label %77, label %105

77:                                               ; preds = %4
  %78 = load ptr, ptr %11, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %78, i32 0, i32 8
  %80 = getelementptr inbounds [3 x i8], ptr %79, i64 0, i64 0
  %81 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %80)
  %82 = icmp eq i32 12, %81
  br i1 %82, label %83, label %103

83:                                               ; preds = %77
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %84, i32 0, i32 8
  %86 = getelementptr inbounds [3 x i8], ptr %85, i64 0, i64 0
  %87 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %86)
  %88 = icmp eq i32 3, %87
  br i1 %88, label %89, label %103

89:                                               ; preds = %83
  %90 = load ptr, ptr %11, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %90, i32 0, i32 8
  %92 = getelementptr inbounds [3 x i8], ptr %91, i64 0, i64 0
  %93 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %92)
  %94 = icmp eq i32 3, %93
  br i1 %94, label %101, label %95

95:                                               ; preds = %89
  %96 = load ptr, ptr %11, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %96, i32 0, i32 8
  %98 = getelementptr inbounds [3 x i8], ptr %97, i64 0, i64 0
  %99 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %98)
  %100 = icmp eq i32 1, %99
  br label %101

101:                                              ; preds = %95, %89
  %102 = phi i1 [ true, %89 ], [ %100, %95 ]
  br label %103

103:                                              ; preds = %101, %83, %77
  %104 = phi i1 [ false, %83 ], [ false, %77 ], [ %102, %101 ]
  br label %105

105:                                              ; preds = %103, %4
  %106 = phi i1 [ false, %4 ], [ %104, %103 ]
  %107 = zext i1 %106 to i64
  %108 = select i1 %106, i32 1, i32 0
  store i32 %108, ptr %12, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  %110 = call i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef %109)
  store i32 %110, ptr %13, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = call i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef %111)
  store i32 %112, ptr %14, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %113)
  store i32 %114, ptr %15, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %115 = load ptr, ptr %8, align 8, !tbaa !5
  %116 = call i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef %115)
  store i32 %116, ptr %16, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %117, i32 0, i32 6
  %119 = load i32, ptr %118, align 1, !tbaa !17
  %120 = and i32 %119, 1
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %152

122:                                              ; preds = %105
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %123, i32 0, i32 6
  %125 = load i32, ptr %124, align 1, !tbaa !17
  %126 = and i32 %125, 2048
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %152

128:                                              ; preds = %122
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %129, i32 0, i32 6
  %131 = load i32, ptr %130, align 1, !tbaa !17
  %132 = and i32 %131, 2
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %152

134:                                              ; preds = %128
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %135, i32 0, i32 6
  %137 = load i32, ptr %136, align 1, !tbaa !17
  %138 = and i32 %137, 4096
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %152

140:                                              ; preds = %134
  %141 = load ptr, ptr %11, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %141, i32 0, i32 2
  %143 = load i32, ptr %142, align 1, !tbaa !19
  %144 = urem i32 %143, 2
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %152

146:                                              ; preds = %140
  %147 = load ptr, ptr %11, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %147, i32 0, i32 8
  %149 = getelementptr inbounds [3 x i8], ptr %148, i64 0, i64 0
  %150 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %149)
  %151 = icmp eq i32 2, %150
  br label %152

152:                                              ; preds = %146, %140, %134, %128, %122, %105
  %153 = phi i1 [ false, %140 ], [ false, %134 ], [ false, %128 ], [ false, %122 ], [ false, %105 ], [ %151, %146 ]
  %154 = zext i1 %153 to i32
  store i32 %154, ptr %17, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %155 = load ptr, ptr %11, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %155, i32 0, i32 6
  %157 = load i32, ptr %156, align 1, !tbaa !17
  %158 = and i32 %157, 1
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %160, label %190

160:                                              ; preds = %152
  %161 = load ptr, ptr %11, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %161, i32 0, i32 6
  %163 = load i32, ptr %162, align 1, !tbaa !17
  %164 = and i32 %163, 2048
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %190

166:                                              ; preds = %160
  %167 = load ptr, ptr %11, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %167, i32 0, i32 6
  %169 = load i32, ptr %168, align 1, !tbaa !17
  %170 = and i32 %169, 2
  %171 = icmp eq i32 %170, 0
  br i1 %171, label %172, label %190

172:                                              ; preds = %166
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %173, i32 0, i32 6
  %175 = load i32, ptr %174, align 1, !tbaa !17
  %176 = and i32 %175, 4096
  %177 = icmp eq i32 %176, 0
  br i1 %177, label %178, label %190

178:                                              ; preds = %172
  %179 = load ptr, ptr %11, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %179, i32 0, i32 2
  %181 = load i32, ptr %180, align 1, !tbaa !19
  %182 = urem i32 %181, 2
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %190

184:                                              ; preds = %178
  %185 = load ptr, ptr %11, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %185, i32 0, i32 8
  %187 = getelementptr inbounds [3 x i8], ptr %186, i64 0, i64 0
  %188 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %187)
  %189 = icmp eq i32 2, %188
  br label %190

190:                                              ; preds = %184, %178, %172, %166, %160, %152
  %191 = phi i1 [ false, %178 ], [ false, %172 ], [ false, %166 ], [ false, %160 ], [ false, %152 ], [ %189, %184 ]
  %192 = zext i1 %191 to i32
  store i32 %192, ptr %18, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %193, i32 0, i32 6
  %195 = load i32, ptr %194, align 1, !tbaa !17
  %196 = and i32 %195, 1
  %197 = icmp eq i32 %196, 0
  br i1 %197, label %198, label %228

198:                                              ; preds = %190
  %199 = load ptr, ptr %11, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %199, i32 0, i32 6
  %201 = load i32, ptr %200, align 1, !tbaa !17
  %202 = and i32 %201, 2048
  %203 = icmp eq i32 %202, 0
  br i1 %203, label %204, label %228

204:                                              ; preds = %198
  %205 = load ptr, ptr %11, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %205, i32 0, i32 6
  %207 = load i32, ptr %206, align 1, !tbaa !17
  %208 = and i32 %207, 2
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %228

210:                                              ; preds = %204
  %211 = load ptr, ptr %11, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %211, i32 0, i32 6
  %213 = load i32, ptr %212, align 1, !tbaa !17
  %214 = and i32 %213, 4096
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %228

216:                                              ; preds = %210
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %217, i32 0, i32 2
  %219 = load i32, ptr %218, align 1, !tbaa !19
  %220 = urem i32 %219, 2
  %221 = icmp eq i32 %220, 0
  br i1 %221, label %222, label %228

222:                                              ; preds = %216
  %223 = load ptr, ptr %11, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %223, i32 0, i32 8
  %225 = getelementptr inbounds [3 x i8], ptr %224, i64 0, i64 0
  %226 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %225)
  %227 = icmp eq i32 2, %226
  br label %228

228:                                              ; preds = %222, %216, %210, %204, %198, %190
  %229 = phi i1 [ false, %216 ], [ false, %210 ], [ false, %204 ], [ false, %198 ], [ false, %190 ], [ %227, %222 ]
  %230 = zext i1 %229 to i32
  store i32 %230, ptr %19, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %231 = load ptr, ptr %11, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %231, i32 0, i32 6
  %233 = load i32, ptr %232, align 1, !tbaa !17
  %234 = and i32 %233, 1
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %266

236:                                              ; preds = %228
  %237 = load ptr, ptr %11, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %237, i32 0, i32 6
  %239 = load i32, ptr %238, align 1, !tbaa !17
  %240 = and i32 %239, 2048
  %241 = icmp eq i32 %240, 0
  br i1 %241, label %242, label %266

242:                                              ; preds = %236
  %243 = load ptr, ptr %11, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %243, i32 0, i32 6
  %245 = load i32, ptr %244, align 1, !tbaa !17
  %246 = and i32 %245, 2
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %266

248:                                              ; preds = %242
  %249 = load ptr, ptr %11, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %249, i32 0, i32 6
  %251 = load i32, ptr %250, align 1, !tbaa !17
  %252 = and i32 %251, 4096
  %253 = icmp eq i32 %252, 0
  br i1 %253, label %254, label %266

254:                                              ; preds = %248
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %255, i32 0, i32 2
  %257 = load i32, ptr %256, align 1, !tbaa !19
  %258 = urem i32 %257, 2
  %259 = icmp eq i32 %258, 0
  br i1 %259, label %260, label %266

260:                                              ; preds = %254
  %261 = load ptr, ptr %11, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %261, i32 0, i32 8
  %263 = getelementptr inbounds [3 x i8], ptr %262, i64 0, i64 0
  %264 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %263)
  %265 = icmp eq i32 2, %264
  br label %266

266:                                              ; preds = %260, %254, %248, %242, %236, %228
  %267 = phi i1 [ false, %254 ], [ false, %248 ], [ false, %242 ], [ false, %236 ], [ false, %228 ], [ %265, %260 ]
  %268 = zext i1 %267 to i32
  store i32 %268, ptr %20, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  store i32 0, ptr %21, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, ptr %22, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  call void @llvm.memset.p0.i64(ptr align 4 %23, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  call void @llvm.memset.p0.i64(ptr align 4 %24, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 0, ptr %25, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %269, i32 0, i32 8
  %271 = getelementptr inbounds [3 x i8], ptr %270, i64 0, i64 0
  %272 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %271)
  %273 = icmp eq i32 12, %272
  br i1 %273, label %274, label %297

274:                                              ; preds = %266
  %275 = load i32, ptr %15, align 4, !tbaa !10
  %276 = icmp eq i32 %275, 0
  br i1 %276, label %277, label %297

277:                                              ; preds = %274
  %278 = load ptr, ptr %11, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %278, i32 0, i32 8
  %280 = getelementptr inbounds [3 x i8], ptr %279, i64 0, i64 0
  %281 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %280)
  %282 = icmp eq i32 2, %281
  br i1 %282, label %283, label %297

283:                                              ; preds = %277
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %284, i32 0, i32 8
  %286 = getelementptr inbounds [3 x i8], ptr %285, i64 0, i64 0
  %287 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %286)
  %288 = icmp eq i32 2, %287
  br i1 %288, label %295, label %289

289:                                              ; preds = %283
  %290 = load ptr, ptr %11, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %290, i32 0, i32 8
  %292 = getelementptr inbounds [3 x i8], ptr %291, i64 0, i64 0
  %293 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %292)
  %294 = icmp eq i32 1, %293
  br label %295

295:                                              ; preds = %289, %283
  %296 = phi i1 [ true, %283 ], [ %294, %289 ]
  br label %297

297:                                              ; preds = %295, %277, %274, %266
  %298 = phi i1 [ false, %277 ], [ false, %274 ], [ false, %266 ], [ %296, %295 ]
  %299 = zext i1 %298 to i64
  %300 = select i1 %298, i32 1, i32 0
  store i32 %300, ptr %28, align 4, !tbaa !10
  %301 = load ptr, ptr %11, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %301, i32 0, i32 6
  %303 = load i32, ptr %302, align 1, !tbaa !17
  %304 = and i32 64, %303
  %305 = icmp eq i32 %304, 0
  br i1 %305, label %306, label %312

306:                                              ; preds = %297
  %307 = load ptr, ptr %11, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %307, i32 0, i32 6
  %309 = load i32, ptr %308, align 1, !tbaa !17
  %310 = and i32 128, %309
  %311 = icmp eq i32 %310, 0
  br i1 %311, label %325, label %312

312:                                              ; preds = %306, %297
  %313 = load ptr, ptr %11, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %313, i32 0, i32 6
  %315 = load i32, ptr %314, align 1, !tbaa !17
  %316 = and i32 64, %315
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %318, label %324

318:                                              ; preds = %312
  %319 = load ptr, ptr %11, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %319, i32 0, i32 6
  %321 = load i32, ptr %320, align 1, !tbaa !17
  %322 = and i32 128, %321
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %325, label %324

324:                                              ; preds = %318, %312
  store i32 1, ptr %29, align 4
  br label %3384

325:                                              ; preds = %318, %306
  %326 = load ptr, ptr %11, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %326, i32 0, i32 6
  %328 = load i32, ptr %327, align 1, !tbaa !17
  %329 = and i32 %328, 65536
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %339

331:                                              ; preds = %325
  %332 = load ptr, ptr %11, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %332, i32 0, i32 7
  %334 = load i8, ptr %333, align 1, !tbaa !20
  %335 = zext i8 %334 to i32
  %336 = icmp eq i32 %335, 1
  br i1 %336, label %337, label %338

337:                                              ; preds = %331
  store i32 1, ptr %25, align 4, !tbaa !10
  br label %338

338:                                              ; preds = %337, %331
  br label %339

339:                                              ; preds = %338, %325
  %340 = load ptr, ptr %11, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %340, i32 0, i32 8
  %342 = getelementptr inbounds [3 x i8], ptr %341, i64 0, i64 0
  %343 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %342)
  %344 = icmp eq i32 12, %343
  br i1 %344, label %351, label %345

345:                                              ; preds = %339
  %346 = load ptr, ptr %11, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %346, i32 0, i32 8
  %348 = getelementptr inbounds [3 x i8], ptr %347, i64 0, i64 0
  %349 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %348)
  %350 = icmp eq i32 4, %349
  br i1 %350, label %351, label %357

351:                                              ; preds = %345, %339
  %352 = load ptr, ptr %11, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %352, i32 0, i32 8
  %354 = getelementptr inbounds [3 x i8], ptr %353, i64 0, i64 0
  %355 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %354)
  %356 = icmp eq i32 3, %355
  br i1 %356, label %369, label %357

357:                                              ; preds = %351, %345
  %358 = load ptr, ptr %11, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %358, i32 0, i32 8
  %360 = getelementptr inbounds [3 x i8], ptr %359, i64 0, i64 0
  %361 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %360)
  %362 = icmp eq i32 3, %361
  br i1 %362, label %363, label %413

363:                                              ; preds = %357
  %364 = load ptr, ptr %11, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %364, i32 0, i32 8
  %366 = getelementptr inbounds [3 x i8], ptr %365, i64 0, i64 0
  %367 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %366)
  %368 = icmp eq i32 3, %367
  br i1 %368, label %369, label %413

369:                                              ; preds = %363, %351
  %370 = load ptr, ptr %11, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %370, i32 0, i32 8
  %372 = getelementptr inbounds [3 x i8], ptr %371, i64 0, i64 0
  %373 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %372)
  %374 = icmp eq i32 14, %373
  br i1 %374, label %375, label %413

375:                                              ; preds = %369
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %376, i32 0, i32 6
  %378 = load i32, ptr %377, align 4, !tbaa !21
  %379 = icmp uge i32 %378, 1104
  br i1 %379, label %380, label %396

380:                                              ; preds = %375
  %381 = load ptr, ptr %11, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %381, i32 0, i32 8
  %383 = getelementptr inbounds [3 x i8], ptr %382, i64 0, i64 0
  %384 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %383)
  %385 = load ptr, ptr %11, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %385, i32 0, i32 8
  %387 = getelementptr inbounds [3 x i8], ptr %386, i64 0, i64 0
  %388 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %387)
  %389 = load ptr, ptr %11, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %389, i32 0, i32 8
  %391 = getelementptr inbounds [3 x i8], ptr %390, i64 0, i64 0
  %392 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %391)
  %393 = load ptr, ptr %11, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %393, i32 0, i32 8
  %395 = getelementptr inbounds [3 x i8], ptr %394, i64 0, i64 0
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef %384, i32 noundef %388, i32 noundef %392, i32 noundef 3, ptr noundef %395)
  br label %412

396:                                              ; preds = %375
  %397 = load ptr, ptr %11, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %397, i32 0, i32 8
  %399 = getelementptr inbounds [3 x i8], ptr %398, i64 0, i64 0
  %400 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %399)
  %401 = load ptr, ptr %11, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %401, i32 0, i32 8
  %403 = getelementptr inbounds [3 x i8], ptr %402, i64 0, i64 0
  %404 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %403)
  %405 = load ptr, ptr %11, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %405, i32 0, i32 8
  %407 = getelementptr inbounds [3 x i8], ptr %406, i64 0, i64 0
  %408 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %407)
  %409 = load ptr, ptr %11, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %409, i32 0, i32 8
  %411 = getelementptr inbounds [3 x i8], ptr %410, i64 0, i64 0
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef %400, i32 noundef %404, i32 noundef %408, i32 noundef 1, ptr noundef %411)
  br label %412

412:                                              ; preds = %396, %380
  br label %413

413:                                              ; preds = %412, %369, %363, %357
  %414 = load ptr, ptr %8, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %414, i32 0, i32 8
  %416 = getelementptr inbounds [3 x i8], ptr %415, i64 0, i64 0
  %417 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %416)
  %418 = icmp eq i32 4, %417
  br i1 %418, label %425, label %419

419:                                              ; preds = %413
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %420, i32 0, i32 8
  %422 = getelementptr inbounds [3 x i8], ptr %421, i64 0, i64 0
  %423 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %422)
  %424 = icmp eq i32 5, %423
  br i1 %424, label %425, label %466

425:                                              ; preds = %419, %413
  %426 = load ptr, ptr %5, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %426, i32 0, i32 6
  %428 = load i32, ptr %427, align 4, !tbaa !21
  %429 = icmp uge i32 %428, 1103
  br i1 %429, label %435, label %430

430:                                              ; preds = %425
  %431 = load ptr, ptr %5, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %431, i32 0, i32 6
  %433 = load i32, ptr %432, align 4, !tbaa !21
  %434 = icmp eq i32 %433, 1053
  br i1 %434, label %435, label %447

435:                                              ; preds = %430, %425
  %436 = load ptr, ptr %11, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %436, i32 0, i32 8
  %438 = getelementptr inbounds [3 x i8], ptr %437, i64 0, i64 0
  %439 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %438)
  %440 = load ptr, ptr %11, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %440, i32 0, i32 8
  %442 = getelementptr inbounds [3 x i8], ptr %441, i64 0, i64 0
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 2, i32 noundef 2, i32 noundef %439, i32 noundef 1, ptr noundef %442)
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %443, i32 0, i32 6
  %445 = load i32, ptr %444, align 1, !tbaa !17
  %446 = or i32 %445, 2048
  store i32 %446, ptr %444, align 1, !tbaa !17
  br label %455

447:                                              ; preds = %430
  %448 = load ptr, ptr %11, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %448, i32 0, i32 8
  %450 = getelementptr inbounds [3 x i8], ptr %449, i64 0, i64 0
  %451 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %450)
  %452 = load ptr, ptr %11, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %452, i32 0, i32 8
  %454 = getelementptr inbounds [3 x i8], ptr %453, i64 0, i64 0
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 1, i32 noundef 1, i32 noundef %451, i32 noundef 1, ptr noundef %454)
  br label %455

455:                                              ; preds = %447, %435
  %456 = load ptr, ptr %11, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %456, i32 0, i32 0
  %458 = load i32, ptr %457, align 1, !tbaa !23
  %459 = load ptr, ptr %11, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %459, i32 0, i32 3
  store i32 %458, ptr %460, align 1, !tbaa !24
  %461 = load ptr, ptr %11, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %461, i32 0, i32 2
  %463 = load i32, ptr %462, align 1, !tbaa !19
  %464 = load ptr, ptr %11, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %464, i32 0, i32 4
  store i32 %463, ptr %465, align 1, !tbaa !25
  br label %466

466:                                              ; preds = %455, %419
  %467 = load i32, ptr %17, align 4, !tbaa !10
  %468 = icmp ne i32 %467, 0
  br i1 %468, label %478, label %469

469:                                              ; preds = %466
  %470 = load i32, ptr %18, align 4, !tbaa !10
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %478, label %472

472:                                              ; preds = %469
  %473 = load i32, ptr %19, align 4, !tbaa !10
  %474 = icmp ne i32 %473, 0
  br i1 %474, label %478, label %475

475:                                              ; preds = %472
  %476 = load i32, ptr %20, align 4, !tbaa !10
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %478, label %483

478:                                              ; preds = %475, %472, %469, %466
  %479 = load ptr, ptr %11, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %479, i32 0, i32 6
  %481 = load i32, ptr %480, align 1, !tbaa !17
  %482 = or i32 %481, 2048
  store i32 %482, ptr %480, align 1, !tbaa !17
  br label %483

483:                                              ; preds = %478, %475
  %484 = load i32, ptr %18, align 4, !tbaa !10
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %489, label %486

486:                                              ; preds = %483
  %487 = load i32, ptr %20, align 4, !tbaa !10
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %511

489:                                              ; preds = %486, %483
  %490 = load ptr, ptr %11, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %490, i32 0, i32 6
  %492 = load i32, ptr %491, align 1, !tbaa !17
  %493 = and i32 %492, -2
  %494 = load ptr, ptr %11, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %494, i32 0, i32 6
  store i32 %493, ptr %495, align 1, !tbaa !17
  %496 = load ptr, ptr %11, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %496, i32 0, i32 3
  %498 = load i32, ptr %497, align 1, !tbaa !24
  %499 = urem i32 %498, 2
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %510

501:                                              ; preds = %489
  %502 = load ptr, ptr %5, align 8, !tbaa !5
  %503 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %504 = icmp ult i32 1, %503
  br i1 %504, label %505, label %507

505:                                              ; preds = %501
  %506 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %508

507:                                              ; preds = %501
  br label %508

508:                                              ; preds = %507, %505
  %509 = phi i32 [ %506, %505 ], [ 1, %507 ]
  call void @libxsmm_handle_error(ptr noundef %502, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef @.str, i32 noundef 265, i32 noundef %509)
  store i32 1, ptr %29, align 4
  br label %3384

510:                                              ; preds = %489
  br label %511

511:                                              ; preds = %510, %486
  %512 = load i32, ptr %19, align 4, !tbaa !10
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %517, label %514

514:                                              ; preds = %511
  %515 = load i32, ptr %20, align 4, !tbaa !10
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %524

517:                                              ; preds = %514, %511
  %518 = load ptr, ptr %11, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %518, i32 0, i32 6
  %520 = load i32, ptr %519, align 1, !tbaa !17
  %521 = and i32 %520, -3
  %522 = load ptr, ptr %11, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %522, i32 0, i32 6
  store i32 %521, ptr %523, align 1, !tbaa !17
  br label %524

524:                                              ; preds = %517, %514
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %525, i32 0, i32 6
  %527 = load i32, ptr %526, align 4, !tbaa !21
  %528 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef %9, i32 noundef %527, ptr noundef %528, i32 noundef 0)
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %529, i32 0, i32 8
  %531 = getelementptr inbounds [3 x i8], ptr %530, i64 0, i64 0
  %532 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %531)
  %533 = icmp eq i32 4, %532
  br i1 %533, label %534, label %536

534:                                              ; preds = %524
  %535 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 120
  store i32 1, ptr %535, align 8, !tbaa !26
  br label %536

536:                                              ; preds = %534, %524
  %537 = load ptr, ptr %8, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %537, i32 0, i32 8
  %539 = getelementptr inbounds [3 x i8], ptr %538, i64 0, i64 0
  %540 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %539)
  %541 = icmp eq i32 5, %540
  br i1 %541, label %542, label %544

542:                                              ; preds = %536
  %543 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 121
  store i32 1, ptr %543, align 4, !tbaa !29
  br label %544

544:                                              ; preds = %542, %536
  %545 = load ptr, ptr %11, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %545, i32 0, i32 6
  %547 = load i32, ptr %546, align 1, !tbaa !17
  %548 = and i32 %547, 1
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %585

550:                                              ; preds = %544
  %551 = load ptr, ptr %11, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %551, i32 0, i32 8
  %553 = getelementptr inbounds [3 x i8], ptr %552, i64 0, i64 0
  %554 = call i32 @LIBXSMM_GEMM_GETENUM_ABC_COMMON_PREC(ptr noundef %553)
  %555 = icmp eq i32 1, %554
  br i1 %555, label %562, label %556

556:                                              ; preds = %550
  %557 = load ptr, ptr %11, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %557, i32 0, i32 8
  %559 = getelementptr inbounds [3 x i8], ptr %558, i64 0, i64 0
  %560 = call i32 @LIBXSMM_GEMM_GETENUM_ABC_COMMON_PREC(ptr noundef %559)
  %561 = icmp eq i32 0, %560
  br i1 %561, label %562, label %575

562:                                              ; preds = %556, %550
  %563 = load ptr, ptr %11, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %563, i32 0, i32 0
  %565 = load i32, ptr %564, align 1, !tbaa !23
  %566 = load ptr, ptr %11, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %566, i32 0, i32 3
  store i32 %565, ptr %567, align 1, !tbaa !24
  %568 = load ptr, ptr %11, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %568, i32 0, i32 6
  %570 = load i32, ptr %569, align 1, !tbaa !17
  %571 = and i32 %570, -2
  %572 = load ptr, ptr %11, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %572, i32 0, i32 6
  store i32 %571, ptr %573, align 1, !tbaa !17
  %574 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 122
  store i32 1, ptr %574, align 8, !tbaa !30
  br label %584

575:                                              ; preds = %556
  %576 = load ptr, ptr %5, align 8, !tbaa !5
  %577 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %578 = icmp ult i32 1, %577
  br i1 %578, label %579, label %581

579:                                              ; preds = %575
  %580 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %582

581:                                              ; preds = %575
  br label %582

582:                                              ; preds = %581, %579
  %583 = phi i32 [ %580, %579 ], [ 1, %581 ]
  call void @libxsmm_handle_error(ptr noundef %576, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef @.str, i32 noundef 292, i32 noundef %583)
  store i32 1, ptr %29, align 4
  br label %3384

584:                                              ; preds = %562
  br label %629

585:                                              ; preds = %544
  %586 = load ptr, ptr %11, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %586, i32 0, i32 6
  %588 = load i32, ptr %587, align 1, !tbaa !17
  %589 = and i32 %588, 2
  %590 = icmp ugt i32 %589, 0
  br i1 %590, label %591, label %628

591:                                              ; preds = %585
  %592 = load ptr, ptr %11, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %592, i32 0, i32 6
  %594 = load i32, ptr %593, align 1, !tbaa !17
  %595 = and i32 %594, 4096
  %596 = icmp ugt i32 %595, 0
  br i1 %596, label %597, label %628

597:                                              ; preds = %591
  %598 = load ptr, ptr %11, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %598, i32 0, i32 8
  %600 = getelementptr inbounds [3 x i8], ptr %599, i64 0, i64 0
  %601 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %600)
  %602 = icmp eq i32 2, %601
  br i1 %602, label %603, label %618

603:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %604 = load ptr, ptr %11, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %604, i32 0, i32 6
  %606 = load i32, ptr %605, align 1, !tbaa !17
  %607 = and i32 %606, -3
  store i32 %607, ptr %30, align 4, !tbaa !10
  %608 = load ptr, ptr %11, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %608, i32 0, i32 2
  %610 = load i32, ptr %609, align 1, !tbaa !19
  %611 = load ptr, ptr %11, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %611, i32 0, i32 4
  store i32 %610, ptr %612, align 1, !tbaa !25
  %613 = load i32, ptr %30, align 4, !tbaa !10
  %614 = and i32 %613, -4097
  %615 = load ptr, ptr %11, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %615, i32 0, i32 6
  store i32 %614, ptr %616, align 1, !tbaa !17
  %617 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 128
  store i32 1, ptr %617, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %627

618:                                              ; preds = %597
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %621 = icmp ult i32 1, %620
  br i1 %621, label %622, label %624

622:                                              ; preds = %618
  %623 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %625

624:                                              ; preds = %618
  br label %625

625:                                              ; preds = %624, %622
  %626 = phi i32 [ %623, %622 ], [ 1, %624 ]
  call void @libxsmm_handle_error(ptr noundef %619, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef @.str, i32 noundef 302, i32 noundef %626)
  store i32 1, ptr %29, align 4
  br label %3384

627:                                              ; preds = %603
  br label %628

628:                                              ; preds = %627, %591, %585
  br label %629

629:                                              ; preds = %628, %584
  %630 = load i32, ptr %17, align 4, !tbaa !10
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %632, label %639

632:                                              ; preds = %629
  %633 = load ptr, ptr %11, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %633, i32 0, i32 0
  %635 = load i32, ptr %634, align 1, !tbaa !23
  %636 = load ptr, ptr %11, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %636, i32 0, i32 3
  store i32 %635, ptr %637, align 1, !tbaa !24
  %638 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 123
  store i32 1, ptr %638, align 4, !tbaa !32
  br label %639

639:                                              ; preds = %632, %629
  %640 = load i32, ptr %18, align 4, !tbaa !10
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %642, label %649

642:                                              ; preds = %639
  %643 = load ptr, ptr %11, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %643, i32 0, i32 0
  %645 = load i32, ptr %644, align 1, !tbaa !23
  %646 = load ptr, ptr %11, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %646, i32 0, i32 3
  store i32 %645, ptr %647, align 1, !tbaa !24
  %648 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 125
  store i32 1, ptr %648, align 4, !tbaa !33
  br label %649

649:                                              ; preds = %642, %639
  %650 = load i32, ptr %19, align 4, !tbaa !10
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %664

652:                                              ; preds = %649
  %653 = load ptr, ptr %11, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %653, i32 0, i32 0
  %655 = load i32, ptr %654, align 1, !tbaa !23
  %656 = load ptr, ptr %11, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %656, i32 0, i32 3
  store i32 %655, ptr %657, align 1, !tbaa !24
  %658 = load ptr, ptr %11, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %658, i32 0, i32 2
  %660 = load i32, ptr %659, align 1, !tbaa !19
  %661 = load ptr, ptr %11, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %661, i32 0, i32 4
  store i32 %660, ptr %662, align 1, !tbaa !25
  %663 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 126
  store i32 1, ptr %663, align 8, !tbaa !34
  br label %664

664:                                              ; preds = %652, %649
  %665 = load i32, ptr %20, align 4, !tbaa !10
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %679

667:                                              ; preds = %664
  %668 = load ptr, ptr %11, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %668, i32 0, i32 0
  %670 = load i32, ptr %669, align 1, !tbaa !23
  %671 = load ptr, ptr %11, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %671, i32 0, i32 3
  store i32 %670, ptr %672, align 1, !tbaa !24
  %673 = load ptr, ptr %11, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %673, i32 0, i32 2
  %675 = load i32, ptr %674, align 1, !tbaa !19
  %676 = load ptr, ptr %11, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %676, i32 0, i32 4
  store i32 %675, ptr %677, align 1, !tbaa !25
  %678 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 127
  store i32 1, ptr %678, align 4, !tbaa !35
  br label %679

679:                                              ; preds = %667, %664
  %680 = load ptr, ptr %11, align 8, !tbaa !5
  %681 = load ptr, ptr %5, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %681, i32 0, i32 6
  %683 = load i32, ptr %682, align 4, !tbaa !21
  %684 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_max_n_blocking(ptr noundef %9, ptr noundef %680, i32 noundef %683)
  store i32 %684, ptr %27, align 4, !tbaa !10
  %685 = load i32, ptr %27, align 4, !tbaa !10
  %686 = icmp ult i32 3, %685
  br i1 %686, label %687, label %929

687:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %688 = load ptr, ptr %11, align 8, !tbaa !5
  %689 = load ptr, ptr %5, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %689, i32 0, i32 6
  %691 = load i32, ptr %690, align 4, !tbaa !21
  %692 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef %9, ptr noundef %688, i32 noundef %691, i32 noundef 0)
  store i32 %692, ptr %31, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %693 = load i32, ptr %31, align 4, !tbaa !10
  %694 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 2
  %695 = load i32, ptr %694, align 8, !tbaa !36
  %696 = sub i32 %695, 1
  %697 = add i32 %693, %696
  %698 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 2
  %699 = load i32, ptr %698, align 8, !tbaa !36
  %700 = udiv i32 %697, %699
  store i32 %700, ptr %32, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %701 = load ptr, ptr %11, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %701, i32 0, i32 8
  %703 = getelementptr inbounds [3 x i8], ptr %702, i64 0, i64 0
  %704 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %703)
  %705 = icmp eq i32 12, %704
  br i1 %705, label %706, label %726

706:                                              ; preds = %687
  %707 = load ptr, ptr %11, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %707, i32 0, i32 8
  %709 = getelementptr inbounds [3 x i8], ptr %708, i64 0, i64 0
  %710 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %709)
  %711 = icmp eq i32 3, %710
  br i1 %711, label %712, label %726

712:                                              ; preds = %706
  %713 = load ptr, ptr %11, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %713, i32 0, i32 8
  %715 = getelementptr inbounds [3 x i8], ptr %714, i64 0, i64 0
  %716 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %715)
  %717 = icmp eq i32 3, %716
  br i1 %717, label %724, label %718

718:                                              ; preds = %712
  %719 = load ptr, ptr %11, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %719, i32 0, i32 8
  %721 = getelementptr inbounds [3 x i8], ptr %720, i64 0, i64 0
  %722 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %721)
  %723 = icmp eq i32 1, %722
  br label %724

724:                                              ; preds = %718, %712
  %725 = phi i1 [ true, %712 ], [ %723, %718 ]
  br label %726

726:                                              ; preds = %724, %706, %687
  %727 = phi i1 [ false, %706 ], [ false, %687 ], [ %725, %724 ]
  %728 = zext i1 %727 to i64
  %729 = select i1 %727, i32 1, i32 0
  store i32 %729, ptr %33, align 4, !tbaa !10
  %730 = load i32, ptr %33, align 4, !tbaa !10
  %731 = icmp ugt i32 %730, 0
  br i1 %731, label %732, label %817

732:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %733 = load ptr, ptr %11, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %733, i32 0, i32 6
  %735 = load i32, ptr %734, align 1, !tbaa !17
  %736 = and i32 %735, 524288
  %737 = icmp eq i32 %736, 0
  br i1 %737, label %738, label %747

738:                                              ; preds = %732
  %739 = load i32, ptr %12, align 4, !tbaa !10
  %740 = icmp ugt i32 %739, 0
  br i1 %740, label %741, label %744

741:                                              ; preds = %738
  %742 = load i32, ptr %32, align 4, !tbaa !10
  %743 = add i32 3, %742
  br label %745

744:                                              ; preds = %738
  br label %745

745:                                              ; preds = %744, %741
  %746 = phi i32 [ %743, %741 ], [ 1, %744 ]
  br label %758

747:                                              ; preds = %732
  %748 = load i32, ptr %12, align 4, !tbaa !10
  %749 = icmp ugt i32 %748, 0
  br i1 %749, label %750, label %754

750:                                              ; preds = %747
  %751 = load i32, ptr %32, align 4, !tbaa !10
  %752 = mul i32 2, %751
  %753 = add i32 2, %752
  br label %756

754:                                              ; preds = %747
  %755 = load i32, ptr %32, align 4, !tbaa !10
  br label %756

756:                                              ; preds = %754, %750
  %757 = phi i32 [ %753, %750 ], [ %755, %754 ]
  br label %758

758:                                              ; preds = %756, %745
  %759 = phi i32 [ %746, %745 ], [ %757, %756 ]
  store i32 %759, ptr %34, align 4, !tbaa !10
  %760 = load ptr, ptr %11, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %760, i32 0, i32 6
  %762 = load i32, ptr %761, align 1, !tbaa !17
  %763 = and i32 %762, 1048576
  %764 = icmp ugt i32 %763, 0
  br i1 %764, label %765, label %769

765:                                              ; preds = %758
  %766 = load i32, ptr %32, align 4, !tbaa !10
  %767 = load i32, ptr %34, align 4, !tbaa !10
  %768 = add i32 %767, %766
  store i32 %768, ptr %34, align 4, !tbaa !10
  br label %769

769:                                              ; preds = %765, %758
  %770 = load ptr, ptr %5, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %770, i32 0, i32 6
  %772 = load i32, ptr %771, align 4, !tbaa !21
  %773 = icmp uge i32 %772, 1051
  br i1 %773, label %774, label %799

774:                                              ; preds = %769
  %775 = load ptr, ptr %5, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %775, i32 0, i32 6
  %777 = load i32, ptr %776, align 4, !tbaa !21
  %778 = icmp ult i32 %777, 1101
  br i1 %778, label %779, label %799

779:                                              ; preds = %774
  %780 = load i32, ptr %12, align 4, !tbaa !10
  %781 = icmp eq i32 %780, 0
  br i1 %781, label %782, label %799

782:                                              ; preds = %779
  br label %783

783:                                              ; preds = %795, %782
  %784 = load i32, ptr %32, align 4, !tbaa !10
  %785 = load i32, ptr %27, align 4, !tbaa !10
  %786 = mul i32 %784, %785
  %787 = load i32, ptr %27, align 4, !tbaa !10
  %788 = add i32 %786, %787
  %789 = add i32 %788, 1
  %790 = load i32, ptr %34, align 4, !tbaa !10
  %791 = add i32 %789, %790
  %792 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 1
  %793 = load i32, ptr %792, align 4, !tbaa !37
  %794 = icmp ugt i32 %791, %793
  br i1 %794, label %795, label %798

795:                                              ; preds = %783
  %796 = load i32, ptr %27, align 4, !tbaa !10
  %797 = add i32 %796, -1
  store i32 %797, ptr %27, align 4, !tbaa !10
  br label %783, !llvm.loop !38

798:                                              ; preds = %783
  br label %816

799:                                              ; preds = %779, %774, %769
  br label %800

800:                                              ; preds = %812, %799
  %801 = load i32, ptr %32, align 4, !tbaa !10
  %802 = load i32, ptr %27, align 4, !tbaa !10
  %803 = mul i32 %801, %802
  %804 = load i32, ptr %32, align 4, !tbaa !10
  %805 = add i32 %803, %804
  %806 = add i32 %805, 1
  %807 = load i32, ptr %34, align 4, !tbaa !10
  %808 = add i32 %806, %807
  %809 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 1
  %810 = load i32, ptr %809, align 4, !tbaa !37
  %811 = icmp ugt i32 %808, %810
  br i1 %811, label %812, label %815

812:                                              ; preds = %800
  %813 = load i32, ptr %27, align 4, !tbaa !10
  %814 = add i32 %813, -1
  store i32 %814, ptr %27, align 4, !tbaa !10
  br label %800, !llvm.loop !40

815:                                              ; preds = %800
  br label %816

816:                                              ; preds = %815, %798
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %928

817:                                              ; preds = %726
  %818 = load i32, ptr %28, align 4, !tbaa !10
  %819 = icmp ugt i32 %818, 0
  br i1 %819, label %820, label %847

820:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %821 = load ptr, ptr %11, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %821, i32 0, i32 6
  %823 = load i32, ptr %822, align 1, !tbaa !17
  %824 = and i32 %823, 524288
  %825 = icmp eq i32 %824, 0
  br i1 %825, label %826, label %827

826:                                              ; preds = %820
  br label %829

827:                                              ; preds = %820
  %828 = load i32, ptr %32, align 4, !tbaa !10
  br label %829

829:                                              ; preds = %827, %826
  %830 = phi i32 [ 1, %826 ], [ %828, %827 ]
  store i32 %830, ptr %35, align 4, !tbaa !10
  br label %831

831:                                              ; preds = %843, %829
  %832 = load i32, ptr %32, align 4, !tbaa !10
  %833 = load i32, ptr %27, align 4, !tbaa !10
  %834 = mul i32 %832, %833
  %835 = load i32, ptr %32, align 4, !tbaa !10
  %836 = add i32 %834, %835
  %837 = add i32 %836, 2
  %838 = load i32, ptr %35, align 4, !tbaa !10
  %839 = add i32 %837, %838
  %840 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 1
  %841 = load i32, ptr %840, align 4, !tbaa !37
  %842 = icmp ugt i32 %839, %841
  br i1 %842, label %843, label %846

843:                                              ; preds = %831
  %844 = load i32, ptr %27, align 4, !tbaa !10
  %845 = add i32 %844, -1
  store i32 %845, ptr %27, align 4, !tbaa !10
  br label %831, !llvm.loop !41

846:                                              ; preds = %831
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %927

847:                                              ; preds = %817
  %848 = load i32, ptr %13, align 4, !tbaa !10
  %849 = icmp ugt i32 %848, 0
  br i1 %849, label %850, label %885

850:                                              ; preds = %847
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %851 = load i32, ptr %32, align 4, !tbaa !10
  %852 = add i32 3, %851
  store i32 %852, ptr %36, align 4, !tbaa !10
  %853 = load ptr, ptr %11, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %853, i32 0, i32 6
  %855 = load i32, ptr %854, align 1, !tbaa !17
  %856 = and i32 %855, 1048576
  %857 = icmp ugt i32 %856, 0
  br i1 %857, label %864, label %858

858:                                              ; preds = %850
  %859 = load ptr, ptr %11, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %859, i32 0, i32 6
  %861 = load i32, ptr %860, align 1, !tbaa !17
  %862 = and i32 %861, 33554432
  %863 = icmp ugt i32 %862, 0
  br i1 %863, label %864, label %868

864:                                              ; preds = %858, %850
  %865 = load i32, ptr %32, align 4, !tbaa !10
  %866 = load i32, ptr %36, align 4, !tbaa !10
  %867 = add i32 %866, %865
  store i32 %867, ptr %36, align 4, !tbaa !10
  br label %868

868:                                              ; preds = %864, %858
  br label %869

869:                                              ; preds = %881, %868
  %870 = load i32, ptr %32, align 4, !tbaa !10
  %871 = load i32, ptr %27, align 4, !tbaa !10
  %872 = mul i32 %870, %871
  %873 = load i32, ptr %32, align 4, !tbaa !10
  %874 = add i32 %872, %873
  %875 = add i32 %874, 1
  %876 = load i32, ptr %36, align 4, !tbaa !10
  %877 = add i32 %875, %876
  %878 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 1
  %879 = load i32, ptr %878, align 4, !tbaa !37
  %880 = icmp ugt i32 %877, %879
  br i1 %880, label %881, label %884

881:                                              ; preds = %869
  %882 = load i32, ptr %27, align 4, !tbaa !10
  %883 = add i32 %882, -1
  store i32 %883, ptr %27, align 4, !tbaa !10
  br label %869, !llvm.loop !42

884:                                              ; preds = %869
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %926

885:                                              ; preds = %847
  %886 = load ptr, ptr %5, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %886, i32 0, i32 6
  %888 = load i32, ptr %887, align 4, !tbaa !21
  %889 = icmp uge i32 %888, 1008
  br i1 %889, label %890, label %910

890:                                              ; preds = %885
  %891 = load ptr, ptr %5, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %891, i32 0, i32 6
  %893 = load i32, ptr %892, align 4, !tbaa !21
  %894 = icmp ult i32 %893, 1101
  br i1 %894, label %895, label %910

895:                                              ; preds = %890
  br label %896

896:                                              ; preds = %906, %895
  %897 = load i32, ptr %32, align 4, !tbaa !10
  %898 = load i32, ptr %27, align 4, !tbaa !10
  %899 = mul i32 %897, %898
  %900 = load i32, ptr %27, align 4, !tbaa !10
  %901 = add i32 %899, %900
  %902 = add i32 %901, 1
  %903 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 1
  %904 = load i32, ptr %903, align 4, !tbaa !37
  %905 = icmp ugt i32 %902, %904
  br i1 %905, label %906, label %909

906:                                              ; preds = %896
  %907 = load i32, ptr %27, align 4, !tbaa !10
  %908 = add i32 %907, -1
  store i32 %908, ptr %27, align 4, !tbaa !10
  br label %896, !llvm.loop !43

909:                                              ; preds = %896
  br label %925

910:                                              ; preds = %890, %885
  br label %911

911:                                              ; preds = %921, %910
  %912 = load i32, ptr %32, align 4, !tbaa !10
  %913 = load i32, ptr %27, align 4, !tbaa !10
  %914 = mul i32 %912, %913
  %915 = load i32, ptr %32, align 4, !tbaa !10
  %916 = add i32 %914, %915
  %917 = add i32 %916, 1
  %918 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 1
  %919 = load i32, ptr %918, align 4, !tbaa !37
  %920 = icmp ugt i32 %917, %919
  br i1 %920, label %921, label %924

921:                                              ; preds = %911
  %922 = load i32, ptr %27, align 4, !tbaa !10
  %923 = add i32 %922, -1
  store i32 %923, ptr %27, align 4, !tbaa !10
  br label %911, !llvm.loop !44

924:                                              ; preds = %911
  br label %925

925:                                              ; preds = %924, %909
  br label %926

926:                                              ; preds = %925, %884
  br label %927

927:                                              ; preds = %926, %846
  br label %928

928:                                              ; preds = %927, %816
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %929

929:                                              ; preds = %928, %679
  %930 = load i32, ptr %27, align 4, !tbaa !10
  %931 = icmp eq i32 %930, 0
  br i1 %931, label %932, label %941

932:                                              ; preds = %929
  %933 = load ptr, ptr %5, align 8, !tbaa !5
  %934 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %935 = icmp ult i32 1, %934
  br i1 %935, label %936, label %938

936:                                              ; preds = %932
  %937 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %939

938:                                              ; preds = %932
  br label %939

939:                                              ; preds = %938, %936
  %940 = phi i32 [ %937, %936 ], [ 1, %938 ]
  call void @libxsmm_handle_error(ptr noundef %933, i32 noundef 90016, ptr noundef @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef @.str, i32 noundef 381, i32 noundef %940)
  store i32 1, ptr %29, align 4
  br label %3384

941:                                              ; preds = %929
  %942 = load ptr, ptr %11, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %942, i32 0, i32 1
  %944 = load i32, ptr %943, align 1, !tbaa !45
  %945 = load i32, ptr %27, align 4, !tbaa !10
  %946 = getelementptr inbounds [2 x i32], ptr %24, i64 0, i64 0
  %947 = getelementptr inbounds [2 x i32], ptr %23, i64 0, i64 0
  %948 = getelementptr inbounds [2 x i32], ptr %24, i64 0, i64 1
  %949 = getelementptr inbounds [2 x i32], ptr %23, i64 0, i64 1
  %950 = call i32 @libxsmm_compute_equalized_blocking(i32 noundef %944, i32 noundef %945, ptr noundef %946, ptr noundef %947, ptr noundef %948, ptr noundef %949)
  %951 = getelementptr inbounds [2 x i32], ptr %24, i64 0, i64 0
  %952 = load i32, ptr %951, align 4, !tbaa !10
  %953 = icmp eq i32 %952, 0
  br i1 %953, label %954, label %963

954:                                              ; preds = %941
  %955 = load ptr, ptr %5, align 8, !tbaa !5
  %956 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %957 = icmp ult i32 1, %956
  br i1 %957, label %958, label %960

958:                                              ; preds = %954
  %959 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %961

960:                                              ; preds = %954
  br label %961

961:                                              ; preds = %960, %958
  %962 = phi i32 [ %959, %958 ], [ 1, %960 ]
  call void @libxsmm_handle_error(ptr noundef %955, i32 noundef 90016, ptr noundef @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef @.str, i32 noundef 388, i32 noundef %962)
  store i32 1, ptr %29, align 4
  br label %3384

963:                                              ; preds = %941
  %964 = load ptr, ptr %11, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %964, i32 0, i32 6
  %966 = load i32, ptr %965, align 1, !tbaa !17
  %967 = and i32 16384, %966
  %968 = icmp eq i32 %967, 16384
  br i1 %968, label %975, label %969

969:                                              ; preds = %963
  %970 = load ptr, ptr %11, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %970, i32 0, i32 6
  %972 = load i32, ptr %971, align 1, !tbaa !17
  %973 = and i32 32768, %972
  %974 = icmp eq i32 %973, 32768
  br i1 %974, label %975, label %1275

975:                                              ; preds = %969, %963
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 32, ptr %37, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 80, ptr %38, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  store i32 128, ptr %39, align 4, !tbaa !10
  %976 = load ptr, ptr %5, align 8, !tbaa !5
  %977 = load ptr, ptr %7, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %977, i32 0, i32 0
  %979 = load i32, ptr %978, align 4, !tbaa !46
  %980 = load ptr, ptr %7, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %980, i32 0, i32 23
  %982 = load i32, ptr %981, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %976, i32 noundef -1568407413, i32 noundef %979, i32 noundef %982)
  %983 = load ptr, ptr %5, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %985 = load i32, ptr %984, align 8, !tbaa !49
  %986 = load ptr, ptr %7, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %986, i32 0, i32 23
  %988 = load i32, ptr %987, align 4, !tbaa !48
  %989 = load i32, ptr %37, align 4, !tbaa !10
  %990 = load ptr, ptr %7, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %990, i32 0, i32 1
  %992 = load i32, ptr %991, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %983, i32 noundef %985, i32 noundef %988, i32 noundef 127, i32 noundef 0, i32 noundef %989, i32 noundef %992, i32 noundef 0)
  %993 = load ptr, ptr %8, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %993, i32 0, i32 6
  %995 = load i32, ptr %994, align 1, !tbaa !17
  %996 = and i32 %995, 8388608
  %997 = icmp ne i32 %996, 0
  br i1 %997, label %998, label %1010

998:                                              ; preds = %975
  %999 = load ptr, ptr %5, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1001 = load i32, ptr %1000, align 8, !tbaa !49
  %1002 = load ptr, ptr %7, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1002, i32 0, i32 23
  %1004 = load i32, ptr %1003, align 4, !tbaa !48
  %1005 = load i32, ptr %37, align 4, !tbaa !10
  %1006 = add nsw i32 %1005, 8
  %1007 = load ptr, ptr %7, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1007, i32 0, i32 29
  %1009 = load i32, ptr %1008, align 4, !tbaa !51
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %999, i32 noundef %1001, i32 noundef %1004, i32 noundef 127, i32 noundef 0, i32 noundef %1006, i32 noundef %1009, i32 noundef 0)
  br label %1010

1010:                                             ; preds = %998, %975
  %1011 = load i32, ptr %14, align 4, !tbaa !10
  %1012 = icmp ugt i32 %1011, 0
  br i1 %1012, label %1019, label %1013

1013:                                             ; preds = %1010
  %1014 = load i32, ptr %15, align 4, !tbaa !10
  %1015 = icmp ugt i32 %1014, 0
  br i1 %1015, label %1019, label %1016

1016:                                             ; preds = %1013
  %1017 = load i32, ptr %16, align 4, !tbaa !10
  %1018 = icmp ugt i32 %1017, 0
  br i1 %1018, label %1019, label %1031

1019:                                             ; preds = %1016, %1013, %1010
  %1020 = load ptr, ptr %5, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1022 = load i32, ptr %1021, align 8, !tbaa !49
  %1023 = load ptr, ptr %7, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1023, i32 0, i32 23
  %1025 = load i32, ptr %1024, align 4, !tbaa !48
  %1026 = load i32, ptr %37, align 4, !tbaa !10
  %1027 = add nsw i32 %1026, 16
  %1028 = load ptr, ptr %7, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1028, i32 0, i32 20
  %1030 = load i32, ptr %1029, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1020, i32 noundef %1022, i32 noundef %1025, i32 noundef 127, i32 noundef 0, i32 noundef %1027, i32 noundef %1030, i32 noundef 0)
  br label %1031

1031:                                             ; preds = %1019, %1016
  %1032 = load ptr, ptr %5, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1034 = load i32, ptr %1033, align 8, !tbaa !49
  %1035 = load ptr, ptr %7, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1035, i32 0, i32 23
  %1037 = load i32, ptr %1036, align 4, !tbaa !48
  %1038 = load i32, ptr %38, align 4, !tbaa !10
  %1039 = load ptr, ptr %7, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1039, i32 0, i32 3
  %1041 = load i32, ptr %1040, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1032, i32 noundef %1034, i32 noundef %1037, i32 noundef 127, i32 noundef 0, i32 noundef %1038, i32 noundef %1041, i32 noundef 0)
  %1042 = load i32, ptr %16, align 4, !tbaa !10
  %1043 = icmp ugt i32 %1042, 0
  br i1 %1043, label %1044, label %1056

1044:                                             ; preds = %1031
  %1045 = load ptr, ptr %5, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1047 = load i32, ptr %1046, align 8, !tbaa !49
  %1048 = load ptr, ptr %7, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1048, i32 0, i32 23
  %1050 = load i32, ptr %1049, align 4, !tbaa !48
  %1051 = load i32, ptr %38, align 4, !tbaa !10
  %1052 = add nsw i32 %1051, 16
  %1053 = load ptr, ptr %7, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1053, i32 0, i32 21
  %1055 = load i32, ptr %1054, align 4, !tbaa !54
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1045, i32 noundef %1047, i32 noundef %1050, i32 noundef 127, i32 noundef 0, i32 noundef %1052, i32 noundef %1055, i32 noundef 0)
  br label %1056

1056:                                             ; preds = %1044, %1031
  %1057 = load ptr, ptr %5, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1059 = load i32, ptr %1058, align 8, !tbaa !49
  %1060 = load ptr, ptr %7, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1060, i32 0, i32 23
  %1062 = load i32, ptr %1061, align 4, !tbaa !48
  %1063 = load i32, ptr %39, align 4, !tbaa !10
  %1064 = load ptr, ptr %7, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1064, i32 0, i32 5
  %1066 = load i32, ptr %1065, align 4, !tbaa !55
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1057, i32 noundef %1059, i32 noundef %1062, i32 noundef 127, i32 noundef 0, i32 noundef %1063, i32 noundef %1066, i32 noundef 0)
  %1067 = load ptr, ptr %11, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1067, i32 0, i32 7
  %1069 = load i8, ptr %1068, align 1, !tbaa !20
  %1070 = zext i8 %1069 to i32
  %1071 = icmp ne i32 %1070, 0
  br i1 %1071, label %1072, label %1095

1072:                                             ; preds = %1056
  %1073 = load ptr, ptr %5, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1075 = load i32, ptr %1074, align 8, !tbaa !49
  %1076 = load ptr, ptr %7, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1076, i32 0, i32 23
  %1078 = load i32, ptr %1077, align 4, !tbaa !48
  %1079 = load i32, ptr %37, align 4, !tbaa !10
  %1080 = add nsw i32 %1079, 40
  %1081 = load ptr, ptr %7, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1081, i32 0, i32 6
  %1083 = load i32, ptr %1082, align 4, !tbaa !56
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1073, i32 noundef %1075, i32 noundef %1078, i32 noundef 127, i32 noundef 0, i32 noundef %1080, i32 noundef %1083, i32 noundef 0)
  %1084 = load ptr, ptr %5, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1086 = load i32, ptr %1085, align 8, !tbaa !49
  %1087 = load ptr, ptr %7, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1087, i32 0, i32 23
  %1089 = load i32, ptr %1088, align 4, !tbaa !48
  %1090 = load i32, ptr %38, align 4, !tbaa !10
  %1091 = add nsw i32 %1090, 40
  %1092 = load ptr, ptr %7, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1092, i32 0, i32 8
  %1094 = load i32, ptr %1093, align 4, !tbaa !57
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1084, i32 noundef %1086, i32 noundef %1089, i32 noundef 127, i32 noundef 0, i32 noundef %1091, i32 noundef %1094, i32 noundef 0)
  br label %1095

1095:                                             ; preds = %1072, %1056
  %1096 = load ptr, ptr %11, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1096, i32 0, i32 6
  %1098 = load i32, ptr %1097, align 1, !tbaa !17
  %1099 = and i32 %1098, 65536
  %1100 = icmp ne i32 %1099, 0
  br i1 %1100, label %1113, label %1101

1101:                                             ; preds = %1095
  %1102 = load ptr, ptr %11, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1102, i32 0, i32 6
  %1104 = load i32, ptr %1103, align 1, !tbaa !17
  %1105 = and i32 %1104, 262144
  %1106 = icmp ne i32 %1105, 0
  br i1 %1106, label %1113, label %1107

1107:                                             ; preds = %1101
  %1108 = load ptr, ptr %11, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1108, i32 0, i32 6
  %1110 = load i32, ptr %1109, align 1, !tbaa !17
  %1111 = and i32 %1110, 131072
  %1112 = icmp ne i32 %1111, 0
  br i1 %1112, label %1113, label %1152

1113:                                             ; preds = %1107, %1101, %1095
  %1114 = load ptr, ptr %5, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1116 = load i32, ptr %1115, align 8, !tbaa !49
  %1117 = load ptr, ptr %7, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1117, i32 0, i32 23
  %1119 = load i32, ptr %1118, align 4, !tbaa !48
  %1120 = load ptr, ptr %7, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1120, i32 0, i32 13
  %1122 = load i32, ptr %1121, align 4, !tbaa !58
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1114, i32 noundef %1116, i32 noundef %1119, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %1122, i32 noundef 0)
  %1123 = load ptr, ptr %11, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1123, i32 0, i32 6
  %1125 = load i32, ptr %1124, align 1, !tbaa !17
  %1126 = and i32 %1125, 131072
  %1127 = icmp ne i32 %1126, 0
  br i1 %1127, label %1128, label %1151

1128:                                             ; preds = %1113
  %1129 = load ptr, ptr %5, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1131 = load i32, ptr %1130, align 8, !tbaa !49
  %1132 = load ptr, ptr %7, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1132, i32 0, i32 23
  %1134 = load i32, ptr %1133, align 4, !tbaa !48
  %1135 = load i32, ptr %37, align 4, !tbaa !10
  %1136 = add nsw i32 %1135, 8
  %1137 = load ptr, ptr %7, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1137, i32 0, i32 7
  %1139 = load i32, ptr %1138, align 4, !tbaa !59
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1129, i32 noundef %1131, i32 noundef %1134, i32 noundef 127, i32 noundef 0, i32 noundef %1136, i32 noundef %1139, i32 noundef 0)
  %1140 = load ptr, ptr %5, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1142 = load i32, ptr %1141, align 8, !tbaa !49
  %1143 = load ptr, ptr %7, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1143, i32 0, i32 23
  %1145 = load i32, ptr %1144, align 4, !tbaa !48
  %1146 = load i32, ptr %38, align 4, !tbaa !10
  %1147 = add nsw i32 %1146, 8
  %1148 = load ptr, ptr %7, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1148, i32 0, i32 9
  %1150 = load i32, ptr %1149, align 4, !tbaa !60
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1140, i32 noundef %1142, i32 noundef %1145, i32 noundef 127, i32 noundef 0, i32 noundef %1147, i32 noundef %1150, i32 noundef 0)
  br label %1151

1151:                                             ; preds = %1128, %1113
  br label %1152

1152:                                             ; preds = %1151, %1107
  %1153 = load ptr, ptr %11, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1153, i32 0, i32 8
  %1155 = getelementptr inbounds [3 x i8], ptr %1154, i64 0, i64 0
  %1156 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1155)
  %1157 = icmp eq i32 12, %1156
  br i1 %1157, label %1158, label %1179

1158:                                             ; preds = %1152
  %1159 = load ptr, ptr %11, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1159, i32 0, i32 8
  %1161 = getelementptr inbounds [3 x i8], ptr %1160, i64 0, i64 0
  %1162 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1161)
  %1163 = icmp eq i32 1, %1162
  br i1 %1163, label %1164, label %1179

1164:                                             ; preds = %1158
  %1165 = load i32, ptr %16, align 4, !tbaa !10
  %1166 = icmp eq i32 %1165, 0
  br i1 %1166, label %1167, label %1179

1167:                                             ; preds = %1164
  %1168 = load ptr, ptr %5, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1170 = load i32, ptr %1169, align 8, !tbaa !49
  %1171 = load ptr, ptr %7, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1171, i32 0, i32 23
  %1173 = load i32, ptr %1172, align 4, !tbaa !48
  %1174 = load i32, ptr %39, align 4, !tbaa !10
  %1175 = add nsw i32 %1174, 16
  %1176 = load ptr, ptr %7, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1176, i32 0, i32 20
  %1178 = load i32, ptr %1177, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1168, i32 noundef %1170, i32 noundef %1173, i32 noundef 127, i32 noundef 0, i32 noundef %1175, i32 noundef %1178, i32 noundef 0)
  br label %1179

1179:                                             ; preds = %1167, %1164, %1158, %1152
  %1180 = load ptr, ptr %11, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1180, i32 0, i32 8
  %1182 = getelementptr inbounds [3 x i8], ptr %1181, i64 0, i64 0
  %1183 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %1182)
  %1184 = icmp eq i32 12, %1183
  br i1 %1184, label %1185, label %1203

1185:                                             ; preds = %1179
  %1186 = load ptr, ptr %11, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1186, i32 0, i32 8
  %1188 = getelementptr inbounds [3 x i8], ptr %1187, i64 0, i64 0
  %1189 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %1188)
  %1190 = icmp eq i32 3, %1189
  br i1 %1190, label %1191, label %1203

1191:                                             ; preds = %1185
  %1192 = load ptr, ptr %11, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1192, i32 0, i32 8
  %1194 = getelementptr inbounds [3 x i8], ptr %1193, i64 0, i64 0
  %1195 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1194)
  %1196 = icmp eq i32 3, %1195
  br i1 %1196, label %1230, label %1197

1197:                                             ; preds = %1191
  %1198 = load ptr, ptr %11, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1198, i32 0, i32 8
  %1200 = getelementptr inbounds [3 x i8], ptr %1199, i64 0, i64 0
  %1201 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1200)
  %1202 = icmp eq i32 1, %1201
  br i1 %1202, label %1230, label %1203

1203:                                             ; preds = %1197, %1185, %1179
  %1204 = load ptr, ptr %11, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1204, i32 0, i32 8
  %1206 = getelementptr inbounds [3 x i8], ptr %1205, i64 0, i64 0
  %1207 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %1206)
  %1208 = icmp eq i32 12, %1207
  br i1 %1208, label %1209, label %1253

1209:                                             ; preds = %1203
  %1210 = load i32, ptr %15, align 4, !tbaa !10
  %1211 = icmp eq i32 %1210, 0
  br i1 %1211, label %1212, label %1253

1212:                                             ; preds = %1209
  %1213 = load ptr, ptr %11, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1213, i32 0, i32 8
  %1215 = getelementptr inbounds [3 x i8], ptr %1214, i64 0, i64 0
  %1216 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %1215)
  %1217 = icmp eq i32 2, %1216
  br i1 %1217, label %1218, label %1253

1218:                                             ; preds = %1212
  %1219 = load ptr, ptr %11, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1219, i32 0, i32 8
  %1221 = getelementptr inbounds [3 x i8], ptr %1220, i64 0, i64 0
  %1222 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1221)
  %1223 = icmp eq i32 2, %1222
  br i1 %1223, label %1230, label %1224

1224:                                             ; preds = %1218
  %1225 = load ptr, ptr %11, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1225, i32 0, i32 8
  %1227 = getelementptr inbounds [3 x i8], ptr %1226, i64 0, i64 0
  %1228 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1227)
  %1229 = icmp eq i32 1, %1228
  br i1 %1229, label %1230, label %1253

1230:                                             ; preds = %1224, %1218, %1197, %1191
  %1231 = load ptr, ptr %5, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1233 = load i32, ptr %1232, align 8, !tbaa !49
  %1234 = load ptr, ptr %7, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1234, i32 0, i32 23
  %1236 = load i32, ptr %1235, align 4, !tbaa !48
  %1237 = load i32, ptr %37, align 4, !tbaa !10
  %1238 = add nsw i32 %1237, 16
  %1239 = load ptr, ptr %7, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1239, i32 0, i32 20
  %1241 = load i32, ptr %1240, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1231, i32 noundef %1233, i32 noundef %1236, i32 noundef 127, i32 noundef 0, i32 noundef %1238, i32 noundef %1241, i32 noundef 0)
  %1242 = load ptr, ptr %5, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1244 = load i32, ptr %1243, align 8, !tbaa !49
  %1245 = load ptr, ptr %7, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1245, i32 0, i32 23
  %1247 = load i32, ptr %1246, align 4, !tbaa !48
  %1248 = load i32, ptr %37, align 4, !tbaa !10
  %1249 = add nsw i32 %1248, 24
  %1250 = load ptr, ptr %7, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1250, i32 0, i32 21
  %1252 = load i32, ptr %1251, align 4, !tbaa !54
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1242, i32 noundef %1244, i32 noundef %1247, i32 noundef 127, i32 noundef 0, i32 noundef %1249, i32 noundef %1252, i32 noundef 0)
  br label %1253

1253:                                             ; preds = %1230, %1224, %1212, %1209, %1203
  %1254 = load i32, ptr %13, align 4, !tbaa !10
  %1255 = icmp ugt i32 %1254, 0
  br i1 %1255, label %1256, label %1274

1256:                                             ; preds = %1253
  %1257 = load ptr, ptr %8, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1257, i32 0, i32 6
  %1259 = load i32, ptr %1258, align 1, !tbaa !17
  %1260 = and i32 %1259, 1048576
  %1261 = icmp ugt i32 %1260, 0
  br i1 %1261, label %1262, label %1274

1262:                                             ; preds = %1256
  %1263 = load ptr, ptr %5, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1265 = load i32, ptr %1264, align 8, !tbaa !49
  %1266 = load ptr, ptr %7, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1266, i32 0, i32 23
  %1268 = load i32, ptr %1267, align 4, !tbaa !48
  %1269 = load i32, ptr %37, align 4, !tbaa !10
  %1270 = add nsw i32 %1269, 24
  %1271 = load ptr, ptr %7, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1271, i32 0, i32 21
  %1273 = load i32, ptr %1272, align 4, !tbaa !54
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1263, i32 noundef %1265, i32 noundef %1268, i32 noundef 127, i32 noundef 0, i32 noundef %1270, i32 noundef %1273, i32 noundef 0)
  br label %1274

1274:                                             ; preds = %1262, %1256, %1253
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %1275

1275:                                             ; preds = %1274, %969
  %1276 = load ptr, ptr %11, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1276, i32 0, i32 6
  %1278 = load i32, ptr %1277, align 1, !tbaa !17
  %1279 = and i32 32768, %1278
  %1280 = icmp eq i32 %1279, 32768
  br i1 %1280, label %1285, label %1281

1281:                                             ; preds = %1275
  %1282 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 35
  %1283 = load i32, ptr %1282, align 4, !tbaa !61
  %1284 = icmp ugt i32 %1283, 0
  br i1 %1284, label %1285, label %1325

1285:                                             ; preds = %1281, %1275
  %1286 = load ptr, ptr %11, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1286, i32 0, i32 8
  %1288 = getelementptr inbounds [3 x i8], ptr %1287, i64 0, i64 0
  %1289 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1288)
  %1290 = icmp eq i32 2, %1289
  br i1 %1290, label %1324, label %1291

1291:                                             ; preds = %1285
  %1292 = load ptr, ptr %11, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1292, i32 0, i32 8
  %1294 = getelementptr inbounds [3 x i8], ptr %1293, i64 0, i64 0
  %1295 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1294)
  %1296 = icmp eq i32 3, %1295
  br i1 %1296, label %1324, label %1297

1297:                                             ; preds = %1291
  %1298 = load ptr, ptr %11, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1298, i32 0, i32 8
  %1300 = getelementptr inbounds [3 x i8], ptr %1299, i64 0, i64 0
  %1301 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1300)
  %1302 = icmp eq i32 4, %1301
  br i1 %1302, label %1324, label %1303

1303:                                             ; preds = %1297
  %1304 = load ptr, ptr %11, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1304, i32 0, i32 8
  %1306 = getelementptr inbounds [3 x i8], ptr %1305, i64 0, i64 0
  %1307 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1306)
  %1308 = icmp eq i32 5, %1307
  br i1 %1308, label %1324, label %1309

1309:                                             ; preds = %1303
  %1310 = load ptr, ptr %11, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1310, i32 0, i32 8
  %1312 = getelementptr inbounds [3 x i8], ptr %1311, i64 0, i64 0
  %1313 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1312)
  %1314 = icmp eq i32 1, %1313
  br i1 %1314, label %1324, label %1315

1315:                                             ; preds = %1309
  %1316 = load ptr, ptr %5, align 8, !tbaa !5
  %1317 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %1318 = icmp ult i32 1, %1317
  br i1 %1318, label %1319, label %1321

1319:                                             ; preds = %1315
  %1320 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %1322

1321:                                             ; preds = %1315
  br label %1322

1322:                                             ; preds = %1321, %1319
  %1323 = phi i32 [ %1320, %1319 ], [ 1, %1321 ]
  call void @libxsmm_handle_error(ptr noundef %1316, i32 noundef 90046, ptr noundef @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef @.str, i32 noundef 476, i32 noundef %1323)
  store i32 1, ptr %29, align 4
  br label %3384

1324:                                             ; preds = %1309, %1303, %1297, %1291, %1285
  br label %1325

1325:                                             ; preds = %1324, %1281
  %1326 = load ptr, ptr %5, align 8, !tbaa !5
  %1327 = load ptr, ptr %11, align 8, !tbaa !5
  %1328 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setup_stack_frame(ptr noundef %1326, ptr noundef %1327, ptr noundef %1328, ptr noundef %9)
  %1329 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 35
  %1330 = load i32, ptr %1329, align 4, !tbaa !61
  %1331 = icmp ugt i32 %1330, 0
  br i1 %1331, label %1332, label %1359

1332:                                             ; preds = %1325
  %1333 = load ptr, ptr %5, align 8, !tbaa !5
  %1334 = load ptr, ptr %7, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1334, i32 0, i32 5
  %1336 = load i32, ptr %1335, align 4, !tbaa !55
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1333, ptr noundef %9, i32 noundef 18, i32 noundef %1336)
  %1337 = load ptr, ptr %5, align 8, !tbaa !5
  %1338 = load ptr, ptr %7, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1338, i32 0, i32 5
  %1340 = load i32, ptr %1339, align 4, !tbaa !55
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1337, ptr noundef %9, i32 noundef 6, i32 noundef %1340)
  %1341 = load ptr, ptr %5, align 8, !tbaa !5
  %1342 = load ptr, ptr %7, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1342, i32 0, i32 23
  %1344 = load i32, ptr %1343, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef %1341, i32 noundef -1568407413, i32 noundef %1344, i64 noundef 2048)
  %1345 = load ptr, ptr %5, align 8, !tbaa !5
  %1346 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %1347 = load i32, ptr %1346, align 8, !tbaa !62
  %1348 = load ptr, ptr %7, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1348, i32 0, i32 23
  %1350 = load i32, ptr %1349, align 4, !tbaa !48
  %1351 = load ptr, ptr %7, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1351, i32 0, i32 5
  %1353 = load i32, ptr %1352, align 4, !tbaa !55
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1345, i32 noundef %1347, i32 noundef %1350, i32 noundef %1353)
  %1354 = load ptr, ptr %11, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1354, i32 0, i32 0
  %1356 = load i32, ptr %1355, align 1, !tbaa !23
  %1357 = load ptr, ptr %11, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1357, i32 0, i32 5
  store i32 %1356, ptr %1358, align 1, !tbaa !63
  br label %1359

1359:                                             ; preds = %1332, %1325
  %1360 = load ptr, ptr %5, align 8, !tbaa !5
  %1361 = load ptr, ptr %6, align 8, !tbaa !5
  %1362 = load ptr, ptr %7, align 8, !tbaa !5
  %1363 = load ptr, ptr %11, align 8, !tbaa !5
  %1364 = load ptr, ptr %8, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_apply_opA_opB(ptr noundef %1360, ptr noundef %1361, ptr noundef %1362, ptr noundef %9, ptr noundef %1363, ptr noundef %1364)
  %1365 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_reset_loop_label_tracker(ptr noundef %1365)
  %1366 = load ptr, ptr %11, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1366, i32 0, i32 8
  %1368 = getelementptr inbounds [3 x i8], ptr %1367, i64 0, i64 0
  %1369 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1368)
  %1370 = icmp eq i32 2, %1369
  br i1 %1370, label %1371, label %1414

1371:                                             ; preds = %1359
  %1372 = load ptr, ptr %11, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1372, i32 0, i32 6
  %1374 = load i32, ptr %1373, align 1, !tbaa !17
  %1375 = and i32 %1374, 2048
  %1376 = icmp ugt i32 %1375, 0
  br i1 %1376, label %1377, label %1414

1377:                                             ; preds = %1371
  %1378 = load ptr, ptr %5, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1378, i32 0, i32 6
  %1380 = load i32, ptr %1379, align 4, !tbaa !21
  %1381 = icmp ne i32 %1380, 1103
  br i1 %1381, label %1382, label %1414

1382:                                             ; preds = %1377
  %1383 = load ptr, ptr %5, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1383, i32 0, i32 6
  %1385 = load i32, ptr %1384, align 4, !tbaa !21
  %1386 = icmp uge i32 %1385, 1051
  br i1 %1386, label %1387, label %1414

1387:                                             ; preds = %1382
  %1388 = load ptr, ptr %5, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1388, i32 0, i32 6
  %1390 = load i32, ptr %1389, align 4, !tbaa !21
  %1391 = icmp ule i32 %1390, 1999
  br i1 %1391, label %1392, label %1414

1392:                                             ; preds = %1387
  %1393 = load ptr, ptr %5, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1393, i32 0, i32 6
  %1395 = load i32, ptr %1394, align 4, !tbaa !21
  %1396 = icmp ne i32 %1395, 1053
  br i1 %1396, label %1397, label %1414

1397:                                             ; preds = %1392
  %1398 = load ptr, ptr %5, align 8, !tbaa !5
  %1399 = load ptr, ptr %7, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1399, i32 0, i32 24
  %1401 = load i32, ptr %1400, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %1398, i32 noundef %1401)
  %1402 = load ptr, ptr %5, align 8, !tbaa !5
  %1403 = load ptr, ptr %7, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1403, i32 0, i32 24
  %1405 = load i32, ptr %1404, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef %1402, i32 noundef -1568407413, i32 noundef %1405, i64 noundef 2863311530)
  %1406 = load ptr, ptr %5, align 8, !tbaa !5
  %1407 = load ptr, ptr %7, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1407, i32 0, i32 24
  %1409 = load i32, ptr %1408, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_mask_move(ptr noundef %1406, i32 noundef -1610149486, i32 noundef %1409, i32 noundef 3)
  %1410 = load ptr, ptr %5, align 8, !tbaa !5
  %1411 = load ptr, ptr %7, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1411, i32 0, i32 24
  %1413 = load i32, ptr %1412, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1410, i32 noundef %1413)
  br label %1414

1414:                                             ; preds = %1397, %1392, %1387, %1382, %1377, %1371, %1359
  %1415 = load ptr, ptr %11, align 8, !tbaa !5
  %1416 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1415, i32 0, i32 8
  %1417 = getelementptr inbounds [3 x i8], ptr %1416, i64 0, i64 0
  %1418 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1417)
  %1419 = icmp eq i32 12, %1418
  br i1 %1419, label %1420, label %1477

1420:                                             ; preds = %1414
  %1421 = load ptr, ptr %11, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1421, i32 0, i32 6
  %1423 = load i32, ptr %1422, align 1, !tbaa !17
  %1424 = and i32 %1423, 2048
  %1425 = icmp ugt i32 %1424, 0
  br i1 %1425, label %1426, label %1477

1426:                                             ; preds = %1420
  %1427 = load ptr, ptr %11, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1427, i32 0, i32 6
  %1429 = load i32, ptr %1428, align 1, !tbaa !17
  %1430 = and i32 %1429, 256
  %1431 = icmp eq i32 %1430, 0
  br i1 %1431, label %1432, label %1438

1432:                                             ; preds = %1426
  %1433 = load ptr, ptr %11, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1433, i32 0, i32 6
  %1435 = load i32, ptr %1434, align 1, !tbaa !17
  %1436 = and i32 %1435, 512
  %1437 = icmp eq i32 %1436, 0
  br i1 %1437, label %1450, label %1438

1438:                                             ; preds = %1432, %1426
  %1439 = load ptr, ptr %11, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1439, i32 0, i32 6
  %1441 = load i32, ptr %1440, align 1, !tbaa !17
  %1442 = and i32 %1441, 256
  %1443 = icmp ugt i32 %1442, 0
  br i1 %1443, label %1444, label %1477

1444:                                             ; preds = %1438
  %1445 = load ptr, ptr %11, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1445, i32 0, i32 6
  %1447 = load i32, ptr %1446, align 1, !tbaa !17
  %1448 = and i32 %1447, 512
  %1449 = icmp ugt i32 %1448, 0
  br i1 %1449, label %1450, label %1477

1450:                                             ; preds = %1444, %1432
  %1451 = load ptr, ptr %5, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1451, i32 0, i32 6
  %1453 = load i32, ptr %1452, align 4, !tbaa !21
  %1454 = icmp uge i32 %1453, 1051
  br i1 %1454, label %1455, label %1477

1455:                                             ; preds = %1450
  %1456 = load ptr, ptr %5, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1456, i32 0, i32 6
  %1458 = load i32, ptr %1457, align 4, !tbaa !21
  %1459 = icmp ule i32 %1458, 1999
  br i1 %1459, label %1460, label %1477

1460:                                             ; preds = %1455
  %1461 = load ptr, ptr %5, align 8, !tbaa !5
  %1462 = load ptr, ptr %7, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1462, i32 0, i32 24
  %1464 = load i32, ptr %1463, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %1461, i32 noundef %1464)
  %1465 = load ptr, ptr %5, align 8, !tbaa !5
  %1466 = load ptr, ptr %7, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1466, i32 0, i32 24
  %1468 = load i32, ptr %1467, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef %1465, i32 noundef -1568407413, i32 noundef %1468, i64 noundef 1431655765)
  %1469 = load ptr, ptr %5, align 8, !tbaa !5
  %1470 = load ptr, ptr %7, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1470, i32 0, i32 24
  %1472 = load i32, ptr %1471, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_mask_move(ptr noundef %1469, i32 noundef -1610149486, i32 noundef %1472, i32 noundef 3)
  %1473 = load ptr, ptr %5, align 8, !tbaa !5
  %1474 = load ptr, ptr %7, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1474, i32 0, i32 24
  %1476 = load i32, ptr %1475, align 4, !tbaa !64
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1473, i32 noundef %1476)
  br label %1477

1477:                                             ; preds = %1460, %1455, %1450, %1444, %1438, %1420, %1414
  %1478 = load i32, ptr %14, align 4, !tbaa !10
  %1479 = icmp ugt i32 %1478, 0
  br i1 %1479, label %1483, label %1480

1480:                                             ; preds = %1477
  %1481 = load i32, ptr %15, align 4, !tbaa !10
  %1482 = icmp ugt i32 %1481, 0
  br i1 %1482, label %1483, label %1490

1483:                                             ; preds = %1480, %1477
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %40, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mant, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %41, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_sign, i64 32, i1 false)
  %1484 = load ptr, ptr %6, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 108
  store ptr %1484, ptr %1485, align 8, !tbaa !65
  %1486 = load ptr, ptr %5, align 8, !tbaa !5
  %1487 = getelementptr inbounds [8 x float], ptr %40, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1486, ptr noundef %1487, ptr noundef @.str.1, i8 noundef signext 121, i32 noundef 0)
  %1488 = load ptr, ptr %5, align 8, !tbaa !5
  %1489 = getelementptr inbounds [8 x i32], ptr %41, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1488, ptr noundef %1489, ptr noundef @.str.2, i8 noundef signext 121, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  br label %1490

1490:                                             ; preds = %1483, %1480
  %1491 = load i32, ptr %16, align 4, !tbaa !10
  %1492 = icmp ugt i32 %1491, 0
  br i1 %1492, label %1493, label %1500

1493:                                             ; preds = %1490
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %42, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mxfp4, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %43, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_idx, i64 32, i1 false)
  %1494 = load ptr, ptr %6, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 108
  store ptr %1494, ptr %1495, align 8, !tbaa !65
  %1496 = load ptr, ptr %5, align 8, !tbaa !5
  %1497 = getelementptr inbounds [32 x i8], ptr %42, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1496, ptr noundef %1497, ptr noundef @.str.3, i8 noundef signext 121, i32 noundef 0)
  %1498 = load ptr, ptr %5, align 8, !tbaa !5
  %1499 = getelementptr inbounds [8 x i32], ptr %43, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1498, ptr noundef %1499, ptr noundef @.str.4, i8 noundef signext 121, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #6
  br label %1500

1500:                                             ; preds = %1493, %1490
  %1501 = load i32, ptr %12, align 4, !tbaa !10
  %1502 = icmp ugt i32 %1501, 0
  br i1 %1502, label %1503, label %1563

1503:                                             ; preds = %1500
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %1504 = load ptr, ptr %5, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1504, i32 0, i32 6
  %1506 = load i32, ptr %1505, align 4, !tbaa !21
  %1507 = icmp ugt i32 %1506, 1006
  br i1 %1507, label %1508, label %1513

1508:                                             ; preds = %1503
  %1509 = load ptr, ptr %5, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1509, i32 0, i32 6
  %1511 = load i32, ptr %1510, align 4, !tbaa !21
  %1512 = icmp ult i32 %1511, 1101
  br label %1513

1513:                                             ; preds = %1508, %1503
  %1514 = phi i1 [ false, %1503 ], [ %1512, %1508 ]
  %1515 = zext i1 %1514 to i64
  %1516 = select i1 %1514, i32 0, i32 1
  store i32 %1516, ptr %44, align 4, !tbaa !10
  %1517 = load i32, ptr %44, align 4, !tbaa !10
  %1518 = icmp ugt i32 %1517, 0
  br i1 %1518, label %1519, label %1557

1519:                                             ; preds = %1513
  call void @llvm.lifetime.start.p0(i64 64, ptr %45) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %45, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_f32, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %46) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %46, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut_f32, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %47) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %47, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %48) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %48, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut, i64 64, i1 false)
  %1520 = load ptr, ptr %8, align 8, !tbaa !5
  %1521 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1520, i32 0, i32 8
  %1522 = getelementptr inbounds [3 x i8], ptr %1521, i64 0, i64 0
  %1523 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1522)
  %1524 = icmp eq i32 1, %1523
  br i1 %1524, label %1530, label %1525

1525:                                             ; preds = %1519
  %1526 = load ptr, ptr %5, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1526, i32 0, i32 6
  %1528 = load i32, ptr %1527, align 4, !tbaa !21
  %1529 = icmp ult i32 %1528, 1104
  br i1 %1529, label %1530, label %1543

1530:                                             ; preds = %1525, %1519
  %1531 = load ptr, ptr %5, align 8, !tbaa !5
  %1532 = load ptr, ptr %8, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1532, i32 0, i32 6
  %1534 = load i32, ptr %1533, align 1, !tbaa !17
  %1535 = and i32 %1534, 256
  %1536 = icmp ugt i32 %1535, 0
  br i1 %1536, label %1537, label %1539

1537:                                             ; preds = %1530
  %1538 = getelementptr inbounds [16 x i32], ptr %45, i64 0, i64 0
  br label %1541

1539:                                             ; preds = %1530
  %1540 = getelementptr inbounds [16 x i32], ptr %46, i64 0, i64 0
  br label %1541

1541:                                             ; preds = %1539, %1537
  %1542 = phi ptr [ %1538, %1537 ], [ %1540, %1539 ]
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1531, ptr noundef %1542, ptr noundef @.str.5, i8 noundef signext 122, i32 noundef 0)
  br label %1556

1543:                                             ; preds = %1525
  %1544 = load ptr, ptr %5, align 8, !tbaa !5
  %1545 = load ptr, ptr %8, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1545, i32 0, i32 6
  %1547 = load i32, ptr %1546, align 1, !tbaa !17
  %1548 = and i32 %1547, 256
  %1549 = icmp ugt i32 %1548, 0
  br i1 %1549, label %1550, label %1552

1550:                                             ; preds = %1543
  %1551 = getelementptr inbounds [32 x i16], ptr %47, i64 0, i64 0
  br label %1554

1552:                                             ; preds = %1543
  %1553 = getelementptr inbounds [32 x i16], ptr %48, i64 0, i64 0
  br label %1554

1554:                                             ; preds = %1552, %1550
  %1555 = phi ptr [ %1551, %1550 ], [ %1553, %1552 ]
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1544, ptr noundef %1555, ptr noundef @.str.5, i8 noundef signext 122, i32 noundef 0)
  br label %1556

1556:                                             ; preds = %1554, %1541
  call void @llvm.lifetime.end.p0(i64 64, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %45) #6
  br label %1562

1557:                                             ; preds = %1513
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %49, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_lo_i4, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %50, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_hi_i4, i64 32, i1 false)
  %1558 = load ptr, ptr %5, align 8, !tbaa !5
  %1559 = getelementptr inbounds [8 x i32], ptr %49, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1558, ptr noundef %1559, ptr noundef @.str.6, i8 noundef signext 121, i32 noundef 0)
  %1560 = load ptr, ptr %5, align 8, !tbaa !5
  %1561 = getelementptr inbounds [8 x i32], ptr %50, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1560, ptr noundef %1561, ptr noundef @.str.7, i8 noundef signext 121, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  br label %1562

1562:                                             ; preds = %1557, %1556
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %1563

1563:                                             ; preds = %1562, %1500
  %1564 = load i32, ptr %13, align 4, !tbaa !10
  %1565 = icmp ugt i32 %1564, 0
  br i1 %1565, label %1566, label %1579

1566:                                             ; preds = %1563
  call void @llvm.lifetime.start.p0(i64 64, ptr %51) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %51, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.perm_rpt_zpt, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %52) #6
  call void @llvm.memset.p0.i64(ptr align 16 %52, i8 15, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %53) #6
  call void @llvm.memset.p0.i64(ptr align 16 %53, i8 -16, i64 64, i1 false)
  %1567 = load ptr, ptr %5, align 8, !tbaa !5
  %1568 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1567, ptr noundef %1568, ptr noundef @.str.6, i8 noundef signext 122, i32 noundef 0)
  %1569 = load ptr, ptr %5, align 8, !tbaa !5
  %1570 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1569, ptr noundef %1570, ptr noundef @.str.7, i8 noundef signext 122, i32 noundef 1)
  %1571 = load ptr, ptr %5, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1571, i32 0, i32 6
  %1573 = load i32, ptr %1572, align 4, !tbaa !21
  %1574 = icmp uge i32 %1573, 1104
  br i1 %1574, label %1575, label %1578

1575:                                             ; preds = %1566
  %1576 = load ptr, ptr %5, align 8, !tbaa !5
  %1577 = getelementptr inbounds [64 x i8], ptr %51, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1576, ptr noundef %1577, ptr noundef @.str.8, i8 noundef signext 122, i32 noundef 2)
  br label %1578

1578:                                             ; preds = %1575, %1566
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %51) #6
  br label %1579

1579:                                             ; preds = %1578, %1563
  %1580 = load i32, ptr %28, align 4, !tbaa !10
  %1581 = icmp ugt i32 %1580, 0
  br i1 %1581, label %1582, label %1605

1582:                                             ; preds = %1579
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %1583 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 14
  %1584 = load i32, ptr %1583, align 8, !tbaa !66
  %1585 = icmp eq i32 %1584, -268032430
  %1586 = zext i1 %1585 to i64
  %1587 = select i1 %1585, i32 1, i32 0
  store i32 %1587, ptr %54, align 4, !tbaa !10
  %1588 = load i32, ptr %54, align 4, !tbaa !10
  %1589 = icmp ugt i32 %1588, 0
  br i1 %1589, label %1590, label %1604

1590:                                             ; preds = %1582
  call void @llvm.lifetime.start.p0(i64 64, ptr %55) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %55, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_512, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %56, ptr align 16 @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_256, i64 32, i1 false)
  %1591 = load ptr, ptr %5, align 8, !tbaa !5
  %1592 = load ptr, ptr %5, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1592, i32 0, i32 6
  %1594 = load i32, ptr %1593, align 4, !tbaa !21
  %1595 = icmp uge i32 %1594, 1101
  br i1 %1595, label %1596, label %1598

1596:                                             ; preds = %1590
  %1597 = getelementptr inbounds [32 x i16], ptr %55, i64 0, i64 0
  br label %1600

1598:                                             ; preds = %1590
  %1599 = getelementptr inbounds [16 x i16], ptr %56, i64 0, i64 0
  br label %1600

1600:                                             ; preds = %1598, %1596
  %1601 = phi ptr [ %1597, %1596 ], [ %1599, %1598 ]
  %1602 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 21
  %1603 = load i8, ptr %1602, align 4, !tbaa !67
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1591, ptr noundef %1601, ptr noundef @.str.9, i8 noundef signext %1603, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %55) #6
  br label %1604

1604:                                             ; preds = %1600, %1582
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  br label %1605

1605:                                             ; preds = %1604, %1579
  %1606 = load ptr, ptr %11, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1606, i32 0, i32 8
  %1608 = getelementptr inbounds [3 x i8], ptr %1607, i64 0, i64 0
  %1609 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %1608)
  %1610 = icmp eq i32 12, %1609
  br i1 %1610, label %1611, label %1690

1611:                                             ; preds = %1605
  %1612 = load ptr, ptr %11, align 8, !tbaa !5
  %1613 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1612, i32 0, i32 8
  %1614 = getelementptr inbounds [3 x i8], ptr %1613, i64 0, i64 0
  %1615 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %1614)
  %1616 = icmp eq i32 3, %1615
  br i1 %1616, label %1617, label %1690

1617:                                             ; preds = %1611
  %1618 = load ptr, ptr %11, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1618, i32 0, i32 8
  %1620 = getelementptr inbounds [3 x i8], ptr %1619, i64 0, i64 0
  %1621 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1620)
  %1622 = icmp eq i32 3, %1621
  br i1 %1622, label %1629, label %1623

1623:                                             ; preds = %1617
  %1624 = load ptr, ptr %11, align 8, !tbaa !5
  %1625 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1624, i32 0, i32 8
  %1626 = getelementptr inbounds [3 x i8], ptr %1625, i64 0, i64 0
  %1627 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1626)
  %1628 = icmp eq i32 1, %1627
  br i1 %1628, label %1629, label %1690

1629:                                             ; preds = %1623, %1617
  %1630 = load ptr, ptr %11, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1630, i32 0, i32 6
  %1632 = load i32, ptr %1631, align 1, !tbaa !17
  %1633 = and i32 %1632, 524288
  %1634 = icmp eq i32 %1633, 0
  br i1 %1634, label %1635, label %1689

1635:                                             ; preds = %1629
  %1636 = load ptr, ptr %5, align 8, !tbaa !5
  %1637 = load ptr, ptr %7, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1637, i32 0, i32 20
  %1639 = load i32, ptr %1638, align 4, !tbaa !52
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1636, ptr noundef %9, i32 noundef 5, i32 noundef %1639)
  %1640 = load ptr, ptr %5, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 0
  %1642 = load i32, ptr %1641, align 8, !tbaa !68
  %1643 = load ptr, ptr %7, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1643, i32 0, i32 20
  %1645 = load i32, ptr %1644, align 4, !tbaa !52
  %1646 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 21
  %1647 = load i8, ptr %1646, align 4, !tbaa !67
  %1648 = load i32, ptr %12, align 4, !tbaa !10
  %1649 = icmp ugt i32 %1648, 0
  %1650 = zext i1 %1649 to i64
  %1651 = select i1 %1649, i32 2, i32 0
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1640, i32 noundef %1642, i32 noundef 537209209, i32 noundef %1645, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %1647, i32 noundef %1651, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  %1652 = load ptr, ptr %11, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1652, i32 0, i32 8
  %1654 = getelementptr inbounds [3 x i8], ptr %1653, i64 0, i64 0
  %1655 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1654)
  %1656 = icmp eq i32 1, %1655
  br i1 %1656, label %1662, label %1657

1657:                                             ; preds = %1635
  %1658 = load ptr, ptr %5, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1658, i32 0, i32 6
  %1660 = load i32, ptr %1659, align 4, !tbaa !21
  %1661 = icmp ult i32 %1660, 1104
  br i1 %1661, label %1662, label %1688

1662:                                             ; preds = %1657, %1635
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #6
  %1663 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 21
  %1664 = load i8, ptr %1663, align 4, !tbaa !67
  %1665 = sext i8 %1664 to i32
  %1666 = icmp eq i32 %1665, 121
  br i1 %1666, label %1667, label %1668

1667:                                             ; preds = %1662
  br label %1675

1668:                                             ; preds = %1662
  %1669 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 21
  %1670 = load i8, ptr %1669, align 4, !tbaa !67
  %1671 = sext i8 %1670 to i32
  %1672 = icmp eq i32 %1671, 120
  %1673 = zext i1 %1672 to i64
  %1674 = select i1 %1672, i32 121, i32 122
  br label %1675

1675:                                             ; preds = %1668, %1667
  %1676 = phi i32 [ 122, %1667 ], [ %1674, %1668 ]
  %1677 = trunc i32 %1676 to i8
  store i8 %1677, ptr %57, align 1, !tbaa !12
  %1678 = load ptr, ptr %5, align 8, !tbaa !5
  %1679 = load i8, ptr %57, align 1, !tbaa !12
  %1680 = load i32, ptr %12, align 4, !tbaa !10
  %1681 = icmp ugt i32 %1680, 0
  %1682 = zext i1 %1681 to i64
  %1683 = select i1 %1681, i32 2, i32 0
  %1684 = load i32, ptr %12, align 4, !tbaa !10
  %1685 = icmp ugt i32 %1684, 0
  %1686 = zext i1 %1685 to i64
  %1687 = select i1 %1685, i32 2, i32 0
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1678, i32 noundef 537208083, i8 noundef signext %1679, i32 noundef %1683, i32 noundef %1687)
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #6
  br label %1688

1688:                                             ; preds = %1675, %1657
  br label %1689

1689:                                             ; preds = %1688, %1629
  br label %1690

1690:                                             ; preds = %1689, %1623, %1611, %1605
  %1691 = load ptr, ptr %11, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1691, i32 0, i32 8
  %1693 = getelementptr inbounds [3 x i8], ptr %1692, i64 0, i64 0
  %1694 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %1693)
  %1695 = icmp eq i32 12, %1694
  br i1 %1695, label %1696, label %1737

1696:                                             ; preds = %1690
  %1697 = load i32, ptr %15, align 4, !tbaa !10
  %1698 = icmp eq i32 %1697, 0
  br i1 %1698, label %1699, label %1737

1699:                                             ; preds = %1696
  %1700 = load ptr, ptr %11, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1700, i32 0, i32 8
  %1702 = getelementptr inbounds [3 x i8], ptr %1701, i64 0, i64 0
  %1703 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %1702)
  %1704 = icmp eq i32 2, %1703
  br i1 %1704, label %1705, label %1737

1705:                                             ; preds = %1699
  %1706 = load ptr, ptr %11, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1706, i32 0, i32 8
  %1708 = getelementptr inbounds [3 x i8], ptr %1707, i64 0, i64 0
  %1709 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1708)
  %1710 = icmp eq i32 2, %1709
  br i1 %1710, label %1717, label %1711

1711:                                             ; preds = %1705
  %1712 = load ptr, ptr %11, align 8, !tbaa !5
  %1713 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1712, i32 0, i32 8
  %1714 = getelementptr inbounds [3 x i8], ptr %1713, i64 0, i64 0
  %1715 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1714)
  %1716 = icmp eq i32 1, %1715
  br i1 %1716, label %1717, label %1737

1717:                                             ; preds = %1711, %1705
  %1718 = load ptr, ptr %11, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1718, i32 0, i32 6
  %1720 = load i32, ptr %1719, align 1, !tbaa !17
  %1721 = and i32 %1720, 524288
  %1722 = icmp eq i32 %1721, 0
  br i1 %1722, label %1723, label %1736

1723:                                             ; preds = %1717
  %1724 = load ptr, ptr %5, align 8, !tbaa !5
  %1725 = load ptr, ptr %7, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1725, i32 0, i32 20
  %1727 = load i32, ptr %1726, align 4, !tbaa !52
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1724, ptr noundef %9, i32 noundef 5, i32 noundef %1727)
  %1728 = load ptr, ptr %5, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 0
  %1730 = load i32, ptr %1729, align 8, !tbaa !68
  %1731 = load ptr, ptr %7, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1731, i32 0, i32 20
  %1733 = load i32, ptr %1732, align 4, !tbaa !52
  %1734 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 21
  %1735 = load i8, ptr %1734, align 4, !tbaa !67
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1728, i32 noundef %1730, i32 noundef 537209432, i32 noundef %1733, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %1735, i32 noundef 1, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %1736

1736:                                             ; preds = %1723, %1717
  br label %1737

1737:                                             ; preds = %1736, %1711, %1699, %1696, %1690
  %1738 = load ptr, ptr %11, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1738, i32 0, i32 6
  %1740 = load i32, ptr %1739, align 1, !tbaa !17
  %1741 = and i32 %1740, 65536
  %1742 = icmp ne i32 %1741, 0
  br i1 %1742, label %1755, label %1743

1743:                                             ; preds = %1737
  %1744 = load ptr, ptr %11, align 8, !tbaa !5
  %1745 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1744, i32 0, i32 6
  %1746 = load i32, ptr %1745, align 1, !tbaa !17
  %1747 = and i32 %1746, 131072
  %1748 = icmp ne i32 %1747, 0
  br i1 %1748, label %1755, label %1749

1749:                                             ; preds = %1743
  %1750 = load ptr, ptr %11, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1750, i32 0, i32 6
  %1752 = load i32, ptr %1751, align 1, !tbaa !17
  %1753 = and i32 %1752, 262144
  %1754 = icmp ne i32 %1753, 0
  br i1 %1754, label %1755, label %1765

1755:                                             ; preds = %1749, %1743, %1737
  %1756 = load ptr, ptr %5, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1758 = load i32, ptr %1757, align 8, !tbaa !49
  %1759 = load ptr, ptr %7, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1759, i32 0, i32 13
  %1761 = load i32, ptr %1760, align 4, !tbaa !58
  %1762 = load ptr, ptr %7, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1762, i32 0, i32 13
  %1764 = load i32, ptr %1763, align 4, !tbaa !58
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1756, i32 noundef %1758, i32 noundef %1761, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1764, i32 noundef 0)
  br label %1765

1765:                                             ; preds = %1755, %1749
  br label %1766

1766:                                             ; preds = %3365, %1765
  %1767 = load i32, ptr %22, align 4, !tbaa !10
  %1768 = load ptr, ptr %11, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1768, i32 0, i32 1
  %1770 = load i32, ptr %1769, align 1, !tbaa !45
  %1771 = icmp ne i32 %1767, %1770
  br i1 %1771, label %1772, label %3366

1772:                                             ; preds = %1766
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  %1773 = load i32, ptr %21, align 4, !tbaa !10
  %1774 = zext i32 %1773 to i64
  %1775 = getelementptr inbounds [2 x i32], ptr %23, i64 0, i64 %1774
  %1776 = load i32, ptr %1775, align 4, !tbaa !10
  store i32 %1776, ptr %58, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  store i32 0, ptr %59, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  store i32 0, ptr %60, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  store i32 0, ptr %61, align 4, !tbaa !10
  %1777 = load ptr, ptr %5, align 8, !tbaa !5
  %1778 = load ptr, ptr %6, align 8, !tbaa !5
  %1779 = load ptr, ptr %7, align 8, !tbaa !5
  %1780 = load i32, ptr %22, align 4, !tbaa !10
  %1781 = load i32, ptr %58, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_header_nloop(ptr noundef %1777, ptr noundef %1778, ptr noundef %1779, ptr noundef %9, i32 noundef %1780, i32 noundef %1781)
  %1782 = load ptr, ptr %8, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1782, i32 0, i32 6
  %1784 = load i32, ptr %1783, align 1, !tbaa !17
  %1785 = and i32 %1784, 8388608
  %1786 = icmp ne i32 %1785, 0
  br i1 %1786, label %1787, label %1794

1787:                                             ; preds = %1772
  %1788 = load ptr, ptr %5, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1790 = load i32, ptr %1789, align 8, !tbaa !49
  %1791 = load ptr, ptr %7, align 8, !tbaa !5
  %1792 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1791, i32 0, i32 31
  %1793 = load i32, ptr %1792, align 4, !tbaa !69
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1788, i32 noundef %1790, i32 noundef %1793, i64 noundef 0)
  br label %1794

1794:                                             ; preds = %1787, %1772
  %1795 = load i32, ptr %21, align 4, !tbaa !10
  %1796 = zext i32 %1795 to i64
  %1797 = getelementptr inbounds [2 x i32], ptr %24, i64 0, i64 %1796
  %1798 = load i32, ptr %1797, align 4, !tbaa !10
  %1799 = load i32, ptr %22, align 4, !tbaa !10
  %1800 = add i32 %1799, %1798
  store i32 %1800, ptr %22, align 4, !tbaa !10
  %1801 = load i32, ptr %21, align 4, !tbaa !10
  %1802 = add i32 %1801, 1
  store i32 %1802, ptr %21, align 4, !tbaa !10
  %1803 = load ptr, ptr %11, align 8, !tbaa !5
  %1804 = load ptr, ptr %5, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1804, i32 0, i32 6
  %1806 = load i32, ptr %1805, align 4, !tbaa !21
  %1807 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef %9, ptr noundef %1803, i32 noundef %1806, i32 noundef 0)
  store i32 %1807, ptr %61, align 4, !tbaa !10
  %1808 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 42
  store i32 0, ptr %1808, align 8, !tbaa !70
  br label %1809

1809:                                             ; preds = %3349, %1794
  %1810 = load i32, ptr %59, align 4, !tbaa !10
  %1811 = load ptr, ptr %11, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1811, i32 0, i32 0
  %1813 = load i32, ptr %1812, align 1, !tbaa !23
  %1814 = icmp ne i32 %1810, %1813
  br i1 %1814, label %1815, label %3356

1815:                                             ; preds = %1809
  %1816 = load i32, ptr %61, align 4, !tbaa !10
  %1817 = icmp eq i32 %1816, 0
  br i1 %1817, label %1818, label %1827

1818:                                             ; preds = %1815
  %1819 = load ptr, ptr %5, align 8, !tbaa !5
  %1820 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %1821 = icmp ult i32 1, %1820
  br i1 %1821, label %1822, label %1824

1822:                                             ; preds = %1818
  %1823 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %1825

1824:                                             ; preds = %1818
  br label %1825

1825:                                             ; preds = %1824, %1822
  %1826 = phi i32 [ %1823, %1822 ], [ 1, %1824 ]
  call void @libxsmm_handle_error(ptr noundef %1819, i32 noundef 90017, ptr noundef @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef @.str, i32 noundef 696, i32 noundef %1826)
  store i32 1, ptr %29, align 4
  br label %3363

1827:                                             ; preds = %1815
  %1828 = load i32, ptr %59, align 4, !tbaa !10
  store i32 %1828, ptr %60, align 4, !tbaa !10
  %1829 = load i32, ptr %60, align 4, !tbaa !10
  %1830 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 41
  store i32 %1829, ptr %1830, align 4, !tbaa !71
  %1831 = load i32, ptr %61, align 4, !tbaa !10
  %1832 = icmp ne i32 0, %1831
  br i1 %1832, label %1833, label %1834

1833:                                             ; preds = %1827
  br label %1835

1834:                                             ; preds = %1827
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 702, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel) #7
  unreachable

1835:                                             ; preds = %1833
  %1836 = load i32, ptr %59, align 4, !tbaa !10
  %1837 = load ptr, ptr %11, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1837, i32 0, i32 0
  %1839 = load i32, ptr %1838, align 1, !tbaa !23
  %1840 = load i32, ptr %60, align 4, !tbaa !10
  %1841 = sub i32 %1839, %1840
  %1842 = load i32, ptr %61, align 4, !tbaa !10
  %1843 = udiv i32 %1841, %1842
  %1844 = load i32, ptr %61, align 4, !tbaa !10
  %1845 = mul i32 %1843, %1844
  %1846 = add i32 %1836, %1845
  store i32 %1846, ptr %59, align 4, !tbaa !10
  %1847 = load i32, ptr %59, align 4, !tbaa !10
  %1848 = load i32, ptr %60, align 4, !tbaa !10
  %1849 = sub i32 %1847, %1848
  %1850 = add i32 %1849, 3
  %1851 = udiv i32 %1850, 8
  %1852 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 42
  %1853 = load i32, ptr %1852, align 8, !tbaa !70
  %1854 = add i32 %1853, %1851
  store i32 %1854, ptr %1852, align 8, !tbaa !70
  %1855 = load i32, ptr %59, align 4, !tbaa !10
  %1856 = load i32, ptr %60, align 4, !tbaa !10
  %1857 = icmp ne i32 %1855, %1856
  br i1 %1857, label %1858, label %3349

1858:                                             ; preds = %1835
  %1859 = load i32, ptr %59, align 4, !tbaa !10
  %1860 = icmp ugt i32 %1859, 0
  br i1 %1860, label %1861, label %3349

1861:                                             ; preds = %1858
  %1862 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 11
  %1863 = load i32, ptr %1862, align 4, !tbaa !72
  %1864 = icmp ne i32 %1863, 0
  br i1 %1864, label %1865, label %2335

1865:                                             ; preds = %1861
  %1866 = load ptr, ptr %5, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1866, i32 0, i32 6
  %1868 = load i32, ptr %1867, align 4, !tbaa !21
  %1869 = icmp uge i32 %1868, 1051
  br i1 %1869, label %1870, label %2335

1870:                                             ; preds = %1865
  %1871 = load ptr, ptr %5, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1871, i32 0, i32 6
  %1873 = load i32, ptr %1872, align 4, !tbaa !21
  %1874 = icmp ule i32 %1873, 1999
  br i1 %1874, label %1875, label %2335

1875:                                             ; preds = %1870
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  %1876 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 2
  %1877 = load i32, ptr %1876, align 8, !tbaa !36
  store i32 %1877, ptr %62, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  %1878 = load i32, ptr %62, align 4, !tbaa !10
  %1879 = load i32, ptr %61, align 4, !tbaa !10
  %1880 = load i32, ptr %62, align 4, !tbaa !10
  %1881 = urem i32 %1879, %1880
  %1882 = sub i32 %1878, %1881
  store i32 %1882, ptr %63, align 4, !tbaa !10
  %1883 = load ptr, ptr %11, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1883, i32 0, i32 8
  %1885 = getelementptr inbounds [3 x i8], ptr %1884, i64 0, i64 0
  %1886 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1885)
  %1887 = icmp eq i32 3, %1886
  br i1 %1887, label %1888, label %1894

1888:                                             ; preds = %1875
  %1889 = load ptr, ptr %11, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1889, i32 0, i32 8
  %1891 = getelementptr inbounds [3 x i8], ptr %1890, i64 0, i64 0
  %1892 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1891)
  %1893 = icmp eq i32 3, %1892
  br i1 %1893, label %2110, label %1894

1894:                                             ; preds = %1888, %1875
  %1895 = load ptr, ptr %11, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1895, i32 0, i32 8
  %1897 = getelementptr inbounds [3 x i8], ptr %1896, i64 0, i64 0
  %1898 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1897)
  %1899 = icmp eq i32 3, %1898
  br i1 %1899, label %1900, label %1906

1900:                                             ; preds = %1894
  %1901 = load ptr, ptr %11, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1901, i32 0, i32 8
  %1903 = getelementptr inbounds [3 x i8], ptr %1902, i64 0, i64 0
  %1904 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1903)
  %1905 = icmp eq i32 1, %1904
  br i1 %1905, label %2110, label %1906

1906:                                             ; preds = %1900, %1894
  %1907 = load ptr, ptr %11, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1907, i32 0, i32 8
  %1909 = getelementptr inbounds [3 x i8], ptr %1908, i64 0, i64 0
  %1910 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1909)
  %1911 = icmp eq i32 2, %1910
  br i1 %1911, label %1912, label %1918

1912:                                             ; preds = %1906
  %1913 = load ptr, ptr %11, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1913, i32 0, i32 8
  %1915 = getelementptr inbounds [3 x i8], ptr %1914, i64 0, i64 0
  %1916 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1915)
  %1917 = icmp eq i32 2, %1916
  br i1 %1917, label %2110, label %1918

1918:                                             ; preds = %1912, %1906
  %1919 = load ptr, ptr %11, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1919, i32 0, i32 8
  %1921 = getelementptr inbounds [3 x i8], ptr %1920, i64 0, i64 0
  %1922 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1921)
  %1923 = icmp eq i32 12, %1922
  br i1 %1923, label %1924, label %1930

1924:                                             ; preds = %1918
  %1925 = load ptr, ptr %11, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1925, i32 0, i32 8
  %1927 = getelementptr inbounds [3 x i8], ptr %1926, i64 0, i64 0
  %1928 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1927)
  %1929 = icmp eq i32 12, %1928
  br i1 %1929, label %2110, label %1930

1930:                                             ; preds = %1924, %1918
  %1931 = load ptr, ptr %11, align 8, !tbaa !5
  %1932 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1931, i32 0, i32 8
  %1933 = getelementptr inbounds [3 x i8], ptr %1932, i64 0, i64 0
  %1934 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1933)
  %1935 = icmp eq i32 4, %1934
  br i1 %1935, label %1936, label %1942

1936:                                             ; preds = %1930
  %1937 = load ptr, ptr %11, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1937, i32 0, i32 8
  %1939 = getelementptr inbounds [3 x i8], ptr %1938, i64 0, i64 0
  %1940 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1939)
  %1941 = icmp eq i32 4, %1940
  br i1 %1941, label %2110, label %1942

1942:                                             ; preds = %1936, %1930
  %1943 = load ptr, ptr %11, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1943, i32 0, i32 8
  %1945 = getelementptr inbounds [3 x i8], ptr %1944, i64 0, i64 0
  %1946 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1945)
  %1947 = icmp eq i32 1, %1946
  br i1 %1947, label %1948, label %1954

1948:                                             ; preds = %1942
  %1949 = load ptr, ptr %11, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1949, i32 0, i32 8
  %1951 = getelementptr inbounds [3 x i8], ptr %1950, i64 0, i64 0
  %1952 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1951)
  %1953 = icmp eq i32 4, %1952
  br i1 %1953, label %2110, label %1954

1954:                                             ; preds = %1948, %1942
  %1955 = load ptr, ptr %11, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1955, i32 0, i32 8
  %1957 = getelementptr inbounds [3 x i8], ptr %1956, i64 0, i64 0
  %1958 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1957)
  %1959 = icmp eq i32 2, %1958
  br i1 %1959, label %1960, label %1966

1960:                                             ; preds = %1954
  %1961 = load ptr, ptr %11, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1961, i32 0, i32 8
  %1963 = getelementptr inbounds [3 x i8], ptr %1962, i64 0, i64 0
  %1964 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1963)
  %1965 = icmp eq i32 4, %1964
  br i1 %1965, label %2110, label %1966

1966:                                             ; preds = %1960, %1954
  %1967 = load ptr, ptr %11, align 8, !tbaa !5
  %1968 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1967, i32 0, i32 8
  %1969 = getelementptr inbounds [3 x i8], ptr %1968, i64 0, i64 0
  %1970 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1969)
  %1971 = icmp eq i32 5, %1970
  br i1 %1971, label %1972, label %1978

1972:                                             ; preds = %1966
  %1973 = load ptr, ptr %11, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1973, i32 0, i32 8
  %1975 = getelementptr inbounds [3 x i8], ptr %1974, i64 0, i64 0
  %1976 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1975)
  %1977 = icmp eq i32 5, %1976
  br i1 %1977, label %2110, label %1978

1978:                                             ; preds = %1972, %1966
  %1979 = load ptr, ptr %11, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1979, i32 0, i32 8
  %1981 = getelementptr inbounds [3 x i8], ptr %1980, i64 0, i64 0
  %1982 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1981)
  %1983 = icmp eq i32 2, %1982
  br i1 %1983, label %1984, label %1990

1984:                                             ; preds = %1978
  %1985 = load ptr, ptr %11, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1985, i32 0, i32 8
  %1987 = getelementptr inbounds [3 x i8], ptr %1986, i64 0, i64 0
  %1988 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1987)
  %1989 = icmp eq i32 5, %1988
  br i1 %1989, label %2110, label %1990

1990:                                             ; preds = %1984, %1978
  %1991 = load ptr, ptr %11, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1991, i32 0, i32 8
  %1993 = getelementptr inbounds [3 x i8], ptr %1992, i64 0, i64 0
  %1994 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %1993)
  %1995 = icmp eq i32 4, %1994
  br i1 %1995, label %1996, label %2008

1996:                                             ; preds = %1990
  %1997 = load ptr, ptr %11, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1997, i32 0, i32 8
  %1999 = getelementptr inbounds [3 x i8], ptr %1998, i64 0, i64 0
  %2000 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %1999)
  %2001 = icmp eq i32 3, %2000
  br i1 %2001, label %2002, label %2008

2002:                                             ; preds = %1996
  %2003 = load ptr, ptr %11, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2003, i32 0, i32 8
  %2005 = getelementptr inbounds [3 x i8], ptr %2004, i64 0, i64 0
  %2006 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2005)
  %2007 = icmp eq i32 3, %2006
  br i1 %2007, label %2110, label %2008

2008:                                             ; preds = %2002, %1996, %1990
  %2009 = load ptr, ptr %11, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2009, i32 0, i32 8
  %2011 = getelementptr inbounds [3 x i8], ptr %2010, i64 0, i64 0
  %2012 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2011)
  %2013 = icmp eq i32 4, %2012
  br i1 %2013, label %2014, label %2026

2014:                                             ; preds = %2008
  %2015 = load ptr, ptr %11, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2015, i32 0, i32 8
  %2017 = getelementptr inbounds [3 x i8], ptr %2016, i64 0, i64 0
  %2018 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2017)
  %2019 = icmp eq i32 3, %2018
  br i1 %2019, label %2020, label %2026

2020:                                             ; preds = %2014
  %2021 = load ptr, ptr %11, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2021, i32 0, i32 8
  %2023 = getelementptr inbounds [3 x i8], ptr %2022, i64 0, i64 0
  %2024 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2023)
  %2025 = icmp eq i32 1, %2024
  br i1 %2025, label %2110, label %2026

2026:                                             ; preds = %2020, %2014, %2008
  %2027 = load ptr, ptr %11, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2027, i32 0, i32 8
  %2029 = getelementptr inbounds [3 x i8], ptr %2028, i64 0, i64 0
  %2030 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2029)
  %2031 = icmp eq i32 12, %2030
  br i1 %2031, label %2032, label %2044

2032:                                             ; preds = %2026
  %2033 = load ptr, ptr %11, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2033, i32 0, i32 8
  %2035 = getelementptr inbounds [3 x i8], ptr %2034, i64 0, i64 0
  %2036 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2035)
  %2037 = icmp eq i32 3, %2036
  br i1 %2037, label %2038, label %2044

2038:                                             ; preds = %2032
  %2039 = load ptr, ptr %11, align 8, !tbaa !5
  %2040 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2039, i32 0, i32 8
  %2041 = getelementptr inbounds [3 x i8], ptr %2040, i64 0, i64 0
  %2042 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2041)
  %2043 = icmp eq i32 3, %2042
  br i1 %2043, label %2110, label %2044

2044:                                             ; preds = %2038, %2032, %2026
  %2045 = load ptr, ptr %11, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2045, i32 0, i32 8
  %2047 = getelementptr inbounds [3 x i8], ptr %2046, i64 0, i64 0
  %2048 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2047)
  %2049 = icmp eq i32 12, %2048
  br i1 %2049, label %2050, label %2062

2050:                                             ; preds = %2044
  %2051 = load ptr, ptr %11, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2051, i32 0, i32 8
  %2053 = getelementptr inbounds [3 x i8], ptr %2052, i64 0, i64 0
  %2054 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2053)
  %2055 = icmp eq i32 3, %2054
  br i1 %2055, label %2056, label %2062

2056:                                             ; preds = %2050
  %2057 = load ptr, ptr %11, align 8, !tbaa !5
  %2058 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2057, i32 0, i32 8
  %2059 = getelementptr inbounds [3 x i8], ptr %2058, i64 0, i64 0
  %2060 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2059)
  %2061 = icmp eq i32 1, %2060
  br i1 %2061, label %2110, label %2062

2062:                                             ; preds = %2056, %2050, %2044
  %2063 = load ptr, ptr %11, align 8, !tbaa !5
  %2064 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2063, i32 0, i32 8
  %2065 = getelementptr inbounds [3 x i8], ptr %2064, i64 0, i64 0
  %2066 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2065)
  %2067 = icmp eq i32 12, %2066
  br i1 %2067, label %2068, label %2080

2068:                                             ; preds = %2062
  %2069 = load ptr, ptr %11, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2069, i32 0, i32 8
  %2071 = getelementptr inbounds [3 x i8], ptr %2070, i64 0, i64 0
  %2072 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2071)
  %2073 = icmp eq i32 2, %2072
  br i1 %2073, label %2074, label %2080

2074:                                             ; preds = %2068
  %2075 = load ptr, ptr %11, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2075, i32 0, i32 8
  %2077 = getelementptr inbounds [3 x i8], ptr %2076, i64 0, i64 0
  %2078 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2077)
  %2079 = icmp eq i32 2, %2078
  br i1 %2079, label %2110, label %2080

2080:                                             ; preds = %2074, %2068, %2062
  %2081 = load ptr, ptr %11, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2081, i32 0, i32 8
  %2083 = getelementptr inbounds [3 x i8], ptr %2082, i64 0, i64 0
  %2084 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2083)
  %2085 = icmp eq i32 12, %2084
  br i1 %2085, label %2086, label %2098

2086:                                             ; preds = %2080
  %2087 = load ptr, ptr %11, align 8, !tbaa !5
  %2088 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2087, i32 0, i32 8
  %2089 = getelementptr inbounds [3 x i8], ptr %2088, i64 0, i64 0
  %2090 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2089)
  %2091 = icmp eq i32 2, %2090
  br i1 %2091, label %2092, label %2098

2092:                                             ; preds = %2086
  %2093 = load ptr, ptr %11, align 8, !tbaa !5
  %2094 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2093, i32 0, i32 8
  %2095 = getelementptr inbounds [3 x i8], ptr %2094, i64 0, i64 0
  %2096 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2095)
  %2097 = icmp eq i32 1, %2096
  br i1 %2097, label %2110, label %2098

2098:                                             ; preds = %2092, %2086, %2080
  %2099 = load ptr, ptr %11, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2099, i32 0, i32 8
  %2101 = getelementptr inbounds [3 x i8], ptr %2100, i64 0, i64 0
  %2102 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %2101)
  %2103 = icmp eq i32 1, %2102
  br i1 %2103, label %2104, label %2324

2104:                                             ; preds = %2098
  %2105 = load ptr, ptr %11, align 8, !tbaa !5
  %2106 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2105, i32 0, i32 8
  %2107 = getelementptr inbounds [3 x i8], ptr %2106, i64 0, i64 0
  %2108 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2107)
  %2109 = icmp eq i32 5, %2108
  br i1 %2109, label %2110, label %2324

2110:                                             ; preds = %2104, %2092, %2074, %2056, %2038, %2020, %2002, %1984, %1972, %1960, %1948, %1936, %1924, %1912, %1900, %1888
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  %2111 = load ptr, ptr %11, align 8, !tbaa !5
  %2112 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2111, i32 0, i32 8
  %2113 = getelementptr inbounds [3 x i8], ptr %2112, i64 0, i64 0
  %2114 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2113)
  %2115 = icmp eq i32 12, %2114
  br i1 %2115, label %2116, label %2122

2116:                                             ; preds = %2110
  %2117 = load ptr, ptr %11, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2117, i32 0, i32 8
  %2119 = getelementptr inbounds [3 x i8], ptr %2118, i64 0, i64 0
  %2120 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2119)
  %2121 = icmp eq i32 3, %2120
  br label %2122

2122:                                             ; preds = %2116, %2110
  %2123 = phi i1 [ false, %2110 ], [ %2121, %2116 ]
  %2124 = zext i1 %2123 to i64
  %2125 = select i1 %2123, i32 1, i32 0
  store i32 %2125, ptr %64, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  %2126 = load ptr, ptr %11, align 8, !tbaa !5
  %2127 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2126, i32 0, i32 8
  %2128 = getelementptr inbounds [3 x i8], ptr %2127, i64 0, i64 0
  %2129 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2128)
  %2130 = icmp eq i32 4, %2129
  br i1 %2130, label %2131, label %2137

2131:                                             ; preds = %2122
  %2132 = load ptr, ptr %11, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2132, i32 0, i32 8
  %2134 = getelementptr inbounds [3 x i8], ptr %2133, i64 0, i64 0
  %2135 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2134)
  %2136 = icmp eq i32 3, %2135
  br label %2137

2137:                                             ; preds = %2131, %2122
  %2138 = phi i1 [ false, %2122 ], [ %2136, %2131 ]
  %2139 = zext i1 %2138 to i64
  %2140 = select i1 %2138, i32 1, i32 0
  store i32 %2140, ptr %65, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %2141 = load ptr, ptr %11, align 8, !tbaa !5
  %2142 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2141, i32 0, i32 8
  %2143 = getelementptr inbounds [3 x i8], ptr %2142, i64 0, i64 0
  %2144 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %2143)
  %2145 = icmp eq i32 3, %2144
  br i1 %2145, label %2146, label %2152

2146:                                             ; preds = %2137
  %2147 = load ptr, ptr %11, align 8, !tbaa !5
  %2148 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2147, i32 0, i32 8
  %2149 = getelementptr inbounds [3 x i8], ptr %2148, i64 0, i64 0
  %2150 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %2149)
  %2151 = icmp eq i32 3, %2150
  br label %2152

2152:                                             ; preds = %2146, %2137
  %2153 = phi i1 [ false, %2137 ], [ %2151, %2146 ]
  %2154 = zext i1 %2153 to i64
  %2155 = select i1 %2153, i32 1, i32 0
  store i32 %2155, ptr %66, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %2156 = load i32, ptr %64, align 4, !tbaa !10
  %2157 = icmp ugt i32 %2156, 0
  br i1 %2157, label %2164, label %2158

2158:                                             ; preds = %2152
  %2159 = load i32, ptr %65, align 4, !tbaa !10
  %2160 = icmp ugt i32 %2159, 0
  br i1 %2160, label %2164, label %2161

2161:                                             ; preds = %2158
  %2162 = load i32, ptr %66, align 4, !tbaa !10
  %2163 = icmp ugt i32 %2162, 0
  br i1 %2163, label %2164, label %2177

2164:                                             ; preds = %2161, %2158, %2152
  %2165 = load ptr, ptr %11, align 8, !tbaa !5
  %2166 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2165, i32 0, i32 8
  %2167 = getelementptr inbounds [3 x i8], ptr %2166, i64 0, i64 0
  %2168 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %2167)
  %2169 = icmp eq i32 3, %2168
  br i1 %2169, label %2170, label %2175

2170:                                             ; preds = %2164
  %2171 = load ptr, ptr %5, align 8, !tbaa !5
  %2172 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2171, i32 0, i32 6
  %2173 = load i32, ptr %2172, align 4, !tbaa !21
  %2174 = icmp uge i32 %2173, 1104
  br label %2175

2175:                                             ; preds = %2170, %2164
  %2176 = phi i1 [ false, %2164 ], [ %2174, %2170 ]
  br label %2177

2177:                                             ; preds = %2175, %2161
  %2178 = phi i1 [ false, %2161 ], [ %2176, %2175 ]
  %2179 = zext i1 %2178 to i64
  %2180 = select i1 %2178, i32 1, i32 0
  store i32 %2180, ptr %67, align 4, !tbaa !10
  %2181 = load ptr, ptr %5, align 8, !tbaa !5
  %2182 = load ptr, ptr %7, align 8, !tbaa !5
  %2183 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2182, i32 0, i32 23
  %2184 = load i32, ptr %2183, align 4, !tbaa !48
  %2185 = load i32, ptr %63, align 4, !tbaa !10
  %2186 = load i32, ptr %67, align 4, !tbaa !10
  %2187 = icmp ugt i32 %2186, 0
  %2188 = zext i1 %2187 to i64
  %2189 = select i1 %2187, i32 3, i32 8
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %2181, i32 noundef %2184, i32 noundef 1, i32 noundef %2185, i32 noundef %2189)
  %2190 = load i32, ptr %67, align 4, !tbaa !10
  %2191 = icmp ugt i32 %2190, 0
  br i1 %2191, label %2192, label %2245

2192:                                             ; preds = %2177
  %2193 = load ptr, ptr %11, align 8, !tbaa !5
  %2194 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2193, i32 0, i32 8
  %2195 = getelementptr inbounds [3 x i8], ptr %2194, i64 0, i64 0
  %2196 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2195)
  %2197 = icmp eq i32 1, %2196
  br i1 %2197, label %2198, label %2245

2198:                                             ; preds = %2192
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  %2199 = load i32, ptr %67, align 4, !tbaa !10
  %2200 = icmp ugt i32 %2199, 0
  br i1 %2200, label %2201, label %2204

2201:                                             ; preds = %2198
  %2202 = load i32, ptr %62, align 4, !tbaa !10
  %2203 = udiv i32 %2202, 2
  br label %2206

2204:                                             ; preds = %2198
  %2205 = load i32, ptr %62, align 4, !tbaa !10
  br label %2206

2206:                                             ; preds = %2204, %2201
  %2207 = phi i32 [ %2203, %2201 ], [ %2205, %2204 ]
  store i32 %2207, ptr %68, align 4, !tbaa !10
  %2208 = load ptr, ptr %5, align 8, !tbaa !5
  %2209 = load ptr, ptr %7, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2209, i32 0, i32 23
  %2211 = load i32, ptr %2210, align 4, !tbaa !48
  %2212 = load i32, ptr %61, align 4, !tbaa !10
  %2213 = load i32, ptr %62, align 4, !tbaa !10
  %2214 = urem i32 %2212, %2213
  %2215 = load i32, ptr %68, align 4, !tbaa !10
  %2216 = icmp uge i32 %2214, %2215
  br i1 %2216, label %2217, label %2218

2217:                                             ; preds = %2206
  br label %2224

2218:                                             ; preds = %2206
  %2219 = load i32, ptr %68, align 4, !tbaa !10
  %2220 = load i32, ptr %61, align 4, !tbaa !10
  %2221 = load i32, ptr %68, align 4, !tbaa !10
  %2222 = urem i32 %2220, %2221
  %2223 = sub i32 %2219, %2222
  br label %2224

2224:                                             ; preds = %2218, %2217
  %2225 = phi i32 [ 0, %2217 ], [ %2223, %2218 ]
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %2208, i32 noundef %2211, i32 noundef 2, i32 noundef %2225, i32 noundef 8)
  %2226 = load ptr, ptr %5, align 8, !tbaa !5
  %2227 = load ptr, ptr %7, align 8, !tbaa !5
  %2228 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2227, i32 0, i32 23
  %2229 = load i32, ptr %2228, align 4, !tbaa !48
  %2230 = load i32, ptr %61, align 4, !tbaa !10
  %2231 = load i32, ptr %62, align 4, !tbaa !10
  %2232 = urem i32 %2230, %2231
  %2233 = load i32, ptr %68, align 4, !tbaa !10
  %2234 = icmp uge i32 %2232, %2233
  br i1 %2234, label %2235, label %2241

2235:                                             ; preds = %2224
  %2236 = load i32, ptr %68, align 4, !tbaa !10
  %2237 = load i32, ptr %61, align 4, !tbaa !10
  %2238 = load i32, ptr %68, align 4, !tbaa !10
  %2239 = urem i32 %2237, %2238
  %2240 = sub i32 %2236, %2239
  br label %2243

2241:                                             ; preds = %2224
  %2242 = load i32, ptr %68, align 4, !tbaa !10
  br label %2243

2243:                                             ; preds = %2241, %2235
  %2244 = phi i32 [ %2240, %2235 ], [ %2242, %2241 ]
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %2226, i32 noundef %2229, i32 noundef 3, i32 noundef %2244, i32 noundef 8)
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  br label %2323

2245:                                             ; preds = %2192, %2177
  %2246 = load ptr, ptr %5, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2246, i32 0, i32 6
  %2248 = load i32, ptr %2247, align 4, !tbaa !21
  %2249 = icmp uge i32 %2248, 1051
  br i1 %2249, label %2250, label %2284

2250:                                             ; preds = %2245
  %2251 = load ptr, ptr %5, align 8, !tbaa !5
  %2252 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2251, i32 0, i32 6
  %2253 = load i32, ptr %2252, align 4, !tbaa !21
  %2254 = icmp ult i32 %2253, 1101
  br i1 %2254, label %2255, label %2284

2255:                                             ; preds = %2250
  %2256 = load ptr, ptr %11, align 8, !tbaa !5
  %2257 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2256, i32 0, i32 8
  %2258 = getelementptr inbounds [3 x i8], ptr %2257, i64 0, i64 0
  %2259 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %2258)
  %2260 = icmp eq i32 2, %2259
  br i1 %2260, label %2261, label %2273

2261:                                             ; preds = %2255
  %2262 = load ptr, ptr %11, align 8, !tbaa !5
  %2263 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2262, i32 0, i32 8
  %2264 = getelementptr inbounds [3 x i8], ptr %2263, i64 0, i64 0
  %2265 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2264)
  %2266 = icmp ne i32 5, %2265
  br i1 %2266, label %2267, label %2273

2267:                                             ; preds = %2261
  %2268 = load ptr, ptr %11, align 8, !tbaa !5
  %2269 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2268, i32 0, i32 8
  %2270 = getelementptr inbounds [3 x i8], ptr %2269, i64 0, i64 0
  %2271 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2270)
  %2272 = icmp ne i32 4, %2271
  br i1 %2272, label %2276, label %2273

2273:                                             ; preds = %2267, %2261, %2255
  %2274 = load i32, ptr %28, align 4, !tbaa !10
  %2275 = icmp ugt i32 %2274, 0
  br i1 %2275, label %2276, label %2279

2276:                                             ; preds = %2273, %2267
  %2277 = load i32, ptr %63, align 4, !tbaa !10
  %2278 = add i32 %2277, 8
  br label %2282

2279:                                             ; preds = %2273
  %2280 = load i32, ptr %63, align 4, !tbaa !10
  %2281 = add i32 %2280, 24
  br label %2282

2282:                                             ; preds = %2279, %2276
  %2283 = phi i32 [ %2278, %2276 ], [ %2281, %2279 ]
  store i32 %2283, ptr %63, align 4, !tbaa !10
  br label %2313

2284:                                             ; preds = %2250, %2245
  %2285 = load ptr, ptr %11, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2285, i32 0, i32 8
  %2287 = getelementptr inbounds [3 x i8], ptr %2286, i64 0, i64 0
  %2288 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %2287)
  %2289 = icmp eq i32 2, %2288
  br i1 %2289, label %2290, label %2302

2290:                                             ; preds = %2284
  %2291 = load ptr, ptr %11, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2291, i32 0, i32 8
  %2293 = getelementptr inbounds [3 x i8], ptr %2292, i64 0, i64 0
  %2294 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2293)
  %2295 = icmp ne i32 5, %2294
  br i1 %2295, label %2296, label %2302

2296:                                             ; preds = %2290
  %2297 = load ptr, ptr %11, align 8, !tbaa !5
  %2298 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2297, i32 0, i32 8
  %2299 = getelementptr inbounds [3 x i8], ptr %2298, i64 0, i64 0
  %2300 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2299)
  %2301 = icmp ne i32 4, %2300
  br i1 %2301, label %2305, label %2302

2302:                                             ; preds = %2296, %2290, %2284
  %2303 = load i32, ptr %28, align 4, !tbaa !10
  %2304 = icmp ugt i32 %2303, 0
  br i1 %2304, label %2305, label %2308

2305:                                             ; preds = %2302, %2296
  %2306 = load i32, ptr %63, align 4, !tbaa !10
  %2307 = add i32 %2306, 16
  br label %2311

2308:                                             ; preds = %2302
  %2309 = load i32, ptr %63, align 4, !tbaa !10
  %2310 = add i32 %2309, 48
  br label %2311

2311:                                             ; preds = %2308, %2305
  %2312 = phi i32 [ %2307, %2305 ], [ %2310, %2308 ]
  store i32 %2312, ptr %63, align 4, !tbaa !10
  br label %2313

2313:                                             ; preds = %2311, %2282
  %2314 = load ptr, ptr %5, align 8, !tbaa !5
  %2315 = load ptr, ptr %7, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2315, i32 0, i32 23
  %2317 = load i32, ptr %2316, align 4, !tbaa !48
  %2318 = load i32, ptr %63, align 4, !tbaa !10
  %2319 = load ptr, ptr %11, align 8, !tbaa !5
  %2320 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2319, i32 0, i32 8
  %2321 = getelementptr inbounds [3 x i8], ptr %2320, i64 0, i64 0
  %2322 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2321)
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %2314, i32 noundef %2317, i32 noundef 2, i32 noundef %2318, i32 noundef %2322)
  br label %2323

2323:                                             ; preds = %2313, %2243
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  br label %2334

2324:                                             ; preds = %2104, %2098
  %2325 = load ptr, ptr %5, align 8, !tbaa !5
  %2326 = load ptr, ptr %7, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2326, i32 0, i32 23
  %2328 = load i32, ptr %2327, align 4, !tbaa !48
  %2329 = load i32, ptr %63, align 4, !tbaa !10
  %2330 = load ptr, ptr %11, align 8, !tbaa !5
  %2331 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2330, i32 0, i32 8
  %2332 = getelementptr inbounds [3 x i8], ptr %2331, i64 0, i64 0
  %2333 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2332)
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %2325, i32 noundef %2328, i32 noundef 1, i32 noundef %2329, i32 noundef %2333)
  br label %2334

2334:                                             ; preds = %2324, %2323
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  br label %2438

2335:                                             ; preds = %1870, %1865, %1861
  %2336 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 11
  %2337 = load i32, ptr %2336, align 4, !tbaa !72
  %2338 = icmp ne i32 %2337, 0
  br i1 %2338, label %2339, label %2437

2339:                                             ; preds = %2335
  %2340 = load ptr, ptr %5, align 8, !tbaa !5
  %2341 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2340, i32 0, i32 6
  %2342 = load i32, ptr %2341, align 4, !tbaa !21
  %2343 = icmp uge i32 %2342, 1005
  br i1 %2343, label %2344, label %2437

2344:                                             ; preds = %2339
  %2345 = load ptr, ptr %5, align 8, !tbaa !5
  %2346 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2345, i32 0, i32 6
  %2347 = load i32, ptr %2346, align 4, !tbaa !21
  %2348 = icmp ult i32 %2347, 1051
  br i1 %2348, label %2349, label %2437

2349:                                             ; preds = %2344
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %2350 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 2
  %2351 = load i32, ptr %2350, align 8, !tbaa !36
  store i32 %2351, ptr %69, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  %2352 = load i32, ptr %61, align 4, !tbaa !10
  %2353 = load i32, ptr %69, align 4, !tbaa !10
  %2354 = urem i32 %2352, %2353
  store i32 %2354, ptr %70, align 4, !tbaa !10
  %2355 = load ptr, ptr %11, align 8, !tbaa !5
  %2356 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2355, i32 0, i32 8
  %2357 = getelementptr inbounds [3 x i8], ptr %2356, i64 0, i64 0
  %2358 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2357)
  %2359 = icmp eq i32 1, %2358
  br i1 %2359, label %2372, label %2360

2360:                                             ; preds = %2349
  %2361 = load ptr, ptr %11, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2361, i32 0, i32 8
  %2363 = getelementptr inbounds [3 x i8], ptr %2362, i64 0, i64 0
  %2364 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2363)
  %2365 = icmp eq i32 8, %2364
  br i1 %2365, label %2372, label %2366

2366:                                             ; preds = %2360
  %2367 = load ptr, ptr %11, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2367, i32 0, i32 8
  %2369 = getelementptr inbounds [3 x i8], ptr %2368, i64 0, i64 0
  %2370 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2369)
  %2371 = icmp eq i32 0, %2370
  br i1 %2371, label %2372, label %2391

2372:                                             ; preds = %2366, %2360, %2349
  %2373 = load ptr, ptr %5, align 8, !tbaa !5
  %2374 = load i32, ptr %14, align 4, !tbaa !10
  %2375 = icmp ugt i32 %2374, 0
  br i1 %2375, label %2382, label %2376

2376:                                             ; preds = %2372
  %2377 = load i32, ptr %15, align 4, !tbaa !10
  %2378 = icmp ugt i32 %2377, 0
  br i1 %2378, label %2382, label %2379

2379:                                             ; preds = %2376
  %2380 = load i32, ptr %16, align 4, !tbaa !10
  %2381 = icmp ugt i32 %2380, 0
  br label %2382

2382:                                             ; preds = %2379, %2376, %2372
  %2383 = phi i1 [ true, %2376 ], [ true, %2372 ], [ %2381, %2379 ]
  %2384 = zext i1 %2383 to i64
  %2385 = select i1 %2383, i32 2, i32 0
  %2386 = load i32, ptr %70, align 4, !tbaa !10
  %2387 = load ptr, ptr %11, align 8, !tbaa !5
  %2388 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2387, i32 0, i32 8
  %2389 = getelementptr inbounds [3 x i8], ptr %2388, i64 0, i64 0
  %2390 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2389)
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef %2373, i32 noundef %2385, i32 noundef %2386, i32 noundef %2390)
  br label %2414

2391:                                             ; preds = %2366
  %2392 = load ptr, ptr %11, align 8, !tbaa !5
  %2393 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2392, i32 0, i32 8
  %2394 = getelementptr inbounds [3 x i8], ptr %2393, i64 0, i64 0
  %2395 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %2394)
  %2396 = icmp eq i32 2, %2395
  br i1 %2396, label %2397, label %2412

2397:                                             ; preds = %2391
  %2398 = load ptr, ptr %5, align 8, !tbaa !5
  %2399 = load i32, ptr %14, align 4, !tbaa !10
  %2400 = icmp ugt i32 %2399, 0
  br i1 %2400, label %2407, label %2401

2401:                                             ; preds = %2397
  %2402 = load i32, ptr %15, align 4, !tbaa !10
  %2403 = icmp ugt i32 %2402, 0
  br i1 %2403, label %2407, label %2404

2404:                                             ; preds = %2401
  %2405 = load i32, ptr %16, align 4, !tbaa !10
  %2406 = icmp ugt i32 %2405, 0
  br label %2407

2407:                                             ; preds = %2404, %2401, %2397
  %2408 = phi i1 [ true, %2401 ], [ true, %2397 ], [ %2406, %2404 ]
  %2409 = zext i1 %2408 to i64
  %2410 = select i1 %2408, i32 2, i32 0
  %2411 = load i32, ptr %70, align 4, !tbaa !10
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef %2398, i32 noundef %2410, i32 noundef %2411, i32 noundef 8)
  br label %2413

2412:                                             ; preds = %2391
  br label %2413

2413:                                             ; preds = %2412, %2407
  br label %2414

2414:                                             ; preds = %2413, %2382
  %2415 = load ptr, ptr %5, align 8, !tbaa !5
  %2416 = load ptr, ptr %7, align 8, !tbaa !5
  %2417 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2416, i32 0, i32 23
  %2418 = load i32, ptr %2417, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2415, ptr noundef %9, i32 noundef 22, i32 noundef %2418)
  %2419 = load ptr, ptr %5, align 8, !tbaa !5
  %2420 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 0
  %2421 = load i32, ptr %2420, align 8, !tbaa !68
  %2422 = load ptr, ptr %7, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2422, i32 0, i32 23
  %2424 = load i32, ptr %2423, align 4, !tbaa !48
  %2425 = load i32, ptr %14, align 4, !tbaa !10
  %2426 = icmp ugt i32 %2425, 0
  br i1 %2426, label %2433, label %2427

2427:                                             ; preds = %2414
  %2428 = load i32, ptr %15, align 4, !tbaa !10
  %2429 = icmp ugt i32 %2428, 0
  br i1 %2429, label %2433, label %2430

2430:                                             ; preds = %2427
  %2431 = load i32, ptr %16, align 4, !tbaa !10
  %2432 = icmp ugt i32 %2431, 0
  br label %2433

2433:                                             ; preds = %2430, %2427, %2414
  %2434 = phi i1 [ true, %2427 ], [ true, %2414 ], [ %2432, %2430 ]
  %2435 = zext i1 %2434 to i64
  %2436 = select i1 %2434, i32 2, i32 0
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %2419, i32 noundef %2421, i32 noundef 537138704, i32 noundef %2424, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef %2436, i32 noundef 0, i32 noundef 0, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  br label %2437

2437:                                             ; preds = %2433, %2344, %2339, %2335
  br label %2438

2438:                                             ; preds = %2437, %2334
  %2439 = load ptr, ptr %5, align 8, !tbaa !5
  %2440 = load ptr, ptr %6, align 8, !tbaa !5
  %2441 = load ptr, ptr %7, align 8, !tbaa !5
  %2442 = load i32, ptr %60, align 4, !tbaa !10
  %2443 = load i32, ptr %61, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_header_mloop(ptr noundef %2439, ptr noundef %2440, ptr noundef %2441, ptr noundef %9, i32 noundef %2442, i32 noundef %2443)
  %2444 = load ptr, ptr %5, align 8, !tbaa !5
  %2445 = load ptr, ptr %7, align 8, !tbaa !5
  %2446 = load ptr, ptr %11, align 8, !tbaa !5
  %2447 = load i32, ptr %61, align 4, !tbaa !10
  %2448 = load i32, ptr %58, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_load_C(ptr noundef %2444, ptr noundef %2445, ptr noundef %9, ptr noundef %2446, i32 noundef %2447, i32 noundef %2448)
  %2449 = load ptr, ptr %11, align 8, !tbaa !5
  %2450 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2449, i32 0, i32 6
  %2451 = load i32, ptr %2450, align 1, !tbaa !17
  %2452 = and i32 %2451, 65536
  %2453 = icmp ne i32 %2452, 0
  br i1 %2453, label %2466, label %2454

2454:                                             ; preds = %2438
  %2455 = load ptr, ptr %11, align 8, !tbaa !5
  %2456 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2455, i32 0, i32 6
  %2457 = load i32, ptr %2456, align 1, !tbaa !17
  %2458 = and i32 %2457, 131072
  %2459 = icmp ne i32 %2458, 0
  br i1 %2459, label %2466, label %2460

2460:                                             ; preds = %2454
  %2461 = load ptr, ptr %11, align 8, !tbaa !5
  %2462 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2461, i32 0, i32 6
  %2463 = load i32, ptr %2462, align 1, !tbaa !17
  %2464 = and i32 %2463, 262144
  %2465 = icmp ne i32 %2464, 0
  br i1 %2465, label %2466, label %3020

2466:                                             ; preds = %2460, %2454, %2438
  %2467 = load ptr, ptr %11, align 8, !tbaa !5
  %2468 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2467, i32 0, i32 6
  %2469 = load i32, ptr %2468, align 1, !tbaa !17
  %2470 = and i32 %2469, 131072
  %2471 = icmp ne i32 %2470, 0
  br i1 %2471, label %2472, label %2481

2472:                                             ; preds = %2466
  %2473 = load ptr, ptr %5, align 8, !tbaa !5
  %2474 = load ptr, ptr %7, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2474, i32 0, i32 3
  %2476 = load i32, ptr %2475, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2473, i32 noundef %2476)
  %2477 = load ptr, ptr %5, align 8, !tbaa !5
  %2478 = load ptr, ptr %7, align 8, !tbaa !5
  %2479 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2478, i32 0, i32 1
  %2480 = load i32, ptr %2479, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2477, i32 noundef %2480)
  br label %2515

2481:                                             ; preds = %2466
  %2482 = load ptr, ptr %11, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2482, i32 0, i32 6
  %2484 = load i32, ptr %2483, align 1, !tbaa !17
  %2485 = and i32 %2484, 262144
  %2486 = icmp ne i32 %2485, 0
  br i1 %2486, label %2487, label %2513

2487:                                             ; preds = %2481
  %2488 = load ptr, ptr %5, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 17
  %2490 = load i32, ptr %2489, align 4, !tbaa !73
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2488, i32 noundef %2490, i32 noundef 4, i64 noundef 32)
  %2491 = load ptr, ptr %5, align 8, !tbaa !5
  %2492 = load ptr, ptr %7, align 8, !tbaa !5
  %2493 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2492, i32 0, i32 1
  %2494 = load i32, ptr %2493, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2491, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 24, i32 noundef %2494, i32 noundef 1)
  %2495 = load ptr, ptr %5, align 8, !tbaa !5
  %2496 = load ptr, ptr %7, align 8, !tbaa !5
  %2497 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2496, i32 0, i32 3
  %2498 = load i32, ptr %2497, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2495, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %2498, i32 noundef 1)
  %2499 = load ptr, ptr %5, align 8, !tbaa !5
  %2500 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2501 = load i32, ptr %2500, align 8, !tbaa !49
  %2502 = load ptr, ptr %7, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2502, i32 0, i32 22
  %2504 = load i32, ptr %2503, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2499, i32 noundef %2501, i32 noundef %2504, i64 noundef 0)
  %2505 = load ptr, ptr %5, align 8, !tbaa !5
  %2506 = load ptr, ptr %7, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2506, i32 0, i32 22
  %2508 = load i32, ptr %2507, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2505, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %2508, i32 noundef 1)
  %2509 = load ptr, ptr %5, align 8, !tbaa !5
  %2510 = load ptr, ptr %7, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2510, i32 0, i32 22
  %2512 = load i32, ptr %2511, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2509, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %2512, i32 noundef 1)
  br label %2514

2513:                                             ; preds = %2481
  br label %2514

2514:                                             ; preds = %2513, %2487
  br label %2515

2515:                                             ; preds = %2514, %2472
  %2516 = load ptr, ptr %5, align 8, !tbaa !5
  %2517 = load ptr, ptr %6, align 8, !tbaa !5
  %2518 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_header_reduceloop(ptr noundef %2516, ptr noundef %2517, ptr noundef %2518, ptr noundef %9)
  %2519 = load ptr, ptr %11, align 8, !tbaa !5
  %2520 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2519, i32 0, i32 6
  %2521 = load i32, ptr %2520, align 1, !tbaa !17
  %2522 = and i32 %2521, 65536
  %2523 = icmp ne i32 %2522, 0
  br i1 %2523, label %2524, label %2685

2524:                                             ; preds = %2515
  %2525 = load ptr, ptr %5, align 8, !tbaa !5
  %2526 = load ptr, ptr %7, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2526, i32 0, i32 1
  %2528 = load i32, ptr %2527, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2525, i32 noundef %2528)
  %2529 = load ptr, ptr %5, align 8, !tbaa !5
  %2530 = load ptr, ptr %7, align 8, !tbaa !5
  %2531 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2530, i32 0, i32 3
  %2532 = load i32, ptr %2531, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2529, i32 noundef %2532)
  %2533 = load i32, ptr %25, align 4, !tbaa !10
  %2534 = icmp ne i32 %2533, 0
  br i1 %2534, label %2535, label %2540

2535:                                             ; preds = %2524
  %2536 = load ptr, ptr %5, align 8, !tbaa !5
  %2537 = load ptr, ptr %7, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2537, i32 0, i32 6
  %2539 = load i32, ptr %2538, align 4, !tbaa !56
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2536, i32 noundef %2539)
  br label %2540

2540:                                             ; preds = %2535, %2524
  %2541 = load i32, ptr %26, align 4, !tbaa !10
  %2542 = icmp ne i32 %2541, 0
  br i1 %2542, label %2543, label %2548

2543:                                             ; preds = %2540
  %2544 = load ptr, ptr %5, align 8, !tbaa !5
  %2545 = load ptr, ptr %7, align 8, !tbaa !5
  %2546 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2545, i32 0, i32 8
  %2547 = load i32, ptr %2546, align 4, !tbaa !57
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2544, i32 noundef %2547)
  br label %2548

2548:                                             ; preds = %2543, %2540
  %2549 = load ptr, ptr %5, align 8, !tbaa !5
  %2550 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2551 = load i32, ptr %2550, align 8, !tbaa !49
  %2552 = load ptr, ptr %7, align 8, !tbaa !5
  %2553 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2552, i32 0, i32 1
  %2554 = load i32, ptr %2553, align 4, !tbaa !50
  %2555 = load ptr, ptr %7, align 8, !tbaa !5
  %2556 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2555, i32 0, i32 14
  %2557 = load i32, ptr %2556, align 4, !tbaa !75
  %2558 = load ptr, ptr %7, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2558, i32 0, i32 1
  %2560 = load i32, ptr %2559, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2549, i32 noundef %2551, i32 noundef %2554, i32 noundef %2557, i32 noundef 8, i32 noundef 0, i32 noundef %2560, i32 noundef 0)
  %2561 = load i32, ptr %14, align 4, !tbaa !10
  %2562 = icmp ugt i32 %2561, 0
  br i1 %2562, label %2569, label %2563

2563:                                             ; preds = %2548
  %2564 = load i32, ptr %15, align 4, !tbaa !10
  %2565 = icmp ugt i32 %2564, 0
  br i1 %2565, label %2569, label %2566

2566:                                             ; preds = %2563
  %2567 = load i32, ptr %16, align 4, !tbaa !10
  %2568 = icmp ugt i32 %2567, 0
  br i1 %2568, label %2569, label %2610

2569:                                             ; preds = %2566, %2563, %2548
  %2570 = load ptr, ptr %5, align 8, !tbaa !5
  %2571 = load ptr, ptr %7, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2571, i32 0, i32 23
  %2573 = load i32, ptr %2572, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2570, ptr noundef %9, i32 noundef 33, i32 noundef %2573)
  %2574 = load ptr, ptr %5, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2576 = load i32, ptr %2575, align 8, !tbaa !49
  %2577 = load ptr, ptr %7, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2577, i32 0, i32 23
  %2579 = load i32, ptr %2578, align 4, !tbaa !48
  %2580 = load ptr, ptr %7, align 8, !tbaa !5
  %2581 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2580, i32 0, i32 14
  %2582 = load i32, ptr %2581, align 4, !tbaa !75
  %2583 = load ptr, ptr %7, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2583, i32 0, i32 20
  %2585 = load i32, ptr %2584, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2574, i32 noundef %2576, i32 noundef %2579, i32 noundef %2582, i32 noundef 8, i32 noundef 0, i32 noundef %2585, i32 noundef 0)
  %2586 = load i32, ptr %16, align 4, !tbaa !10
  %2587 = icmp ugt i32 %2586, 0
  br i1 %2587, label %2588, label %2609

2588:                                             ; preds = %2569
  %2589 = load ptr, ptr %5, align 8, !tbaa !5
  %2590 = load ptr, ptr %7, align 8, !tbaa !5
  %2591 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2590, i32 0, i32 23
  %2592 = load i32, ptr %2591, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2589, ptr noundef %9, i32 noundef 36, i32 noundef %2592)
  %2593 = load ptr, ptr %5, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2595 = load i32, ptr %2594, align 8, !tbaa !49
  %2596 = load ptr, ptr %7, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2596, i32 0, i32 23
  %2598 = load i32, ptr %2597, align 4, !tbaa !48
  %2599 = load ptr, ptr %7, align 8, !tbaa !5
  %2600 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2599, i32 0, i32 14
  %2601 = load i32, ptr %2600, align 4, !tbaa !75
  %2602 = load ptr, ptr %7, align 8, !tbaa !5
  %2603 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2602, i32 0, i32 23
  %2604 = load i32, ptr %2603, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2593, i32 noundef %2595, i32 noundef %2598, i32 noundef %2601, i32 noundef 8, i32 noundef 0, i32 noundef %2604, i32 noundef 0)
  %2605 = load ptr, ptr %5, align 8, !tbaa !5
  %2606 = load ptr, ptr %7, align 8, !tbaa !5
  %2607 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2606, i32 0, i32 23
  %2608 = load i32, ptr %2607, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %2605, ptr noundef %9, i32 noundef 37, i32 noundef %2608)
  br label %2609

2609:                                             ; preds = %2588, %2569
  br label %2610

2610:                                             ; preds = %2609, %2566
  %2611 = load i32, ptr %13, align 4, !tbaa !10
  %2612 = icmp ugt i32 %2611, 0
  br i1 %2612, label %2613, label %2640

2613:                                             ; preds = %2610
  %2614 = load ptr, ptr %8, align 8, !tbaa !5
  %2615 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2614, i32 0, i32 6
  %2616 = load i32, ptr %2615, align 1, !tbaa !17
  %2617 = and i32 %2616, 33554432
  %2618 = icmp ugt i32 %2617, 0
  br i1 %2618, label %2619, label %2640

2619:                                             ; preds = %2613
  %2620 = load ptr, ptr %5, align 8, !tbaa !5
  %2621 = load ptr, ptr %7, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2621, i32 0, i32 23
  %2623 = load i32, ptr %2622, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2620, ptr noundef %9, i32 noundef 31, i32 noundef %2623)
  %2624 = load ptr, ptr %5, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2626 = load i32, ptr %2625, align 8, !tbaa !49
  %2627 = load ptr, ptr %7, align 8, !tbaa !5
  %2628 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2627, i32 0, i32 23
  %2629 = load i32, ptr %2628, align 4, !tbaa !48
  %2630 = load ptr, ptr %7, align 8, !tbaa !5
  %2631 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2630, i32 0, i32 14
  %2632 = load i32, ptr %2631, align 4, !tbaa !75
  %2633 = load ptr, ptr %7, align 8, !tbaa !5
  %2634 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2633, i32 0, i32 23
  %2635 = load i32, ptr %2634, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2624, i32 noundef %2626, i32 noundef %2629, i32 noundef %2632, i32 noundef 8, i32 noundef 0, i32 noundef %2635, i32 noundef 0)
  %2636 = load ptr, ptr %5, align 8, !tbaa !5
  %2637 = load ptr, ptr %7, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2637, i32 0, i32 23
  %2639 = load i32, ptr %2638, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %2636, ptr noundef %9, i32 noundef 35, i32 noundef %2639)
  br label %2640

2640:                                             ; preds = %2619, %2613, %2610
  %2641 = load ptr, ptr %5, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2643 = load i32, ptr %2642, align 8, !tbaa !49
  %2644 = load ptr, ptr %7, align 8, !tbaa !5
  %2645 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2644, i32 0, i32 3
  %2646 = load i32, ptr %2645, align 4, !tbaa !53
  %2647 = load ptr, ptr %7, align 8, !tbaa !5
  %2648 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2647, i32 0, i32 14
  %2649 = load i32, ptr %2648, align 4, !tbaa !75
  %2650 = load ptr, ptr %7, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2650, i32 0, i32 3
  %2652 = load i32, ptr %2651, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2641, i32 noundef %2643, i32 noundef %2646, i32 noundef %2649, i32 noundef 8, i32 noundef 0, i32 noundef %2652, i32 noundef 0)
  %2653 = load i32, ptr %25, align 4, !tbaa !10
  %2654 = icmp ne i32 %2653, 0
  br i1 %2654, label %2655, label %2668

2655:                                             ; preds = %2640
  %2656 = load ptr, ptr %5, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2658 = load i32, ptr %2657, align 8, !tbaa !49
  %2659 = load ptr, ptr %7, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2659, i32 0, i32 6
  %2661 = load i32, ptr %2660, align 4, !tbaa !56
  %2662 = load ptr, ptr %7, align 8, !tbaa !5
  %2663 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2662, i32 0, i32 14
  %2664 = load i32, ptr %2663, align 4, !tbaa !75
  %2665 = load ptr, ptr %7, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2665, i32 0, i32 6
  %2667 = load i32, ptr %2666, align 4, !tbaa !56
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2656, i32 noundef %2658, i32 noundef %2661, i32 noundef %2664, i32 noundef 8, i32 noundef 0, i32 noundef %2667, i32 noundef 0)
  br label %2668

2668:                                             ; preds = %2655, %2640
  %2669 = load i32, ptr %26, align 4, !tbaa !10
  %2670 = icmp ne i32 %2669, 0
  br i1 %2670, label %2671, label %2684

2671:                                             ; preds = %2668
  %2672 = load ptr, ptr %5, align 8, !tbaa !5
  %2673 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2674 = load i32, ptr %2673, align 8, !tbaa !49
  %2675 = load ptr, ptr %7, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2675, i32 0, i32 8
  %2677 = load i32, ptr %2676, align 4, !tbaa !57
  %2678 = load ptr, ptr %7, align 8, !tbaa !5
  %2679 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2678, i32 0, i32 14
  %2680 = load i32, ptr %2679, align 4, !tbaa !75
  %2681 = load ptr, ptr %7, align 8, !tbaa !5
  %2682 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2681, i32 0, i32 8
  %2683 = load i32, ptr %2682, align 4, !tbaa !57
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2672, i32 noundef %2674, i32 noundef %2677, i32 noundef %2680, i32 noundef 8, i32 noundef 0, i32 noundef %2683, i32 noundef 0)
  br label %2684

2684:                                             ; preds = %2671, %2668
  br label %3019

2685:                                             ; preds = %2515
  %2686 = load ptr, ptr %11, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2686, i32 0, i32 6
  %2688 = load i32, ptr %2687, align 1, !tbaa !17
  %2689 = and i32 %2688, 131072
  %2690 = icmp ne i32 %2689, 0
  br i1 %2690, label %2691, label %2874

2691:                                             ; preds = %2685
  %2692 = load ptr, ptr %5, align 8, !tbaa !5
  %2693 = load ptr, ptr %7, align 8, !tbaa !5
  %2694 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2693, i32 0, i32 1
  %2695 = load i32, ptr %2694, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2692, i32 noundef %2695)
  %2696 = load ptr, ptr %5, align 8, !tbaa !5
  %2697 = load ptr, ptr %7, align 8, !tbaa !5
  %2698 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2697, i32 0, i32 3
  %2699 = load i32, ptr %2698, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2696, i32 noundef %2699)
  %2700 = load ptr, ptr %5, align 8, !tbaa !5
  %2701 = load ptr, ptr %7, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2701, i32 0, i32 3
  %2703 = load i32, ptr %2702, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2700, i32 noundef %2703)
  %2704 = load ptr, ptr %5, align 8, !tbaa !5
  %2705 = load ptr, ptr %7, align 8, !tbaa !5
  %2706 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2705, i32 0, i32 1
  %2707 = load i32, ptr %2706, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2704, i32 noundef %2707)
  %2708 = load ptr, ptr %5, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2710 = load i32, ptr %2709, align 8, !tbaa !49
  %2711 = load ptr, ptr %7, align 8, !tbaa !5
  %2712 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2711, i32 0, i32 7
  %2713 = load i32, ptr %2712, align 4, !tbaa !59
  %2714 = load ptr, ptr %7, align 8, !tbaa !5
  %2715 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2714, i32 0, i32 14
  %2716 = load i32, ptr %2715, align 4, !tbaa !75
  %2717 = load ptr, ptr %7, align 8, !tbaa !5
  %2718 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2717, i32 0, i32 22
  %2719 = load i32, ptr %2718, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2708, i32 noundef %2710, i32 noundef %2713, i32 noundef %2716, i32 noundef 8, i32 noundef 0, i32 noundef %2719, i32 noundef 0)
  %2720 = load ptr, ptr %5, align 8, !tbaa !5
  %2721 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2722 = load i32, ptr %2721, align 8, !tbaa !62
  %2723 = load ptr, ptr %7, align 8, !tbaa !5
  %2724 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2723, i32 0, i32 22
  %2725 = load i32, ptr %2724, align 4, !tbaa !74
  %2726 = load ptr, ptr %7, align 8, !tbaa !5
  %2727 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2726, i32 0, i32 1
  %2728 = load i32, ptr %2727, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2720, i32 noundef %2722, i32 noundef %2725, i32 noundef %2728)
  %2729 = load i32, ptr %14, align 4, !tbaa !10
  %2730 = icmp ugt i32 %2729, 0
  br i1 %2730, label %2737, label %2731

2731:                                             ; preds = %2691
  %2732 = load i32, ptr %15, align 4, !tbaa !10
  %2733 = icmp ugt i32 %2732, 0
  br i1 %2733, label %2737, label %2734

2734:                                             ; preds = %2731
  %2735 = load i32, ptr %16, align 4, !tbaa !10
  %2736 = icmp ugt i32 %2735, 0
  br i1 %2736, label %2737, label %2794

2737:                                             ; preds = %2734, %2731, %2691
  %2738 = load ptr, ptr %5, align 8, !tbaa !5
  %2739 = load ptr, ptr %7, align 8, !tbaa !5
  %2740 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2739, i32 0, i32 23
  %2741 = load i32, ptr %2740, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2738, ptr noundef %9, i32 noundef 33, i32 noundef %2741)
  %2742 = load ptr, ptr %5, align 8, !tbaa !5
  %2743 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2744 = load i32, ptr %2743, align 8, !tbaa !49
  %2745 = load ptr, ptr %7, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2745, i32 0, i32 7
  %2747 = load i32, ptr %2746, align 4, !tbaa !59
  %2748 = load ptr, ptr %7, align 8, !tbaa !5
  %2749 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2748, i32 0, i32 14
  %2750 = load i32, ptr %2749, align 4, !tbaa !75
  %2751 = load ptr, ptr %7, align 8, !tbaa !5
  %2752 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2751, i32 0, i32 20
  %2753 = load i32, ptr %2752, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2742, i32 noundef %2744, i32 noundef %2747, i32 noundef %2750, i32 noundef 8, i32 noundef 0, i32 noundef %2753, i32 noundef 0)
  %2754 = load ptr, ptr %5, align 8, !tbaa !5
  %2755 = load ptr, ptr %7, align 8, !tbaa !5
  %2756 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2755, i32 0, i32 20
  %2757 = load i32, ptr %2756, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2754, i32 noundef 30006, i32 noundef %2757, i64 noundef 4)
  %2758 = load ptr, ptr %5, align 8, !tbaa !5
  %2759 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2760 = load i32, ptr %2759, align 8, !tbaa !62
  %2761 = load ptr, ptr %7, align 8, !tbaa !5
  %2762 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2761, i32 0, i32 23
  %2763 = load i32, ptr %2762, align 4, !tbaa !48
  %2764 = load ptr, ptr %7, align 8, !tbaa !5
  %2765 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2764, i32 0, i32 20
  %2766 = load i32, ptr %2765, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2758, i32 noundef %2760, i32 noundef %2763, i32 noundef %2766)
  %2767 = load i32, ptr %16, align 4, !tbaa !10
  %2768 = icmp ugt i32 %2767, 0
  br i1 %2768, label %2769, label %2793

2769:                                             ; preds = %2737
  %2770 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2770, i32 noundef 2)
  %2771 = load ptr, ptr %5, align 8, !tbaa !5
  %2772 = load ptr, ptr %7, align 8, !tbaa !5
  %2773 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2772, i32 0, i32 23
  %2774 = load i32, ptr %2773, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2771, ptr noundef %9, i32 noundef 36, i32 noundef %2774)
  %2775 = load ptr, ptr %5, align 8, !tbaa !5
  %2776 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2777 = load i32, ptr %2776, align 8, !tbaa !49
  %2778 = load ptr, ptr %7, align 8, !tbaa !5
  %2779 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2778, i32 0, i32 9
  %2780 = load i32, ptr %2779, align 4, !tbaa !60
  %2781 = load ptr, ptr %7, align 8, !tbaa !5
  %2782 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2781, i32 0, i32 14
  %2783 = load i32, ptr %2782, align 4, !tbaa !75
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2775, i32 noundef %2777, i32 noundef %2780, i32 noundef %2783, i32 noundef 8, i32 noundef 0, i32 noundef 2, i32 noundef 0)
  %2784 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2784, i32 noundef 30006, i32 noundef 2, i64 noundef 3)
  %2785 = load ptr, ptr %5, align 8, !tbaa !5
  %2786 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2787 = load i32, ptr %2786, align 8, !tbaa !62
  %2788 = load ptr, ptr %7, align 8, !tbaa !5
  %2789 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2788, i32 0, i32 23
  %2790 = load i32, ptr %2789, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2785, i32 noundef %2787, i32 noundef %2790, i32 noundef 2)
  %2791 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %2791, ptr noundef %9, i32 noundef 37, i32 noundef 2)
  %2792 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2792, i32 noundef 2)
  br label %2793

2793:                                             ; preds = %2769, %2737
  br label %2794

2794:                                             ; preds = %2793, %2734
  %2795 = load i32, ptr %13, align 4, !tbaa !10
  %2796 = icmp ugt i32 %2795, 0
  br i1 %2796, label %2797, label %2852

2797:                                             ; preds = %2794
  %2798 = load ptr, ptr %8, align 8, !tbaa !5
  %2799 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2798, i32 0, i32 6
  %2800 = load i32, ptr %2799, align 1, !tbaa !17
  %2801 = and i32 %2800, 33554432
  %2802 = icmp ugt i32 %2801, 0
  br i1 %2802, label %2803, label %2852

2803:                                             ; preds = %2797
  %2804 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2804, i32 noundef 2)
  %2805 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2805, i32 noundef 0)
  %2806 = load ptr, ptr %5, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2808 = load i32, ptr %2807, align 8, !tbaa !49
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2806, i32 noundef %2808, i32 noundef 2, i64 noundef 0)
  %2809 = load ptr, ptr %5, align 8, !tbaa !5
  %2810 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2811 = load i32, ptr %2810, align 8, !tbaa !49
  %2812 = load ptr, ptr %7, align 8, !tbaa !5
  %2813 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2812, i32 0, i32 7
  %2814 = load i32, ptr %2813, align 4, !tbaa !59
  %2815 = load ptr, ptr %7, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2815, i32 0, i32 14
  %2817 = load i32, ptr %2816, align 4, !tbaa !75
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2809, i32 noundef %2811, i32 noundef %2814, i32 noundef %2817, i32 noundef 8, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %2818 = load ptr, ptr %5, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2820 = load i32, ptr %2819, align 8, !tbaa !49
  %2821 = load ptr, ptr %7, align 8, !tbaa !5
  %2822 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2821, i32 0, i32 23
  %2823 = load i32, ptr %2822, align 4, !tbaa !48
  %2824 = load ptr, ptr %8, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2824, i32 0, i32 2
  %2826 = load i32, ptr %2825, align 1, !tbaa !19
  %2827 = zext i32 %2826 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2818, i32 noundef %2820, i32 noundef %2823, i64 noundef %2827)
  %2828 = load ptr, ptr %5, align 8, !tbaa !5
  %2829 = load ptr, ptr %7, align 8, !tbaa !5
  %2830 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2829, i32 0, i32 23
  %2831 = load i32, ptr %2830, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2828, i32 noundef 30006, i32 noundef %2831, i64 noundef 1)
  %2832 = load ptr, ptr %5, align 8, !tbaa !5
  %2833 = load ptr, ptr %7, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2833, i32 0, i32 23
  %2835 = load i32, ptr %2834, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2832, i32 noundef -1636564745, i32 noundef 127, i32 noundef %2835)
  %2836 = load ptr, ptr %5, align 8, !tbaa !5
  %2837 = load ptr, ptr %7, align 8, !tbaa !5
  %2838 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2837, i32 0, i32 23
  %2839 = load i32, ptr %2838, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2836, ptr noundef %9, i32 noundef 31, i32 noundef %2839)
  %2840 = load ptr, ptr %5, align 8, !tbaa !5
  %2841 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2842 = load i32, ptr %2841, align 8, !tbaa !62
  %2843 = load ptr, ptr %7, align 8, !tbaa !5
  %2844 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2843, i32 0, i32 23
  %2845 = load i32, ptr %2844, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2840, i32 noundef %2842, i32 noundef 0, i32 noundef %2845)
  %2846 = load ptr, ptr %5, align 8, !tbaa !5
  %2847 = load ptr, ptr %7, align 8, !tbaa !5
  %2848 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2847, i32 0, i32 23
  %2849 = load i32, ptr %2848, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %2846, ptr noundef %9, i32 noundef 35, i32 noundef %2849)
  %2850 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2850, i32 noundef 0)
  %2851 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2851, i32 noundef 2)
  br label %2852

2852:                                             ; preds = %2803, %2797, %2794
  %2853 = load ptr, ptr %5, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2855 = load i32, ptr %2854, align 8, !tbaa !49
  %2856 = load ptr, ptr %7, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2856, i32 0, i32 9
  %2858 = load i32, ptr %2857, align 4, !tbaa !60
  %2859 = load ptr, ptr %7, align 8, !tbaa !5
  %2860 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2859, i32 0, i32 14
  %2861 = load i32, ptr %2860, align 4, !tbaa !75
  %2862 = load ptr, ptr %7, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2862, i32 0, i32 22
  %2864 = load i32, ptr %2863, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2853, i32 noundef %2855, i32 noundef %2858, i32 noundef %2861, i32 noundef 8, i32 noundef 0, i32 noundef %2864, i32 noundef 0)
  %2865 = load ptr, ptr %5, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2867 = load i32, ptr %2866, align 8, !tbaa !62
  %2868 = load ptr, ptr %7, align 8, !tbaa !5
  %2869 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2868, i32 0, i32 22
  %2870 = load i32, ptr %2869, align 4, !tbaa !74
  %2871 = load ptr, ptr %7, align 8, !tbaa !5
  %2872 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2871, i32 0, i32 3
  %2873 = load i32, ptr %2872, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2865, i32 noundef %2867, i32 noundef %2870, i32 noundef %2873)
  br label %3018

2874:                                             ; preds = %2685
  %2875 = load ptr, ptr %11, align 8, !tbaa !5
  %2876 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2875, i32 0, i32 6
  %2877 = load i32, ptr %2876, align 1, !tbaa !17
  %2878 = and i32 %2877, 262144
  %2879 = icmp ne i32 %2878, 0
  br i1 %2879, label %2880, label %3017

2880:                                             ; preds = %2874
  %2881 = load ptr, ptr %5, align 8, !tbaa !5
  %2882 = load ptr, ptr %7, align 8, !tbaa !5
  %2883 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2882, i32 0, i32 1
  %2884 = load i32, ptr %2883, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2881, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 24, i32 noundef %2884, i32 noundef 0)
  %2885 = load ptr, ptr %5, align 8, !tbaa !5
  %2886 = load ptr, ptr %7, align 8, !tbaa !5
  %2887 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2886, i32 0, i32 3
  %2888 = load i32, ptr %2887, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2885, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %2888, i32 noundef 0)
  %2889 = load ptr, ptr %5, align 8, !tbaa !5
  %2890 = load ptr, ptr %7, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2890, i32 0, i32 22
  %2892 = load i32, ptr %2891, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2889, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %2892, i32 noundef 0)
  %2893 = load ptr, ptr %5, align 8, !tbaa !5
  %2894 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2895 = load i32, ptr %2894, align 8, !tbaa !62
  %2896 = load ptr, ptr %7, align 8, !tbaa !5
  %2897 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2896, i32 0, i32 22
  %2898 = load i32, ptr %2897, align 4, !tbaa !74
  %2899 = load ptr, ptr %7, align 8, !tbaa !5
  %2900 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2899, i32 0, i32 1
  %2901 = load i32, ptr %2900, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2893, i32 noundef %2895, i32 noundef %2898, i32 noundef %2901)
  %2902 = load ptr, ptr %5, align 8, !tbaa !5
  %2903 = load ptr, ptr %7, align 8, !tbaa !5
  %2904 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2903, i32 0, i32 22
  %2905 = load i32, ptr %2904, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2902, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %2905, i32 noundef 0)
  %2906 = load ptr, ptr %5, align 8, !tbaa !5
  %2907 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2908 = load i32, ptr %2907, align 8, !tbaa !62
  %2909 = load ptr, ptr %7, align 8, !tbaa !5
  %2910 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2909, i32 0, i32 22
  %2911 = load i32, ptr %2910, align 4, !tbaa !74
  %2912 = load ptr, ptr %7, align 8, !tbaa !5
  %2913 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2912, i32 0, i32 3
  %2914 = load i32, ptr %2913, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2906, i32 noundef %2908, i32 noundef %2911, i32 noundef %2914)
  %2915 = load i32, ptr %14, align 4, !tbaa !10
  %2916 = icmp ugt i32 %2915, 0
  br i1 %2916, label %2923, label %2917

2917:                                             ; preds = %2880
  %2918 = load i32, ptr %15, align 4, !tbaa !10
  %2919 = icmp ugt i32 %2918, 0
  br i1 %2919, label %2923, label %2920

2920:                                             ; preds = %2917
  %2921 = load i32, ptr %16, align 4, !tbaa !10
  %2922 = icmp ugt i32 %2921, 0
  br i1 %2922, label %2923, label %2982

2923:                                             ; preds = %2920, %2917, %2880
  %2924 = load ptr, ptr %5, align 8, !tbaa !5
  %2925 = load ptr, ptr %7, align 8, !tbaa !5
  %2926 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2925, i32 0, i32 23
  %2927 = load i32, ptr %2926, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2924, ptr noundef %9, i32 noundef 33, i32 noundef %2927)
  %2928 = load ptr, ptr %5, align 8, !tbaa !5
  %2929 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2930 = load i32, ptr %2929, align 8, !tbaa !49
  %2931 = load ptr, ptr %7, align 8, !tbaa !5
  %2932 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2931, i32 0, i32 14
  %2933 = load i32, ptr %2932, align 4, !tbaa !75
  %2934 = load ptr, ptr %7, align 8, !tbaa !5
  %2935 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2934, i32 0, i32 20
  %2936 = load i32, ptr %2935, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2928, i32 noundef %2930, i32 noundef %2933, i32 noundef %2936)
  %2937 = load ptr, ptr %5, align 8, !tbaa !5
  %2938 = load ptr, ptr %7, align 8, !tbaa !5
  %2939 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2938, i32 0, i32 20
  %2940 = load i32, ptr %2939, align 4, !tbaa !52
  %2941 = load ptr, ptr %8, align 8, !tbaa !5
  %2942 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2941, i32 0, i32 10
  %2943 = load i64, ptr %2942, align 1, !tbaa !76
  %2944 = sdiv i64 %2943, 16
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2937, i32 noundef 30003, i32 noundef %2940, i64 noundef %2944)
  %2945 = load ptr, ptr %5, align 8, !tbaa !5
  %2946 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2947 = load i32, ptr %2946, align 8, !tbaa !62
  %2948 = load ptr, ptr %7, align 8, !tbaa !5
  %2949 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2948, i32 0, i32 23
  %2950 = load i32, ptr %2949, align 4, !tbaa !48
  %2951 = load ptr, ptr %7, align 8, !tbaa !5
  %2952 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2951, i32 0, i32 20
  %2953 = load i32, ptr %2952, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2945, i32 noundef %2947, i32 noundef %2950, i32 noundef %2953)
  %2954 = load i32, ptr %16, align 4, !tbaa !10
  %2955 = icmp ugt i32 %2954, 0
  br i1 %2955, label %2956, label %2981

2956:                                             ; preds = %2923
  %2957 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2957, i32 noundef 0)
  %2958 = load ptr, ptr %5, align 8, !tbaa !5
  %2959 = load ptr, ptr %7, align 8, !tbaa !5
  %2960 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2959, i32 0, i32 23
  %2961 = load i32, ptr %2960, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2958, ptr noundef %9, i32 noundef 36, i32 noundef %2961)
  %2962 = load ptr, ptr %5, align 8, !tbaa !5
  %2963 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2964 = load i32, ptr %2963, align 8, !tbaa !49
  %2965 = load ptr, ptr %7, align 8, !tbaa !5
  %2966 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2965, i32 0, i32 14
  %2967 = load i32, ptr %2966, align 4, !tbaa !75
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2962, i32 noundef %2964, i32 noundef %2967, i32 noundef 0)
  %2968 = load ptr, ptr %5, align 8, !tbaa !5
  %2969 = load ptr, ptr %8, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2969, i32 0, i32 11
  %2971 = load i64, ptr %2970, align 1, !tbaa !77
  %2972 = sdiv i64 %2971, 8
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2968, i32 noundef 30003, i32 noundef 0, i64 noundef %2972)
  %2973 = load ptr, ptr %5, align 8, !tbaa !5
  %2974 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %2975 = load i32, ptr %2974, align 8, !tbaa !62
  %2976 = load ptr, ptr %7, align 8, !tbaa !5
  %2977 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2976, i32 0, i32 23
  %2978 = load i32, ptr %2977, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2973, i32 noundef %2975, i32 noundef %2978, i32 noundef 0)
  %2979 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %2979, ptr noundef %9, i32 noundef 37, i32 noundef 0)
  %2980 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2980, i32 noundef 0)
  br label %2981

2981:                                             ; preds = %2956, %2923
  br label %2982

2982:                                             ; preds = %2981, %2920
  %2983 = load i32, ptr %13, align 4, !tbaa !10
  %2984 = icmp ugt i32 %2983, 0
  br i1 %2984, label %2985, label %3016

2985:                                             ; preds = %2982
  %2986 = load ptr, ptr %8, align 8, !tbaa !5
  %2987 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2986, i32 0, i32 6
  %2988 = load i32, ptr %2987, align 1, !tbaa !17
  %2989 = and i32 %2988, 33554432
  %2990 = icmp ugt i32 %2989, 0
  br i1 %2990, label %2991, label %3016

2991:                                             ; preds = %2985
  %2992 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2992, i32 noundef 0)
  %2993 = load ptr, ptr %5, align 8, !tbaa !5
  %2994 = load ptr, ptr %7, align 8, !tbaa !5
  %2995 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2994, i32 0, i32 23
  %2996 = load i32, ptr %2995, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2993, ptr noundef %9, i32 noundef 31, i32 noundef %2996)
  %2997 = load ptr, ptr %5, align 8, !tbaa !5
  %2998 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %2999 = load i32, ptr %2998, align 8, !tbaa !49
  %3000 = load ptr, ptr %7, align 8, !tbaa !5
  %3001 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3000, i32 0, i32 14
  %3002 = load i32, ptr %3001, align 4, !tbaa !75
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2997, i32 noundef %2999, i32 noundef %3002, i32 noundef 0)
  %3003 = load ptr, ptr %5, align 8, !tbaa !5
  %3004 = load ptr, ptr %8, align 8, !tbaa !5
  %3005 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3004, i32 0, i32 3
  %3006 = load i32, ptr %3005, align 1, !tbaa !24
  %3007 = zext i32 %3006 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3003, i32 noundef 30003, i32 noundef 0, i64 noundef %3007)
  %3008 = load ptr, ptr %5, align 8, !tbaa !5
  %3009 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %3010 = load i32, ptr %3009, align 8, !tbaa !62
  %3011 = load ptr, ptr %7, align 8, !tbaa !5
  %3012 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3011, i32 0, i32 23
  %3013 = load i32, ptr %3012, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3008, i32 noundef %3010, i32 noundef %3013, i32 noundef 0)
  %3014 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %3014, ptr noundef %9, i32 noundef 35, i32 noundef 0)
  %3015 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %3015, i32 noundef 0)
  br label %3016

3016:                                             ; preds = %2991, %2985, %2982
  br label %3017

3017:                                             ; preds = %3016, %2874
  br label %3018

3018:                                             ; preds = %3017, %2852
  br label %3019

3019:                                             ; preds = %3018, %2684
  br label %3020

3020:                                             ; preds = %3019, %2460
  %3021 = load ptr, ptr %5, align 8, !tbaa !5
  %3022 = load ptr, ptr %6, align 8, !tbaa !5
  %3023 = load ptr, ptr %7, align 8, !tbaa !5
  %3024 = load ptr, ptr %11, align 8, !tbaa !5
  %3025 = load i32, ptr %61, align 4, !tbaa !10
  %3026 = load i32, ptr %58, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_sse_avx_avx2_avx512_kloop(ptr noundef %3021, ptr noundef %3022, ptr noundef %3023, ptr noundef %9, ptr noundef %3024, i32 noundef %3025, i32 noundef %3026)
  %3027 = load ptr, ptr %11, align 8, !tbaa !5
  %3028 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3027, i32 0, i32 6
  %3029 = load i32, ptr %3028, align 1, !tbaa !17
  %3030 = and i32 %3029, 65536
  %3031 = icmp ne i32 %3030, 0
  br i1 %3031, label %3044, label %3032

3032:                                             ; preds = %3020
  %3033 = load ptr, ptr %11, align 8, !tbaa !5
  %3034 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3033, i32 0, i32 6
  %3035 = load i32, ptr %3034, align 1, !tbaa !17
  %3036 = and i32 %3035, 131072
  %3037 = icmp ne i32 %3036, 0
  br i1 %3037, label %3044, label %3038

3038:                                             ; preds = %3032
  %3039 = load ptr, ptr %11, align 8, !tbaa !5
  %3040 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3039, i32 0, i32 6
  %3041 = load i32, ptr %3040, align 1, !tbaa !17
  %3042 = and i32 %3041, 262144
  %3043 = icmp ne i32 %3042, 0
  br i1 %3043, label %3044, label %3337

3044:                                             ; preds = %3038, %3032, %3020
  %3045 = load ptr, ptr %11, align 8, !tbaa !5
  %3046 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3045, i32 0, i32 6
  %3047 = load i32, ptr %3046, align 1, !tbaa !17
  %3048 = and i32 %3047, 65536
  %3049 = icmp ne i32 %3048, 0
  br i1 %3049, label %3050, label %3159

3050:                                             ; preds = %3044
  %3051 = load i32, ptr %26, align 4, !tbaa !10
  %3052 = icmp ne i32 %3051, 0
  br i1 %3052, label %3053, label %3079

3053:                                             ; preds = %3050
  %3054 = load ptr, ptr %5, align 8, !tbaa !5
  %3055 = load ptr, ptr %7, align 8, !tbaa !5
  %3056 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3055, i32 0, i32 22
  %3057 = load i32, ptr %3056, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %3054, i32 noundef %3057)
  %3058 = load ptr, ptr %5, align 8, !tbaa !5
  %3059 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3060 = load i32, ptr %3059, align 8, !tbaa !49
  %3061 = load ptr, ptr %7, align 8, !tbaa !5
  %3062 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3061, i32 0, i32 22
  %3063 = load i32, ptr %3062, align 4, !tbaa !74
  %3064 = load ptr, ptr %7, align 8, !tbaa !5
  %3065 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3064, i32 0, i32 14
  %3066 = load i32, ptr %3065, align 4, !tbaa !75
  %3067 = load ptr, ptr %7, align 8, !tbaa !5
  %3068 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3067, i32 0, i32 8
  %3069 = load i32, ptr %3068, align 4, !tbaa !57
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3058, i32 noundef %3060, i32 noundef %3063, i32 noundef %3066, i32 noundef 8, i32 noundef 0, i32 noundef %3069, i32 noundef 1)
  %3070 = load ptr, ptr %5, align 8, !tbaa !5
  %3071 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3072 = load i32, ptr %3071, align 8, !tbaa !49
  %3073 = load ptr, ptr %7, align 8, !tbaa !5
  %3074 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3073, i32 0, i32 22
  %3075 = load i32, ptr %3074, align 4, !tbaa !74
  %3076 = load ptr, ptr %7, align 8, !tbaa !5
  %3077 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3076, i32 0, i32 8
  %3078 = load i32, ptr %3077, align 4, !tbaa !57
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3070, i32 noundef %3072, i32 noundef %3075, i32 noundef %3078)
  br label %3079

3079:                                             ; preds = %3053, %3050
  %3080 = load i32, ptr %25, align 4, !tbaa !10
  %3081 = icmp ne i32 %3080, 0
  br i1 %3081, label %3082, label %3108

3082:                                             ; preds = %3079
  %3083 = load ptr, ptr %5, align 8, !tbaa !5
  %3084 = load ptr, ptr %7, align 8, !tbaa !5
  %3085 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3084, i32 0, i32 22
  %3086 = load i32, ptr %3085, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %3083, i32 noundef %3086)
  %3087 = load ptr, ptr %5, align 8, !tbaa !5
  %3088 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3089 = load i32, ptr %3088, align 8, !tbaa !49
  %3090 = load ptr, ptr %7, align 8, !tbaa !5
  %3091 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3090, i32 0, i32 22
  %3092 = load i32, ptr %3091, align 4, !tbaa !74
  %3093 = load ptr, ptr %7, align 8, !tbaa !5
  %3094 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3093, i32 0, i32 14
  %3095 = load i32, ptr %3094, align 4, !tbaa !75
  %3096 = load ptr, ptr %7, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3096, i32 0, i32 6
  %3098 = load i32, ptr %3097, align 4, !tbaa !56
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3087, i32 noundef %3089, i32 noundef %3092, i32 noundef %3095, i32 noundef 8, i32 noundef 0, i32 noundef %3098, i32 noundef 1)
  %3099 = load ptr, ptr %5, align 8, !tbaa !5
  %3100 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3101 = load i32, ptr %3100, align 8, !tbaa !49
  %3102 = load ptr, ptr %7, align 8, !tbaa !5
  %3103 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3102, i32 0, i32 22
  %3104 = load i32, ptr %3103, align 4, !tbaa !74
  %3105 = load ptr, ptr %7, align 8, !tbaa !5
  %3106 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3105, i32 0, i32 6
  %3107 = load i32, ptr %3106, align 4, !tbaa !56
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3099, i32 noundef %3101, i32 noundef %3104, i32 noundef %3107)
  br label %3108

3108:                                             ; preds = %3082, %3079
  %3109 = load ptr, ptr %5, align 8, !tbaa !5
  %3110 = load ptr, ptr %7, align 8, !tbaa !5
  %3111 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3110, i32 0, i32 22
  %3112 = load i32, ptr %3111, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %3109, i32 noundef %3112)
  %3113 = load ptr, ptr %5, align 8, !tbaa !5
  %3114 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3115 = load i32, ptr %3114, align 8, !tbaa !49
  %3116 = load ptr, ptr %7, align 8, !tbaa !5
  %3117 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3116, i32 0, i32 22
  %3118 = load i32, ptr %3117, align 4, !tbaa !74
  %3119 = load ptr, ptr %7, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3119, i32 0, i32 14
  %3121 = load i32, ptr %3120, align 4, !tbaa !75
  %3122 = load ptr, ptr %7, align 8, !tbaa !5
  %3123 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3122, i32 0, i32 3
  %3124 = load i32, ptr %3123, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3113, i32 noundef %3115, i32 noundef %3118, i32 noundef %3121, i32 noundef 8, i32 noundef 0, i32 noundef %3124, i32 noundef 1)
  %3125 = load ptr, ptr %5, align 8, !tbaa !5
  %3126 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3127 = load i32, ptr %3126, align 8, !tbaa !49
  %3128 = load ptr, ptr %7, align 8, !tbaa !5
  %3129 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3128, i32 0, i32 22
  %3130 = load i32, ptr %3129, align 4, !tbaa !74
  %3131 = load ptr, ptr %7, align 8, !tbaa !5
  %3132 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3131, i32 0, i32 3
  %3133 = load i32, ptr %3132, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3125, i32 noundef %3127, i32 noundef %3130, i32 noundef %3133)
  %3134 = load ptr, ptr %5, align 8, !tbaa !5
  %3135 = load ptr, ptr %7, align 8, !tbaa !5
  %3136 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3135, i32 0, i32 22
  %3137 = load i32, ptr %3136, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %3134, i32 noundef %3137)
  %3138 = load ptr, ptr %5, align 8, !tbaa !5
  %3139 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3140 = load i32, ptr %3139, align 8, !tbaa !49
  %3141 = load ptr, ptr %7, align 8, !tbaa !5
  %3142 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3141, i32 0, i32 22
  %3143 = load i32, ptr %3142, align 4, !tbaa !74
  %3144 = load ptr, ptr %7, align 8, !tbaa !5
  %3145 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3144, i32 0, i32 14
  %3146 = load i32, ptr %3145, align 4, !tbaa !75
  %3147 = load ptr, ptr %7, align 8, !tbaa !5
  %3148 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3147, i32 0, i32 1
  %3149 = load i32, ptr %3148, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3138, i32 noundef %3140, i32 noundef %3143, i32 noundef %3146, i32 noundef 8, i32 noundef 0, i32 noundef %3149, i32 noundef 1)
  %3150 = load ptr, ptr %5, align 8, !tbaa !5
  %3151 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3152 = load i32, ptr %3151, align 8, !tbaa !49
  %3153 = load ptr, ptr %7, align 8, !tbaa !5
  %3154 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3153, i32 0, i32 22
  %3155 = load i32, ptr %3154, align 4, !tbaa !74
  %3156 = load ptr, ptr %7, align 8, !tbaa !5
  %3157 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3156, i32 0, i32 1
  %3158 = load i32, ptr %3157, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3150, i32 noundef %3152, i32 noundef %3155, i32 noundef %3158)
  br label %3197

3159:                                             ; preds = %3044
  %3160 = load ptr, ptr %11, align 8, !tbaa !5
  %3161 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3160, i32 0, i32 6
  %3162 = load i32, ptr %3161, align 1, !tbaa !17
  %3163 = and i32 %3162, 262144
  %3164 = icmp ne i32 %3163, 0
  br i1 %3164, label %3165, label %3196

3165:                                             ; preds = %3159
  %3166 = load ptr, ptr %5, align 8, !tbaa !5
  %3167 = load ptr, ptr %7, align 8, !tbaa !5
  %3168 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3167, i32 0, i32 22
  %3169 = load i32, ptr %3168, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3166, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %3169, i32 noundef 0)
  %3170 = load ptr, ptr %5, align 8, !tbaa !5
  %3171 = load ptr, ptr %7, align 8, !tbaa !5
  %3172 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3171, i32 0, i32 22
  %3173 = load i32, ptr %3172, align 4, !tbaa !74
  %3174 = load ptr, ptr %11, align 8, !tbaa !5
  %3175 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3174, i32 0, i32 10
  %3176 = load i64, ptr %3175, align 1, !tbaa !76
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3170, i32 noundef 30000, i32 noundef %3173, i64 noundef %3176)
  %3177 = load ptr, ptr %5, align 8, !tbaa !5
  %3178 = load ptr, ptr %7, align 8, !tbaa !5
  %3179 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3178, i32 0, i32 22
  %3180 = load i32, ptr %3179, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3177, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %3180, i32 noundef 1)
  %3181 = load ptr, ptr %5, align 8, !tbaa !5
  %3182 = load ptr, ptr %7, align 8, !tbaa !5
  %3183 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3182, i32 0, i32 22
  %3184 = load i32, ptr %3183, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3181, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %3184, i32 noundef 0)
  %3185 = load ptr, ptr %5, align 8, !tbaa !5
  %3186 = load ptr, ptr %7, align 8, !tbaa !5
  %3187 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3186, i32 0, i32 22
  %3188 = load i32, ptr %3187, align 4, !tbaa !74
  %3189 = load ptr, ptr %11, align 8, !tbaa !5
  %3190 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3189, i32 0, i32 11
  %3191 = load i64, ptr %3190, align 1, !tbaa !77
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3185, i32 noundef 30000, i32 noundef %3188, i64 noundef %3191)
  %3192 = load ptr, ptr %5, align 8, !tbaa !5
  %3193 = load ptr, ptr %7, align 8, !tbaa !5
  %3194 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3193, i32 0, i32 22
  %3195 = load i32, ptr %3194, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3192, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %3195, i32 noundef 1)
  br label %3196

3196:                                             ; preds = %3165, %3159
  br label %3197

3197:                                             ; preds = %3196, %3108
  %3198 = load ptr, ptr %5, align 8, !tbaa !5
  %3199 = load ptr, ptr %6, align 8, !tbaa !5
  %3200 = load ptr, ptr %7, align 8, !tbaa !5
  %3201 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_footer_reduceloop(ptr noundef %3198, ptr noundef %3199, ptr noundef %3200, ptr noundef %9, ptr noundef %3201)
  %3202 = load ptr, ptr %11, align 8, !tbaa !5
  %3203 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3202, i32 0, i32 6
  %3204 = load i32, ptr %3203, align 1, !tbaa !17
  %3205 = and i32 %3204, 131072
  %3206 = icmp ne i32 %3205, 0
  br i1 %3206, label %3207, label %3258

3207:                                             ; preds = %3197
  %3208 = load ptr, ptr %5, align 8, !tbaa !5
  %3209 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3210 = load i32, ptr %3209, align 8, !tbaa !49
  %3211 = load ptr, ptr %7, align 8, !tbaa !5
  %3212 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3211, i32 0, i32 7
  %3213 = load i32, ptr %3212, align 4, !tbaa !59
  %3214 = load ptr, ptr %7, align 8, !tbaa !5
  %3215 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3214, i32 0, i32 14
  %3216 = load i32, ptr %3215, align 4, !tbaa !75
  %3217 = load ptr, ptr %7, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3217, i32 0, i32 22
  %3219 = load i32, ptr %3218, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3208, i32 noundef %3210, i32 noundef %3213, i32 noundef %3216, i32 noundef 8, i32 noundef -8, i32 noundef %3219, i32 noundef 0)
  %3220 = load ptr, ptr %5, align 8, !tbaa !5
  %3221 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 17
  %3222 = load i32, ptr %3221, align 4, !tbaa !73
  %3223 = load ptr, ptr %7, align 8, !tbaa !5
  %3224 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3223, i32 0, i32 22
  %3225 = load i32, ptr %3224, align 4, !tbaa !74
  %3226 = load ptr, ptr %7, align 8, !tbaa !5
  %3227 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3226, i32 0, i32 1
  %3228 = load i32, ptr %3227, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3220, i32 noundef %3222, i32 noundef %3225, i32 noundef %3228)
  %3229 = load ptr, ptr %5, align 8, !tbaa !5
  %3230 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3231 = load i32, ptr %3230, align 8, !tbaa !49
  %3232 = load ptr, ptr %7, align 8, !tbaa !5
  %3233 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3232, i32 0, i32 9
  %3234 = load i32, ptr %3233, align 4, !tbaa !60
  %3235 = load ptr, ptr %7, align 8, !tbaa !5
  %3236 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3235, i32 0, i32 14
  %3237 = load i32, ptr %3236, align 4, !tbaa !75
  %3238 = load ptr, ptr %7, align 8, !tbaa !5
  %3239 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3238, i32 0, i32 22
  %3240 = load i32, ptr %3239, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %3229, i32 noundef %3231, i32 noundef %3234, i32 noundef %3237, i32 noundef 8, i32 noundef -8, i32 noundef %3240, i32 noundef 0)
  %3241 = load ptr, ptr %5, align 8, !tbaa !5
  %3242 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 17
  %3243 = load i32, ptr %3242, align 4, !tbaa !73
  %3244 = load ptr, ptr %7, align 8, !tbaa !5
  %3245 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3244, i32 0, i32 22
  %3246 = load i32, ptr %3245, align 4, !tbaa !74
  %3247 = load ptr, ptr %7, align 8, !tbaa !5
  %3248 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3247, i32 0, i32 3
  %3249 = load i32, ptr %3248, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3241, i32 noundef %3243, i32 noundef %3246, i32 noundef %3249)
  %3250 = load ptr, ptr %5, align 8, !tbaa !5
  %3251 = load ptr, ptr %7, align 8, !tbaa !5
  %3252 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3251, i32 0, i32 22
  %3253 = load i32, ptr %3252, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %3250, i32 noundef %3253)
  %3254 = load ptr, ptr %5, align 8, !tbaa !5
  %3255 = load ptr, ptr %7, align 8, !tbaa !5
  %3256 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3255, i32 0, i32 22
  %3257 = load i32, ptr %3256, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %3254, i32 noundef %3257)
  br label %3258

3258:                                             ; preds = %3207, %3197
  %3259 = load ptr, ptr %11, align 8, !tbaa !5
  %3260 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3259, i32 0, i32 6
  %3261 = load i32, ptr %3260, align 1, !tbaa !17
  %3262 = and i32 %3261, 262144
  %3263 = icmp ne i32 %3262, 0
  br i1 %3263, label %3264, label %3336

3264:                                             ; preds = %3258
  %3265 = load ptr, ptr %5, align 8, !tbaa !5
  %3266 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3267 = load i32, ptr %3266, align 8, !tbaa !49
  %3268 = load ptr, ptr %7, align 8, !tbaa !5
  %3269 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3268, i32 0, i32 13
  %3270 = load i32, ptr %3269, align 4, !tbaa !58
  %3271 = load ptr, ptr %7, align 8, !tbaa !5
  %3272 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3271, i32 0, i32 22
  %3273 = load i32, ptr %3272, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3265, i32 noundef %3267, i32 noundef %3270, i32 noundef %3273)
  %3274 = load ptr, ptr %5, align 8, !tbaa !5
  %3275 = load ptr, ptr %7, align 8, !tbaa !5
  %3276 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3275, i32 0, i32 22
  %3277 = load i32, ptr %3276, align 4, !tbaa !74
  %3278 = load ptr, ptr %11, align 8, !tbaa !5
  %3279 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3278, i32 0, i32 10
  %3280 = load i64, ptr %3279, align 1, !tbaa !76
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3274, i32 noundef 30003, i32 noundef %3277, i64 noundef %3280)
  %3281 = load ptr, ptr %5, align 8, !tbaa !5
  %3282 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 17
  %3283 = load i32, ptr %3282, align 4, !tbaa !73
  %3284 = load ptr, ptr %7, align 8, !tbaa !5
  %3285 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3284, i32 0, i32 22
  %3286 = load i32, ptr %3285, align 4, !tbaa !74
  %3287 = load ptr, ptr %11, align 8, !tbaa !5
  %3288 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3287, i32 0, i32 10
  %3289 = load i64, ptr %3288, align 1, !tbaa !76
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3281, i32 noundef %3283, i32 noundef %3286, i64 noundef %3289)
  %3290 = load ptr, ptr %5, align 8, !tbaa !5
  %3291 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 17
  %3292 = load i32, ptr %3291, align 4, !tbaa !73
  %3293 = load ptr, ptr %7, align 8, !tbaa !5
  %3294 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3293, i32 0, i32 22
  %3295 = load i32, ptr %3294, align 4, !tbaa !74
  %3296 = load ptr, ptr %7, align 8, !tbaa !5
  %3297 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3296, i32 0, i32 1
  %3298 = load i32, ptr %3297, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3290, i32 noundef %3292, i32 noundef %3295, i32 noundef %3298)
  %3299 = load ptr, ptr %5, align 8, !tbaa !5
  %3300 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %3301 = load i32, ptr %3300, align 8, !tbaa !49
  %3302 = load ptr, ptr %7, align 8, !tbaa !5
  %3303 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3302, i32 0, i32 13
  %3304 = load i32, ptr %3303, align 4, !tbaa !58
  %3305 = load ptr, ptr %7, align 8, !tbaa !5
  %3306 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3305, i32 0, i32 22
  %3307 = load i32, ptr %3306, align 4, !tbaa !74
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3299, i32 noundef %3301, i32 noundef %3304, i32 noundef %3307)
  %3308 = load ptr, ptr %5, align 8, !tbaa !5
  %3309 = load ptr, ptr %7, align 8, !tbaa !5
  %3310 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3309, i32 0, i32 22
  %3311 = load i32, ptr %3310, align 4, !tbaa !74
  %3312 = load ptr, ptr %11, align 8, !tbaa !5
  %3313 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3312, i32 0, i32 11
  %3314 = load i64, ptr %3313, align 1, !tbaa !77
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3308, i32 noundef 30003, i32 noundef %3311, i64 noundef %3314)
  %3315 = load ptr, ptr %5, align 8, !tbaa !5
  %3316 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 17
  %3317 = load i32, ptr %3316, align 4, !tbaa !73
  %3318 = load ptr, ptr %7, align 8, !tbaa !5
  %3319 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3318, i32 0, i32 22
  %3320 = load i32, ptr %3319, align 4, !tbaa !74
  %3321 = load ptr, ptr %11, align 8, !tbaa !5
  %3322 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3321, i32 0, i32 11
  %3323 = load i64, ptr %3322, align 1, !tbaa !77
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3315, i32 noundef %3317, i32 noundef %3320, i64 noundef %3323)
  %3324 = load ptr, ptr %5, align 8, !tbaa !5
  %3325 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 17
  %3326 = load i32, ptr %3325, align 4, !tbaa !73
  %3327 = load ptr, ptr %7, align 8, !tbaa !5
  %3328 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3327, i32 0, i32 22
  %3329 = load i32, ptr %3328, align 4, !tbaa !74
  %3330 = load ptr, ptr %7, align 8, !tbaa !5
  %3331 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %3330, i32 0, i32 3
  %3332 = load i32, ptr %3331, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %3324, i32 noundef %3326, i32 noundef %3329, i32 noundef %3332)
  %3333 = load ptr, ptr %5, align 8, !tbaa !5
  %3334 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 16
  %3335 = load i32, ptr %3334, align 8, !tbaa !62
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %3333, i32 noundef %3335, i32 noundef 4, i64 noundef 32)
  br label %3336

3336:                                             ; preds = %3264, %3258
  br label %3337

3337:                                             ; preds = %3336, %3038
  %3338 = load ptr, ptr %5, align 8, !tbaa !5
  %3339 = load ptr, ptr %7, align 8, !tbaa !5
  %3340 = load ptr, ptr %11, align 8, !tbaa !5
  %3341 = load i32, ptr %61, align 4, !tbaa !10
  %3342 = load i32, ptr %58, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_store_C(ptr noundef %3338, ptr noundef %3339, ptr noundef %9, ptr noundef %3340, i32 noundef %3341, i32 noundef %3342)
  %3343 = load ptr, ptr %5, align 8, !tbaa !5
  %3344 = load ptr, ptr %6, align 8, !tbaa !5
  %3345 = load ptr, ptr %7, align 8, !tbaa !5
  %3346 = load ptr, ptr %11, align 8, !tbaa !5
  %3347 = load i32, ptr %61, align 4, !tbaa !10
  %3348 = load i32, ptr %59, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_footer_mloop(ptr noundef %3343, ptr noundef %3344, ptr noundef %3345, ptr noundef %9, ptr noundef %3346, i32 noundef %3347, i32 noundef %3348)
  br label %3349

3349:                                             ; preds = %3337, %1858, %1835
  %3350 = load ptr, ptr %11, align 8, !tbaa !5
  %3351 = load ptr, ptr %5, align 8, !tbaa !5
  %3352 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3351, i32 0, i32 6
  %3353 = load i32, ptr %3352, align 4, !tbaa !21
  %3354 = load i32, ptr %61, align 4, !tbaa !10
  %3355 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef %9, ptr noundef %3350, i32 noundef %3353, i32 noundef %3354)
  store i32 %3355, ptr %61, align 4, !tbaa !10
  br label %1809, !llvm.loop !78

3356:                                             ; preds = %1809
  %3357 = load ptr, ptr %5, align 8, !tbaa !5
  %3358 = load ptr, ptr %6, align 8, !tbaa !5
  %3359 = load ptr, ptr %7, align 8, !tbaa !5
  %3360 = load ptr, ptr %11, align 8, !tbaa !5
  %3361 = load i32, ptr %58, align 4, !tbaa !10
  %3362 = load i32, ptr %22, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_footer_nloop(ptr noundef %3357, ptr noundef %3358, ptr noundef %3359, ptr noundef %9, ptr noundef %3360, i32 noundef %3361, i32 noundef %3362)
  store i32 0, ptr %29, align 4
  br label %3363

3363:                                             ; preds = %3356, %1825
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  %3364 = load i32, ptr %29, align 4
  switch i32 %3364, label %3384 [
    i32 0, label %3365
  ]

3365:                                             ; preds = %3363
  br label %1766, !llvm.loop !79

3366:                                             ; preds = %1766
  %3367 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 35
  %3368 = load i32, ptr %3367, align 4, !tbaa !61
  %3369 = icmp ugt i32 %3368, 0
  br i1 %3369, label %3370, label %3380

3370:                                             ; preds = %3366
  %3371 = load ptr, ptr %8, align 8, !tbaa !5
  %3372 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3371, i32 0, i32 5
  %3373 = load i32, ptr %3372, align 1, !tbaa !63
  %3374 = load ptr, ptr %11, align 8, !tbaa !5
  %3375 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %3374, i32 0, i32 5
  store i32 %3373, ptr %3375, align 1, !tbaa !63
  %3376 = load ptr, ptr %5, align 8, !tbaa !5
  %3377 = load ptr, ptr %6, align 8, !tbaa !5
  %3378 = load ptr, ptr %7, align 8, !tbaa !5
  %3379 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_vnni_store_C_from_scratch(ptr noundef %3376, ptr noundef %3377, ptr noundef %3378, ptr noundef %9, ptr noundef %3379)
  br label %3380

3380:                                             ; preds = %3370, %3366
  %3381 = load ptr, ptr %5, align 8, !tbaa !5
  %3382 = load ptr, ptr %11, align 8, !tbaa !5
  %3383 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_destroy_stack_frame(ptr noundef %3381, ptr noundef %3382, ptr noundef %3383, ptr noundef %9)
  store i32 0, ptr %29, align 4
  br label %3384

3384:                                             ; preds = %3380, %3363, %1322, %961, %939, %625, %582, %508, %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 95, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 688, ptr %9) #6
  %3385 = load i32, ptr %29, align 4
  switch i32 %3385, label %3387 [
    i32 0, label %3386
    i32 1, label %3386
  ]

3386:                                             ; preds = %3384, %3384
  ret void

3387:                                             ; preds = %3384
  unreachable
}

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

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

declare i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef) #1

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

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) #1

declare void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) #1

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef, i32 noundef, ptr noundef, i32 noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_ABC_COMMON_PREC(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_max_n_blocking(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

declare i32 @libxsmm_compute_equalized_blocking(i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @libxsmm_x86_instruction_alu_reg(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_alu_mem(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_setup_stack_frame(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @libxsmm_generator_gemm_setval_stack_var(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_getval_stack_var(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef, i32 noundef, i32 noundef, i64 noundef) #1

declare void @libxsmm_generator_gemm_apply_opA_opB(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @libxsmm_x86_instruction_push_reg(ptr noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_mask_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_pop_reg(ptr noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext, i32 noundef) #1

declare void @libxsmm_x86_instruction_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_header_nloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_alu_imm(ptr noundef, i32 noundef, i32 noundef, i64 noundef) #1

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

declare void @libxsmm_generator_initialize_avx512_mask(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_initialize_avx_mask(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_header_mloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_load_C(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_header_reduceloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_sse_avx_avx2_avx512_kloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_gemm_footer_reduceloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @libxsmm_generator_gemm_store_C(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_footer_mloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_footer_nloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_gemm_vnni_store_C_from_scratch(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @libxsmm_generator_gemm_destroy_stack_frame(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{i64 0, i64 4, !10, i64 4, i64 4, !10, i64 8, i64 4, !10, i64 12, i64 4, !10, i64 16, i64 4, !10, i64 20, i64 4, !10, i64 24, i64 4, !10, i64 28, i64 1, !12, i64 29, i64 3, !12, i64 32, i64 1, !12, i64 33, i64 8, !13, i64 41, i64 8, !13, i64 49, i64 1, !12, i64 50, i64 4, !10, i64 54, i64 4, !10, i64 58, i64 4, !10, i64 62, i64 2, !15, i64 64, i64 2, !15, i64 66, i64 1, !12, i64 67, i64 1, !12, i64 68, i64 1, !12, i64 69, i64 1, !12, i64 70, i64 2, !15, i64 72, i64 2, !15, i64 74, i64 2, !15, i64 76, i64 2, !15, i64 78, i64 2, !15, i64 80, i64 2, !15, i64 82, i64 4, !10, i64 86, i64 4, !10, i64 90, i64 4, !10, i64 94, i64 1, !12}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long long", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!18, !11, i64 24}
!18 = !{!"libxsmm_gemm_descriptor", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !7, i64 28, !7, i64 29, !7, i64 32, !14, i64 33, !14, i64 41, !7, i64 49, !11, i64 50, !11, i64 54, !11, i64 58, !16, i64 62, !16, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !16, i64 70, !16, i64 72, !16, i64 74, !16, i64 76, !16, i64 78, !16, i64 80, !11, i64 82, !11, i64 86, !11, i64 90, !7, i64 94}
!19 = !{!18, !11, i64 8}
!20 = !{!18, !7, i64 28}
!21 = !{!22, !11, i64 28}
!22 = !{!"libxsmm_generated_code", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28}
!23 = !{!18, !11, i64 0}
!24 = !{!18, !11, i64 12}
!25 = !{!18, !11, i64 16}
!26 = !{!27, !11, i64 648}
!27 = !{!"libxsmm_micro_kernel_config", !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, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !7, 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, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !11, i64 148, !11, i64 152, !11, i64 156, !11, i64 160, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !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, !11, i64 260, !11, i64 264, !11, i64 268, !11, i64 272, !11, i64 276, !11, i64 280, !11, i64 284, !11, i64 288, !11, i64 292, !11, i64 296, !11, i64 300, !11, i64 304, !11, i64 308, !11, i64 312, !11, i64 316, !11, i64 320, !11, i64 324, !11, i64 328, !11, i64 332, !11, i64 336, !11, i64 340, !11, i64 344, !11, i64 348, !11, i64 352, !11, i64 356, !11, i64 360, !7, i64 364, !7, i64 380, !7, i64 396, !7, i64 412, !7, i64 428, !7, i64 444, !11, i64 460, !7, i64 464, !28, i64 520, !11, i64 556, !11, i64 560, !11, i64 564, !11, i64 568, !11, i64 572, !11, i64 576, !11, i64 580, !11, i64 584, !6, i64 592, !11, i64 600, !11, i64 604, !11, i64 608, !11, i64 612, !6, i64 616, !11, i64 624, !11, i64 628, !11, i64 632, !11, i64 636, !11, i64 640, !11, i64 644, !11, i64 648, !11, i64 652, !11, i64 656, !11, i64 660, !11, i64 664, !11, i64 668, !11, i64 672, !11, i64 676, !11, i64 680}
!28 = !{!"libxsmm_tile_config", !7, i64 0, !16, i64 2, !7, i64 4, !16, i64 6, !7, i64 8, !16, i64 10, !7, i64 12, !16, i64 14, !7, i64 16, !16, i64 18, !7, i64 20, !16, i64 22, !7, i64 24, !16, i64 26, !7, i64 28, !16, i64 30, !7, i64 32}
!29 = !{!27, !11, i64 652}
!30 = !{!27, !11, i64 656}
!31 = !{!27, !11, i64 680}
!32 = !{!27, !11, i64 660}
!33 = !{!27, !11, i64 668}
!34 = !{!27, !11, i64 672}
!35 = !{!27, !11, i64 676}
!36 = !{!27, !11, i64 8}
!37 = !{!27, !11, i64 4}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}
!40 = distinct !{!40, !39}
!41 = distinct !{!41, !39}
!42 = distinct !{!42, !39}
!43 = distinct !{!43, !39}
!44 = distinct !{!44, !39}
!45 = !{!18, !11, i64 4}
!46 = !{!47, !11, i64 0}
!47 = !{!"libxsmm_gp_reg_mapping_struct", !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, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !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, !11, i64 124, !11, i64 128}
!48 = !{!47, !11, i64 92}
!49 = !{!27, !11, i64 80}
!50 = !{!47, !11, i64 4}
!51 = !{!47, !11, i64 116}
!52 = !{!47, !11, i64 80}
!53 = !{!47, !11, i64 12}
!54 = !{!47, !11, i64 84}
!55 = !{!47, !11, i64 20}
!56 = !{!47, !11, i64 24}
!57 = !{!47, !11, i64 32}
!58 = !{!47, !11, i64 52}
!59 = !{!47, !11, i64 28}
!60 = !{!47, !11, i64 36}
!61 = !{!27, !11, i64 140}
!62 = !{!27, !11, i64 64}
!63 = !{!18, !11, i64 20}
!64 = !{!47, !11, i64 96}
!65 = !{!27, !6, i64 592}
!66 = !{!27, !11, i64 56}
!67 = !{!27, !7, i64 84}
!68 = !{!27, !11, i64 0}
!69 = !{!47, !11, i64 124}
!70 = !{!27, !11, i64 168}
!71 = !{!27, !11, i64 164}
!72 = !{!27, !11, i64 44}
!73 = !{!27, !11, i64 68}
!74 = !{!47, !11, i64 88}
!75 = !{!47, !11, i64 56}
!76 = !{!18, !14, i64 33}
!77 = !{!18, !14, i64 41}
!78 = distinct !{!78, !39}
!79 = distinct !{!79, !39}


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

%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_gemm_descriptor = type <{ i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], i8, i64, i64, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, i32, i32, i32, i8 }>

@__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel = external hidden unnamed_addr constant [50 x i8], align 1
@.str = external hidden unnamed_addr constant [90 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mant = external hidden unnamed_addr constant [8 x float], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_sign = external hidden unnamed_addr constant [8 x i32], align 16
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mxfp4 = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_idx = external hidden unnamed_addr constant [8 x i32], align 16
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [10 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_f32 = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut_f32 = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut = external hidden unnamed_addr constant [32 x i16], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut = external hidden unnamed_addr constant [32 x i16], align 16
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_lo_i4 = external hidden unnamed_addr constant [8 x i32], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_hi_i4 = external hidden unnamed_addr constant [8 x i32], align 16
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.perm_rpt_zpt = external hidden unnamed_addr constant [64 x i8], align 16
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_512 = external hidden unnamed_addr constant [32 x i16], align 16
@__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_256 = external hidden unnamed_addr constant [16 x i16], align 16
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef) local_unnamed_addr #1

declare i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef) local_unnamed_addr #1

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef) local_unnamed_addr #1

declare void @libxsmm_reset_loop_label_tracker(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #2 {
  %5 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %6 = alloca %struct.libxsmm_gemm_descriptor, align 4
  %7 = alloca [2 x i32], align 8
  %8 = alloca [2 x i32], align 8
  %9 = alloca [8 x float], align 16
  %10 = alloca [8 x i32], align 16
  %11 = alloca [32 x i8], align 16
  %12 = alloca [8 x i32], align 16
  %13 = alloca [16 x i32], align 16
  %14 = alloca [16 x i32], align 16
  %15 = alloca [32 x i16], align 16
  %16 = alloca [32 x i16], align 16
  %17 = alloca [8 x i32], align 16
  %18 = alloca [8 x i32], align 16
  %19 = alloca [64 x i8], align 16
  %20 = alloca [16 x i32], align 16
  %21 = alloca [16 x i32], align 16
  %22 = alloca [32 x i16], align 16
  %23 = alloca [16 x i16], align 16
  call void @llvm.lifetime.start.p0(i64 688, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 95, ptr nonnull %6) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(95) %6, ptr noundef nonnull align 1 dereferenceable(95) %3, i64 95, i1 false), !tbaa.struct !5
  %24 = getelementptr inbounds i8, ptr %6, i64 24
  %25 = load i32, ptr %24, align 4, !tbaa !15
  %26 = and i32 %25, 2097152
  %.not = icmp eq i32 %26, 0
  %.sink1191.sroa.gep = getelementptr inbounds i8, ptr %5, i64 680
  %.sink1191.sroa.gep1209 = getelementptr inbounds i8, ptr %5, i64 656
  br i1 %.not, label %40, label %27

27:                                               ; preds = %4
  %28 = getelementptr inbounds i8, ptr %6, i64 29
  %29 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %28) #5
  %30 = icmp eq i32 %29, 12
  br i1 %30, label %31, label %40

31:                                               ; preds = %27
  %32 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %28) #5
  %33 = icmp eq i32 %32, 3
  br i1 %33, label %34, label %40

34:                                               ; preds = %31
  %35 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %28) #5
  %36 = icmp eq i32 %35, 3
  br i1 %36, label %40, label %37

37:                                               ; preds = %34
  %38 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %28) #5
  %39 = icmp eq i32 %38, 1
  br label %40

40:                                               ; preds = %27, %31, %37, %34, %4
  %41 = phi i1 [ false, %4 ], [ false, %31 ], [ false, %27 ], [ true, %34 ], [ %39, %37 ]
  %42 = call i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef nonnull %3) #5
  %43 = call i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef nonnull %3) #5
  %44 = call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef nonnull %3) #5
  %45 = call i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef nonnull %3) #5
  %46 = load i32, ptr %24, align 4, !tbaa !15
  %47 = and i32 %46, 6147
  %or.cond1084 = icmp eq i32 %47, 0
  br i1 %or.cond1084, label %48, label %57

48:                                               ; preds = %40
  %49 = getelementptr inbounds i8, ptr %6, i64 8
  %50 = load i32, ptr %49, align 4, !tbaa !17
  %51 = and i32 %50, 1
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %53, label %57

53:                                               ; preds = %48
  %54 = getelementptr inbounds i8, ptr %6, i64 29
  %55 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %54) #5
  %56 = icmp eq i32 %55, 2
  %.pre = load i32, ptr %24, align 4, !tbaa !15
  br label %57

57:                                               ; preds = %53, %48, %40
  %58 = phi i32 [ %46, %48 ], [ %46, %40 ], [ %.pre, %53 ]
  %59 = phi i1 [ false, %48 ], [ false, %40 ], [ %56, %53 ]
  %60 = and i32 %58, 6147
  %or.cond1090 = icmp eq i32 %60, 1
  br i1 %or.cond1090, label %61, label %70

61:                                               ; preds = %57
  %62 = getelementptr inbounds i8, ptr %6, i64 8
  %63 = load i32, ptr %62, align 4, !tbaa !17
  %64 = and i32 %63, 1
  %65 = icmp eq i32 %64, 0
  br i1 %65, label %66, label %70

66:                                               ; preds = %61
  %67 = getelementptr inbounds i8, ptr %6, i64 29
  %68 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %67) #5
  %69 = icmp eq i32 %68, 2
  %.pre1181 = load i32, ptr %24, align 4, !tbaa !15
  br label %70

70:                                               ; preds = %66, %61, %57
  %71 = phi i32 [ %58, %61 ], [ %58, %57 ], [ %.pre1181, %66 ]
  %72 = phi i1 [ false, %61 ], [ false, %57 ], [ %69, %66 ]
  %73 = and i32 %71, 6147
  %or.cond1095 = icmp eq i32 %73, 2
  br i1 %or.cond1095, label %74, label %83

74:                                               ; preds = %70
  %75 = getelementptr inbounds i8, ptr %6, i64 8
  %76 = load i32, ptr %75, align 4, !tbaa !17
  %77 = and i32 %76, 1
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %79, label %83

79:                                               ; preds = %74
  %80 = getelementptr inbounds i8, ptr %6, i64 29
  %81 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %80) #5
  %82 = icmp eq i32 %81, 2
  %.pre1182 = load i32, ptr %24, align 4, !tbaa !15
  br label %83

83:                                               ; preds = %79, %74, %70
  %84 = phi i32 [ %71, %74 ], [ %71, %70 ], [ %.pre1182, %79 ]
  %85 = phi i1 [ false, %74 ], [ false, %70 ], [ %82, %79 ]
  %86 = and i32 %84, 6147
  %or.cond1100 = icmp eq i32 %86, 3
  br i1 %or.cond1100, label %87, label %96

87:                                               ; preds = %83
  %88 = getelementptr inbounds i8, ptr %6, i64 8
  %89 = load i32, ptr %88, align 4, !tbaa !17
  %90 = and i32 %89, 1
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %92, label %96

92:                                               ; preds = %87
  %93 = getelementptr inbounds i8, ptr %6, i64 29
  %94 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %93) #5
  %95 = icmp eq i32 %94, 2
  br label %96

96:                                               ; preds = %92, %87, %83
  %97 = phi i1 [ false, %87 ], [ false, %83 ], [ %95, %92 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  store i64 0, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  store i64 0, ptr %8, align 8
  %98 = getelementptr inbounds i8, ptr %6, i64 29
  %99 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %100 = icmp eq i32 %99, 12
  %101 = icmp eq i32 %44, 0
  %or.cond = select i1 %100, i1 %101, i1 false
  br i1 %or.cond, label %102, label %111

102:                                              ; preds = %96
  %103 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %104 = icmp eq i32 %103, 2
  br i1 %104, label %105, label %111

105:                                              ; preds = %102
  %106 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %107 = icmp eq i32 %106, 2
  br i1 %107, label %111, label %108

108:                                              ; preds = %105
  %109 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %110 = icmp eq i32 %109, 1
  br label %111

111:                                              ; preds = %105, %108, %102, %96
  %112 = phi i1 [ false, %102 ], [ false, %96 ], [ true, %105 ], [ %110, %108 ]
  %113 = load i32, ptr %24, align 4, !tbaa !15
  %114 = trunc i32 %113 to i8
  %trunc = and i8 %114, -64
  switch i8 %trunc, label %1236 [
    i8 -64, label %115
    i8 0, label %115
  ]

115:                                              ; preds = %111, %111
  %116 = and i32 %113, 65536
  %.not1017 = icmp eq i32 %116, 0
  %117 = getelementptr inbounds i8, ptr %6, i64 28
  %118 = load i8, ptr %117, align 4
  %119 = icmp ne i8 %118, 1
  %or.cond1106.not = select i1 %.not1017, i1 true, i1 %119
  %120 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %121 = icmp eq i32 %120, 12
  br i1 %121, label %125, label %122

122:                                              ; preds = %115
  %123 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %124 = icmp eq i32 %123, 4
  br i1 %124, label %125, label %128

125:                                              ; preds = %122, %115
  %126 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %127 = icmp eq i32 %126, 3
  br i1 %127, label %134, label %128

128:                                              ; preds = %125, %122
  %129 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %130 = icmp eq i32 %129, 3
  br i1 %130, label %131, label %143

131:                                              ; preds = %128
  %132 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %133 = icmp eq i32 %132, 3
  br i1 %133, label %134, label %143

134:                                              ; preds = %131, %125
  %135 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %98) #5
  %136 = icmp eq i32 %135, 14
  br i1 %136, label %.sink.split, label %143

.sink.split:                                      ; preds = %134
  %137 = getelementptr inbounds i8, ptr %0, i64 28
  %138 = load i32, ptr %137, align 4, !tbaa !18
  %139 = icmp ugt i32 %138, 1103
  %140 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %141 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %142 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %. = select i1 %139, i32 3, i32 1
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef %140, i32 noundef %141, i32 noundef %142, i32 noundef %., ptr noundef nonnull %98) #5
  br label %143

143:                                              ; preds = %.sink.split, %134, %131, %128
  %144 = getelementptr inbounds i8, ptr %3, i64 29
  %145 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %144) #5
  %146 = icmp eq i32 %145, 4
  br i1 %146, label %150, label %147

147:                                              ; preds = %143
  %148 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %144) #5
  %149 = icmp eq i32 %148, 5
  br i1 %149, label %150, label %166

150:                                              ; preds = %147, %143
  %151 = getelementptr inbounds i8, ptr %0, i64 28
  %152 = load i32, ptr %151, align 4, !tbaa !18
  %153 = icmp ugt i32 %152, 1102
  %154 = icmp eq i32 %152, 1053
  %or.cond1107 = or i1 %153, %154
  %155 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  br i1 %or.cond1107, label %156, label %159

156:                                              ; preds = %150
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 2, i32 noundef 2, i32 noundef %155, i32 noundef 1, ptr noundef nonnull %98) #5
  %157 = load i32, ptr %24, align 4, !tbaa !15
  %158 = or i32 %157, 2048
  store i32 %158, ptr %24, align 4, !tbaa !15
  br label %160

159:                                              ; preds = %150
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 1, i32 noundef 1, i32 noundef %155, i32 noundef 1, ptr noundef nonnull %98) #5
  br label %160

160:                                              ; preds = %159, %156
  %161 = load i32, ptr %6, align 4, !tbaa !21
  %162 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %161, ptr %162, align 4, !tbaa !22
  %163 = getelementptr inbounds i8, ptr %6, i64 8
  %164 = load i32, ptr %163, align 4, !tbaa !17
  %165 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %164, ptr %165, align 4, !tbaa !23
  br label %166

166:                                              ; preds = %160, %147
  %or.cond3 = select i1 %59, i1 true, i1 %72
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %85
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %97
  br i1 %or.cond7, label %167, label %170

167:                                              ; preds = %166
  %168 = load i32, ptr %24, align 4, !tbaa !15
  %169 = or i32 %168, 2048
  store i32 %169, ptr %24, align 4, !tbaa !15
  br label %170

170:                                              ; preds = %166, %167
  %or.cond9 = select i1 %72, i1 true, i1 %97
  br i1 %or.cond9, label %171, label %182

171:                                              ; preds = %170
  %172 = load i32, ptr %24, align 4, !tbaa !15
  %173 = and i32 %172, -2
  store i32 %173, ptr %24, align 4, !tbaa !15
  %174 = getelementptr inbounds i8, ptr %6, i64 12
  %175 = load i32, ptr %174, align 4, !tbaa !22
  %176 = and i32 %175, 1
  %.not1018 = icmp eq i32 %176, 0
  br i1 %.not1018, label %182, label %177

177:                                              ; preds = %171
  %178 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %179 = icmp ugt i32 %178, 1
  %180 = load i32, ptr @libxsmm_verbosity, align 4
  %181 = select i1 %179, i32 %180, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef nonnull @.str, i32 noundef 265, i32 noundef %181) #5
  br label %1236

182:                                              ; preds = %171, %170
  %or.cond11 = select i1 %85, i1 true, i1 %97
  br i1 %or.cond11, label %183, label %186

183:                                              ; preds = %182
  %184 = load i32, ptr %24, align 4, !tbaa !15
  %185 = and i32 %184, -3
  store i32 %185, ptr %24, align 4, !tbaa !15
  br label %186

186:                                              ; preds = %182, %183
  %187 = getelementptr inbounds i8, ptr %0, i64 28
  %188 = load i32, ptr %187, align 4, !tbaa !18
  call void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef nonnull %5, i32 noundef %188, ptr noundef nonnull %6, i32 noundef 0) #5
  %189 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %144) #5
  %190 = icmp eq i32 %189, 4
  br i1 %190, label %191, label %193

191:                                              ; preds = %186
  %192 = getelementptr inbounds i8, ptr %5, i64 648
  store i32 1, ptr %192, align 8, !tbaa !24
  br label %193

193:                                              ; preds = %191, %186
  %194 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %144) #5
  %195 = icmp eq i32 %194, 5
  br i1 %195, label %196, label %198

196:                                              ; preds = %193
  %197 = getelementptr inbounds i8, ptr %5, i64 652
  store i32 1, ptr %197, align 4, !tbaa !27
  br label %198

198:                                              ; preds = %196, %193
  %199 = load i32, ptr %24, align 4, !tbaa !15
  %200 = and i32 %199, 1
  %.not1019 = icmp eq i32 %200, 0
  br i1 %.not1019, label %217, label %201

201:                                              ; preds = %198
  %202 = call i32 @LIBXSMM_GEMM_GETENUM_ABC_COMMON_PREC(ptr noundef nonnull %98) #5
  %203 = icmp eq i32 %202, 1
  br i1 %203, label %207, label %204

204:                                              ; preds = %201
  %205 = call i32 @LIBXSMM_GEMM_GETENUM_ABC_COMMON_PREC(ptr noundef nonnull %98) #5
  %206 = icmp eq i32 %205, 0
  br i1 %206, label %207, label %212

207:                                              ; preds = %204, %201
  %208 = load i32, ptr %6, align 4, !tbaa !21
  %209 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %208, ptr %209, align 4, !tbaa !22
  %210 = load i32, ptr %24, align 4, !tbaa !15
  %211 = and i32 %210, -2
  br label %.sink.split1189

212:                                              ; preds = %204
  %213 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %214 = icmp ugt i32 %213, 1
  %215 = load i32, ptr @libxsmm_verbosity, align 4
  %216 = select i1 %214, i32 %215, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef nonnull @.str, i32 noundef 292, i32 noundef %216) #5
  br label %1236

217:                                              ; preds = %198
  %218 = and i32 %199, 4098
  %or.cond1108.not = icmp eq i32 %218, 4098
  br i1 %or.cond1108.not, label %219, label %233

219:                                              ; preds = %217
  %220 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %221 = icmp eq i32 %220, 2
  br i1 %221, label %222, label %228

222:                                              ; preds = %219
  %223 = load i32, ptr %24, align 4, !tbaa !15
  %224 = getelementptr inbounds i8, ptr %6, i64 8
  %225 = load i32, ptr %224, align 4, !tbaa !17
  %226 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %225, ptr %226, align 4, !tbaa !23
  %227 = and i32 %223, -4099
  br label %.sink.split1189

228:                                              ; preds = %219
  %229 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %230 = icmp ugt i32 %229, 1
  %231 = load i32, ptr @libxsmm_verbosity, align 4
  %232 = select i1 %230, i32 %231, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef nonnull @.str, i32 noundef 302, i32 noundef %232) #5
  br label %1236

.sink.split1189:                                  ; preds = %207, %222
  %.sink1192 = phi i32 [ %227, %222 ], [ %211, %207 ]
  %.sink1191.sroa.phi = phi ptr [ %.sink1191.sroa.gep, %222 ], [ %.sink1191.sroa.gep1209, %207 ]
  store i32 %.sink1192, ptr %24, align 4, !tbaa !15
  store i32 1, ptr %.sink1191.sroa.phi, align 8, !tbaa !6
  br label %233

233:                                              ; preds = %.sink.split1189, %217
  br i1 %59, label %234, label %238

234:                                              ; preds = %233
  %235 = load i32, ptr %6, align 4, !tbaa !21
  %236 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %235, ptr %236, align 4, !tbaa !22
  %237 = getelementptr inbounds i8, ptr %5, i64 660
  store i32 1, ptr %237, align 4, !tbaa !28
  br label %238

238:                                              ; preds = %234, %233
  br i1 %72, label %239, label %243

239:                                              ; preds = %238
  %240 = load i32, ptr %6, align 4, !tbaa !21
  %241 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %240, ptr %241, align 4, !tbaa !22
  %242 = getelementptr inbounds i8, ptr %5, i64 668
  store i32 1, ptr %242, align 4, !tbaa !29
  br label %243

243:                                              ; preds = %239, %238
  br i1 %85, label %244, label %251

244:                                              ; preds = %243
  %245 = load i32, ptr %6, align 4, !tbaa !21
  %246 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %245, ptr %246, align 4, !tbaa !22
  %247 = getelementptr inbounds i8, ptr %6, i64 8
  %248 = load i32, ptr %247, align 4, !tbaa !17
  %249 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %248, ptr %249, align 4, !tbaa !23
  %250 = getelementptr inbounds i8, ptr %5, i64 672
  store i32 1, ptr %250, align 8, !tbaa !30
  br label %251

251:                                              ; preds = %244, %243
  br i1 %97, label %252, label %259

252:                                              ; preds = %251
  %253 = load i32, ptr %6, align 4, !tbaa !21
  %254 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %253, ptr %254, align 4, !tbaa !22
  %255 = getelementptr inbounds i8, ptr %6, i64 8
  %256 = load i32, ptr %255, align 4, !tbaa !17
  %257 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %256, ptr %257, align 4, !tbaa !23
  %258 = getelementptr inbounds i8, ptr %5, i64 676
  store i32 1, ptr %258, align 4, !tbaa !31
  br label %259

259:                                              ; preds = %252, %251
  %260 = load i32, ptr %187, align 4, !tbaa !18
  %261 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_max_n_blocking(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %260)
  %262 = icmp ugt i32 %261, 3
  br i1 %262, label %263, label %.loopexit

263:                                              ; preds = %259
  %264 = load i32, ptr %187, align 4, !tbaa !18
  %265 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %264, i32 noundef 0)
  %266 = getelementptr inbounds i8, ptr %5, i64 8
  %267 = load i32, ptr %266, align 8, !tbaa !32
  %268 = add i32 %265, -1
  %269 = add i32 %268, %267
  %270 = udiv i32 %269, %267
  %271 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %272 = icmp eq i32 %271, 12
  br i1 %272, label %273, label %.critedge

273:                                              ; preds = %263
  %274 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %275 = icmp eq i32 %274, 3
  br i1 %275, label %276, label %.critedge

276:                                              ; preds = %273
  %277 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %278 = icmp eq i32 %277, 3
  br i1 %278, label %.critedge1110, label %279

279:                                              ; preds = %276
  %280 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %281 = icmp eq i32 %280, 1
  br i1 %281, label %.critedge1110, label %.critedge

.critedge1110:                                    ; preds = %276, %279
  %282 = load i32, ptr %24, align 4, !tbaa !15
  %283 = and i32 %282, 524288
  %284 = icmp eq i32 %283, 0
  br i1 %284, label %285, label %288

285:                                              ; preds = %.critedge1110
  %286 = add i32 %270, 3
  %287 = select i1 %41, i32 %286, i32 1
  br label %292

288:                                              ; preds = %.critedge1110
  %289 = shl i32 %270, 1
  %290 = add i32 %289, 2
  %291 = select i1 %41, i32 %290, i32 %270
  br label %292

292:                                              ; preds = %288, %285
  %293 = phi i32 [ %287, %285 ], [ %291, %288 ]
  %294 = and i32 %282, 1048576
  %.not1025 = icmp eq i32 %294, 0
  %295 = select i1 %.not1025, i32 0, i32 %270
  %spec.select = add i32 %293, %295
  %296 = load i32, ptr %187, align 4, !tbaa !18
  %297 = add i32 %296, -1101
  %298 = icmp ult i32 %297, -50
  %or.cond1111 = select i1 %298, i1 true, i1 %41
  br i1 %or.cond1111, label %.preheader, label %.preheader1154

.preheader1154:                                   ; preds = %292
  %299 = add i32 %270, 1
  %300 = add i32 %spec.select, 1
  %301 = getelementptr inbounds i8, ptr %5, i64 4
  %302 = load i32, ptr %301, align 4, !tbaa !33
  br label %306

.preheader:                                       ; preds = %292
  %303 = add i32 %spec.select, 1
  %304 = getelementptr inbounds i8, ptr %5, i64 4
  %305 = load i32, ptr %304, align 4, !tbaa !33
  br label %311

306:                                              ; preds = %306, %.preheader1154
  %.0987 = phi i32 [ %310, %306 ], [ %261, %.preheader1154 ]
  %307 = mul i32 %.0987, %299
  %308 = add i32 %300, %307
  %309 = icmp ugt i32 %308, %302
  %310 = add i32 %.0987, -1
  br i1 %309, label %306, label %.loopexit, !llvm.loop !34

311:                                              ; preds = %311, %.preheader
  %.1 = phi i32 [ %316, %311 ], [ %261, %.preheader ]
  %312 = add i32 %.1, 1
  %313 = mul i32 %312, %270
  %314 = add i32 %303, %313
  %315 = icmp ugt i32 %314, %305
  %316 = add i32 %.1, -1
  br i1 %315, label %311, label %.loopexit, !llvm.loop !36

.critedge:                                        ; preds = %273, %263, %279
  br i1 %112, label %317, label %331

317:                                              ; preds = %.critedge
  %318 = load i32, ptr %24, align 4, !tbaa !15
  %319 = and i32 %318, 524288
  %320 = icmp eq i32 %319, 0
  %321 = add i32 %270, 2
  %322 = select i1 %320, i32 3, i32 %321
  %323 = getelementptr inbounds i8, ptr %5, i64 4
  %324 = load i32, ptr %323, align 4, !tbaa !33
  br label %325

325:                                              ; preds = %325, %317
  %.3 = phi i32 [ %261, %317 ], [ %330, %325 ]
  %326 = add i32 %.3, 1
  %327 = mul i32 %326, %270
  %328 = add i32 %322, %327
  %329 = icmp ugt i32 %328, %324
  %330 = add i32 %.3, -1
  br i1 %329, label %325, label %.loopexit, !llvm.loop !37

331:                                              ; preds = %.critedge
  %.not1022 = icmp eq i32 %42, 0
  br i1 %.not1022, label %345, label %332

332:                                              ; preds = %331
  %333 = load i32, ptr %24, align 4, !tbaa !15
  %334 = and i32 %333, 34603008
  %or.cond1112 = icmp eq i32 %334, 0
  %335 = select i1 %or.cond1112, i32 0, i32 %270
  %336 = add i32 %270, 4
  %.0990 = add i32 %336, %335
  %337 = getelementptr inbounds i8, ptr %5, i64 4
  %338 = load i32, ptr %337, align 4, !tbaa !33
  br label %339

339:                                              ; preds = %339, %332
  %.4 = phi i32 [ %261, %332 ], [ %344, %339 ]
  %340 = add i32 %.4, 1
  %341 = mul i32 %340, %270
  %342 = add i32 %.0990, %341
  %343 = icmp ugt i32 %342, %338
  %344 = add i32 %.4, -1
  br i1 %343, label %339, label %.loopexit, !llvm.loop !38

345:                                              ; preds = %331
  %346 = load i32, ptr %187, align 4, !tbaa !18
  %347 = add i32 %346, -1008
  %or.cond1113 = icmp ult i32 %347, 93
  br i1 %or.cond1113, label %.preheader1157, label %.preheader1159

.preheader1159:                                   ; preds = %345
  %348 = getelementptr inbounds i8, ptr %5, i64 4
  %349 = load i32, ptr %348, align 4, !tbaa !33
  br label %358

.preheader1157:                                   ; preds = %345
  %350 = add i32 %270, 1
  %351 = getelementptr inbounds i8, ptr %5, i64 4
  %352 = load i32, ptr %351, align 4, !tbaa !33
  br label %353

353:                                              ; preds = %353, %.preheader1157
  %.5 = phi i32 [ %357, %353 ], [ %261, %.preheader1157 ]
  %354 = mul i32 %.5, %350
  %355 = add i32 %354, 1
  %356 = icmp ugt i32 %355, %352
  %357 = add i32 %.5, -1
  br i1 %356, label %353, label %.loopexit, !llvm.loop !39

358:                                              ; preds = %358, %.preheader1159
  %.6 = phi i32 [ %363, %358 ], [ %261, %.preheader1159 ]
  %359 = add i32 %.6, 1
  %360 = mul i32 %359, %270
  %361 = add i32 %360, 1
  %362 = icmp ugt i32 %361, %349
  %363 = add i32 %.6, -1
  br i1 %362, label %358, label %.loopexit, !llvm.loop !40

.loopexit:                                        ; preds = %339, %358, %353, %325, %306, %311, %259
  %.8 = phi i32 [ %261, %259 ], [ %.1, %311 ], [ %.0987, %306 ], [ %.3, %325 ], [ %.5, %353 ], [ %.6, %358 ], [ %.4, %339 ]
  %364 = icmp eq i32 %.8, 0
  br i1 %364, label %365, label %370

365:                                              ; preds = %.loopexit
  %366 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %367 = icmp ugt i32 %366, 1
  %368 = load i32, ptr @libxsmm_verbosity, align 4
  %369 = select i1 %367, i32 %368, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90016, ptr noundef nonnull @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef nonnull @.str, i32 noundef 381, i32 noundef %369) #5
  br label %1236

370:                                              ; preds = %.loopexit
  %371 = getelementptr inbounds i8, ptr %6, i64 4
  %372 = load i32, ptr %371, align 4, !tbaa !41
  %373 = getelementptr inbounds i8, ptr %8, i64 4
  %374 = getelementptr inbounds i8, ptr %7, i64 4
  %375 = call i32 @libxsmm_compute_equalized_blocking(i32 noundef %372, i32 noundef %.8, ptr noundef nonnull %8, ptr noundef nonnull %7, ptr noundef nonnull %373, ptr noundef nonnull %374) #5
  %376 = load i32, ptr %8, align 8, !tbaa !6
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %383

378:                                              ; preds = %370
  %379 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %380 = icmp ugt i32 %379, 1
  %381 = load i32, ptr @libxsmm_verbosity, align 4
  %382 = select i1 %380, i32 %381, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90016, ptr noundef nonnull @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef nonnull @.str, i32 noundef 388, i32 noundef %382) #5
  br label %1236

383:                                              ; preds = %370
  %384 = load i32, ptr %24, align 4, !tbaa !15
  %385 = and i32 %384, 49152
  %or.cond1114 = icmp eq i32 %385, 0
  br i1 %or.cond1114, label %510, label %386

386:                                              ; preds = %383
  %387 = load i32, ptr %2, align 4, !tbaa !42
  %388 = getelementptr inbounds i8, ptr %2, i64 92
  %389 = load i32, ptr %388, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef -1568407413, i32 noundef %387, i32 noundef %389) #5
  %390 = getelementptr inbounds i8, ptr %5, i64 80
  %391 = load i32, ptr %390, align 8, !tbaa !45
  %392 = load i32, ptr %388, align 4, !tbaa !44
  %393 = getelementptr inbounds i8, ptr %2, i64 4
  %394 = load i32, ptr %393, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %391, i32 noundef %392, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef %394, i32 noundef 0) #5
  %395 = getelementptr inbounds i8, ptr %3, i64 24
  %396 = load i32, ptr %395, align 1, !tbaa !15
  %397 = and i32 %396, 8388608
  %.not1029 = icmp eq i32 %397, 0
  br i1 %.not1029, label %403, label %398

398:                                              ; preds = %386
  %399 = load i32, ptr %390, align 8, !tbaa !45
  %400 = load i32, ptr %388, align 4, !tbaa !44
  %401 = getelementptr inbounds i8, ptr %2, i64 116
  %402 = load i32, ptr %401, align 4, !tbaa !47
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %399, i32 noundef %400, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %402, i32 noundef 0) #5
  br label %403

403:                                              ; preds = %398, %386
  %404 = icmp ne i32 %43, 0
  %405 = icmp ne i32 %44, 0
  %or.cond15 = select i1 %404, i1 true, i1 %405
  %406 = icmp ne i32 %45, 0
  %or.cond17 = select i1 %or.cond15, i1 true, i1 %406
  br i1 %or.cond17, label %407, label %412

407:                                              ; preds = %403
  %408 = load i32, ptr %390, align 8, !tbaa !45
  %409 = load i32, ptr %388, align 4, !tbaa !44
  %410 = getelementptr inbounds i8, ptr %2, i64 80
  %411 = load i32, ptr %410, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %408, i32 noundef %409, i32 noundef 127, i32 noundef 0, i32 noundef 48, i32 noundef %411, i32 noundef 0) #5
  br label %412

412:                                              ; preds = %403, %407
  %413 = load i32, ptr %390, align 8, !tbaa !45
  %414 = load i32, ptr %388, align 4, !tbaa !44
  %415 = getelementptr inbounds i8, ptr %2, i64 12
  %416 = load i32, ptr %415, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %413, i32 noundef %414, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %416, i32 noundef 0) #5
  br i1 %406, label %417, label %422

417:                                              ; preds = %412
  %418 = load i32, ptr %390, align 8, !tbaa !45
  %419 = load i32, ptr %388, align 4, !tbaa !44
  %420 = getelementptr inbounds i8, ptr %2, i64 84
  %421 = load i32, ptr %420, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %418, i32 noundef %419, i32 noundef 127, i32 noundef 0, i32 noundef 96, i32 noundef %421, i32 noundef 0) #5
  br label %422

422:                                              ; preds = %417, %412
  %423 = load i32, ptr %390, align 8, !tbaa !45
  %424 = load i32, ptr %388, align 4, !tbaa !44
  %425 = getelementptr inbounds i8, ptr %2, i64 20
  %426 = load i32, ptr %425, align 4, !tbaa !51
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %423, i32 noundef %424, i32 noundef 127, i32 noundef 0, i32 noundef 128, i32 noundef %426, i32 noundef 0) #5
  %427 = load i8, ptr %117, align 4, !tbaa !52
  %.not1030 = icmp eq i8 %427, 0
  br i1 %.not1030, label %437, label %428

428:                                              ; preds = %422
  %429 = load i32, ptr %390, align 8, !tbaa !45
  %430 = load i32, ptr %388, align 4, !tbaa !44
  %431 = getelementptr inbounds i8, ptr %2, i64 24
  %432 = load i32, ptr %431, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %429, i32 noundef %430, i32 noundef 127, i32 noundef 0, i32 noundef 72, i32 noundef %432, i32 noundef 0) #5
  %433 = load i32, ptr %390, align 8, !tbaa !45
  %434 = load i32, ptr %388, align 4, !tbaa !44
  %435 = getelementptr inbounds i8, ptr %2, i64 32
  %436 = load i32, ptr %435, align 4, !tbaa !54
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %433, i32 noundef %434, i32 noundef 127, i32 noundef 0, i32 noundef 120, i32 noundef %436, i32 noundef 0) #5
  br label %437

437:                                              ; preds = %428, %422
  %438 = load i32, ptr %24, align 4, !tbaa !15
  %439 = and i32 %438, 458752
  %or.cond1116 = icmp eq i32 %439, 0
  br i1 %or.cond1116, label %456, label %440

440:                                              ; preds = %437
  %441 = load i32, ptr %390, align 8, !tbaa !45
  %442 = load i32, ptr %388, align 4, !tbaa !44
  %443 = getelementptr inbounds i8, ptr %2, i64 52
  %444 = load i32, ptr %443, align 4, !tbaa !55
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %441, i32 noundef %442, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %444, i32 noundef 0) #5
  %445 = load i32, ptr %24, align 4, !tbaa !15
  %446 = and i32 %445, 131072
  %.not1034 = icmp eq i32 %446, 0
  br i1 %.not1034, label %456, label %447

447:                                              ; preds = %440
  %448 = load i32, ptr %390, align 8, !tbaa !45
  %449 = load i32, ptr %388, align 4, !tbaa !44
  %450 = getelementptr inbounds i8, ptr %2, i64 28
  %451 = load i32, ptr %450, align 4, !tbaa !56
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %448, i32 noundef %449, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %451, i32 noundef 0) #5
  %452 = load i32, ptr %390, align 8, !tbaa !45
  %453 = load i32, ptr %388, align 4, !tbaa !44
  %454 = getelementptr inbounds i8, ptr %2, i64 36
  %455 = load i32, ptr %454, align 4, !tbaa !57
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %452, i32 noundef %453, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %455, i32 noundef 0) #5
  br label %456

456:                                              ; preds = %437, %440, %447
  %457 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %458 = icmp eq i32 %457, 12
  br i1 %458, label %459, label %468

459:                                              ; preds = %456
  %460 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %461 = icmp eq i32 %460, 1
  %462 = icmp eq i32 %45, 0
  %or.cond19 = select i1 %461, i1 %462, i1 false
  br i1 %or.cond19, label %463, label %468

463:                                              ; preds = %459
  %464 = load i32, ptr %390, align 8, !tbaa !45
  %465 = load i32, ptr %388, align 4, !tbaa !44
  %466 = getelementptr inbounds i8, ptr %2, i64 80
  %467 = load i32, ptr %466, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %464, i32 noundef %465, i32 noundef 127, i32 noundef 0, i32 noundef 144, i32 noundef %467, i32 noundef 0) #5
  br label %468

468:                                              ; preds = %463, %459, %456
  %469 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %470 = icmp eq i32 %469, 12
  br i1 %470, label %471, label %480

471:                                              ; preds = %468
  %472 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %473 = icmp eq i32 %472, 3
  br i1 %473, label %474, label %480

474:                                              ; preds = %471
  %475 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %476 = icmp eq i32 %475, 3
  br i1 %476, label %492, label %477

477:                                              ; preds = %474
  %478 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %479 = icmp eq i32 %478, 1
  br i1 %479, label %492, label %480

480:                                              ; preds = %477, %471, %468
  %481 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %482 = icmp eq i32 %481, 12
  %or.cond21 = select i1 %482, i1 %101, i1 false
  br i1 %or.cond21, label %483, label %501

483:                                              ; preds = %480
  %484 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %485 = icmp eq i32 %484, 2
  br i1 %485, label %486, label %501

486:                                              ; preds = %483
  %487 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %488 = icmp eq i32 %487, 2
  br i1 %488, label %492, label %489

489:                                              ; preds = %486
  %490 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %491 = icmp eq i32 %490, 1
  br i1 %491, label %492, label %501

492:                                              ; preds = %489, %486, %477, %474
  %493 = load i32, ptr %390, align 8, !tbaa !45
  %494 = load i32, ptr %388, align 4, !tbaa !44
  %495 = getelementptr inbounds i8, ptr %2, i64 80
  %496 = load i32, ptr %495, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %493, i32 noundef %494, i32 noundef 127, i32 noundef 0, i32 noundef 48, i32 noundef %496, i32 noundef 0) #5
  %497 = load i32, ptr %390, align 8, !tbaa !45
  %498 = load i32, ptr %388, align 4, !tbaa !44
  %499 = getelementptr inbounds i8, ptr %2, i64 84
  %500 = load i32, ptr %499, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %497, i32 noundef %498, i32 noundef 127, i32 noundef 0, i32 noundef 56, i32 noundef %500, i32 noundef 0) #5
  br label %501

501:                                              ; preds = %492, %489, %483, %480
  %.not1035 = icmp eq i32 %42, 0
  br i1 %.not1035, label %510, label %502

502:                                              ; preds = %501
  %503 = load i32, ptr %395, align 1, !tbaa !15
  %504 = and i32 %503, 1048576
  %.not1036 = icmp eq i32 %504, 0
  br i1 %.not1036, label %510, label %505

505:                                              ; preds = %502
  %506 = load i32, ptr %390, align 8, !tbaa !45
  %507 = load i32, ptr %388, align 4, !tbaa !44
  %508 = getelementptr inbounds i8, ptr %2, i64 84
  %509 = load i32, ptr %508, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %506, i32 noundef %507, i32 noundef 127, i32 noundef 0, i32 noundef 56, i32 noundef %509, i32 noundef 0) #5
  br label %510

510:                                              ; preds = %501, %502, %505, %383
  %511 = load i32, ptr %24, align 4, !tbaa !15
  %512 = and i32 %511, 32768
  %513 = icmp ne i32 %512, 0
  %514 = getelementptr inbounds i8, ptr %5, i64 140
  %515 = load i32, ptr %514, align 4
  %516 = icmp ne i32 %515, 0
  %or.cond24 = select i1 %513, i1 true, i1 %516
  br i1 %or.cond24, label %517, label %537

517:                                              ; preds = %510
  %518 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %519 = icmp eq i32 %518, 2
  br i1 %519, label %537, label %520

520:                                              ; preds = %517
  %521 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %522 = icmp eq i32 %521, 3
  br i1 %522, label %537, label %523

523:                                              ; preds = %520
  %524 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %525 = icmp eq i32 %524, 4
  br i1 %525, label %537, label %526

526:                                              ; preds = %523
  %527 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %528 = icmp eq i32 %527, 5
  br i1 %528, label %537, label %529

529:                                              ; preds = %526
  %530 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %531 = icmp eq i32 %530, 1
  br i1 %531, label %537, label %532

532:                                              ; preds = %529
  %533 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %534 = icmp ugt i32 %533, 1
  %535 = load i32, ptr @libxsmm_verbosity, align 4
  %536 = select i1 %534, i32 %535, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90046, ptr noundef nonnull @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef nonnull @.str, i32 noundef 476, i32 noundef %536) #5
  br label %1236

537:                                              ; preds = %517, %520, %523, %526, %529, %510
  call void @libxsmm_generator_gemm_setup_stack_frame(ptr noundef %0, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %5) #5
  %538 = load i32, ptr %514, align 4, !tbaa !58
  %.not1037 = icmp eq i32 %538, 0
  br i1 %.not1037, label %551, label %539

539:                                              ; preds = %537
  %540 = getelementptr inbounds i8, ptr %2, i64 20
  %541 = load i32, ptr %540, align 4, !tbaa !51
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 18, i32 noundef %541) #5
  %542 = load i32, ptr %540, align 4, !tbaa !51
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 6, i32 noundef %542) #5
  %543 = getelementptr inbounds i8, ptr %2, i64 92
  %544 = load i32, ptr %543, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef %0, i32 noundef -1568407413, i32 noundef %544, i64 noundef 2048) #5
  %545 = getelementptr inbounds i8, ptr %5, i64 64
  %546 = load i32, ptr %545, align 8, !tbaa !59
  %547 = load i32, ptr %543, align 4, !tbaa !44
  %548 = load i32, ptr %540, align 4, !tbaa !51
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %546, i32 noundef %547, i32 noundef %548) #5
  %549 = load i32, ptr %6, align 4, !tbaa !21
  %550 = getelementptr inbounds i8, ptr %6, i64 20
  store i32 %549, ptr %550, align 4, !tbaa !60
  br label %551

551:                                              ; preds = %539, %537
  call void @libxsmm_generator_gemm_apply_opA_opB(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %3) #5
  call void @libxsmm_reset_loop_label_tracker(ptr noundef %1) #5
  %552 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %553 = icmp eq i32 %552, 2
  br i1 %553, label %554, label %567

554:                                              ; preds = %551
  %555 = load i32, ptr %24, align 4, !tbaa !15
  %556 = and i32 %555, 2048
  %.not1038 = icmp eq i32 %556, 0
  br i1 %.not1038, label %567, label %557

557:                                              ; preds = %554
  %558 = load i32, ptr %187, align 4, !tbaa !18
  %.fr1175 = freeze i32 %558
  %559 = add i32 %.fr1175, -2000
  %560 = icmp ult i32 %559, -949
  br i1 %560, label %567, label %switch.early.test

switch.early.test:                                ; preds = %557
  switch i32 %.fr1175, label %561 [
    i32 1103, label %567
    i32 1053, label %567
  ]

561:                                              ; preds = %switch.early.test
  %562 = getelementptr inbounds i8, ptr %2, i64 96
  %563 = load i32, ptr %562, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %563) #5
  %564 = load i32, ptr %562, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef %564, i64 noundef 2863311530) #5
  %565 = load i32, ptr %562, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_mask_move(ptr noundef nonnull %0, i32 noundef -1610149486, i32 noundef %565, i32 noundef 3) #5
  %566 = load i32, ptr %562, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef nonnull %0, i32 noundef %566) #5
  br label %567

567:                                              ; preds = %switch.early.test, %switch.early.test, %557, %561, %554, %551
  %568 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %569 = icmp eq i32 %568, 12
  br i1 %569, label %570, label %584

570:                                              ; preds = %567
  %571 = load i32, ptr %24, align 4, !tbaa !15
  %572 = and i32 %571, 2048
  %.not1041 = icmp eq i32 %572, 0
  br i1 %.not1041, label %584, label %573

573:                                              ; preds = %570
  %574 = and i32 %571, 768
  switch i32 %574, label %584 [
    i32 768, label %575
    i32 0, label %575
  ]

575:                                              ; preds = %573, %573
  %576 = load i32, ptr %187, align 4, !tbaa !18
  %577 = add i32 %576, -1051
  %or.cond1123 = icmp ult i32 %577, 949
  br i1 %or.cond1123, label %578, label %584

578:                                              ; preds = %575
  %579 = getelementptr inbounds i8, ptr %2, i64 96
  %580 = load i32, ptr %579, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %580) #5
  %581 = load i32, ptr %579, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef %581, i64 noundef 1431655765) #5
  %582 = load i32, ptr %579, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_mask_move(ptr noundef nonnull %0, i32 noundef -1610149486, i32 noundef %582, i32 noundef 3) #5
  %583 = load i32, ptr %579, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef nonnull %0, i32 noundef %583) #5
  br label %584

584:                                              ; preds = %573, %578, %575, %570, %567
  %585 = icmp ne i32 %43, 0
  %586 = icmp ne i32 %44, 0
  %or.cond26 = select i1 %585, i1 true, i1 %586
  br i1 %or.cond26, label %587, label %589

587:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %9, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mant, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %10, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_sign, i64 32, i1 false)
  %588 = getelementptr inbounds i8, ptr %5, i64 592
  store ptr %1, ptr %588, align 8, !tbaa !62
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %0, ptr noundef nonnull %9, ptr noundef nonnull @.str.1, i8 noundef signext 121, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %0, ptr noundef nonnull %10, ptr noundef nonnull @.str.2, i8 noundef signext 121, i32 noundef 1) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #5
  br label %589

589:                                              ; preds = %584, %587
  %590 = icmp ne i32 %45, 0
  br i1 %590, label %591, label %593

591:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %11, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_mxfp4, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %12, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_idx, i64 32, i1 false)
  %592 = getelementptr inbounds i8, ptr %5, i64 592
  store ptr %1, ptr %592, align 8, !tbaa !62
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %0, ptr noundef nonnull %11, ptr noundef nonnull @.str.3, i8 noundef signext 121, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %0, ptr noundef nonnull %12, ptr noundef nonnull @.str.4, i8 noundef signext 121, i32 noundef 1) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #5
  br label %593

593:                                              ; preds = %591, %589
  br i1 %41, label %594, label %615

594:                                              ; preds = %593
  %595 = load i32, ptr %187, align 4, !tbaa !18
  %596 = add i32 %595, -1007
  %spec.select1124 = icmp ult i32 %596, 94
  br i1 %spec.select1124, label %614, label %597

597:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %13, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut_f32, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %14, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut_f32, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %15, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.lut, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %16, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.signed_lut, i64 64, i1 false)
  %598 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %144) #5
  %599 = icmp eq i32 %598, 1
  br i1 %599, label %603, label %600

600:                                              ; preds = %597
  %601 = load i32, ptr %187, align 4, !tbaa !18
  %602 = icmp ult i32 %601, 1104
  br i1 %602, label %603, label %608

603:                                              ; preds = %600, %597
  %604 = getelementptr inbounds i8, ptr %3, i64 24
  %605 = load i32, ptr %604, align 1, !tbaa !15
  %606 = and i32 %605, 256
  %.not1045 = icmp eq i32 %606, 0
  %607 = select i1 %.not1045, ptr %14, ptr %13
  br label %613

608:                                              ; preds = %600
  %609 = getelementptr inbounds i8, ptr %3, i64 24
  %610 = load i32, ptr %609, align 1, !tbaa !15
  %611 = and i32 %610, 256
  %.not1044 = icmp eq i32 %611, 0
  %612 = select i1 %.not1044, ptr %16, ptr %15
  br label %613

613:                                              ; preds = %608, %603
  %.sink1193 = phi ptr [ %612, %608 ], [ %607, %603 ]
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %.sink1193, ptr noundef nonnull @.str.5, i8 noundef signext 122, i32 noundef 0) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #5
  br label %615

614:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %17, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_lo_i4, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %18, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.mask_hi_i4, i64 32, i1 false)
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %17, ptr noundef nonnull @.str.6, i8 noundef signext 121, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %18, ptr noundef nonnull @.str.7, i8 noundef signext 121, i32 noundef 1) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #5
  br label %615

615:                                              ; preds = %613, %614, %593
  %.not1046 = icmp eq i32 %42, 0
  br i1 %.not1046, label %621, label %616

616:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %19, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.perm_rpt_zpt, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %20) #5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %20, i8 15, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %21, i8 -16, i64 64, i1 false)
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %0, ptr noundef nonnull %20, ptr noundef nonnull @.str.6, i8 noundef signext 122, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %0, ptr noundef nonnull %21, ptr noundef nonnull @.str.7, i8 noundef signext 122, i32 noundef 1) #5
  %617 = load i32, ptr %187, align 4, !tbaa !18
  %618 = icmp ugt i32 %617, 1103
  br i1 %618, label %619, label %620

619:                                              ; preds = %616
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %19, ptr noundef nonnull @.str.8, i8 noundef signext 122, i32 noundef 2) #5
  br label %620

620:                                              ; preds = %619, %616
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #5
  br label %621

621:                                              ; preds = %620, %615
  %622 = getelementptr inbounds i8, ptr %5, i64 56
  %623 = load i32, ptr %622, align 8
  %624 = icmp eq i32 %623, -268032430
  %or.cond1140 = select i1 %112, i1 %624, i1 false
  br i1 %or.cond1140, label %625, label %631

625:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %22) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %22, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_512, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %23, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel.l_bf16_zip_256, i64 32, i1 false)
  %626 = load i32, ptr %187, align 4, !tbaa !18
  %627 = icmp ugt i32 %626, 1100
  %628 = select i1 %627, ptr %22, ptr %23
  %629 = getelementptr inbounds i8, ptr %5, i64 84
  %630 = load i8, ptr %629, align 4, !tbaa !63
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %0, ptr noundef nonnull %628, ptr noundef nonnull @.str.9, i8 noundef signext %630, i32 noundef 0) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %22) #5
  br label %631

631:                                              ; preds = %625, %621
  %632 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %633 = icmp eq i32 %632, 12
  br i1 %633, label %634, label %664

634:                                              ; preds = %631
  %635 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %636 = icmp eq i32 %635, 3
  br i1 %636, label %637, label %664

637:                                              ; preds = %634
  %638 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %639 = icmp eq i32 %638, 3
  br i1 %639, label %643, label %640

640:                                              ; preds = %637
  %641 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %642 = icmp eq i32 %641, 1
  br i1 %642, label %643, label %664

643:                                              ; preds = %640, %637
  %644 = load i32, ptr %24, align 4, !tbaa !15
  %645 = and i32 %644, 524288
  %646 = icmp eq i32 %645, 0
  br i1 %646, label %647, label %664

647:                                              ; preds = %643
  %648 = getelementptr inbounds i8, ptr %2, i64 80
  %649 = load i32, ptr %648, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 5, i32 noundef %649) #5
  %650 = load i32, ptr %5, align 8, !tbaa !64
  %651 = load i32, ptr %648, align 4, !tbaa !48
  %652 = getelementptr inbounds i8, ptr %5, i64 84
  %653 = load i8, ptr %652, align 4, !tbaa !63
  %654 = select i1 %41, i32 2, i32 0
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %650, i32 noundef 537209209, i32 noundef %651, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %653, i32 noundef %654, i32 noundef 0, i32 noundef 1, i32 noundef 0) #5
  %655 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %98) #5
  %656 = icmp eq i32 %655, 1
  br i1 %656, label %660, label %657

657:                                              ; preds = %647
  %658 = load i32, ptr %187, align 4, !tbaa !18
  %659 = icmp ult i32 %658, 1104
  br i1 %659, label %660, label %664

660:                                              ; preds = %657, %647
  %661 = load i8, ptr %652, align 4, !tbaa !63
  %662 = icmp eq i8 %661, 120
  %663 = select i1 %662, i8 121, i8 122
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %663, i32 noundef %654, i32 noundef %654) #5
  br label %664

664:                                              ; preds = %643, %660, %657, %640, %634, %631
  %665 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %666 = icmp eq i32 %665, 12
  %or.cond28 = select i1 %666, i1 %101, i1 false
  br i1 %or.cond28, label %667, label %687

667:                                              ; preds = %664
  %668 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %669 = icmp eq i32 %668, 2
  br i1 %669, label %670, label %687

670:                                              ; preds = %667
  %671 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %672 = icmp eq i32 %671, 2
  br i1 %672, label %676, label %673

673:                                              ; preds = %670
  %674 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %675 = icmp eq i32 %674, 1
  br i1 %675, label %676, label %687

676:                                              ; preds = %673, %670
  %677 = load i32, ptr %24, align 4, !tbaa !15
  %678 = and i32 %677, 524288
  %679 = icmp eq i32 %678, 0
  br i1 %679, label %680, label %687

680:                                              ; preds = %676
  %681 = getelementptr inbounds i8, ptr %2, i64 80
  %682 = load i32, ptr %681, align 4, !tbaa !48
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 5, i32 noundef %682) #5
  %683 = load i32, ptr %5, align 8, !tbaa !64
  %684 = load i32, ptr %681, align 4, !tbaa !48
  %685 = getelementptr inbounds i8, ptr %5, i64 84
  %686 = load i8, ptr %685, align 4, !tbaa !63
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %683, i32 noundef 537209432, i32 noundef %684, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %686, i32 noundef 1, i32 noundef 0, i32 noundef 1, i32 noundef 0) #5
  br label %687

687:                                              ; preds = %676, %680, %673, %667, %664
  %688 = load i32, ptr %24, align 4, !tbaa !15
  %689 = and i32 %688, 458752
  %or.cond1126 = icmp eq i32 %689, 0
  br i1 %or.cond1126, label %695, label %690

690:                                              ; preds = %687
  %691 = getelementptr inbounds i8, ptr %5, i64 80
  %692 = load i32, ptr %691, align 8, !tbaa !45
  %693 = getelementptr inbounds i8, ptr %2, i64 52
  %694 = load i32, ptr %693, align 4, !tbaa !55
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %692, i32 noundef %694, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %694, i32 noundef 0) #5
  br label %695

695:                                              ; preds = %687, %690
  %696 = load i32, ptr %371, align 4, !tbaa !41
  %.not10501168 = icmp eq i32 %696, 0
  br i1 %.not10501168, label %._crit_edge1173, label %.lr.ph1172

.lr.ph1172:                                       ; preds = %695
  %697 = getelementptr inbounds i8, ptr %3, i64 24
  %698 = getelementptr inbounds i8, ptr %5, i64 80
  %699 = getelementptr inbounds i8, ptr %2, i64 124
  %700 = getelementptr inbounds i8, ptr %5, i64 168
  %701 = getelementptr inbounds i8, ptr %5, i64 164
  %702 = getelementptr inbounds i8, ptr %5, i64 44
  %703 = getelementptr inbounds i8, ptr %5, i64 8
  %spec.select1131 = or i1 %or.cond26, %590
  %704 = select i1 %spec.select1131, i32 2, i32 0
  %705 = getelementptr inbounds i8, ptr %2, i64 92
  %706 = getelementptr inbounds i8, ptr %2, i64 12
  %707 = getelementptr inbounds i8, ptr %2, i64 4
  %708 = getelementptr inbounds i8, ptr %5, i64 68
  %709 = getelementptr inbounds i8, ptr %2, i64 88
  %710 = getelementptr inbounds i8, ptr %2, i64 24
  %711 = getelementptr inbounds i8, ptr %2, i64 56
  %712 = getelementptr inbounds i8, ptr %2, i64 80
  %713 = getelementptr inbounds i8, ptr %2, i64 28
  %714 = getelementptr inbounds i8, ptr %5, i64 64
  %715 = getelementptr inbounds i8, ptr %2, i64 36
  %716 = getelementptr inbounds i8, ptr %3, i64 8
  %717 = getelementptr inbounds i8, ptr %3, i64 33
  %718 = getelementptr inbounds i8, ptr %3, i64 41
  %719 = getelementptr inbounds i8, ptr %3, i64 12
  %720 = getelementptr inbounds i8, ptr %6, i64 33
  %721 = getelementptr inbounds i8, ptr %6, i64 41
  %722 = getelementptr inbounds i8, ptr %2, i64 52
  br label %723

723:                                              ; preds = %.lr.ph1172, %._crit_edge
  %.01170 = phi i32 [ 0, %.lr.ph1172 ], [ %736, %._crit_edge ]
  %.09851169 = phi i32 [ 0, %.lr.ph1172 ], [ %735, %._crit_edge ]
  %724 = zext i32 %.01170 to i64
  %725 = getelementptr inbounds [2 x i32], ptr %7, i64 0, i64 %724
  %726 = load i32, ptr %725, align 4, !tbaa !6
  call void @libxsmm_generator_gemm_header_nloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, i32 noundef %.09851169, i32 noundef %726) #5
  %727 = load i32, ptr %697, align 1, !tbaa !15
  %728 = and i32 %727, 8388608
  %.not1052 = icmp eq i32 %728, 0
  br i1 %.not1052, label %732, label %729

729:                                              ; preds = %723
  %730 = load i32, ptr %698, align 8, !tbaa !45
  %731 = load i32, ptr %699, align 4, !tbaa !65
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %730, i32 noundef %731, i64 noundef 0) #5
  br label %732

732:                                              ; preds = %729, %723
  %733 = getelementptr inbounds [2 x i32], ptr %8, i64 0, i64 %724
  %734 = load i32, ptr %733, align 4, !tbaa !6
  %735 = add i32 %734, %.09851169
  %736 = add i32 %.01170, 1
  %737 = load i32, ptr %187, align 4, !tbaa !18
  %738 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %737, i32 noundef 0)
  store i32 0, ptr %700, align 8, !tbaa !66
  %739 = load i32, ptr %6, align 4, !tbaa !21
  %.not10531162 = icmp eq i32 %739, 0
  br i1 %.not10531162, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %732, %1225
  %740 = phi i32 [ %1228, %1225 ], [ %739, %732 ]
  %.09921167 = phi i32 [ %750, %1225 ], [ 0, %732 ]
  %.09931163 = phi i32 [ %1227, %1225 ], [ %738, %732 ]
  %741 = icmp eq i32 %.09931163, 0
  br i1 %741, label %.thread1145, label %746

.thread1145:                                      ; preds = %.lr.ph
  %742 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %743 = icmp ugt i32 %742, 1
  %744 = load i32, ptr @libxsmm_verbosity, align 4
  %745 = select i1 %743, i32 %744, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90017, ptr noundef nonnull @__func__.libxsmm_generator_gemm_sse_avx_avx2_avx512_kernel, ptr noundef nonnull @.str, i32 noundef 696, i32 noundef %745) #5
  br label %1236

746:                                              ; preds = %.lr.ph
  store i32 %.09921167, ptr %701, align 4, !tbaa !67
  %747 = sub i32 %740, %.09921167
  %.fr = freeze i32 %747
  %748 = urem i32 %.fr, %.09931163
  %749 = sub nuw i32 %.fr, %748
  %750 = add i32 %749, %.09921167
  %751 = add i32 %749, 3
  %752 = lshr i32 %751, 3
  %753 = load i32, ptr %700, align 8, !tbaa !66
  %754 = add i32 %752, %753
  store i32 %754, ptr %700, align 8, !tbaa !66
  %755 = icmp ne i32 %.fr, %748
  %756 = icmp ne i32 %750, 0
  %or.cond30 = select i1 %755, i1 %756, i1 false
  br i1 %or.cond30, label %757, label %1225

757:                                              ; preds = %746
  %758 = load i32, ptr %702, align 4, !tbaa !68
  %.not1054 = icmp eq i32 %758, 0
  br i1 %.not1054, label %.thread1144, label %759

759:                                              ; preds = %757
  %760 = load i32, ptr %187, align 4, !tbaa !18
  %761 = add i32 %760, -1051
  %or.cond1127 = icmp ult i32 %761, 949
  br i1 %or.cond1127, label %762, label %951

762:                                              ; preds = %759
  %763 = load i32, ptr %703, align 8, !tbaa !32
  %764 = urem i32 %.09931163, %763
  %765 = sub i32 %763, %764
  %766 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %767 = icmp eq i32 %766, 3
  br i1 %767, label %768, label %771

768:                                              ; preds = %762
  %769 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %770 = icmp eq i32 %769, 3
  br i1 %770, label %879, label %771

771:                                              ; preds = %768, %762
  %772 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %773 = icmp eq i32 %772, 3
  br i1 %773, label %774, label %777

774:                                              ; preds = %771
  %775 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %776 = icmp eq i32 %775, 1
  br i1 %776, label %879, label %777

777:                                              ; preds = %774, %771
  %778 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %779 = icmp eq i32 %778, 2
  br i1 %779, label %780, label %783

780:                                              ; preds = %777
  %781 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %782 = icmp eq i32 %781, 2
  br i1 %782, label %879, label %783

783:                                              ; preds = %780, %777
  %784 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %785 = icmp eq i32 %784, 12
  br i1 %785, label %786, label %789

786:                                              ; preds = %783
  %787 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %788 = icmp eq i32 %787, 12
  br i1 %788, label %879, label %789

789:                                              ; preds = %786, %783
  %790 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %791 = icmp eq i32 %790, 4
  br i1 %791, label %792, label %795

792:                                              ; preds = %789
  %793 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %794 = icmp eq i32 %793, 4
  br i1 %794, label %879, label %795

795:                                              ; preds = %792, %789
  %796 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %797 = icmp eq i32 %796, 1
  br i1 %797, label %798, label %801

798:                                              ; preds = %795
  %799 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %800 = icmp eq i32 %799, 4
  br i1 %800, label %879, label %801

801:                                              ; preds = %798, %795
  %802 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %803 = icmp eq i32 %802, 2
  br i1 %803, label %804, label %807

804:                                              ; preds = %801
  %805 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %806 = icmp eq i32 %805, 4
  br i1 %806, label %879, label %807

807:                                              ; preds = %804, %801
  %808 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %809 = icmp eq i32 %808, 5
  br i1 %809, label %810, label %813

810:                                              ; preds = %807
  %811 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %812 = icmp eq i32 %811, 5
  br i1 %812, label %879, label %813

813:                                              ; preds = %810, %807
  %814 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %815 = icmp eq i32 %814, 2
  br i1 %815, label %816, label %819

816:                                              ; preds = %813
  %817 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %818 = icmp eq i32 %817, 5
  br i1 %818, label %879, label %819

819:                                              ; preds = %816, %813
  %820 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %821 = icmp eq i32 %820, 4
  br i1 %821, label %822, label %828

822:                                              ; preds = %819
  %823 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %824 = icmp eq i32 %823, 3
  br i1 %824, label %825, label %828

825:                                              ; preds = %822
  %826 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %827 = icmp eq i32 %826, 3
  br i1 %827, label %879, label %828

828:                                              ; preds = %825, %822, %819
  %829 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %830 = icmp eq i32 %829, 4
  br i1 %830, label %831, label %837

831:                                              ; preds = %828
  %832 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %833 = icmp eq i32 %832, 3
  br i1 %833, label %834, label %837

834:                                              ; preds = %831
  %835 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %836 = icmp eq i32 %835, 1
  br i1 %836, label %879, label %837

837:                                              ; preds = %834, %831, %828
  %838 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %839 = icmp eq i32 %838, 12
  br i1 %839, label %840, label %846

840:                                              ; preds = %837
  %841 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %842 = icmp eq i32 %841, 3
  br i1 %842, label %843, label %846

843:                                              ; preds = %840
  %844 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %845 = icmp eq i32 %844, 3
  br i1 %845, label %879, label %846

846:                                              ; preds = %843, %840, %837
  %847 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %848 = icmp eq i32 %847, 12
  br i1 %848, label %849, label %855

849:                                              ; preds = %846
  %850 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %851 = icmp eq i32 %850, 3
  br i1 %851, label %852, label %855

852:                                              ; preds = %849
  %853 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %854 = icmp eq i32 %853, 1
  br i1 %854, label %879, label %855

855:                                              ; preds = %852, %849, %846
  %856 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %857 = icmp eq i32 %856, 12
  br i1 %857, label %858, label %864

858:                                              ; preds = %855
  %859 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %860 = icmp eq i32 %859, 2
  br i1 %860, label %861, label %864

861:                                              ; preds = %858
  %862 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %863 = icmp eq i32 %862, 2
  br i1 %863, label %879, label %864

864:                                              ; preds = %861, %858, %855
  %865 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %866 = icmp eq i32 %865, 12
  br i1 %866, label %867, label %873

867:                                              ; preds = %864
  %868 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %869 = icmp eq i32 %868, 2
  br i1 %869, label %870, label %873

870:                                              ; preds = %867
  %871 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %872 = icmp eq i32 %871, 1
  br i1 %872, label %879, label %873

873:                                              ; preds = %870, %867, %864
  %874 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %875 = icmp eq i32 %874, 1
  br i1 %875, label %876, label %948

876:                                              ; preds = %873
  %877 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %878 = icmp eq i32 %877, 5
  br i1 %878, label %879, label %948

879:                                              ; preds = %876, %870, %861, %852, %843, %834, %825, %816, %810, %804, %798, %792, %786, %780, %774, %768
  %880 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %881 = icmp eq i32 %880, 12
  br i1 %881, label %882, label %885

882:                                              ; preds = %879
  %883 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %884 = icmp eq i32 %883, 3
  br label %885

885:                                              ; preds = %882, %879
  %886 = phi i1 [ false, %879 ], [ %884, %882 ]
  %887 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %888 = icmp eq i32 %887, 4
  br i1 %888, label %889, label %892

889:                                              ; preds = %885
  %890 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %891 = icmp eq i32 %890, 3
  br label %892

892:                                              ; preds = %889, %885
  %893 = phi i1 [ false, %885 ], [ %891, %889 ]
  %894 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %98) #5
  %895 = icmp eq i32 %894, 3
  br i1 %895, label %896, label %899

896:                                              ; preds = %892
  %897 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %98) #5
  %898 = icmp eq i32 %897, 3
  br label %899

899:                                              ; preds = %896, %892
  %900 = phi i1 [ false, %892 ], [ %898, %896 ]
  %or.cond32 = select i1 %886, i1 true, i1 %893
  %or.cond34 = select i1 %or.cond32, i1 true, i1 %900
  br i1 %or.cond34, label %901, label %.thread1142

901:                                              ; preds = %899
  %902 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %98) #5
  %903 = icmp eq i32 %902, 3
  br i1 %903, label %905, label %.thread1142

.thread1142:                                      ; preds = %901, %899
  %904 = load i32, ptr %705, align 4, !tbaa !44
  br label %.sink.split1194

905:                                              ; preds = %901
  %906 = load i32, ptr %187, align 4, !tbaa !18
  %.fr1153 = freeze i32 %906
  %907 = icmp ugt i32 %.fr1153, 1103
  %908 = load i32, ptr %705, align 4, !tbaa !44
  br i1 %907, label %909, label %.sink.split1194

909:                                              ; preds = %905
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %908, i32 noundef 1, i32 noundef %765, i32 noundef 3) #5
  %910 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %911 = icmp eq i32 %910, 1
  br i1 %911, label %912, label %923

912:                                              ; preds = %909
  %913 = lshr i32 %763, 1
  %914 = load i32, ptr %705, align 4, !tbaa !44
  %.not1058 = icmp ult i32 %764, %913
  br i1 %.not1058, label %.thread1143, label %917

.thread1143:                                      ; preds = %912
  %915 = urem i32 %.09931163, %913
  %916 = sub nsw i32 %913, %915
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %914, i32 noundef 2, i32 noundef %916, i32 noundef 8) #5
  br label %920

917:                                              ; preds = %912
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %914, i32 noundef 2, i32 noundef 0, i32 noundef 8) #5
  %918 = urem i32 %.09931163, %913
  %919 = sub nsw i32 %913, %918
  br label %920

920:                                              ; preds = %.thread1143, %917
  %921 = phi i32 [ %919, %917 ], [ %913, %.thread1143 ]
  %922 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %922, i32 noundef 3, i32 noundef %921, i32 noundef 8) #5
  br label %.thread1144

.sink.split1194:                                  ; preds = %905, %.thread1142
  %.sink1195 = phi i32 [ %904, %.thread1142 ], [ %908, %905 ]
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %.sink1195, i32 noundef 1, i32 noundef %765, i32 noundef 8) #5
  br label %923

923:                                              ; preds = %.sink.split1194, %909
  %924 = load i32, ptr %187, align 4, !tbaa !18
  %925 = add i32 %924, -1051
  %or.cond1128 = icmp ult i32 %925, 50
  %926 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %98) #5
  %927 = icmp eq i32 %926, 2
  br i1 %or.cond1128, label %928, label %936

928:                                              ; preds = %923
  br i1 %927, label %929, label %934

929:                                              ; preds = %928
  %930 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %.not1057 = icmp eq i32 %930, 5
  br i1 %.not1057, label %934, label %931

931:                                              ; preds = %929
  %932 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %933 = icmp ne i32 %932, 4
  %or.cond36 = select i1 %933, i1 true, i1 %112
  br i1 %or.cond36, label %944, label %935

934:                                              ; preds = %929, %928
  br i1 %112, label %944, label %935

935:                                              ; preds = %931, %934
  br label %944

936:                                              ; preds = %923
  br i1 %927, label %937, label %942

937:                                              ; preds = %936
  %938 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %.not1056 = icmp eq i32 %938, 5
  br i1 %.not1056, label %942, label %939

939:                                              ; preds = %937
  %940 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %941 = icmp ne i32 %940, 4
  %or.cond39 = select i1 %941, i1 true, i1 %112
  br i1 %or.cond39, label %944, label %943

942:                                              ; preds = %937, %936
  br i1 %112, label %944, label %943

943:                                              ; preds = %939, %942
  br label %944

944:                                              ; preds = %939, %942, %931, %934, %943, %935
  %.sink1196 = phi i32 [ 48, %943 ], [ 24, %935 ], [ 8, %934 ], [ 8, %931 ], [ 16, %942 ], [ 16, %939 ]
  %945 = add i32 %765, %.sink1196
  %946 = load i32, ptr %705, align 4, !tbaa !44
  %947 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %946, i32 noundef 2, i32 noundef %945, i32 noundef %947) #5
  br label %.thread1144

948:                                              ; preds = %876, %873
  %949 = load i32, ptr %705, align 4, !tbaa !44
  %950 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %949, i32 noundef 1, i32 noundef %765, i32 noundef %950) #5
  br label %.thread1144

951:                                              ; preds = %759
  %952 = add i32 %760, -1005
  %or.cond1129 = icmp ult i32 %952, 46
  br i1 %or.cond1129, label %953, label %.thread1144

953:                                              ; preds = %951
  %954 = load i32, ptr %703, align 8, !tbaa !32
  %955 = urem i32 %.09931163, %954
  %956 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %957 = icmp eq i32 %956, 1
  br i1 %957, label %964, label %958

958:                                              ; preds = %953
  %959 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %960 = icmp eq i32 %959, 8
  br i1 %960, label %964, label %961

961:                                              ; preds = %958
  %962 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %963 = icmp eq i32 %962, 0
  br i1 %963, label %964, label %966

964:                                              ; preds = %961, %958, %953
  %965 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  br label %.sink.split1197

966:                                              ; preds = %961
  %967 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %98) #5
  %968 = icmp eq i32 %967, 2
  br i1 %968, label %.sink.split1197, label %969

.sink.split1197:                                  ; preds = %966, %964
  %.sink1198 = phi i32 [ %965, %964 ], [ 8, %966 ]
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef nonnull %0, i32 noundef %704, i32 noundef %955, i32 noundef %.sink1198) #5
  br label %969

969:                                              ; preds = %.sink.split1197, %966
  %970 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %5, i32 noundef 22, i32 noundef %970) #5
  %971 = load i32, ptr %5, align 8, !tbaa !64
  %972 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %971, i32 noundef 537138704, i32 noundef %972, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef %704, i32 noundef 0, i32 noundef 0, i32 noundef 1) #5
  br label %.thread1144

.thread1144:                                      ; preds = %757, %948, %944, %920, %951, %969
  call void @libxsmm_generator_gemm_header_mloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, i32 noundef %.09921167, i32 noundef %.09931163) #5
  call void @libxsmm_generator_gemm_load_C(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.09931163, i32 noundef %726) #5
  %973 = load i32, ptr %24, align 4, !tbaa !15
  %974 = and i32 %973, 262144
  %.not1061 = icmp eq i32 %974, 0
  %975 = and i32 %973, 458752
  %or.cond1134 = icmp eq i32 %975, 0
  br i1 %or.cond1134, label %1134, label %976

976:                                              ; preds = %.thread1144
  %977 = and i32 %973, 131072
  %.not1060 = icmp eq i32 %977, 0
  br i1 %.not1060, label %981, label %978

978:                                              ; preds = %976
  %979 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %979) #5
  %980 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %980) #5
  br label %990

981:                                              ; preds = %976
  br i1 %.not1061, label %990, label %982

982:                                              ; preds = %981
  %983 = load i32, ptr %708, align 4, !tbaa !69
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %983, i32 noundef 4, i64 noundef 32) #5
  %984 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 24, i32 noundef %984, i32 noundef 1) #5
  %985 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %985, i32 noundef 1) #5
  %986 = load i32, ptr %698, align 8, !tbaa !45
  %987 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %986, i32 noundef %987, i64 noundef 0) #5
  %988 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %988, i32 noundef 1) #5
  %989 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %989, i32 noundef 1) #5
  br label %990

990:                                              ; preds = %982, %981, %978
  call void @libxsmm_generator_gemm_header_reduceloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5) #5
  %991 = load i32, ptr %24, align 4, !tbaa !15
  %992 = and i32 %991, 65536
  %.not1064 = icmp eq i32 %992, 0
  br i1 %.not1064, label %1032, label %993

993:                                              ; preds = %990
  %994 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %994) #5
  %995 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %995) #5
  br i1 %or.cond1106.not, label %998, label %996

996:                                              ; preds = %993
  %997 = load i32, ptr %710, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %997) #5
  br label %998

998:                                              ; preds = %993, %996
  %999 = load i32, ptr %698, align 8, !tbaa !45
  %1000 = load i32, ptr %707, align 4, !tbaa !46
  %1001 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %999, i32 noundef %1000, i32 noundef %1001, i32 noundef 8, i32 noundef 0, i32 noundef %1000, i32 noundef 0) #5
  br i1 %spec.select1131, label %1002, label %1014

1002:                                             ; preds = %998
  %1003 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 33, i32 noundef %1003) #5
  %1004 = load i32, ptr %698, align 8, !tbaa !45
  %1005 = load i32, ptr %705, align 4, !tbaa !44
  %1006 = load i32, ptr %711, align 4, !tbaa !71
  %1007 = load i32, ptr %712, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1004, i32 noundef %1005, i32 noundef %1006, i32 noundef 8, i32 noundef 0, i32 noundef %1007, i32 noundef 0) #5
  br i1 %590, label %1008, label %1014

1008:                                             ; preds = %1002
  %1009 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 36, i32 noundef %1009) #5
  %1010 = load i32, ptr %698, align 8, !tbaa !45
  %1011 = load i32, ptr %705, align 4, !tbaa !44
  %1012 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1010, i32 noundef %1011, i32 noundef %1012, i32 noundef 8, i32 noundef 0, i32 noundef %1011, i32 noundef 0) #5
  %1013 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 37, i32 noundef %1013) #5
  br label %1014

1014:                                             ; preds = %1002, %1008, %998
  br i1 %.not1046, label %1024, label %1015

1015:                                             ; preds = %1014
  %1016 = load i32, ptr %697, align 1, !tbaa !15
  %1017 = and i32 %1016, 33554432
  %.not1070 = icmp eq i32 %1017, 0
  br i1 %.not1070, label %1024, label %1018

1018:                                             ; preds = %1015
  %1019 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 31, i32 noundef %1019) #5
  %1020 = load i32, ptr %698, align 8, !tbaa !45
  %1021 = load i32, ptr %705, align 4, !tbaa !44
  %1022 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1020, i32 noundef %1021, i32 noundef %1022, i32 noundef 8, i32 noundef 0, i32 noundef %1021, i32 noundef 0) #5
  %1023 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 35, i32 noundef %1023) #5
  br label %1024

1024:                                             ; preds = %1018, %1015, %1014
  %1025 = load i32, ptr %698, align 8, !tbaa !45
  %1026 = load i32, ptr %706, align 4, !tbaa !49
  %1027 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1025, i32 noundef %1026, i32 noundef %1027, i32 noundef 8, i32 noundef 0, i32 noundef %1026, i32 noundef 0) #5
  br i1 %or.cond1106.not, label %1134, label %1028

1028:                                             ; preds = %1024
  %1029 = load i32, ptr %698, align 8, !tbaa !45
  %1030 = load i32, ptr %710, align 4, !tbaa !53
  %1031 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1029, i32 noundef %1030, i32 noundef %1031, i32 noundef 8, i32 noundef 0, i32 noundef %1030, i32 noundef 0) #5
  br label %1134

1032:                                             ; preds = %990
  %1033 = and i32 %991, 131072
  %.not1065 = icmp eq i32 %1033, 0
  br i1 %.not1065, label %1090, label %1034

1034:                                             ; preds = %1032
  %1035 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1035) #5
  %1036 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1036) #5
  %1037 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %1037) #5
  %1038 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %1038) #5
  %1039 = load i32, ptr %698, align 8, !tbaa !45
  %1040 = load i32, ptr %713, align 4, !tbaa !56
  %1041 = load i32, ptr %711, align 4, !tbaa !71
  %1042 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1039, i32 noundef %1040, i32 noundef %1041, i32 noundef 8, i32 noundef 0, i32 noundef %1042, i32 noundef 0) #5
  %1043 = load i32, ptr %714, align 8, !tbaa !59
  %1044 = load i32, ptr %709, align 4, !tbaa !70
  %1045 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1043, i32 noundef %1044, i32 noundef %1045) #5
  br i1 %spec.select1131, label %1046, label %1063

1046:                                             ; preds = %1034
  %1047 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 33, i32 noundef %1047) #5
  %1048 = load i32, ptr %698, align 8, !tbaa !45
  %1049 = load i32, ptr %713, align 4, !tbaa !56
  %1050 = load i32, ptr %711, align 4, !tbaa !71
  %1051 = load i32, ptr %712, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1048, i32 noundef %1049, i32 noundef %1050, i32 noundef 8, i32 noundef 0, i32 noundef %1051, i32 noundef 0) #5
  %1052 = load i32, ptr %712, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30006, i32 noundef %1052, i64 noundef 4) #5
  %1053 = load i32, ptr %714, align 8, !tbaa !59
  %1054 = load i32, ptr %705, align 4, !tbaa !44
  %1055 = load i32, ptr %712, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1053, i32 noundef %1054, i32 noundef %1055) #5
  br i1 %590, label %1056, label %1063

1056:                                             ; preds = %1046
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef 2) #5
  %1057 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 36, i32 noundef %1057) #5
  %1058 = load i32, ptr %698, align 8, !tbaa !45
  %1059 = load i32, ptr %715, align 4, !tbaa !57
  %1060 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1058, i32 noundef %1059, i32 noundef %1060, i32 noundef 8, i32 noundef 0, i32 noundef 2, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30006, i32 noundef 2, i64 noundef 3) #5
  %1061 = load i32, ptr %714, align 8, !tbaa !59
  %1062 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1061, i32 noundef %1062, i32 noundef 2) #5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 37, i32 noundef 2) #5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef 2) #5
  br label %1063

1063:                                             ; preds = %1046, %1056, %1034
  br i1 %.not1046, label %1082, label %1064

1064:                                             ; preds = %1063
  %1065 = load i32, ptr %697, align 1, !tbaa !15
  %1066 = and i32 %1065, 33554432
  %.not1068 = icmp eq i32 %1066, 0
  br i1 %.not1068, label %1082, label %1067

1067:                                             ; preds = %1064
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef 2) #5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef 0) #5
  %1068 = load i32, ptr %698, align 8, !tbaa !45
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %1068, i32 noundef 2, i64 noundef 0) #5
  %1069 = load i32, ptr %698, align 8, !tbaa !45
  %1070 = load i32, ptr %713, align 4, !tbaa !56
  %1071 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1069, i32 noundef %1070, i32 noundef %1071, i32 noundef 8, i32 noundef 0, i32 noundef 0, i32 noundef 0) #5
  %1072 = load i32, ptr %698, align 8, !tbaa !45
  %1073 = load i32, ptr %705, align 4, !tbaa !44
  %1074 = load i32, ptr %716, align 1, !tbaa !17
  %1075 = zext i32 %1074 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %1072, i32 noundef %1073, i64 noundef %1075) #5
  %1076 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30006, i32 noundef %1076, i64 noundef 1) #5
  %1077 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef -1636564745, i32 noundef 127, i32 noundef %1077) #5
  %1078 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 31, i32 noundef %1078) #5
  %1079 = load i32, ptr %714, align 8, !tbaa !59
  %1080 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1079, i32 noundef 0, i32 noundef %1080) #5
  %1081 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 35, i32 noundef %1081) #5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef 2) #5
  br label %1082

1082:                                             ; preds = %1067, %1064, %1063
  %1083 = load i32, ptr %698, align 8, !tbaa !45
  %1084 = load i32, ptr %715, align 4, !tbaa !57
  %1085 = load i32, ptr %711, align 4, !tbaa !71
  %1086 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1083, i32 noundef %1084, i32 noundef %1085, i32 noundef 8, i32 noundef 0, i32 noundef %1086, i32 noundef 0) #5
  %1087 = load i32, ptr %714, align 8, !tbaa !59
  %1088 = load i32, ptr %709, align 4, !tbaa !70
  %1089 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1087, i32 noundef %1088, i32 noundef %1089) #5
  br label %1134

1090:                                             ; preds = %1032
  %1091 = and i32 %991, 262144
  %.not1066 = icmp eq i32 %1091, 0
  br i1 %.not1066, label %1134, label %1092

1092:                                             ; preds = %1090
  %1093 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 24, i32 noundef %1093, i32 noundef 0) #5
  %1094 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %1094, i32 noundef 0) #5
  %1095 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %1095, i32 noundef 0) #5
  %1096 = load i32, ptr %714, align 8, !tbaa !59
  %1097 = load i32, ptr %709, align 4, !tbaa !70
  %1098 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1096, i32 noundef %1097, i32 noundef %1098) #5
  %1099 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1099, i32 noundef 0) #5
  %1100 = load i32, ptr %714, align 8, !tbaa !59
  %1101 = load i32, ptr %709, align 4, !tbaa !70
  %1102 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1100, i32 noundef %1101, i32 noundef %1102) #5
  br i1 %spec.select1131, label %1103, label %1122

1103:                                             ; preds = %1092
  %1104 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 33, i32 noundef %1104) #5
  %1105 = load i32, ptr %698, align 8, !tbaa !45
  %1106 = load i32, ptr %711, align 4, !tbaa !71
  %1107 = load i32, ptr %712, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1105, i32 noundef %1106, i32 noundef %1107) #5
  %1108 = load i32, ptr %712, align 4, !tbaa !48
  %1109 = load i64, ptr %717, align 1, !tbaa !72
  %1110 = sdiv i64 %1109, 16
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef %1108, i64 noundef %1110) #5
  %1111 = load i32, ptr %714, align 8, !tbaa !59
  %1112 = load i32, ptr %705, align 4, !tbaa !44
  %1113 = load i32, ptr %712, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1111, i32 noundef %1112, i32 noundef %1113) #5
  br i1 %590, label %1114, label %1122

1114:                                             ; preds = %1103
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef 0) #5
  %1115 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 36, i32 noundef %1115) #5
  %1116 = load i32, ptr %698, align 8, !tbaa !45
  %1117 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1116, i32 noundef %1117, i32 noundef 0) #5
  %1118 = load i64, ptr %718, align 1, !tbaa !73
  %1119 = sdiv i64 %1118, 8
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef 0, i64 noundef %1119) #5
  %1120 = load i32, ptr %714, align 8, !tbaa !59
  %1121 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1120, i32 noundef %1121, i32 noundef 0) #5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 37, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef 0) #5
  br label %1122

1122:                                             ; preds = %1103, %1114, %1092
  br i1 %.not1046, label %1134, label %1123

1123:                                             ; preds = %1122
  %1124 = load i32, ptr %697, align 1, !tbaa !15
  %1125 = and i32 %1124, 33554432
  %.not1067 = icmp eq i32 %1125, 0
  br i1 %.not1067, label %1134, label %1126

1126:                                             ; preds = %1123
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef 0) #5
  %1127 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 31, i32 noundef %1127) #5
  %1128 = load i32, ptr %698, align 8, !tbaa !45
  %1129 = load i32, ptr %711, align 4, !tbaa !71
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1128, i32 noundef %1129, i32 noundef 0) #5
  %1130 = load i32, ptr %719, align 1, !tbaa !22
  %1131 = zext i32 %1130 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef 0, i64 noundef %1131) #5
  %1132 = load i32, ptr %714, align 8, !tbaa !59
  %1133 = load i32, ptr %705, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1132, i32 noundef %1133, i32 noundef 0) #5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 35, i32 noundef 0) #5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef 0) #5
  br label %1134

1134:                                             ; preds = %1024, %1028, %.thread1144, %1090, %1126, %1123, %1122, %1082
  call void @libxsmm_generator_gemm_sse_avx_avx2_avx512_kloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.09931163, i32 noundef %726)
  %1135 = load i32, ptr %24, align 4, !tbaa !15
  %1136 = and i32 %1135, 262144
  %.not1073 = icmp eq i32 %1136, 0
  %1137 = and i32 %1135, 458752
  %or.cond1136 = icmp eq i32 %1137, 0
  br i1 %or.cond1136, label %1224, label %1138

1138:                                             ; preds = %1134
  %1139 = and i32 %1135, 65536
  %.not1071 = icmp eq i32 %1139, 0
  br i1 %.not1071, label %1167, label %1140

1140:                                             ; preds = %1138
  br i1 %or.cond1106.not, label %1150, label %1141

1141:                                             ; preds = %1140
  %1142 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1142) #5
  %1143 = load i32, ptr %698, align 8, !tbaa !45
  %1144 = load i32, ptr %709, align 4, !tbaa !70
  %1145 = load i32, ptr %711, align 4, !tbaa !71
  %1146 = load i32, ptr %710, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1143, i32 noundef %1144, i32 noundef %1145, i32 noundef 8, i32 noundef 0, i32 noundef %1146, i32 noundef 1) #5
  %1147 = load i32, ptr %698, align 8, !tbaa !45
  %1148 = load i32, ptr %709, align 4, !tbaa !70
  %1149 = load i32, ptr %710, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1147, i32 noundef %1148, i32 noundef %1149) #5
  br label %1150

1150:                                             ; preds = %1141, %1140
  %1151 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1151) #5
  %1152 = load i32, ptr %698, align 8, !tbaa !45
  %1153 = load i32, ptr %709, align 4, !tbaa !70
  %1154 = load i32, ptr %711, align 4, !tbaa !71
  %1155 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1152, i32 noundef %1153, i32 noundef %1154, i32 noundef 8, i32 noundef 0, i32 noundef %1155, i32 noundef 1) #5
  %1156 = load i32, ptr %698, align 8, !tbaa !45
  %1157 = load i32, ptr %709, align 4, !tbaa !70
  %1158 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1156, i32 noundef %1157, i32 noundef %1158) #5
  %1159 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1159) #5
  %1160 = load i32, ptr %698, align 8, !tbaa !45
  %1161 = load i32, ptr %709, align 4, !tbaa !70
  %1162 = load i32, ptr %711, align 4, !tbaa !71
  %1163 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1160, i32 noundef %1161, i32 noundef %1162, i32 noundef 8, i32 noundef 0, i32 noundef %1163, i32 noundef 1) #5
  %1164 = load i32, ptr %698, align 8, !tbaa !45
  %1165 = load i32, ptr %709, align 4, !tbaa !70
  %1166 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1164, i32 noundef %1165, i32 noundef %1166) #5
  br label %1177

1167:                                             ; preds = %1138
  br i1 %.not1073, label %1177, label %1168

1168:                                             ; preds = %1167
  %1169 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %1169, i32 noundef 0) #5
  %1170 = load i32, ptr %709, align 4, !tbaa !70
  %1171 = load i64, ptr %720, align 1, !tbaa !72
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30000, i32 noundef %1170, i64 noundef %1171) #5
  %1172 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %1172, i32 noundef 1) #5
  %1173 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1173, i32 noundef 0) #5
  %1174 = load i32, ptr %709, align 4, !tbaa !70
  %1175 = load i64, ptr %721, align 1, !tbaa !73
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30000, i32 noundef %1174, i64 noundef %1175) #5
  %1176 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1568407413, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1176, i32 noundef 1) #5
  br label %1177

1177:                                             ; preds = %1167, %1168, %1150
  call void @libxsmm_generator_gemm_footer_reduceloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6) #5
  %1178 = load i32, ptr %24, align 4, !tbaa !15
  %1179 = and i32 %1178, 131072
  %.not1077 = icmp eq i32 %1179, 0
  br i1 %.not1077, label %1197, label %1180

1180:                                             ; preds = %1177
  %1181 = load i32, ptr %698, align 8, !tbaa !45
  %1182 = load i32, ptr %713, align 4, !tbaa !56
  %1183 = load i32, ptr %711, align 4, !tbaa !71
  %1184 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1181, i32 noundef %1182, i32 noundef %1183, i32 noundef 8, i32 noundef -8, i32 noundef %1184, i32 noundef 0) #5
  %1185 = load i32, ptr %708, align 4, !tbaa !69
  %1186 = load i32, ptr %709, align 4, !tbaa !70
  %1187 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1185, i32 noundef %1186, i32 noundef %1187) #5
  %1188 = load i32, ptr %698, align 8, !tbaa !45
  %1189 = load i32, ptr %715, align 4, !tbaa !57
  %1190 = load i32, ptr %711, align 4, !tbaa !71
  %1191 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %1188, i32 noundef %1189, i32 noundef %1190, i32 noundef 8, i32 noundef -8, i32 noundef %1191, i32 noundef 0) #5
  %1192 = load i32, ptr %708, align 4, !tbaa !69
  %1193 = load i32, ptr %709, align 4, !tbaa !70
  %1194 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1192, i32 noundef %1193, i32 noundef %1194) #5
  %1195 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1195) #5
  %1196 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1196) #5
  %.pre1183 = load i32, ptr %24, align 4, !tbaa !15
  br label %1197

1197:                                             ; preds = %1180, %1177
  %1198 = phi i32 [ %.pre1183, %1180 ], [ %1178, %1177 ]
  %1199 = and i32 %1198, 262144
  %.not1078 = icmp eq i32 %1199, 0
  br i1 %.not1078, label %1224, label %1200

1200:                                             ; preds = %1197
  %1201 = load i32, ptr %698, align 8, !tbaa !45
  %1202 = load i32, ptr %722, align 4, !tbaa !55
  %1203 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1201, i32 noundef %1202, i32 noundef %1203) #5
  %1204 = load i32, ptr %709, align 4, !tbaa !70
  %1205 = load i64, ptr %720, align 1, !tbaa !72
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef %1204, i64 noundef %1205) #5
  %1206 = load i32, ptr %708, align 4, !tbaa !69
  %1207 = load i32, ptr %709, align 4, !tbaa !70
  %1208 = load i64, ptr %720, align 1, !tbaa !72
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %1206, i32 noundef %1207, i64 noundef %1208) #5
  %1209 = load i32, ptr %708, align 4, !tbaa !69
  %1210 = load i32, ptr %709, align 4, !tbaa !70
  %1211 = load i32, ptr %707, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1209, i32 noundef %1210, i32 noundef %1211) #5
  %1212 = load i32, ptr %698, align 8, !tbaa !45
  %1213 = load i32, ptr %722, align 4, !tbaa !55
  %1214 = load i32, ptr %709, align 4, !tbaa !70
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1212, i32 noundef %1213, i32 noundef %1214) #5
  %1215 = load i32, ptr %709, align 4, !tbaa !70
  %1216 = load i64, ptr %721, align 1, !tbaa !73
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef %1215, i64 noundef %1216) #5
  %1217 = load i32, ptr %708, align 4, !tbaa !69
  %1218 = load i32, ptr %709, align 4, !tbaa !70
  %1219 = load i64, ptr %721, align 1, !tbaa !73
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %1217, i32 noundef %1218, i64 noundef %1219) #5
  %1220 = load i32, ptr %708, align 4, !tbaa !69
  %1221 = load i32, ptr %709, align 4, !tbaa !70
  %1222 = load i32, ptr %706, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %1220, i32 noundef %1221, i32 noundef %1222) #5
  %1223 = load i32, ptr %714, align 8, !tbaa !59
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %1223, i32 noundef 4, i64 noundef 32) #5
  br label %1224

1224:                                             ; preds = %1134, %1197, %1200
  call void @libxsmm_generator_gemm_store_C(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.09931163, i32 noundef %726) #5
  call void @libxsmm_generator_gemm_footer_mloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.09931163, i32 noundef %750) #5
  br label %1225

1225:                                             ; preds = %1224, %746
  %1226 = load i32, ptr %187, align 4, !tbaa !18
  %1227 = call i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %1226, i32 noundef %.09931163)
  %1228 = load i32, ptr %6, align 4, !tbaa !21
  %.not1053 = icmp eq i32 %750, %1228
  br i1 %.not1053, label %._crit_edge, label %.lr.ph, !llvm.loop !74

._crit_edge:                                      ; preds = %1225, %732
  call void @libxsmm_generator_gemm_footer_nloop(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %726, i32 noundef %735) #5
  %1229 = load i32, ptr %371, align 4, !tbaa !41
  %.not1050 = icmp eq i32 %735, %1229
  br i1 %.not1050, label %._crit_edge1173, label %723

._crit_edge1173:                                  ; preds = %._crit_edge, %695
  %1230 = load i32, ptr %514, align 4, !tbaa !58
  %.not1051 = icmp eq i32 %1230, 0
  br i1 %.not1051, label %1235, label %1231

1231:                                             ; preds = %._crit_edge1173
  %1232 = getelementptr inbounds i8, ptr %3, i64 20
  %1233 = load i32, ptr %1232, align 1, !tbaa !60
  %1234 = getelementptr inbounds i8, ptr %6, i64 20
  store i32 %1233, ptr %1234, align 4, !tbaa !60
  call void @libxsmm_generator_gemm_vnni_store_C_from_scratch(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6) #5
  br label %1235

1235:                                             ; preds = %1231, %._crit_edge1173
  call void @libxsmm_generator_gemm_destroy_stack_frame(ptr noundef %0, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %5) #5
  br label %1236

1236:                                             ; preds = %111, %.thread1145, %1235, %532, %378, %365, %228, %212, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 95, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 688, ptr nonnull %5) #5
  ret void
}

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

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

declare i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef) local_unnamed_addr #1

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

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) local_unnamed_addr #1

declare void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_ABC_COMMON_PREC(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_max_n_blocking(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @libxsmm_compute_equalized_blocking(i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_alu_reg(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_alu_mem(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_setup_stack_frame(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_setval_stack_var(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_getval_stack_var(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef, i32 noundef, i32 noundef, i64 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_apply_opA_opB(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_push_reg(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_mask_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_pop_reg(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_header_nloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_alu_imm(ptr noundef, i32 noundef, i32 noundef, i64 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_initialize_avx512_mask(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_initialize_avx_mask(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_header_mloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_load_C(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_header_reduceloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_sse_avx_avx2_avx512_kloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_gemm_footer_reduceloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_store_C(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_footer_mloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_footer_nloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_vnni_store_C_from_scratch(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @libxsmm_generator_gemm_destroy_stack_frame(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{i64 0, i64 4, !6, i64 4, i64 4, !6, i64 8, i64 4, !6, i64 12, i64 4, !6, i64 16, i64 4, !6, i64 20, i64 4, !6, i64 24, i64 4, !6, i64 28, i64 1, !10, i64 29, i64 3, !10, i64 32, i64 1, !10, i64 33, i64 8, !11, i64 41, i64 8, !11, i64 49, i64 1, !10, i64 50, i64 4, !6, i64 54, i64 4, !6, i64 58, i64 4, !6, i64 62, i64 2, !13, i64 64, i64 2, !13, i64 66, i64 1, !10, i64 67, i64 1, !10, i64 68, i64 1, !10, i64 69, i64 1, !10, i64 70, i64 2, !13, i64 72, i64 2, !13, i64 74, i64 2, !13, i64 76, i64 2, !13, i64 78, i64 2, !13, i64 80, i64 2, !13, i64 82, i64 4, !6, i64 86, i64 4, !6, i64 90, i64 4, !6, i64 94, i64 1, !10}
!6 = !{!7, !7, i64 0}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!8, !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long long", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"short", !8, i64 0}
!15 = !{!16, !7, i64 24}
!16 = !{!"libxsmm_gemm_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !8, i64 28, !8, i64 29, !8, i64 32, !12, i64 33, !12, i64 41, !8, i64 49, !7, i64 50, !7, i64 54, !7, i64 58, !14, i64 62, !14, i64 64, !8, i64 66, !8, i64 67, !8, i64 68, !8, i64 69, !14, i64 70, !14, i64 72, !14, i64 74, !14, i64 76, !14, i64 78, !14, i64 80, !7, i64 82, !7, i64 86, !7, i64 90, !8, i64 94}
!17 = !{!16, !7, i64 8}
!18 = !{!19, !7, i64 28}
!19 = !{!"libxsmm_generated_code", !20, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!20 = !{!"any pointer", !8, i64 0}
!21 = !{!16, !7, i64 0}
!22 = !{!16, !7, i64 12}
!23 = !{!16, !7, i64 16}
!24 = !{!25, !7, i64 648}
!25 = !{!"libxsmm_micro_kernel_config", !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, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !8, 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, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !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, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !7, i64 304, !7, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !8, i64 364, !8, i64 380, !8, i64 396, !8, i64 412, !8, i64 428, !8, i64 444, !7, i64 460, !8, i64 464, !26, i64 520, !7, i64 556, !7, i64 560, !7, i64 564, !7, i64 568, !7, i64 572, !7, i64 576, !7, i64 580, !7, i64 584, !20, i64 592, !7, i64 600, !7, i64 604, !7, i64 608, !7, i64 612, !20, i64 616, !7, i64 624, !7, i64 628, !7, i64 632, !7, i64 636, !7, i64 640, !7, i64 644, !7, i64 648, !7, i64 652, !7, i64 656, !7, i64 660, !7, i64 664, !7, i64 668, !7, i64 672, !7, i64 676, !7, i64 680}
!26 = !{!"libxsmm_tile_config", !8, i64 0, !14, i64 2, !8, i64 4, !14, i64 6, !8, i64 8, !14, i64 10, !8, i64 12, !14, i64 14, !8, i64 16, !14, i64 18, !8, i64 20, !14, i64 22, !8, i64 24, !14, i64 26, !8, i64 28, !14, i64 30, !8, i64 32}
!27 = !{!25, !7, i64 652}
!28 = !{!25, !7, i64 660}
!29 = !{!25, !7, i64 668}
!30 = !{!25, !7, i64 672}
!31 = !{!25, !7, i64 676}
!32 = !{!25, !7, i64 8}
!33 = !{!25, !7, i64 4}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = !{!16, !7, i64 4}
!42 = !{!43, !7, i64 0}
!43 = !{!"libxsmm_gp_reg_mapping_struct", !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, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !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, !7, i64 124, !7, i64 128}
!44 = !{!43, !7, i64 92}
!45 = !{!25, !7, i64 80}
!46 = !{!43, !7, i64 4}
!47 = !{!43, !7, i64 116}
!48 = !{!43, !7, i64 80}
!49 = !{!43, !7, i64 12}
!50 = !{!43, !7, i64 84}
!51 = !{!43, !7, i64 20}
!52 = !{!16, !8, i64 28}
!53 = !{!43, !7, i64 24}
!54 = !{!43, !7, i64 32}
!55 = !{!43, !7, i64 52}
!56 = !{!43, !7, i64 28}
!57 = !{!43, !7, i64 36}
!58 = !{!25, !7, i64 140}
!59 = !{!25, !7, i64 64}
!60 = !{!16, !7, i64 20}
!61 = !{!43, !7, i64 96}
!62 = !{!25, !20, i64 592}
!63 = !{!25, !8, i64 84}
!64 = !{!25, !7, i64 0}
!65 = !{!43, !7, i64 124}
!66 = !{!25, !7, i64 168}
!67 = !{!25, !7, i64 164}
!68 = !{!25, !7, i64 44}
!69 = !{!25, !7, i64 68}
!70 = !{!43, !7, i64 88}
!71 = !{!43, !7, i64 56}
!72 = !{!16, !12, i64 33}
!73 = !{!16, !12, i64 41}
!74 = distinct !{!74, !35}


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