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

; 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_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_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_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 }
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }

@.str.1 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [41 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_gemm_load_C = external hidden unnamed_addr constant [203 x i8], align 1

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef) #2

declare i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef) #2

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #2

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

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

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #2

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

declare void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) #2

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) #2

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

declare void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef, i32 noundef) #2

declare void @libxsmm_generator_maskedload_16bit_sse(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_maskedload_16bit_avx2(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_x86_instruction_unified_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef, i32 noundef) #2

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

declare void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) #2

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) #2

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_load_C(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i32, align 4
  %30 = alloca i8, align 1
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store i32 %4, ptr %11, align 4, !tbaa !9
  store i32 %5, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %41 = load ptr, ptr %10, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %41, i32 0, i32 6
  %43 = load i32, ptr %42, align 1, !tbaa !11
  %44 = and i32 %43, 2097152
  %45 = icmp ugt i32 %44, 0
  br i1 %45, label %46, label %74

46:                                               ; preds = %6
  %47 = load ptr, ptr %10, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %47, i32 0, i32 8
  %49 = getelementptr inbounds [3 x i8], ptr %48, i64 0, i64 0
  %50 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %49)
  %51 = icmp eq i32 12, %50
  br i1 %51, label %52, label %72

52:                                               ; preds = %46
  %53 = load ptr, ptr %10, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %53, i32 0, i32 8
  %55 = getelementptr inbounds [3 x i8], ptr %54, i64 0, i64 0
  %56 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %55)
  %57 = icmp eq i32 3, %56
  br i1 %57, label %58, label %72

58:                                               ; preds = %52
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %59, i32 0, i32 8
  %61 = getelementptr inbounds [3 x i8], ptr %60, i64 0, i64 0
  %62 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %61)
  %63 = icmp eq i32 3, %62
  br i1 %63, label %70, label %64

64:                                               ; preds = %58
  %65 = load ptr, ptr %10, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %65, i32 0, i32 8
  %67 = getelementptr inbounds [3 x i8], ptr %66, i64 0, i64 0
  %68 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %67)
  %69 = icmp eq i32 1, %68
  br label %70

70:                                               ; preds = %64, %58
  %71 = phi i1 [ true, %58 ], [ %69, %64 ]
  br label %72

72:                                               ; preds = %70, %52, %46
  %73 = phi i1 [ false, %52 ], [ false, %46 ], [ %71, %70 ]
  br label %74

74:                                               ; preds = %72, %6
  %75 = phi i1 [ false, %6 ], [ %73, %72 ]
  %76 = zext i1 %75 to i64
  %77 = select i1 %75, i32 1, i32 0
  store i32 %77, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %78 = load ptr, ptr %10, 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 = %74
  %84 = load ptr, ptr %10, 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 %10, 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 %10, 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, %74
  %104 = phi i1 [ false, %83 ], [ false, %74 ], [ %102, %101 ]
  %105 = zext i1 %104 to i64
  %106 = select i1 %104, i32 1, i32 0
  store i32 %106, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  %107 = load ptr, ptr %10, align 8, !tbaa !5
  %108 = call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %107)
  store i32 %108, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = call i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef %109)
  store i32 %110, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %111 = load ptr, ptr %10, align 8, !tbaa !5
  %112 = call i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef %111)
  store i32 %112, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %113, i32 0, i32 8
  %115 = getelementptr inbounds [3 x i8], ptr %114, i64 0, i64 0
  %116 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %115)
  %117 = icmp eq i32 12, %116
  br i1 %117, label %118, label %141

118:                                              ; preds = %103
  %119 = load i32, ptr %19, align 4, !tbaa !9
  %120 = icmp eq i32 %119, 0
  br i1 %120, label %121, label %141

121:                                              ; preds = %118
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %122, i32 0, i32 8
  %124 = getelementptr inbounds [3 x i8], ptr %123, i64 0, i64 0
  %125 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %124)
  %126 = icmp eq i32 2, %125
  br i1 %126, label %127, label %141

127:                                              ; preds = %121
  %128 = load ptr, ptr %10, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %128, i32 0, i32 8
  %130 = getelementptr inbounds [3 x i8], ptr %129, i64 0, i64 0
  %131 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %130)
  %132 = icmp eq i32 2, %131
  br i1 %132, label %139, label %133

133:                                              ; preds = %127
  %134 = load ptr, ptr %10, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %134, i32 0, i32 8
  %136 = getelementptr inbounds [3 x i8], ptr %135, i64 0, i64 0
  %137 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %136)
  %138 = icmp eq i32 1, %137
  br label %139

139:                                              ; preds = %133, %127
  %140 = phi i1 [ true, %127 ], [ %138, %133 ]
  br label %141

141:                                              ; preds = %139, %121, %118, %103
  %142 = phi i1 [ false, %121 ], [ false, %118 ], [ false, %103 ], [ %140, %139 ]
  %143 = zext i1 %142 to i64
  %144 = select i1 %142, i32 1, i32 0
  store i32 %144, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = call i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef %145)
  store i32 %146, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %147 = load ptr, ptr %10, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %147, i32 0, i32 6
  %149 = load i32, ptr %148, align 1, !tbaa !11
  %150 = and i32 %149, 524288
  %151 = icmp ugt i32 %150, 0
  br i1 %151, label %152, label %160

152:                                              ; preds = %141
  %153 = load i32, ptr %18, align 4, !tbaa !9
  %154 = icmp ugt i32 %153, 0
  br i1 %154, label %158, label %155

155:                                              ; preds = %152
  %156 = load i32, ptr %22, align 4, !tbaa !9
  %157 = icmp ugt i32 %156, 0
  br label %158

158:                                              ; preds = %155, %152
  %159 = phi i1 [ true, %152 ], [ %157, %155 ]
  br label %160

160:                                              ; preds = %158, %141
  %161 = phi i1 [ false, %141 ], [ %159, %158 ]
  %162 = zext i1 %161 to i64
  %163 = select i1 %161, i32 1, i32 0
  store i32 %163, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %164 = load ptr, ptr %10, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %164, i32 0, i32 6
  %166 = load i32, ptr %165, align 1, !tbaa !11
  %167 = and i32 %166, 1048576
  %168 = icmp ugt i32 %167, 0
  br i1 %168, label %169, label %177

169:                                              ; preds = %160
  %170 = load i32, ptr %18, align 4, !tbaa !9
  %171 = icmp ugt i32 %170, 0
  br i1 %171, label %175, label %172

172:                                              ; preds = %169
  %173 = load i32, ptr %23, align 4, !tbaa !9
  %174 = icmp ugt i32 %173, 0
  br label %175

175:                                              ; preds = %172, %169
  %176 = phi i1 [ true, %169 ], [ %174, %172 ]
  br label %177

177:                                              ; preds = %175, %160
  %178 = phi i1 [ false, %160 ], [ %176, %175 ]
  %179 = zext i1 %178 to i64
  %180 = select i1 %178, i32 1, i32 0
  store i32 %180, ptr %25, align 4, !tbaa !9
  %181 = load ptr, ptr %9, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %181, i32 0, i32 2
  %183 = load i32, ptr %182, align 8, !tbaa !15
  %184 = icmp ult i32 0, %183
  br i1 %184, label %185, label %186

185:                                              ; preds = %177
  br label %187

186:                                              ; preds = %177
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 3994, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_load_C) #5
  unreachable

187:                                              ; preds = %185
  %188 = load i32, ptr %11, align 4, !tbaa !9
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %189, i32 0, i32 2
  %191 = load i32, ptr %190, align 8, !tbaa !15
  %192 = urem i32 %188, %191
  %193 = icmp eq i32 %192, 0
  br i1 %193, label %194, label %200

194:                                              ; preds = %187
  %195 = load i32, ptr %11, align 4, !tbaa !9
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %196, i32 0, i32 2
  %198 = load i32, ptr %197, align 8, !tbaa !15
  %199 = udiv i32 %195, %198
  br label %207

200:                                              ; preds = %187
  %201 = load i32, ptr %11, align 4, !tbaa !9
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %202, i32 0, i32 2
  %204 = load i32, ptr %203, align 8, !tbaa !15
  %205 = udiv i32 %201, %204
  %206 = add i32 %205, 1
  br label %207

207:                                              ; preds = %200, %194
  %208 = phi i32 [ %199, %194 ], [ %206, %200 ]
  store i32 %208, ptr %13, align 4, !tbaa !9
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %209, i32 0, i32 1
  %211 = load i32, ptr %210, align 4, !tbaa !18
  %212 = load i32, ptr %12, align 4, !tbaa !9
  %213 = load i32, ptr %13, align 4, !tbaa !9
  %214 = mul i32 %212, %213
  %215 = sub i32 %211, %214
  store i32 %215, ptr %14, align 4, !tbaa !9
  %216 = load i32, ptr %24, align 4, !tbaa !9
  %217 = icmp ugt i32 %216, 0
  br i1 %217, label %218, label %391

218:                                              ; preds = %207
  %219 = load ptr, ptr %7, align 8, !tbaa !5
  %220 = load ptr, ptr %9, align 8, !tbaa !5
  %221 = load ptr, ptr %8, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %221, i32 0, i32 20
  %223 = load i32, ptr %222, align 4, !tbaa !19
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %219, ptr noundef %220, i32 noundef 5, i32 noundef %223)
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %224

224:                                              ; preds = %387, %218
  %225 = load i32, ptr %16, align 4, !tbaa !9
  %226 = load i32, ptr %13, align 4, !tbaa !9
  %227 = icmp ult i32 %225, %226
  br i1 %227, label %228, label %390

228:                                              ; preds = %224
  %229 = load i32, ptr %18, align 4, !tbaa !9
  %230 = icmp ugt i32 %229, 0
  br i1 %230, label %231, label %359

231:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %232 = load ptr, ptr %7, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %232, i32 0, i32 6
  %234 = load i32, ptr %233, align 4, !tbaa !21
  %235 = icmp ult i32 %234, 1104
  br i1 %235, label %236, label %242

236:                                              ; preds = %231
  %237 = load ptr, ptr %10, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %237, i32 0, i32 8
  %239 = getelementptr inbounds [3 x i8], ptr %238, i64 0, i64 0
  %240 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %239)
  %241 = icmp eq i32 3, %240
  br label %242

242:                                              ; preds = %236, %231
  %243 = phi i1 [ false, %231 ], [ %241, %236 ]
  %244 = zext i1 %243 to i64
  %245 = select i1 %243, i32 1, i32 0
  store i32 %245, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #4
  %246 = load ptr, ptr %10, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %246, i32 0, i32 8
  %248 = getelementptr inbounds [3 x i8], ptr %247, i64 0, i64 0
  %249 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %248)
  %250 = icmp eq i32 1, %249
  br i1 %250, label %251, label %259

251:                                              ; preds = %242
  %252 = load ptr, ptr %9, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %252, i32 0, i32 21
  %254 = load i8, ptr %253, align 4, !tbaa !23
  %255 = sext i8 %254 to i32
  %256 = icmp eq i32 %255, 122
  %257 = zext i1 %256 to i64
  %258 = select i1 %256, i32 121, i32 120
  br label %277

259:                                              ; preds = %242
  %260 = load i32, ptr %26, align 4, !tbaa !9
  %261 = icmp ugt i32 %260, 0
  br i1 %261, label %262, label %270

262:                                              ; preds = %259
  %263 = load ptr, ptr %9, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %263, i32 0, i32 21
  %265 = load i8, ptr %264, align 4, !tbaa !23
  %266 = sext i8 %265 to i32
  %267 = icmp eq i32 %266, 122
  %268 = zext i1 %267 to i64
  %269 = select i1 %267, i32 121, i32 120
  br label %275

270:                                              ; preds = %259
  %271 = load ptr, ptr %9, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %271, i32 0, i32 21
  %273 = load i8, ptr %272, align 4, !tbaa !23
  %274 = sext i8 %273 to i32
  br label %275

275:                                              ; preds = %270, %262
  %276 = phi i32 [ %269, %262 ], [ %274, %270 ]
  br label %277

277:                                              ; preds = %275, %251
  %278 = phi i32 [ %258, %251 ], [ %276, %275 ]
  %279 = trunc i32 %278 to i8
  store i8 %279, ptr %27, align 1, !tbaa !24
  %280 = load ptr, ptr %7, align 8, !tbaa !5
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %281, i32 0, i32 20
  %283 = load i32, ptr %282, align 4, !tbaa !19
  %284 = load i32, ptr %16, align 4, !tbaa !9
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %285, i32 0, i32 2
  %287 = load i32, ptr %286, align 8, !tbaa !15
  %288 = mul i32 %284, %287
  %289 = load ptr, ptr %9, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %289, i32 0, i32 4
  %291 = load i32, ptr %290, align 8, !tbaa !25
  %292 = mul i32 %288, %291
  %293 = load i8, ptr %27, align 1, !tbaa !24
  %294 = load i32, ptr %17, align 4, !tbaa !9
  %295 = icmp ugt i32 %294, 0
  br i1 %295, label %296, label %299

296:                                              ; preds = %277
  %297 = load i32, ptr %16, align 4, !tbaa !9
  %298 = add i32 2, %297
  br label %301

299:                                              ; preds = %277
  %300 = load i32, ptr %16, align 4, !tbaa !9
  br label %301

301:                                              ; preds = %299, %296
  %302 = phi i32 [ %298, %296 ], [ %300, %299 ]
  %303 = load i32, ptr %16, align 4, !tbaa !9
  %304 = load i32, ptr %13, align 4, !tbaa !9
  %305 = sub i32 %304, 1
  %306 = icmp eq i32 %303, %305
  br i1 %306, label %307, label %311

307:                                              ; preds = %301
  %308 = load ptr, ptr %9, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %308, i32 0, i32 11
  %310 = load i32, ptr %309, align 4, !tbaa !26
  br label %312

311:                                              ; preds = %301
  br label %312

312:                                              ; preds = %311, %307
  %313 = phi i32 [ %310, %307 ], [ 0, %311 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %280, i32 noundef -528017809, i32 noundef %283, i32 noundef 127, i32 noundef 0, i32 noundef %292, i8 noundef signext %293, i32 noundef %302, i32 noundef %313, i32 noundef 1, i32 noundef 0)
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %314, i32 0, i32 8
  %316 = getelementptr inbounds [3 x i8], ptr %315, i64 0, i64 0
  %317 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %316)
  %318 = icmp eq i32 1, %317
  br i1 %318, label %324, label %319

319:                                              ; preds = %312
  %320 = load ptr, ptr %7, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %320, i32 0, i32 6
  %322 = load i32, ptr %321, align 4, !tbaa !21
  %323 = icmp ult i32 %322, 1104
  br i1 %323, label %324, label %358

324:                                              ; preds = %319, %312
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #4
  %325 = load i8, ptr %27, align 1, !tbaa !24
  %326 = sext i8 %325 to i32
  %327 = icmp eq i32 %326, 121
  br i1 %327, label %328, label %329

328:                                              ; preds = %324
  br label %335

329:                                              ; preds = %324
  %330 = load i8, ptr %27, align 1, !tbaa !24
  %331 = sext i8 %330 to i32
  %332 = icmp eq i32 %331, 120
  %333 = zext i1 %332 to i64
  %334 = select i1 %332, i32 121, i32 122
  br label %335

335:                                              ; preds = %329, %328
  %336 = phi i32 [ 122, %328 ], [ %334, %329 ]
  %337 = trunc i32 %336 to i8
  store i8 %337, ptr %28, align 1, !tbaa !24
  %338 = load ptr, ptr %7, align 8, !tbaa !5
  %339 = load i8, ptr %28, align 1, !tbaa !24
  %340 = load i32, ptr %17, align 4, !tbaa !9
  %341 = icmp ugt i32 %340, 0
  br i1 %341, label %342, label %345

342:                                              ; preds = %335
  %343 = load i32, ptr %16, align 4, !tbaa !9
  %344 = add i32 2, %343
  br label %347

345:                                              ; preds = %335
  %346 = load i32, ptr %16, align 4, !tbaa !9
  br label %347

347:                                              ; preds = %345, %342
  %348 = phi i32 [ %344, %342 ], [ %346, %345 ]
  %349 = load i32, ptr %17, align 4, !tbaa !9
  %350 = icmp ugt i32 %349, 0
  br i1 %350, label %351, label %354

351:                                              ; preds = %347
  %352 = load i32, ptr %16, align 4, !tbaa !9
  %353 = add i32 2, %352
  br label %356

354:                                              ; preds = %347
  %355 = load i32, ptr %16, align 4, !tbaa !9
  br label %356

356:                                              ; preds = %354, %351
  %357 = phi i32 [ %353, %351 ], [ %355, %354 ]
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %338, i32 noundef 537208083, i8 noundef signext %339, i32 noundef %348, i32 noundef %357)
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  br label %358

358:                                              ; preds = %356, %319
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  br label %386

359:                                              ; preds = %228
  %360 = load ptr, ptr %7, align 8, !tbaa !5
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %361, i32 0, i32 20
  %363 = load i32, ptr %362, align 4, !tbaa !19
  %364 = load i32, ptr %16, align 4, !tbaa !9
  %365 = load ptr, ptr %9, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %365, i32 0, i32 2
  %367 = load i32, ptr %366, align 8, !tbaa !15
  %368 = mul i32 %364, %367
  %369 = mul i32 %368, 4
  %370 = load ptr, ptr %9, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %370, i32 0, i32 21
  %372 = load i8, ptr %371, align 4, !tbaa !23
  %373 = load i32, ptr %16, align 4, !tbaa !9
  %374 = add i32 %373, 1
  %375 = load i32, ptr %16, align 4, !tbaa !9
  %376 = load i32, ptr %13, align 4, !tbaa !9
  %377 = sub i32 %376, 1
  %378 = icmp eq i32 %375, %377
  br i1 %378, label %379, label %383

379:                                              ; preds = %359
  %380 = load ptr, ptr %9, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %380, i32 0, i32 11
  %382 = load i32, ptr %381, align 4, !tbaa !26
  br label %384

383:                                              ; preds = %359
  br label %384

384:                                              ; preds = %383, %379
  %385 = phi i32 [ %382, %379 ], [ 0, %383 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %360, i32 noundef 537138704, i32 noundef %363, i32 noundef 127, i32 noundef 0, i32 noundef %369, i8 noundef signext %372, i32 noundef %374, i32 noundef %385, i32 noundef 1, i32 noundef 0)
  br label %386

386:                                              ; preds = %384, %358
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %16, align 4, !tbaa !9
  %389 = add i32 %388, 1
  store i32 %389, ptr %16, align 4, !tbaa !9
  br label %224, !llvm.loop !27

390:                                              ; preds = %224
  br label %391

391:                                              ; preds = %390, %207
  %392 = load i32, ptr %25, align 4, !tbaa !9
  %393 = icmp ugt i32 %392, 0
  br i1 %393, label %394, label %602

394:                                              ; preds = %391
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %598, %394
  %396 = load i32, ptr %16, align 4, !tbaa !9
  %397 = load i32, ptr %13, align 4, !tbaa !9
  %398 = icmp ult i32 %396, %397
  br i1 %398, label %399, label %601

399:                                              ; preds = %395
  %400 = load i32, ptr %18, align 4, !tbaa !9
  %401 = icmp ugt i32 %400, 0
  br i1 %401, label %402, label %519

402:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %403 = load ptr, ptr %7, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %403, i32 0, i32 6
  %405 = load i32, ptr %404, align 4, !tbaa !21
  %406 = icmp ult i32 %405, 1104
  br i1 %406, label %407, label %413

407:                                              ; preds = %402
  %408 = load ptr, ptr %10, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %408, i32 0, i32 8
  %410 = getelementptr inbounds [3 x i8], ptr %409, i64 0, i64 0
  %411 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %410)
  %412 = icmp eq i32 3, %411
  br label %413

413:                                              ; preds = %407, %402
  %414 = phi i1 [ false, %402 ], [ %412, %407 ]
  %415 = zext i1 %414 to i64
  %416 = select i1 %414, i32 1, i32 0
  store i32 %416, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #4
  %417 = load ptr, ptr %10, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %417, i32 0, i32 8
  %419 = getelementptr inbounds [3 x i8], ptr %418, i64 0, i64 0
  %420 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %419)
  %421 = icmp eq i32 1, %420
  br i1 %421, label %422, label %430

422:                                              ; preds = %413
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %423, i32 0, i32 21
  %425 = load i8, ptr %424, align 4, !tbaa !23
  %426 = sext i8 %425 to i32
  %427 = icmp eq i32 %426, 122
  %428 = zext i1 %427 to i64
  %429 = select i1 %427, i32 121, i32 120
  br label %448

430:                                              ; preds = %413
  %431 = load i32, ptr %29, align 4, !tbaa !9
  %432 = icmp ugt i32 %431, 0
  br i1 %432, label %433, label %441

433:                                              ; preds = %430
  %434 = load ptr, ptr %9, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %434, i32 0, i32 21
  %436 = load i8, ptr %435, align 4, !tbaa !23
  %437 = sext i8 %436 to i32
  %438 = icmp eq i32 %437, 122
  %439 = zext i1 %438 to i64
  %440 = select i1 %438, i32 121, i32 120
  br label %446

441:                                              ; preds = %430
  %442 = load ptr, ptr %9, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %442, i32 0, i32 21
  %444 = load i8, ptr %443, align 4, !tbaa !23
  %445 = sext i8 %444 to i32
  br label %446

446:                                              ; preds = %441, %433
  %447 = phi i32 [ %440, %433 ], [ %445, %441 ]
  br label %448

448:                                              ; preds = %446, %422
  %449 = phi i32 [ %429, %422 ], [ %447, %446 ]
  %450 = trunc i32 %449 to i8
  store i8 %450, ptr %30, align 1, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %451 = load i32, ptr %17, align 4, !tbaa !9
  %452 = icmp ugt i32 %451, 0
  br i1 %452, label %453, label %458

453:                                              ; preds = %448
  %454 = load i32, ptr %16, align 4, !tbaa !9
  %455 = add i32 2, %454
  %456 = load i32, ptr %13, align 4, !tbaa !9
  %457 = add i32 %455, %456
  br label %462

458:                                              ; preds = %448
  %459 = load i32, ptr %16, align 4, !tbaa !9
  %460 = load i32, ptr %13, align 4, !tbaa !9
  %461 = add i32 %459, %460
  br label %462

462:                                              ; preds = %458, %453
  %463 = phi i32 [ %457, %453 ], [ %461, %458 ]
  store i32 %463, ptr %31, align 4, !tbaa !9
  %464 = load ptr, ptr %7, align 8, !tbaa !5
  %465 = load ptr, ptr %8, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %465, i32 0, i32 21
  %467 = load i32, ptr %466, align 4, !tbaa !29
  %468 = load i32, ptr %16, align 4, !tbaa !9
  %469 = load ptr, ptr %9, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %469, i32 0, i32 2
  %471 = load i32, ptr %470, align 8, !tbaa !15
  %472 = mul i32 %468, %471
  %473 = load ptr, ptr %9, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %473, i32 0, i32 4
  %475 = load i32, ptr %474, align 8, !tbaa !25
  %476 = mul i32 %472, %475
  %477 = load i8, ptr %30, align 1, !tbaa !24
  %478 = load i32, ptr %31, align 4, !tbaa !9
  %479 = load i32, ptr %16, align 4, !tbaa !9
  %480 = load i32, ptr %13, align 4, !tbaa !9
  %481 = sub i32 %480, 1
  %482 = icmp eq i32 %479, %481
  br i1 %482, label %483, label %487

483:                                              ; preds = %462
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %484, i32 0, i32 11
  %486 = load i32, ptr %485, align 4, !tbaa !26
  br label %488

487:                                              ; preds = %462
  br label %488

488:                                              ; preds = %487, %483
  %489 = phi i32 [ %486, %483 ], [ 0, %487 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %464, i32 noundef -528017809, i32 noundef %467, i32 noundef 127, i32 noundef 0, i32 noundef %476, i8 noundef signext %477, i32 noundef %478, i32 noundef %489, i32 noundef 1, i32 noundef 0)
  %490 = load ptr, ptr %10, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %490, i32 0, i32 8
  %492 = getelementptr inbounds [3 x i8], ptr %491, i64 0, i64 0
  %493 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %492)
  %494 = icmp eq i32 1, %493
  br i1 %494, label %500, label %495

495:                                              ; preds = %488
  %496 = load ptr, ptr %7, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %496, i32 0, i32 6
  %498 = load i32, ptr %497, align 4, !tbaa !21
  %499 = icmp ult i32 %498, 1104
  br i1 %499, label %500, label %518

500:                                              ; preds = %495, %488
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #4
  %501 = load i8, ptr %30, align 1, !tbaa !24
  %502 = sext i8 %501 to i32
  %503 = icmp eq i32 %502, 121
  br i1 %503, label %504, label %505

504:                                              ; preds = %500
  br label %511

505:                                              ; preds = %500
  %506 = load i8, ptr %30, align 1, !tbaa !24
  %507 = sext i8 %506 to i32
  %508 = icmp eq i32 %507, 120
  %509 = zext i1 %508 to i64
  %510 = select i1 %508, i32 121, i32 122
  br label %511

511:                                              ; preds = %505, %504
  %512 = phi i32 [ 122, %504 ], [ %510, %505 ]
  %513 = trunc i32 %512 to i8
  store i8 %513, ptr %32, align 1, !tbaa !24
  %514 = load ptr, ptr %7, align 8, !tbaa !5
  %515 = load i8, ptr %32, align 1, !tbaa !24
  %516 = load i32, ptr %31, align 4, !tbaa !9
  %517 = load i32, ptr %31, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %514, i32 noundef 537208083, i8 noundef signext %515, i32 noundef %516, i32 noundef %517)
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #4
  br label %518

518:                                              ; preds = %511, %495
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  br label %519

519:                                              ; preds = %518, %399
  %520 = load i32, ptr %23, align 4, !tbaa !9
  %521 = icmp ugt i32 %520, 0
  br i1 %521, label %522, label %597

522:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #4
  store i8 120, ptr %33, align 1, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  %523 = load i32, ptr %16, align 4, !tbaa !9
  %524 = add i32 3, %523
  store i32 %524, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  store i32 2, ptr %35, align 4, !tbaa !9
  %525 = load ptr, ptr %7, align 8, !tbaa !5
  %526 = load ptr, ptr %8, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %526, i32 0, i32 21
  %528 = load i32, ptr %527, align 4, !tbaa !29
  %529 = load i32, ptr %16, align 4, !tbaa !9
  %530 = load ptr, ptr %9, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %530, i32 0, i32 2
  %532 = load i32, ptr %531, align 8, !tbaa !15
  %533 = mul i32 %529, %532
  %534 = load ptr, ptr %9, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %534, i32 0, i32 4
  %536 = load i32, ptr %535, align 8, !tbaa !25
  %537 = mul i32 %533, %536
  %538 = load i8, ptr %33, align 1, !tbaa !24
  %539 = load i32, ptr %34, align 4, !tbaa !9
  %540 = load i32, ptr %16, align 4, !tbaa !9
  %541 = load i32, ptr %13, align 4, !tbaa !9
  %542 = sub i32 %541, 1
  %543 = icmp eq i32 %540, %542
  br i1 %543, label %544, label %548

544:                                              ; preds = %522
  %545 = load ptr, ptr %9, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %545, i32 0, i32 11
  %547 = load i32, ptr %546, align 4, !tbaa !26
  br label %549

548:                                              ; preds = %522
  br label %549

549:                                              ; preds = %548, %544
  %550 = phi i32 [ %547, %544 ], [ 0, %548 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %525, i32 noundef -536406417, i32 noundef %528, i32 noundef 127, i32 noundef 0, i32 noundef %537, i8 noundef signext %538, i32 noundef %539, i32 noundef %550, i32 noundef 1, i32 noundef 0)
  %551 = load ptr, ptr %7, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %551, i32 0, i32 6
  %553 = load i32, ptr %552, align 4, !tbaa !21
  %554 = icmp uge i32 %553, 1104
  br i1 %554, label %555, label %563

555:                                              ; preds = %549
  %556 = load ptr, ptr %7, align 8, !tbaa !5
  %557 = load ptr, ptr %9, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %557, i32 0, i32 21
  %559 = load i8, ptr %558, align 4, !tbaa !23
  %560 = load i32, ptr %34, align 4, !tbaa !9
  %561 = load i32, ptr %35, align 4, !tbaa !9
  %562 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %556, i32 noundef -268097907, i8 noundef signext %559, i32 noundef %560, i32 noundef %561, i32 noundef %562)
  br label %596

563:                                              ; preds = %549
  %564 = load ptr, ptr %7, align 8, !tbaa !5
  %565 = load ptr, ptr %9, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %565, i32 0, i32 21
  %567 = load i8, ptr %566, align 4, !tbaa !23
  %568 = load i32, ptr %34, align 4, !tbaa !9
  %569 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %564, i32 noundef 537207857, i8 noundef signext %567, i32 noundef %568, i32 noundef %569)
  %570 = load ptr, ptr %7, align 8, !tbaa !5
  %571 = load ptr, ptr %9, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %571, i32 0, i32 21
  %573 = load i8, ptr %572, align 4, !tbaa !23
  %574 = load i32, ptr %34, align 4, !tbaa !9
  %575 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %570, i32 noundef 611128946, i8 noundef signext %573, i32 noundef %574, i32 noundef %575, i32 noundef 8)
  %576 = load ptr, ptr %7, align 8, !tbaa !5
  %577 = load ptr, ptr %9, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %577, i32 0, i32 21
  %579 = load i8, ptr %578, align 4, !tbaa !23
  %580 = load i32, ptr %35, align 4, !tbaa !9
  %581 = load i32, ptr %34, align 4, !tbaa !9
  %582 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %576, i32 noundef 805639915, i8 noundef signext %579, i32 noundef %580, i32 noundef %581, i32 noundef %582)
  %583 = load ptr, ptr %7, align 8, !tbaa !5
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %584, i32 0, i32 21
  %586 = load i8, ptr %585, align 4, !tbaa !23
  %587 = load i32, ptr %34, align 4, !tbaa !9
  %588 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %583, i32 noundef 611128946, i8 noundef signext %586, i32 noundef %587, i32 noundef %588, i32 noundef 16)
  %589 = load ptr, ptr %7, align 8, !tbaa !5
  %590 = load ptr, ptr %9, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %590, i32 0, i32 21
  %592 = load i8, ptr %591, align 4, !tbaa !23
  %593 = load i32, ptr %35, align 4, !tbaa !9
  %594 = load i32, ptr %34, align 4, !tbaa !9
  %595 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %589, i32 noundef 805639915, i8 noundef signext %592, i32 noundef %593, i32 noundef %594, i32 noundef %595)
  br label %596

596:                                              ; preds = %563, %555
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #4
  br label %597

597:                                              ; preds = %596, %519
  br label %598

598:                                              ; preds = %597
  %599 = load i32, ptr %16, align 4, !tbaa !9
  %600 = add i32 %599, 1
  store i32 %600, ptr %16, align 4, !tbaa !9
  br label %395, !llvm.loop !30

601:                                              ; preds = %395
  br label %602

602:                                              ; preds = %601, %391
  %603 = load ptr, ptr %10, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %603, i32 0, i32 6
  %605 = load i32, ptr %604, align 1, !tbaa !11
  %606 = and i32 4, %605
  %607 = icmp eq i32 0, %606
  br i1 %607, label %608, label %1960

608:                                              ; preds = %602
  %609 = load ptr, ptr %9, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %609, i32 0, i32 0
  %611 = load i32, ptr %610, align 8, !tbaa !31
  %612 = icmp ult i32 %611, 1005
  br i1 %612, label %613, label %730

613:                                              ; preds = %608
  %614 = load ptr, ptr %10, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %614, i32 0, i32 8
  %616 = getelementptr inbounds [3 x i8], ptr %615, i64 0, i64 0
  %617 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %616)
  %618 = icmp eq i32 2, %617
  br i1 %618, label %619, label %730

619:                                              ; preds = %613
  %620 = load ptr, ptr %10, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %620, i32 0, i32 8
  %622 = getelementptr inbounds [3 x i8], ptr %621, i64 0, i64 0
  %623 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %622)
  %624 = icmp eq i32 2, %623
  br i1 %624, label %625, label %730

625:                                              ; preds = %619
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %626

626:                                              ; preds = %709, %625
  %627 = load i32, ptr %15, align 4, !tbaa !9
  %628 = load i32, ptr %12, align 4, !tbaa !9
  %629 = icmp ult i32 %627, %628
  br i1 %629, label %630, label %712

630:                                              ; preds = %626
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %631

631:                                              ; preds = %705, %630
  %632 = load i32, ptr %16, align 4, !tbaa !9
  %633 = load i32, ptr %13, align 4, !tbaa !9
  %634 = icmp ult i32 %632, %633
  br i1 %634, label %635, label %708

635:                                              ; preds = %631
  %636 = load ptr, ptr %9, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %636, i32 0, i32 11
  %638 = load i32, ptr %637, align 4, !tbaa !26
  %639 = icmp ne i32 %638, 0
  br i1 %639, label %640, label %673

640:                                              ; preds = %635
  %641 = load i32, ptr %16, align 4, !tbaa !9
  %642 = load i32, ptr %13, align 4, !tbaa !9
  %643 = sub i32 %642, 1
  %644 = icmp eq i32 %641, %643
  br i1 %644, label %645, label %673

645:                                              ; preds = %640
  %646 = load ptr, ptr %7, align 8, !tbaa !5
  %647 = load ptr, ptr %8, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %647, i32 0, i32 22
  %649 = load i32, ptr %648, align 4, !tbaa !32
  %650 = load ptr, ptr %8, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %650, i32 0, i32 5
  %652 = load i32, ptr %651, align 4, !tbaa !33
  %653 = load i32, ptr %15, align 4, !tbaa !9
  %654 = load ptr, ptr %10, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %654, i32 0, i32 5
  %656 = load i32, ptr %655, align 1, !tbaa !34
  %657 = mul i32 %653, %656
  %658 = load i32, ptr %16, align 4, !tbaa !9
  %659 = load ptr, ptr %9, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %659, i32 0, i32 2
  %661 = load i32, ptr %660, align 8, !tbaa !15
  %662 = mul i32 %658, %661
  %663 = add i32 %657, %662
  %664 = load ptr, ptr %9, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %664, i32 0, i32 5
  %666 = load i32, ptr %665, align 4, !tbaa !35
  %667 = mul i32 %663, %666
  %668 = load i32, ptr %11, align 4, !tbaa !9
  %669 = load ptr, ptr %9, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %669, i32 0, i32 2
  %671 = load i32, ptr %670, align 8, !tbaa !15
  %672 = urem i32 %668, %671
  call void @libxsmm_generator_maskedload_16bit_sse(ptr noundef %646, i32 noundef %649, i32 noundef 0, i32 noundef %652, i32 noundef 127, i32 noundef 0, i32 noundef %667, i32 noundef 0, i32 noundef %672)
  br label %696

673:                                              ; preds = %640, %635
  %674 = load ptr, ptr %7, align 8, !tbaa !5
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %675, i32 0, i32 0
  %677 = load i32, ptr %676, align 8, !tbaa !31
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %678, i32 0, i32 5
  %680 = load i32, ptr %679, align 4, !tbaa !33
  %681 = load i32, ptr %15, align 4, !tbaa !9
  %682 = load ptr, ptr %10, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %682, i32 0, i32 5
  %684 = load i32, ptr %683, align 1, !tbaa !34
  %685 = mul i32 %681, %684
  %686 = load i32, ptr %16, align 4, !tbaa !9
  %687 = load ptr, ptr %9, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %687, i32 0, i32 2
  %689 = load i32, ptr %688, align 8, !tbaa !15
  %690 = mul i32 %686, %689
  %691 = add i32 %685, %690
  %692 = load ptr, ptr %9, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %692, i32 0, i32 5
  %694 = load i32, ptr %693, align 4, !tbaa !35
  %695 = mul i32 %691, %694
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %674, i32 noundef %677, i32 noundef -1610149872, i32 noundef %680, i32 noundef 127, i32 noundef 0, i32 noundef %695, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %696

696:                                              ; preds = %673, %645
  %697 = load ptr, ptr %7, align 8, !tbaa !5
  %698 = load i32, ptr %14, align 4, !tbaa !9
  %699 = load i32, ptr %16, align 4, !tbaa !9
  %700 = add i32 %698, %699
  %701 = load i32, ptr %13, align 4, !tbaa !9
  %702 = load i32, ptr %15, align 4, !tbaa !9
  %703 = mul i32 %701, %702
  %704 = add i32 %700, %703
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %697, i8 noundef signext 120, i32 noundef 0, i32 noundef %704)
  br label %705

705:                                              ; preds = %696
  %706 = load i32, ptr %16, align 4, !tbaa !9
  %707 = add i32 %706, 1
  store i32 %707, ptr %16, align 4, !tbaa !9
  br label %631, !llvm.loop !36

708:                                              ; preds = %631
  br label %709

709:                                              ; preds = %708
  %710 = load i32, ptr %15, align 4, !tbaa !9
  %711 = add i32 %710, 1
  store i32 %711, ptr %15, align 4, !tbaa !9
  br label %626, !llvm.loop !37

712:                                              ; preds = %626
  %713 = load ptr, ptr %9, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %713, i32 0, i32 25
  %715 = load i32, ptr %714, align 4, !tbaa !38
  %716 = icmp eq i32 %715, 1
  br i1 %716, label %717, label %729

717:                                              ; preds = %712
  %718 = load ptr, ptr %7, align 8, !tbaa !5
  %719 = load ptr, ptr %8, align 8, !tbaa !5
  %720 = load ptr, ptr %9, align 8, !tbaa !5
  %721 = load i32, ptr %14, align 4, !tbaa !9
  %722 = load i32, ptr %13, align 4, !tbaa !9
  %723 = load i32, ptr %12, align 4, !tbaa !9
  %724 = load i32, ptr %11, align 4, !tbaa !9
  %725 = load ptr, ptr %9, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %725, i32 0, i32 2
  %727 = load i32, ptr %726, align 8, !tbaa !15
  %728 = urem i32 %724, %727
  call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %718, ptr noundef %719, ptr noundef %720, i32 noundef 2, i32 noundef 1, i32 noundef %721, i32 noundef %722, i32 noundef %723, i32 noundef %728)
  br label %729

729:                                              ; preds = %717, %712
  br label %1959

730:                                              ; preds = %619, %613, %608
  %731 = load ptr, ptr %9, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %731, i32 0, i32 0
  %733 = load i32, ptr %732, align 8, !tbaa !31
  %734 = icmp uge i32 %733, 1006
  br i1 %734, label %735, label %752

735:                                              ; preds = %730
  %736 = load ptr, ptr %9, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %736, i32 0, i32 0
  %738 = load i32, ptr %737, align 8, !tbaa !31
  %739 = icmp ult i32 %738, 1051
  br i1 %739, label %740, label %752

740:                                              ; preds = %735
  %741 = load ptr, ptr %10, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %741, i32 0, i32 8
  %743 = getelementptr inbounds [3 x i8], ptr %742, i64 0, i64 0
  %744 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %743)
  %745 = icmp eq i32 2, %744
  br i1 %745, label %746, label %752

746:                                              ; preds = %740
  %747 = load ptr, ptr %10, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %747, i32 0, i32 8
  %749 = getelementptr inbounds [3 x i8], ptr %748, i64 0, i64 0
  %750 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %749)
  %751 = icmp eq i32 2, %750
  br i1 %751, label %769, label %752

752:                                              ; preds = %746, %740, %735, %730
  %753 = load ptr, ptr %7, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %753, i32 0, i32 6
  %755 = load i32, ptr %754, align 4, !tbaa !21
  %756 = icmp uge i32 %755, 1006
  br i1 %756, label %757, label %898

757:                                              ; preds = %752
  %758 = load i32, ptr %19, align 4, !tbaa !9
  %759 = icmp ugt i32 %758, 0
  br i1 %759, label %763, label %760

760:                                              ; preds = %757
  %761 = load i32, ptr %21, align 4, !tbaa !9
  %762 = icmp ugt i32 %761, 0
  br i1 %762, label %763, label %898

763:                                              ; preds = %760, %757
  %764 = load ptr, ptr %10, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %764, i32 0, i32 8
  %766 = getelementptr inbounds [3 x i8], ptr %765, i64 0, i64 0
  %767 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %766)
  %768 = icmp eq i32 2, %767
  br i1 %768, label %769, label %898

769:                                              ; preds = %763, %746
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %770

770:                                              ; preds = %877, %769
  %771 = load i32, ptr %15, align 4, !tbaa !9
  %772 = load i32, ptr %12, align 4, !tbaa !9
  %773 = icmp ult i32 %771, %772
  br i1 %773, label %774, label %880

774:                                              ; preds = %770
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %775

775:                                              ; preds = %873, %774
  %776 = load i32, ptr %16, align 4, !tbaa !9
  %777 = load i32, ptr %13, align 4, !tbaa !9
  %778 = icmp ult i32 %776, %777
  br i1 %778, label %779, label %876

779:                                              ; preds = %775
  %780 = load ptr, ptr %9, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %780, i32 0, i32 11
  %782 = load i32, ptr %781, align 4, !tbaa !26
  %783 = icmp ne i32 %782, 0
  br i1 %783, label %784, label %824

784:                                              ; preds = %779
  %785 = load i32, ptr %16, align 4, !tbaa !9
  %786 = load i32, ptr %13, align 4, !tbaa !9
  %787 = sub i32 %786, 1
  %788 = icmp eq i32 %785, %787
  br i1 %788, label %789, label %824

789:                                              ; preds = %784
  %790 = load ptr, ptr %7, align 8, !tbaa !5
  %791 = load ptr, ptr %8, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %791, i32 0, i32 22
  %793 = load i32, ptr %792, align 4, !tbaa !32
  %794 = load ptr, ptr %8, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %794, i32 0, i32 5
  %796 = load i32, ptr %795, align 4, !tbaa !33
  %797 = load i32, ptr %15, align 4, !tbaa !9
  %798 = load ptr, ptr %10, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %798, i32 0, i32 5
  %800 = load i32, ptr %799, align 1, !tbaa !34
  %801 = mul i32 %797, %800
  %802 = load i32, ptr %16, align 4, !tbaa !9
  %803 = load ptr, ptr %9, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %803, i32 0, i32 2
  %805 = load i32, ptr %804, align 8, !tbaa !15
  %806 = mul i32 %802, %805
  %807 = add i32 %801, %806
  %808 = load ptr, ptr %9, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %808, i32 0, i32 5
  %810 = load i32, ptr %809, align 4, !tbaa !35
  %811 = mul i32 %807, %810
  %812 = load i32, ptr %14, align 4, !tbaa !9
  %813 = load i32, ptr %16, align 4, !tbaa !9
  %814 = add i32 %812, %813
  %815 = load i32, ptr %13, align 4, !tbaa !9
  %816 = load i32, ptr %15, align 4, !tbaa !9
  %817 = mul i32 %815, %816
  %818 = add i32 %814, %817
  %819 = load i32, ptr %11, align 4, !tbaa !9
  %820 = load ptr, ptr %9, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %820, i32 0, i32 2
  %822 = load i32, ptr %821, align 8, !tbaa !15
  %823 = urem i32 %819, %822
  call void @libxsmm_generator_maskedload_16bit_avx2(ptr noundef %790, i32 noundef %793, i32 noundef %796, i32 noundef 127, i32 noundef 0, i32 noundef %811, i32 noundef %818, i32 noundef %823)
  br label %857

824:                                              ; preds = %784, %779
  %825 = load ptr, ptr %7, align 8, !tbaa !5
  %826 = load ptr, ptr %9, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %826, i32 0, i32 0
  %828 = load i32, ptr %827, align 8, !tbaa !31
  %829 = load ptr, ptr %9, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %829, i32 0, i32 9
  %831 = load i32, ptr %830, align 4, !tbaa !39
  %832 = load ptr, ptr %8, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %832, i32 0, i32 5
  %834 = load i32, ptr %833, align 4, !tbaa !33
  %835 = load i32, ptr %15, align 4, !tbaa !9
  %836 = load ptr, ptr %10, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %836, i32 0, i32 5
  %838 = load i32, ptr %837, align 1, !tbaa !34
  %839 = mul i32 %835, %838
  %840 = load i32, ptr %16, align 4, !tbaa !9
  %841 = load ptr, ptr %9, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %841, i32 0, i32 2
  %843 = load i32, ptr %842, align 8, !tbaa !15
  %844 = mul i32 %840, %843
  %845 = add i32 %839, %844
  %846 = load ptr, ptr %9, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %846, i32 0, i32 5
  %848 = load i32, ptr %847, align 4, !tbaa !35
  %849 = mul i32 %845, %848
  %850 = load i32, ptr %14, align 4, !tbaa !9
  %851 = load i32, ptr %16, align 4, !tbaa !9
  %852 = add i32 %850, %851
  %853 = load i32, ptr %13, align 4, !tbaa !9
  %854 = load i32, ptr %15, align 4, !tbaa !9
  %855 = mul i32 %853, %854
  %856 = add i32 %852, %855
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %825, i32 noundef %828, i32 noundef %831, i32 noundef %834, i32 noundef 127, i32 noundef 0, i32 noundef %849, i8 noundef signext 120, i32 noundef %856, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %857

857:                                              ; preds = %824, %789
  %858 = load ptr, ptr %7, align 8, !tbaa !5
  %859 = load i32, ptr %14, align 4, !tbaa !9
  %860 = load i32, ptr %16, align 4, !tbaa !9
  %861 = add i32 %859, %860
  %862 = load i32, ptr %13, align 4, !tbaa !9
  %863 = load i32, ptr %15, align 4, !tbaa !9
  %864 = mul i32 %862, %863
  %865 = add i32 %861, %864
  %866 = load i32, ptr %14, align 4, !tbaa !9
  %867 = load i32, ptr %16, align 4, !tbaa !9
  %868 = add i32 %866, %867
  %869 = load i32, ptr %13, align 4, !tbaa !9
  %870 = load i32, ptr %15, align 4, !tbaa !9
  %871 = mul i32 %869, %870
  %872 = add i32 %868, %871
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %858, i8 noundef signext 121, i32 noundef %865, i32 noundef %872)
  br label %873

873:                                              ; preds = %857
  %874 = load i32, ptr %16, align 4, !tbaa !9
  %875 = add i32 %874, 1
  store i32 %875, ptr %16, align 4, !tbaa !9
  br label %775, !llvm.loop !40

876:                                              ; preds = %775
  br label %877

877:                                              ; preds = %876
  %878 = load i32, ptr %15, align 4, !tbaa !9
  %879 = add i32 %878, 1
  store i32 %879, ptr %15, align 4, !tbaa !9
  br label %770, !llvm.loop !41

880:                                              ; preds = %770
  %881 = load ptr, ptr %9, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %881, i32 0, i32 25
  %883 = load i32, ptr %882, align 4, !tbaa !38
  %884 = icmp eq i32 %883, 1
  br i1 %884, label %885, label %897

885:                                              ; preds = %880
  %886 = load ptr, ptr %7, align 8, !tbaa !5
  %887 = load ptr, ptr %8, align 8, !tbaa !5
  %888 = load ptr, ptr %9, align 8, !tbaa !5
  %889 = load i32, ptr %14, align 4, !tbaa !9
  %890 = load i32, ptr %13, align 4, !tbaa !9
  %891 = load i32, ptr %12, align 4, !tbaa !9
  %892 = load i32, ptr %11, align 4, !tbaa !9
  %893 = load ptr, ptr %9, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %893, i32 0, i32 2
  %895 = load i32, ptr %894, align 8, !tbaa !15
  %896 = urem i32 %892, %895
  call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %886, ptr noundef %887, ptr noundef %888, i32 noundef 2, i32 noundef 1, i32 noundef %889, i32 noundef %890, i32 noundef %891, i32 noundef %896)
  br label %897

897:                                              ; preds = %885, %880
  br label %1958

898:                                              ; preds = %763, %760, %752
  %899 = load ptr, ptr %9, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %899, i32 0, i32 0
  %901 = load i32, ptr %900, align 8, !tbaa !31
  %902 = icmp uge i32 %901, 1101
  br i1 %902, label %903, label %908

903:                                              ; preds = %898
  %904 = load ptr, ptr %9, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %904, i32 0, i32 0
  %906 = load i32, ptr %905, align 8, !tbaa !31
  %907 = icmp ule i32 %906, 1999
  br i1 %907, label %918, label %908

908:                                              ; preds = %903, %898
  %909 = load ptr, ptr %9, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %909, i32 0, i32 0
  %911 = load i32, ptr %910, align 8, !tbaa !31
  %912 = icmp uge i32 %911, 1051
  br i1 %912, label %913, label %1090

913:                                              ; preds = %908
  %914 = load ptr, ptr %9, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %914, i32 0, i32 0
  %916 = load i32, ptr %915, align 8, !tbaa !31
  %917 = icmp ult i32 %916, 1101
  br i1 %917, label %918, label %1090

918:                                              ; preds = %913, %903
  %919 = load ptr, ptr %10, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %919, i32 0, i32 8
  %921 = getelementptr inbounds [3 x i8], ptr %920, i64 0, i64 0
  %922 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %921)
  %923 = icmp eq i32 2, %922
  br i1 %923, label %924, label %930

924:                                              ; preds = %918
  %925 = load ptr, ptr %10, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %925, i32 0, i32 8
  %927 = getelementptr inbounds [3 x i8], ptr %926, i64 0, i64 0
  %928 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %927)
  %929 = icmp eq i32 2, %928
  br i1 %929, label %939, label %930

930:                                              ; preds = %924, %918
  %931 = load i32, ptr %22, align 4, !tbaa !9
  %932 = icmp ugt i32 %931, 0
  br i1 %932, label %933, label %1090

933:                                              ; preds = %930
  %934 = load ptr, ptr %10, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %934, i32 0, i32 8
  %936 = getelementptr inbounds [3 x i8], ptr %935, i64 0, i64 0
  %937 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %936)
  %938 = icmp eq i32 2, %937
  br i1 %938, label %939, label %1090

939:                                              ; preds = %933, %924
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %940

940:                                              ; preds = %1069, %939
  %941 = load i32, ptr %15, align 4, !tbaa !9
  %942 = load i32, ptr %12, align 4, !tbaa !9
  %943 = icmp ult i32 %941, %942
  br i1 %943, label %944, label %1072

944:                                              ; preds = %940
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %1065, %944
  %946 = load i32, ptr %16, align 4, !tbaa !9
  %947 = load i32, ptr %13, align 4, !tbaa !9
  %948 = icmp ult i32 %946, %947
  br i1 %948, label %949, label %1068

949:                                              ; preds = %945
  %950 = load ptr, ptr %9, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %950, i32 0, i32 11
  %952 = load i32, ptr %951, align 4, !tbaa !26
  %953 = icmp ne i32 %952, 0
  br i1 %953, label %954, label %998

954:                                              ; preds = %949
  %955 = load i32, ptr %16, align 4, !tbaa !9
  %956 = load i32, ptr %13, align 4, !tbaa !9
  %957 = sub i32 %956, 1
  %958 = icmp eq i32 %955, %957
  br i1 %958, label %959, label %998

959:                                              ; preds = %954
  %960 = load ptr, ptr %7, align 8, !tbaa !5
  %961 = load ptr, ptr %9, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %961, i32 0, i32 0
  %963 = load i32, ptr %962, align 8, !tbaa !31
  %964 = load ptr, ptr %8, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %964, i32 0, i32 5
  %966 = load i32, ptr %965, align 4, !tbaa !33
  %967 = load i32, ptr %15, align 4, !tbaa !9
  %968 = load ptr, ptr %10, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %968, i32 0, i32 5
  %970 = load i32, ptr %969, align 1, !tbaa !34
  %971 = mul i32 %967, %970
  %972 = load i32, ptr %16, align 4, !tbaa !9
  %973 = load ptr, ptr %9, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %973, i32 0, i32 2
  %975 = load i32, ptr %974, align 8, !tbaa !15
  %976 = mul i32 %972, %975
  %977 = add i32 %971, %976
  %978 = load ptr, ptr %9, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %978, i32 0, i32 5
  %980 = load i32, ptr %979, align 4, !tbaa !35
  %981 = mul i32 %977, %980
  %982 = load ptr, ptr %9, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %982, i32 0, i32 0
  %984 = load i32, ptr %983, align 8, !tbaa !31
  %985 = icmp uge i32 %984, 1051
  br i1 %985, label %986, label %991

986:                                              ; preds = %959
  %987 = load ptr, ptr %9, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %987, i32 0, i32 0
  %989 = load i32, ptr %988, align 8, !tbaa !31
  %990 = icmp ult i32 %989, 1101
  br label %991

991:                                              ; preds = %986, %959
  %992 = phi i1 [ false, %959 ], [ %990, %986 ]
  %993 = zext i1 %992 to i64
  %994 = select i1 %992, i32 121, i32 122
  %995 = trunc i32 %994 to i8
  %996 = load i32, ptr %14, align 4, !tbaa !9
  %997 = sub i32 %996, 1
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %960, i32 noundef %963, i32 noundef -528017809, i32 noundef %966, i32 noundef 127, i32 noundef 0, i32 noundef %981, i8 noundef signext %995, i32 noundef %997, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br label %1040

998:                                              ; preds = %954, %949
  %999 = load ptr, ptr %7, align 8, !tbaa !5
  %1000 = load ptr, ptr %9, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1000, i32 0, i32 0
  %1002 = load i32, ptr %1001, align 8, !tbaa !31
  %1003 = load ptr, ptr %9, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1003, i32 0, i32 9
  %1005 = load i32, ptr %1004, align 4, !tbaa !39
  %1006 = load ptr, ptr %8, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1006, i32 0, i32 5
  %1008 = load i32, ptr %1007, align 4, !tbaa !33
  %1009 = load i32, ptr %15, align 4, !tbaa !9
  %1010 = load ptr, ptr %10, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1010, i32 0, i32 5
  %1012 = load i32, ptr %1011, align 1, !tbaa !34
  %1013 = mul i32 %1009, %1012
  %1014 = load i32, ptr %16, align 4, !tbaa !9
  %1015 = load ptr, ptr %9, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1015, i32 0, i32 2
  %1017 = load i32, ptr %1016, align 8, !tbaa !15
  %1018 = mul i32 %1014, %1017
  %1019 = add i32 %1013, %1018
  %1020 = load ptr, ptr %9, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1020, i32 0, i32 5
  %1022 = load i32, ptr %1021, align 4, !tbaa !35
  %1023 = mul i32 %1019, %1022
  %1024 = load ptr, ptr %9, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1024, i32 0, i32 0
  %1026 = load i32, ptr %1025, align 8, !tbaa !31
  %1027 = icmp uge i32 %1026, 1051
  br i1 %1027, label %1028, label %1033

1028:                                             ; preds = %998
  %1029 = load ptr, ptr %9, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1029, i32 0, i32 0
  %1031 = load i32, ptr %1030, align 8, !tbaa !31
  %1032 = icmp ult i32 %1031, 1101
  br label %1033

1033:                                             ; preds = %1028, %998
  %1034 = phi i1 [ false, %998 ], [ %1032, %1028 ]
  %1035 = zext i1 %1034 to i64
  %1036 = select i1 %1034, i32 120, i32 121
  %1037 = trunc i32 %1036 to i8
  %1038 = load i32, ptr %14, align 4, !tbaa !9
  %1039 = sub i32 %1038, 1
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %999, i32 noundef %1002, i32 noundef %1005, i32 noundef %1008, i32 noundef 127, i32 noundef 0, i32 noundef %1023, i8 noundef signext %1037, i32 noundef %1039, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %1040

1040:                                             ; preds = %1033, %991
  %1041 = load ptr, ptr %7, align 8, !tbaa !5
  %1042 = load ptr, ptr %9, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1042, i32 0, i32 0
  %1044 = load i32, ptr %1043, align 8, !tbaa !31
  %1045 = icmp uge i32 %1044, 1051
  br i1 %1045, label %1046, label %1051

1046:                                             ; preds = %1040
  %1047 = load ptr, ptr %9, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1047, i32 0, i32 0
  %1049 = load i32, ptr %1048, align 8, !tbaa !31
  %1050 = icmp ult i32 %1049, 1101
  br label %1051

1051:                                             ; preds = %1046, %1040
  %1052 = phi i1 [ false, %1040 ], [ %1050, %1046 ]
  %1053 = zext i1 %1052 to i64
  %1054 = select i1 %1052, i32 121, i32 122
  %1055 = trunc i32 %1054 to i8
  %1056 = load i32, ptr %14, align 4, !tbaa !9
  %1057 = sub i32 %1056, 1
  %1058 = load i32, ptr %14, align 4, !tbaa !9
  %1059 = load i32, ptr %16, align 4, !tbaa !9
  %1060 = add i32 %1058, %1059
  %1061 = load i32, ptr %13, align 4, !tbaa !9
  %1062 = load i32, ptr %15, align 4, !tbaa !9
  %1063 = mul i32 %1061, %1062
  %1064 = add i32 %1060, %1063
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1041, i8 noundef signext %1055, i32 noundef %1057, i32 noundef %1064)
  br label %1065

1065:                                             ; preds = %1051
  %1066 = load i32, ptr %16, align 4, !tbaa !9
  %1067 = add i32 %1066, 1
  store i32 %1067, ptr %16, align 4, !tbaa !9
  br label %945, !llvm.loop !42

1068:                                             ; preds = %945
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load i32, ptr %15, align 4, !tbaa !9
  %1071 = add i32 %1070, 1
  store i32 %1071, ptr %15, align 4, !tbaa !9
  br label %940, !llvm.loop !43

1072:                                             ; preds = %940
  %1073 = load ptr, ptr %9, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1073, i32 0, i32 25
  %1075 = load i32, ptr %1074, align 4, !tbaa !38
  %1076 = icmp eq i32 %1075, 1
  br i1 %1076, label %1077, label %1089

1077:                                             ; preds = %1072
  %1078 = load ptr, ptr %7, align 8, !tbaa !5
  %1079 = load ptr, ptr %8, align 8, !tbaa !5
  %1080 = load ptr, ptr %9, align 8, !tbaa !5
  %1081 = load i32, ptr %14, align 4, !tbaa !9
  %1082 = load i32, ptr %13, align 4, !tbaa !9
  %1083 = load i32, ptr %12, align 4, !tbaa !9
  %1084 = load i32, ptr %11, align 4, !tbaa !9
  %1085 = load ptr, ptr %9, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1085, i32 0, i32 2
  %1087 = load i32, ptr %1086, align 8, !tbaa !15
  %1088 = urem i32 %1084, %1087
  call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %1078, ptr noundef %1079, ptr noundef %1080, i32 noundef 2, i32 noundef 1, i32 noundef %1081, i32 noundef %1082, i32 noundef %1083, i32 noundef %1088)
  br label %1089

1089:                                             ; preds = %1077, %1072
  br label %1957

1090:                                             ; preds = %933, %930, %913, %908
  %1091 = load ptr, ptr %7, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1091, i32 0, i32 6
  %1093 = load i32, ptr %1092, align 4, !tbaa !21
  %1094 = icmp uge i32 %1093, 1051
  br i1 %1094, label %1095, label %1136

1095:                                             ; preds = %1090
  %1096 = load ptr, ptr %7, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1096, i32 0, i32 6
  %1098 = load i32, ptr %1097, align 4, !tbaa !21
  %1099 = icmp ule i32 %1098, 1999
  br i1 %1099, label %1100, label %1136

1100:                                             ; preds = %1095
  %1101 = load ptr, ptr %10, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1101, i32 0, i32 8
  %1103 = getelementptr inbounds [3 x i8], ptr %1102, i64 0, i64 0
  %1104 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1103)
  %1105 = icmp eq i32 4, %1104
  br i1 %1105, label %1106, label %1112

1106:                                             ; preds = %1100
  %1107 = load ptr, ptr %10, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1107, i32 0, i32 8
  %1109 = getelementptr inbounds [3 x i8], ptr %1108, i64 0, i64 0
  %1110 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1109)
  %1111 = icmp eq i32 4, %1110
  br i1 %1111, label %1182, label %1112

1112:                                             ; preds = %1106, %1100
  %1113 = load ptr, ptr %10, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1113, i32 0, i32 8
  %1115 = getelementptr inbounds [3 x i8], ptr %1114, i64 0, i64 0
  %1116 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1115)
  %1117 = icmp eq i32 2, %1116
  br i1 %1117, label %1118, label %1124

1118:                                             ; preds = %1112
  %1119 = load ptr, ptr %10, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1119, i32 0, i32 8
  %1121 = getelementptr inbounds [3 x i8], ptr %1120, i64 0, i64 0
  %1122 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1121)
  %1123 = icmp eq i32 4, %1122
  br i1 %1123, label %1182, label %1124

1124:                                             ; preds = %1118, %1112
  %1125 = load ptr, ptr %10, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1125, i32 0, i32 8
  %1127 = getelementptr inbounds [3 x i8], ptr %1126, i64 0, i64 0
  %1128 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1127)
  %1129 = icmp eq i32 1, %1128
  br i1 %1129, label %1130, label %1136

1130:                                             ; preds = %1124
  %1131 = load ptr, ptr %10, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1131, i32 0, i32 8
  %1133 = getelementptr inbounds [3 x i8], ptr %1132, i64 0, i64 0
  %1134 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1133)
  %1135 = icmp eq i32 4, %1134
  br i1 %1135, label %1182, label %1136

1136:                                             ; preds = %1130, %1124, %1095, %1090
  %1137 = load ptr, ptr %7, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1137, i32 0, i32 6
  %1139 = load i32, ptr %1138, align 4, !tbaa !21
  %1140 = icmp uge i32 %1139, 1051
  br i1 %1140, label %1141, label %1381

1141:                                             ; preds = %1136
  %1142 = load ptr, ptr %7, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1142, i32 0, i32 6
  %1144 = load i32, ptr %1143, align 4, !tbaa !21
  %1145 = icmp ule i32 %1144, 1999
  br i1 %1145, label %1146, label %1381

1146:                                             ; preds = %1141
  %1147 = load ptr, ptr %10, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1147, i32 0, i32 8
  %1149 = getelementptr inbounds [3 x i8], ptr %1148, i64 0, i64 0
  %1150 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1149)
  %1151 = icmp eq i32 5, %1150
  br i1 %1151, label %1152, label %1158

1152:                                             ; preds = %1146
  %1153 = load ptr, ptr %10, 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_C_PREC(ptr noundef %1155)
  %1157 = icmp eq i32 5, %1156
  br i1 %1157, label %1182, label %1158

1158:                                             ; preds = %1152, %1146
  %1159 = load ptr, ptr %10, 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_AB_COMMON_PREC(ptr noundef %1161)
  %1163 = icmp eq i32 2, %1162
  br i1 %1163, label %1164, label %1170

1164:                                             ; preds = %1158
  %1165 = load ptr, ptr %10, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1165, i32 0, i32 8
  %1167 = getelementptr inbounds [3 x i8], ptr %1166, i64 0, i64 0
  %1168 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1167)
  %1169 = icmp eq i32 5, %1168
  br i1 %1169, label %1182, label %1170

1170:                                             ; preds = %1164, %1158
  %1171 = load ptr, ptr %10, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1171, i32 0, i32 8
  %1173 = getelementptr inbounds [3 x i8], ptr %1172, i64 0, i64 0
  %1174 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1173)
  %1175 = icmp eq i32 1, %1174
  br i1 %1175, label %1176, label %1381

1176:                                             ; preds = %1170
  %1177 = load ptr, ptr %10, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1177, i32 0, i32 8
  %1179 = getelementptr inbounds [3 x i8], ptr %1178, i64 0, i64 0
  %1180 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1179)
  %1181 = icmp eq i32 5, %1180
  br i1 %1181, label %1182, label %1381

1182:                                             ; preds = %1176, %1164, %1152, %1130, %1118, %1106
  %1183 = load ptr, ptr %10, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1183, i32 0, i32 8
  %1185 = getelementptr inbounds [3 x i8], ptr %1184, i64 0, i64 0
  %1186 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1185)
  %1187 = icmp eq i32 5, %1186
  br i1 %1187, label %1188, label %1193

1188:                                             ; preds = %1182
  %1189 = load ptr, ptr %7, align 8, !tbaa !5
  %1190 = load ptr, ptr %8, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1190, i32 0, i32 24
  %1192 = load i32, ptr %1191, align 4, !tbaa !44
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef %1189, i32 noundef %1192)
  br label %1193

1193:                                             ; preds = %1188, %1182
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1194

1194:                                             ; preds = %1326, %1193
  %1195 = load i32, ptr %15, align 4, !tbaa !9
  %1196 = load i32, ptr %12, align 4, !tbaa !9
  %1197 = icmp ult i32 %1195, %1196
  br i1 %1197, label %1198, label %1329

1198:                                             ; preds = %1194
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1199

1199:                                             ; preds = %1322, %1198
  %1200 = load i32, ptr %16, align 4, !tbaa !9
  %1201 = load i32, ptr %13, align 4, !tbaa !9
  %1202 = icmp ult i32 %1200, %1201
  br i1 %1202, label %1203, label %1325

1203:                                             ; preds = %1199
  %1204 = load ptr, ptr %9, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1204, i32 0, i32 11
  %1206 = load i32, ptr %1205, align 4, !tbaa !26
  %1207 = icmp ne i32 %1206, 0
  br i1 %1207, label %1208, label %1250

1208:                                             ; preds = %1203
  %1209 = load i32, ptr %16, align 4, !tbaa !9
  %1210 = load i32, ptr %13, align 4, !tbaa !9
  %1211 = sub i32 %1210, 1
  %1212 = icmp eq i32 %1209, %1211
  br i1 %1212, label %1213, label %1250

1213:                                             ; preds = %1208
  %1214 = load ptr, ptr %7, align 8, !tbaa !5
  %1215 = load ptr, ptr %7, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1215, i32 0, i32 6
  %1217 = load i32, ptr %1216, align 4, !tbaa !21
  %1218 = load ptr, ptr %8, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1218, i32 0, i32 5
  %1220 = load i32, ptr %1219, align 4, !tbaa !33
  %1221 = load i32, ptr %15, align 4, !tbaa !9
  %1222 = load ptr, ptr %10, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1222, i32 0, i32 5
  %1224 = load i32, ptr %1223, align 1, !tbaa !34
  %1225 = mul i32 %1221, %1224
  %1226 = load i32, ptr %16, align 4, !tbaa !9
  %1227 = load ptr, ptr %9, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1227, i32 0, i32 2
  %1229 = load i32, ptr %1228, align 8, !tbaa !15
  %1230 = mul i32 %1226, %1229
  %1231 = add i32 %1225, %1230
  %1232 = load ptr, ptr %9, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1232, i32 0, i32 5
  %1234 = load i32, ptr %1233, align 4, !tbaa !35
  %1235 = mul i32 %1231, %1234
  %1236 = load ptr, ptr %9, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1236, i32 0, i32 0
  %1238 = load i32, ptr %1237, align 8, !tbaa !31
  %1239 = icmp ugt i32 %1238, 1006
  br i1 %1239, label %1240, label %1245

1240:                                             ; preds = %1213
  %1241 = load ptr, ptr %9, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1241, i32 0, i32 0
  %1243 = load i32, ptr %1242, align 8, !tbaa !31
  %1244 = icmp ult i32 %1243, 1101
  br label %1245

1245:                                             ; preds = %1240, %1213
  %1246 = phi i1 [ false, %1213 ], [ %1244, %1240 ]
  %1247 = zext i1 %1246 to i64
  %1248 = select i1 %1246, i32 121, i32 122
  %1249 = trunc i32 %1248 to i8
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1214, i32 noundef %1217, i32 noundef -536406417, i32 noundef %1220, i32 noundef 127, i32 noundef 0, i32 noundef %1235, i8 noundef signext %1249, i32 noundef 0, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br label %1284

1250:                                             ; preds = %1208, %1203
  %1251 = load ptr, ptr %7, align 8, !tbaa !5
  %1252 = load ptr, ptr %7, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1252, i32 0, i32 6
  %1254 = load i32, ptr %1253, align 4, !tbaa !21
  %1255 = load ptr, ptr %7, align 8, !tbaa !5
  %1256 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1255, i32 0, i32 6
  %1257 = load i32, ptr %1256, align 4, !tbaa !21
  %1258 = icmp ult i32 %1257, 1101
  br i1 %1258, label %1259, label %1260

1259:                                             ; preds = %1250
  br label %1264

1260:                                             ; preds = %1250
  %1261 = load ptr, ptr %9, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1261, i32 0, i32 9
  %1263 = load i32, ptr %1262, align 4, !tbaa !39
  br label %1264

1264:                                             ; preds = %1260, %1259
  %1265 = phi i32 [ 545725200, %1259 ], [ %1263, %1260 ]
  %1266 = load ptr, ptr %8, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1266, i32 0, i32 5
  %1268 = load i32, ptr %1267, align 4, !tbaa !33
  %1269 = load i32, ptr %15, align 4, !tbaa !9
  %1270 = load ptr, ptr %10, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1270, i32 0, i32 5
  %1272 = load i32, ptr %1271, align 1, !tbaa !34
  %1273 = mul i32 %1269, %1272
  %1274 = load i32, ptr %16, align 4, !tbaa !9
  %1275 = load ptr, ptr %9, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1275, i32 0, i32 2
  %1277 = load i32, ptr %1276, align 8, !tbaa !15
  %1278 = mul i32 %1274, %1277
  %1279 = add i32 %1273, %1278
  %1280 = load ptr, ptr %9, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1280, i32 0, i32 5
  %1282 = load i32, ptr %1281, align 4, !tbaa !35
  %1283 = mul i32 %1279, %1282
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1251, i32 noundef %1254, i32 noundef %1265, i32 noundef %1268, i32 noundef 127, i32 noundef 0, i32 noundef %1283, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %1284

1284:                                             ; preds = %1264, %1245
  %1285 = load ptr, ptr %10, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1285, i32 0, i32 8
  %1287 = getelementptr inbounds [3 x i8], ptr %1286, i64 0, i64 0
  %1288 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1287)
  %1289 = icmp eq i32 4, %1288
  br i1 %1289, label %1290, label %1302

1290:                                             ; preds = %1284
  %1291 = load ptr, ptr %7, align 8, !tbaa !5
  %1292 = load ptr, ptr %9, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1292, i32 0, i32 21
  %1294 = load i8, ptr %1293, align 4, !tbaa !23
  %1295 = load i32, ptr %14, align 4, !tbaa !9
  %1296 = load i32, ptr %16, align 4, !tbaa !9
  %1297 = add i32 %1295, %1296
  %1298 = load i32, ptr %13, align 4, !tbaa !9
  %1299 = load i32, ptr %15, align 4, !tbaa !9
  %1300 = mul i32 %1298, %1299
  %1301 = add i32 %1297, %1300
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1291, i8 noundef signext %1294, i32 noundef 0, i32 noundef %1301)
  br label %1321

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

1308:                                             ; preds = %1302
  %1309 = load ptr, ptr %7, align 8, !tbaa !5
  %1310 = load ptr, ptr %9, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1310, i32 0, i32 21
  %1312 = load i8, ptr %1311, align 4, !tbaa !23
  %1313 = load i32, ptr %14, align 4, !tbaa !9
  %1314 = load i32, ptr %16, align 4, !tbaa !9
  %1315 = add i32 %1313, %1314
  %1316 = load i32, ptr %13, align 4, !tbaa !9
  %1317 = load i32, ptr %15, align 4, !tbaa !9
  %1318 = mul i32 %1316, %1317
  %1319 = add i32 %1315, %1318
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1309, i8 noundef signext %1312, i32 noundef 0, i32 noundef %1319, i32 noundef 1, i32 noundef 2, i32 noundef 6, i32 noundef 7)
  br label %1320

1320:                                             ; preds = %1308, %1302
  br label %1321

1321:                                             ; preds = %1320, %1290
  br label %1322

1322:                                             ; preds = %1321
  %1323 = load i32, ptr %16, align 4, !tbaa !9
  %1324 = add i32 %1323, 1
  store i32 %1324, ptr %16, align 4, !tbaa !9
  br label %1199, !llvm.loop !45

1325:                                             ; preds = %1199
  br label %1326

1326:                                             ; preds = %1325
  %1327 = load i32, ptr %15, align 4, !tbaa !9
  %1328 = add i32 %1327, 1
  store i32 %1328, ptr %15, align 4, !tbaa !9
  br label %1194, !llvm.loop !46

1329:                                             ; preds = %1194
  %1330 = load ptr, ptr %10, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1330, i32 0, i32 8
  %1332 = getelementptr inbounds [3 x i8], ptr %1331, i64 0, i64 0
  %1333 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1332)
  %1334 = icmp eq i32 5, %1333
  br i1 %1334, label %1340, label %1335

1335:                                             ; preds = %1329
  %1336 = load ptr, ptr %9, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1336, i32 0, i32 28
  %1338 = load i32, ptr %1337, align 8, !tbaa !47
  %1339 = icmp eq i32 %1338, 1
  br i1 %1339, label %1340, label %1345

1340:                                             ; preds = %1335, %1329
  %1341 = load ptr, ptr %7, align 8, !tbaa !5
  %1342 = load ptr, ptr %8, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1342, i32 0, i32 24
  %1344 = load i32, ptr %1343, align 4, !tbaa !44
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef %1341, i32 noundef %1344)
  br label %1345

1345:                                             ; preds = %1340, %1335
  %1346 = load ptr, ptr %9, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1346, i32 0, i32 27
  %1348 = load i32, ptr %1347, align 4, !tbaa !48
  %1349 = icmp eq i32 %1348, 1
  br i1 %1349, label %1350, label %1362

1350:                                             ; preds = %1345
  %1351 = load ptr, ptr %7, align 8, !tbaa !5
  %1352 = load ptr, ptr %8, align 8, !tbaa !5
  %1353 = load ptr, ptr %9, align 8, !tbaa !5
  %1354 = load i32, ptr %14, align 4, !tbaa !9
  %1355 = load i32, ptr %13, align 4, !tbaa !9
  %1356 = load i32, ptr %12, align 4, !tbaa !9
  %1357 = load i32, ptr %11, align 4, !tbaa !9
  %1358 = load ptr, ptr %9, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1358, i32 0, i32 2
  %1360 = load i32, ptr %1359, align 8, !tbaa !15
  %1361 = urem i32 %1357, %1360
  call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %1351, ptr noundef %1352, ptr noundef %1353, i32 noundef 4, i32 noundef 1, i32 noundef %1354, i32 noundef %1355, i32 noundef %1356, i32 noundef %1361)
  br label %1380

1362:                                             ; preds = %1345
  %1363 = load ptr, ptr %9, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1363, i32 0, i32 28
  %1365 = load i32, ptr %1364, align 8, !tbaa !47
  %1366 = icmp eq i32 %1365, 1
  br i1 %1366, label %1367, label %1379

1367:                                             ; preds = %1362
  %1368 = load ptr, ptr %7, align 8, !tbaa !5
  %1369 = load ptr, ptr %8, align 8, !tbaa !5
  %1370 = load ptr, ptr %9, align 8, !tbaa !5
  %1371 = load i32, ptr %14, align 4, !tbaa !9
  %1372 = load i32, ptr %13, align 4, !tbaa !9
  %1373 = load i32, ptr %12, align 4, !tbaa !9
  %1374 = load i32, ptr %11, align 4, !tbaa !9
  %1375 = load ptr, ptr %9, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1375, i32 0, i32 2
  %1377 = load i32, ptr %1376, align 8, !tbaa !15
  %1378 = urem i32 %1374, %1377
  call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %1368, ptr noundef %1369, ptr noundef %1370, i32 noundef 5, i32 noundef 1, i32 noundef %1371, i32 noundef %1372, i32 noundef %1373, i32 noundef %1378)
  br label %1379

1379:                                             ; preds = %1367, %1362
  br label %1380

1380:                                             ; preds = %1379, %1350
  br label %1956

1381:                                             ; preds = %1176, %1170, %1141, %1136
  %1382 = load ptr, ptr %10, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1382, i32 0, i32 8
  %1384 = getelementptr inbounds [3 x i8], ptr %1383, i64 0, i64 0
  %1385 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1384)
  %1386 = icmp eq i32 12, %1385
  br i1 %1386, label %1387, label %1489

1387:                                             ; preds = %1381
  %1388 = load ptr, ptr %10, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1388, i32 0, i32 8
  %1390 = getelementptr inbounds [3 x i8], ptr %1389, i64 0, i64 0
  %1391 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1390)
  %1392 = icmp eq i32 1, %1391
  br i1 %1392, label %1393, label %1489

1393:                                             ; preds = %1387
  %1394 = load i32, ptr %21, align 4, !tbaa !9
  %1395 = icmp eq i32 %1394, 0
  br i1 %1395, label %1396, label %1489

1396:                                             ; preds = %1393
  %1397 = load ptr, ptr %9, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1397, i32 0, i32 29
  %1399 = load i32, ptr %1398, align 4, !tbaa !49
  %1400 = icmp eq i32 %1399, 1
  br i1 %1400, label %1401, label %1413

1401:                                             ; preds = %1396
  %1402 = load ptr, ptr %7, align 8, !tbaa !5
  %1403 = load ptr, ptr %8, align 8, !tbaa !5
  %1404 = load ptr, ptr %9, align 8, !tbaa !5
  %1405 = load i32, ptr %14, align 4, !tbaa !9
  %1406 = load i32, ptr %13, align 4, !tbaa !9
  %1407 = load i32, ptr %12, align 4, !tbaa !9
  %1408 = load i32, ptr %11, align 4, !tbaa !9
  %1409 = load ptr, ptr %9, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1409, i32 0, i32 2
  %1411 = load i32, ptr %1410, align 8, !tbaa !15
  %1412 = urem i32 %1408, %1411
  call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %1402, ptr noundef %1403, ptr noundef %1404, i32 noundef 1, i32 noundef 1, i32 noundef %1405, i32 noundef %1406, i32 noundef %1407, i32 noundef %1412)
  br label %1488

1413:                                             ; preds = %1396
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1414

1414:                                             ; preds = %1484, %1413
  %1415 = load i32, ptr %15, align 4, !tbaa !9
  %1416 = load i32, ptr %12, align 4, !tbaa !9
  %1417 = icmp ult i32 %1415, %1416
  br i1 %1417, label %1418, label %1487

1418:                                             ; preds = %1414
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1419

1419:                                             ; preds = %1480, %1418
  %1420 = load i32, ptr %16, align 4, !tbaa !9
  %1421 = load i32, ptr %13, align 4, !tbaa !9
  %1422 = icmp ult i32 %1420, %1421
  br i1 %1422, label %1423, label %1483

1423:                                             ; preds = %1419
  %1424 = load ptr, ptr %7, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1424, i32 0, i32 6
  %1426 = load i32, ptr %1425, align 4, !tbaa !21
  %1427 = icmp uge i32 %1426, 1005
  br i1 %1427, label %1428, label %1457

1428:                                             ; preds = %1423
  %1429 = load ptr, ptr %7, align 8, !tbaa !5
  %1430 = load ptr, ptr %9, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1430, i32 0, i32 13
  %1432 = load i32, ptr %1431, align 4, !tbaa !50
  %1433 = load ptr, ptr %9, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1433, i32 0, i32 21
  %1435 = load i8, ptr %1434, align 4, !tbaa !23
  %1436 = load i32, ptr %14, align 4, !tbaa !9
  %1437 = load i32, ptr %16, align 4, !tbaa !9
  %1438 = add i32 %1436, %1437
  %1439 = load i32, ptr %13, align 4, !tbaa !9
  %1440 = load i32, ptr %15, align 4, !tbaa !9
  %1441 = mul i32 %1439, %1440
  %1442 = add i32 %1438, %1441
  %1443 = load i32, ptr %14, align 4, !tbaa !9
  %1444 = load i32, ptr %16, align 4, !tbaa !9
  %1445 = add i32 %1443, %1444
  %1446 = load i32, ptr %13, align 4, !tbaa !9
  %1447 = load i32, ptr %15, align 4, !tbaa !9
  %1448 = mul i32 %1446, %1447
  %1449 = add i32 %1445, %1448
  %1450 = load i32, ptr %14, align 4, !tbaa !9
  %1451 = load i32, ptr %16, align 4, !tbaa !9
  %1452 = add i32 %1450, %1451
  %1453 = load i32, ptr %13, align 4, !tbaa !9
  %1454 = load i32, ptr %15, align 4, !tbaa !9
  %1455 = mul i32 %1453, %1454
  %1456 = add i32 %1452, %1455
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1429, i32 noundef %1432, i8 noundef signext %1435, i32 noundef %1442, i32 noundef %1449, i32 noundef %1456)
  br label %1479

1457:                                             ; preds = %1423
  %1458 = load ptr, ptr %7, align 8, !tbaa !5
  %1459 = load ptr, ptr %9, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1459, i32 0, i32 13
  %1461 = load i32, ptr %1460, align 4, !tbaa !50
  %1462 = load ptr, ptr %9, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1462, i32 0, i32 21
  %1464 = load i8, ptr %1463, align 4, !tbaa !23
  %1465 = load i32, ptr %14, align 4, !tbaa !9
  %1466 = load i32, ptr %16, align 4, !tbaa !9
  %1467 = add i32 %1465, %1466
  %1468 = load i32, ptr %13, align 4, !tbaa !9
  %1469 = load i32, ptr %15, align 4, !tbaa !9
  %1470 = mul i32 %1468, %1469
  %1471 = add i32 %1467, %1470
  %1472 = load i32, ptr %14, align 4, !tbaa !9
  %1473 = load i32, ptr %16, align 4, !tbaa !9
  %1474 = add i32 %1472, %1473
  %1475 = load i32, ptr %13, align 4, !tbaa !9
  %1476 = load i32, ptr %15, align 4, !tbaa !9
  %1477 = mul i32 %1475, %1476
  %1478 = add i32 %1474, %1477
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1458, i32 noundef %1461, i8 noundef signext %1464, i32 noundef %1471, i32 noundef %1478)
  br label %1479

1479:                                             ; preds = %1457, %1428
  br label %1480

1480:                                             ; preds = %1479
  %1481 = load i32, ptr %16, align 4, !tbaa !9
  %1482 = add i32 %1481, 1
  store i32 %1482, ptr %16, align 4, !tbaa !9
  br label %1419, !llvm.loop !51

1483:                                             ; preds = %1419
  br label %1484

1484:                                             ; preds = %1483
  %1485 = load i32, ptr %15, align 4, !tbaa !9
  %1486 = add i32 %1485, 1
  store i32 %1486, ptr %15, align 4, !tbaa !9
  br label %1414, !llvm.loop !52

1487:                                             ; preds = %1414
  br label %1488

1488:                                             ; preds = %1487, %1401
  br label %1955

1489:                                             ; preds = %1393, %1387, %1381
  %1490 = load ptr, ptr %9, align 8, !tbaa !5
  %1491 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1490, i32 0, i32 0
  %1492 = load i32, ptr %1491, align 8, !tbaa !31
  %1493 = icmp uge i32 %1492, 1005
  br i1 %1493, label %1494, label %1529

1494:                                             ; preds = %1489
  %1495 = load ptr, ptr %9, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1495, i32 0, i32 0
  %1497 = load i32, ptr %1496, align 8, !tbaa !31
  %1498 = icmp ult i32 %1497, 1051
  br i1 %1498, label %1499, label %1529

1499:                                             ; preds = %1494
  %1500 = load ptr, ptr %9, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1500, i32 0, i32 11
  %1502 = load i32, ptr %1501, align 4, !tbaa !26
  %1503 = icmp ne i32 %1502, 0
  br i1 %1503, label %1504, label %1529

1504:                                             ; preds = %1499
  %1505 = load ptr, ptr %7, align 8, !tbaa !5
  %1506 = load ptr, ptr %9, align 8, !tbaa !5
  %1507 = load ptr, ptr %8, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1507, i32 0, i32 23
  %1509 = load i32, ptr %1508, align 4, !tbaa !53
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1505, ptr noundef %1506, i32 noundef 22, i32 noundef %1509)
  %1510 = load ptr, ptr %7, align 8, !tbaa !5
  %1511 = load ptr, ptr %9, align 8, !tbaa !5
  %1512 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1511, i32 0, i32 0
  %1513 = load i32, ptr %1512, align 8, !tbaa !31
  %1514 = load ptr, ptr %8, align 8, !tbaa !5
  %1515 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1514, i32 0, i32 23
  %1516 = load i32, ptr %1515, align 4, !tbaa !53
  %1517 = load i32, ptr %19, align 4, !tbaa !9
  %1518 = icmp ugt i32 %1517, 0
  br i1 %1518, label %1525, label %1519

1519:                                             ; preds = %1504
  %1520 = load i32, ptr %20, align 4, !tbaa !9
  %1521 = icmp ugt i32 %1520, 0
  br i1 %1521, label %1525, label %1522

1522:                                             ; preds = %1519
  %1523 = load i32, ptr %21, align 4, !tbaa !9
  %1524 = icmp ugt i32 %1523, 0
  br label %1525

1525:                                             ; preds = %1522, %1519, %1504
  %1526 = phi i1 [ true, %1519 ], [ true, %1504 ], [ %1524, %1522 ]
  %1527 = zext i1 %1526 to i64
  %1528 = select i1 %1526, i32 2, i32 1
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1510, i32 noundef %1513, i32 noundef 537138704, i32 noundef %1516, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef %1528, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  br label %1529

1529:                                             ; preds = %1525, %1499, %1494, %1489
  %1530 = load ptr, ptr %10, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1530, i32 0, i32 8
  %1532 = getelementptr inbounds [3 x i8], ptr %1531, i64 0, i64 0
  %1533 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1532)
  %1534 = icmp eq i32 1, %1533
  br i1 %1534, label %1535, label %1713

1535:                                             ; preds = %1529
  %1536 = load ptr, ptr %10, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1536, i32 0, i32 8
  %1538 = getelementptr inbounds [3 x i8], ptr %1537, i64 0, i64 0
  %1539 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1538)
  %1540 = icmp eq i32 3, %1539
  br i1 %1540, label %1541, label %1713

1541:                                             ; preds = %1535
  %1542 = load ptr, ptr %7, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1542, i32 0, i32 6
  %1544 = load i32, ptr %1543, align 4, !tbaa !21
  %1545 = icmp uge i32 %1544, 1104
  br i1 %1545, label %1546, label %1713

1546:                                             ; preds = %1541
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1547

1547:                                             ; preds = %1709, %1546
  %1548 = load i32, ptr %15, align 4, !tbaa !9
  %1549 = load i32, ptr %12, align 4, !tbaa !9
  %1550 = icmp ult i32 %1548, %1549
  br i1 %1550, label %1551, label %1712

1551:                                             ; preds = %1547
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1552

1552:                                             ; preds = %1705, %1551
  %1553 = load i32, ptr %16, align 4, !tbaa !9
  %1554 = load i32, ptr %13, align 4, !tbaa !9
  %1555 = icmp ult i32 %1553, %1554
  br i1 %1555, label %1556, label %1708

1556:                                             ; preds = %1552
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %1557 = load i32, ptr %14, align 4, !tbaa !9
  %1558 = sub i32 %1557, 1
  store i32 %1558, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  %1559 = load i32, ptr %14, align 4, !tbaa !9
  %1560 = load i32, ptr %16, align 4, !tbaa !9
  %1561 = add i32 %1559, %1560
  %1562 = load i32, ptr %13, align 4, !tbaa !9
  %1563 = load i32, ptr %15, align 4, !tbaa !9
  %1564 = mul i32 %1562, %1563
  %1565 = add i32 %1561, %1564
  store i32 %1565, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #4
  %1566 = load ptr, ptr %9, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1566, i32 0, i32 21
  %1568 = load i8, ptr %1567, align 4, !tbaa !23
  %1569 = sext i8 %1568 to i32
  %1570 = icmp eq i32 %1569, 121
  br i1 %1570, label %1571, label %1572

1571:                                             ; preds = %1556
  br label %1586

1572:                                             ; preds = %1556
  %1573 = load ptr, ptr %9, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1573, i32 0, i32 21
  %1575 = load i8, ptr %1574, align 4, !tbaa !23
  %1576 = sext i8 %1575 to i32
  %1577 = icmp eq i32 %1576, 120
  br i1 %1577, label %1578, label %1579

1578:                                             ; preds = %1572
  br label %1584

1579:                                             ; preds = %1572
  %1580 = load ptr, ptr %9, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1580, i32 0, i32 21
  %1582 = load i8, ptr %1581, align 4, !tbaa !23
  %1583 = sext i8 %1582 to i32
  br label %1584

1584:                                             ; preds = %1579, %1578
  %1585 = phi i32 [ 121, %1578 ], [ %1583, %1579 ]
  br label %1586

1586:                                             ; preds = %1584, %1571
  %1587 = phi i32 [ 122, %1571 ], [ %1585, %1584 ]
  %1588 = trunc i32 %1587 to i8
  store i8 %1588, ptr %38, align 1, !tbaa !24
  %1589 = load ptr, ptr %7, align 8, !tbaa !5
  %1590 = load ptr, ptr %9, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1590, i32 0, i32 9
  %1592 = load i32, ptr %1591, align 4, !tbaa !39
  %1593 = load ptr, ptr %8, align 8, !tbaa !5
  %1594 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1593, i32 0, i32 5
  %1595 = load i32, ptr %1594, align 4, !tbaa !33
  %1596 = load i32, ptr %15, align 4, !tbaa !9
  %1597 = load ptr, ptr %10, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1597, i32 0, i32 5
  %1599 = load i32, ptr %1598, align 1, !tbaa !34
  %1600 = mul i32 %1596, %1599
  %1601 = load i32, ptr %16, align 4, !tbaa !9
  %1602 = load ptr, ptr %9, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1602, i32 0, i32 2
  %1604 = load i32, ptr %1603, align 8, !tbaa !15
  %1605 = mul i32 %1601, %1604
  %1606 = add i32 %1600, %1605
  %1607 = load ptr, ptr %9, align 8, !tbaa !5
  %1608 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1607, i32 0, i32 5
  %1609 = load i32, ptr %1608, align 4, !tbaa !35
  %1610 = mul i32 %1606, %1609
  %1611 = load ptr, ptr %9, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1611, i32 0, i32 21
  %1613 = load i8, ptr %1612, align 4, !tbaa !23
  %1614 = load i32, ptr %37, align 4, !tbaa !9
  %1615 = load i32, ptr %16, align 4, !tbaa !9
  %1616 = load i32, ptr %13, align 4, !tbaa !9
  %1617 = sub i32 %1616, 1
  %1618 = icmp eq i32 %1615, %1617
  br i1 %1618, label %1619, label %1623

1619:                                             ; preds = %1586
  %1620 = load ptr, ptr %9, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1620, i32 0, i32 11
  %1622 = load i32, ptr %1621, align 4, !tbaa !26
  br label %1624

1623:                                             ; preds = %1586
  br label %1624

1624:                                             ; preds = %1623, %1619
  %1625 = phi i32 [ %1622, %1619 ], [ 0, %1623 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1589, i32 noundef %1592, i32 noundef %1595, i32 noundef 127, i32 noundef 0, i32 noundef %1610, i8 noundef signext %1613, i32 noundef %1614, i32 noundef %1625, i32 noundef 2, i32 noundef 0)
  %1626 = load ptr, ptr %7, align 8, !tbaa !5
  %1627 = load i8, ptr %38, align 1, !tbaa !24
  %1628 = load i32, ptr %37, align 4, !tbaa !9
  %1629 = load i32, ptr %37, align 4, !tbaa !9
  %1630 = load ptr, ptr %7, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1630, i32 0, i32 6
  %1632 = load i32, ptr %1631, align 4, !tbaa !21
  %1633 = icmp ult i32 %1632, 1101
  %1634 = zext i1 %1633 to i64
  %1635 = select i1 %1633, i32 0, i32 1
  %1636 = load ptr, ptr %7, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1636, i32 0, i32 6
  %1638 = load i32, ptr %1637, align 4, !tbaa !21
  %1639 = icmp ult i32 %1638, 1101
  %1640 = zext i1 %1639 to i64
  %1641 = select i1 %1639, i32 0, i32 1
  %1642 = trunc i32 %1641 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %1626, i32 noundef 671954205, i8 noundef signext %1627, i32 noundef %1628, i32 noundef %1629, i32 noundef 0, i32 noundef %1635, i8 noundef zeroext %1642, i32 noundef 0)
  %1643 = load ptr, ptr %7, align 8, !tbaa !5
  %1644 = load ptr, ptr %9, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1644, i32 0, i32 9
  %1646 = load i32, ptr %1645, align 4, !tbaa !39
  %1647 = load ptr, ptr %8, align 8, !tbaa !5
  %1648 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1647, i32 0, i32 5
  %1649 = load i32, ptr %1648, align 4, !tbaa !33
  %1650 = load i32, ptr %15, align 4, !tbaa !9
  %1651 = load ptr, ptr %10, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1651, i32 0, i32 5
  %1653 = load i32, ptr %1652, align 1, !tbaa !34
  %1654 = mul i32 %1650, %1653
  %1655 = load i32, ptr %16, align 4, !tbaa !9
  %1656 = mul i32 2, %1655
  %1657 = add i32 %1656, 1
  %1658 = load ptr, ptr %9, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1658, i32 0, i32 2
  %1660 = load i32, ptr %1659, align 8, !tbaa !15
  %1661 = udiv i32 %1660, 2
  %1662 = mul i32 %1657, %1661
  %1663 = add i32 %1654, %1662
  %1664 = load ptr, ptr %9, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1664, i32 0, i32 5
  %1666 = load i32, ptr %1665, align 4, !tbaa !35
  %1667 = mul i32 %1663, %1666
  %1668 = load ptr, ptr %9, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1668, i32 0, i32 21
  %1670 = load i8, ptr %1669, align 4, !tbaa !23
  %1671 = load i32, ptr %36, align 4, !tbaa !9
  %1672 = load i32, ptr %16, align 4, !tbaa !9
  %1673 = load i32, ptr %13, align 4, !tbaa !9
  %1674 = sub i32 %1673, 1
  %1675 = icmp eq i32 %1672, %1674
  br i1 %1675, label %1676, label %1680

1676:                                             ; preds = %1624
  %1677 = load ptr, ptr %9, align 8, !tbaa !5
  %1678 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1677, i32 0, i32 11
  %1679 = load i32, ptr %1678, align 4, !tbaa !26
  br label %1681

1680:                                             ; preds = %1624
  br label %1681

1681:                                             ; preds = %1680, %1676
  %1682 = phi i32 [ %1679, %1676 ], [ 0, %1680 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1643, i32 noundef %1646, i32 noundef %1649, i32 noundef 127, i32 noundef 0, i32 noundef %1667, i8 noundef signext %1670, i32 noundef %1671, i32 noundef %1682, i32 noundef 3, i32 noundef 0)
  %1683 = load ptr, ptr %7, align 8, !tbaa !5
  %1684 = load i8, ptr %38, align 1, !tbaa !24
  %1685 = load i32, ptr %36, align 4, !tbaa !9
  %1686 = load i32, ptr %36, align 4, !tbaa !9
  %1687 = load ptr, ptr %7, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1687, i32 0, i32 6
  %1689 = load i32, ptr %1688, align 4, !tbaa !21
  %1690 = icmp ult i32 %1689, 1101
  %1691 = zext i1 %1690 to i64
  %1692 = select i1 %1690, i32 0, i32 1
  %1693 = load ptr, ptr %7, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1693, i32 0, i32 6
  %1695 = load i32, ptr %1694, align 4, !tbaa !21
  %1696 = icmp ult i32 %1695, 1101
  %1697 = zext i1 %1696 to i64
  %1698 = select i1 %1696, i32 0, i32 1
  %1699 = trunc i32 %1698 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %1683, i32 noundef 671954205, i8 noundef signext %1684, i32 noundef %1685, i32 noundef %1686, i32 noundef 0, i32 noundef %1692, i8 noundef zeroext %1699, i32 noundef 0)
  %1700 = load ptr, ptr %7, align 8, !tbaa !5
  %1701 = load i8, ptr %38, align 1, !tbaa !24
  %1702 = load i32, ptr %36, align 4, !tbaa !9
  %1703 = load i32, ptr %37, align 4, !tbaa !9
  %1704 = load i32, ptr %37, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1700, i32 noundef -259179206, i8 noundef signext %1701, i32 noundef %1702, i32 noundef %1703, i32 noundef %1704, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  br label %1705

1705:                                             ; preds = %1681
  %1706 = load i32, ptr %16, align 4, !tbaa !9
  %1707 = add i32 %1706, 1
  store i32 %1707, ptr %16, align 4, !tbaa !9
  br label %1552, !llvm.loop !54

1708:                                             ; preds = %1552
  br label %1709

1709:                                             ; preds = %1708
  %1710 = load i32, ptr %15, align 4, !tbaa !9
  %1711 = add i32 %1710, 1
  store i32 %1711, ptr %15, align 4, !tbaa !9
  br label %1547, !llvm.loop !55

1712:                                             ; preds = %1547
  br label %1913

1713:                                             ; preds = %1541, %1535, %1529
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1714

1714:                                             ; preds = %1909, %1713
  %1715 = load i32, ptr %15, align 4, !tbaa !9
  %1716 = load i32, ptr %12, align 4, !tbaa !9
  %1717 = icmp ult i32 %1715, %1716
  br i1 %1717, label %1718, label %1912

1718:                                             ; preds = %1714
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1719

1719:                                             ; preds = %1905, %1718
  %1720 = load i32, ptr %16, align 4, !tbaa !9
  %1721 = load i32, ptr %13, align 4, !tbaa !9
  %1722 = icmp ult i32 %1720, %1721
  br i1 %1722, label %1723, label %1908

1723:                                             ; preds = %1719
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #4
  %1724 = load ptr, ptr %9, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1724, i32 0, i32 21
  %1726 = load i8, ptr %1725, align 4, !tbaa !23
  store i8 %1726, ptr %39, align 1, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %1727 = load ptr, ptr %9, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1727, i32 0, i32 0
  %1729 = load i32, ptr %1728, align 8, !tbaa !31
  %1730 = icmp uge i32 %1729, 1005
  br i1 %1730, label %1731, label %1744

1731:                                             ; preds = %1723
  %1732 = load i32, ptr %19, align 4, !tbaa !9
  %1733 = icmp ugt i32 %1732, 0
  br i1 %1733, label %1740, label %1734

1734:                                             ; preds = %1731
  %1735 = load i32, ptr %20, align 4, !tbaa !9
  %1736 = icmp ugt i32 %1735, 0
  br i1 %1736, label %1740, label %1737

1737:                                             ; preds = %1734
  %1738 = load i32, ptr %21, align 4, !tbaa !9
  %1739 = icmp ugt i32 %1738, 0
  br label %1740

1740:                                             ; preds = %1737, %1734, %1731
  %1741 = phi i1 [ true, %1734 ], [ true, %1731 ], [ %1739, %1737 ]
  %1742 = zext i1 %1741 to i64
  %1743 = select i1 %1741, i32 2, i32 1
  br label %1750

1744:                                             ; preds = %1723
  %1745 = load i32, ptr %11, align 4, !tbaa !9
  %1746 = load ptr, ptr %9, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1746, i32 0, i32 2
  %1748 = load i32, ptr %1747, align 8, !tbaa !15
  %1749 = urem i32 %1745, %1748
  br label %1750

1750:                                             ; preds = %1744, %1740
  %1751 = phi i32 [ %1743, %1740 ], [ %1749, %1744 ]
  store i32 %1751, ptr %40, align 4, !tbaa !9
  %1752 = load ptr, ptr %10, align 8, !tbaa !5
  %1753 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1752, i32 0, i32 8
  %1754 = getelementptr inbounds [3 x i8], ptr %1753, i64 0, i64 0
  %1755 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1754)
  %1756 = icmp eq i32 1, %1755
  br i1 %1756, label %1757, label %1763

1757:                                             ; preds = %1750
  %1758 = load ptr, ptr %10, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1758, i32 0, i32 8
  %1760 = getelementptr inbounds [3 x i8], ptr %1759, i64 0, i64 0
  %1761 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1760)
  %1762 = icmp eq i32 3, %1761
  br i1 %1762, label %1780, label %1763

1763:                                             ; preds = %1757, %1750
  %1764 = load ptr, ptr %10, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1764, i32 0, i32 8
  %1766 = getelementptr inbounds [3 x i8], ptr %1765, i64 0, i64 0
  %1767 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1766)
  %1768 = icmp eq i32 3, %1767
  br i1 %1768, label %1769, label %1787

1769:                                             ; preds = %1763
  %1770 = load ptr, ptr %10, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1770, i32 0, i32 8
  %1772 = getelementptr inbounds [3 x i8], ptr %1771, i64 0, i64 0
  %1773 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1772)
  %1774 = icmp eq i32 3, %1773
  br i1 %1774, label %1775, label %1787

1775:                                             ; preds = %1769
  %1776 = load ptr, ptr %7, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1776, i32 0, i32 6
  %1778 = load i32, ptr %1777, align 4, !tbaa !21
  %1779 = icmp ult i32 %1778, 1104
  br i1 %1779, label %1780, label %1787

1780:                                             ; preds = %1775, %1757
  %1781 = load i8, ptr %39, align 1, !tbaa !24
  %1782 = sext i8 %1781 to i32
  %1783 = icmp eq i32 %1782, 122
  %1784 = zext i1 %1783 to i64
  %1785 = select i1 %1783, i32 121, i32 120
  %1786 = trunc i32 %1785 to i8
  store i8 %1786, ptr %39, align 1, !tbaa !24
  br label %1787

1787:                                             ; preds = %1780, %1775, %1769, %1763
  %1788 = load ptr, ptr %7, align 8, !tbaa !5
  %1789 = load ptr, ptr %9, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1789, i32 0, i32 9
  %1791 = load i32, ptr %1790, align 4, !tbaa !39
  %1792 = load ptr, ptr %8, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1792, i32 0, i32 5
  %1794 = load i32, ptr %1793, align 4, !tbaa !33
  %1795 = load i32, ptr %15, align 4, !tbaa !9
  %1796 = load ptr, ptr %10, align 8, !tbaa !5
  %1797 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1796, i32 0, i32 5
  %1798 = load i32, ptr %1797, align 1, !tbaa !34
  %1799 = mul i32 %1795, %1798
  %1800 = load i32, ptr %16, align 4, !tbaa !9
  %1801 = load ptr, ptr %9, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1801, i32 0, i32 2
  %1803 = load i32, ptr %1802, align 8, !tbaa !15
  %1804 = mul i32 %1800, %1803
  %1805 = add i32 %1799, %1804
  %1806 = load ptr, ptr %9, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1806, i32 0, i32 5
  %1808 = load i32, ptr %1807, align 4, !tbaa !35
  %1809 = mul i32 %1805, %1808
  %1810 = load i8, ptr %39, align 1, !tbaa !24
  %1811 = load i32, ptr %14, align 4, !tbaa !9
  %1812 = load i32, ptr %16, align 4, !tbaa !9
  %1813 = add i32 %1811, %1812
  %1814 = load i32, ptr %13, align 4, !tbaa !9
  %1815 = load i32, ptr %15, align 4, !tbaa !9
  %1816 = mul i32 %1814, %1815
  %1817 = add i32 %1813, %1816
  %1818 = load i32, ptr %16, align 4, !tbaa !9
  %1819 = load i32, ptr %13, align 4, !tbaa !9
  %1820 = sub i32 %1819, 1
  %1821 = icmp eq i32 %1818, %1820
  br i1 %1821, label %1822, label %1826

1822:                                             ; preds = %1787
  %1823 = load ptr, ptr %9, align 8, !tbaa !5
  %1824 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1823, i32 0, i32 11
  %1825 = load i32, ptr %1824, align 4, !tbaa !26
  br label %1827

1826:                                             ; preds = %1787
  br label %1827

1827:                                             ; preds = %1826, %1822
  %1828 = phi i32 [ %1825, %1822 ], [ 0, %1826 ]
  %1829 = load i32, ptr %40, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1788, i32 noundef %1791, i32 noundef %1794, i32 noundef 127, i32 noundef 0, i32 noundef %1809, i8 noundef signext %1810, i32 noundef %1817, i32 noundef %1828, i32 noundef %1829, i32 noundef 0)
  %1830 = load ptr, ptr %10, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1830, i32 0, i32 8
  %1832 = getelementptr inbounds [3 x i8], ptr %1831, i64 0, i64 0
  %1833 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1832)
  %1834 = icmp eq i32 3, %1833
  br i1 %1834, label %1835, label %1860

1835:                                             ; preds = %1827
  %1836 = load ptr, ptr %10, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1836, i32 0, i32 8
  %1838 = getelementptr inbounds [3 x i8], ptr %1837, i64 0, i64 0
  %1839 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1838)
  %1840 = icmp eq i32 1, %1839
  br i1 %1840, label %1841, label %1860

1841:                                             ; preds = %1835
  %1842 = load ptr, ptr %7, align 8, !tbaa !5
  %1843 = load ptr, ptr %9, align 8, !tbaa !5
  %1844 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1843, i32 0, i32 21
  %1845 = load i8, ptr %1844, align 4, !tbaa !23
  %1846 = load i32, ptr %14, align 4, !tbaa !9
  %1847 = load i32, ptr %16, align 4, !tbaa !9
  %1848 = add i32 %1846, %1847
  %1849 = load i32, ptr %13, align 4, !tbaa !9
  %1850 = load i32, ptr %15, align 4, !tbaa !9
  %1851 = mul i32 %1849, %1850
  %1852 = add i32 %1848, %1851
  %1853 = load i32, ptr %14, align 4, !tbaa !9
  %1854 = load i32, ptr %16, align 4, !tbaa !9
  %1855 = add i32 %1853, %1854
  %1856 = load i32, ptr %13, align 4, !tbaa !9
  %1857 = load i32, ptr %15, align 4, !tbaa !9
  %1858 = mul i32 %1856, %1857
  %1859 = add i32 %1855, %1858
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1842, i32 noundef 537208083, i8 noundef signext %1845, i32 noundef %1852, i32 noundef %1859)
  br label %1860

1860:                                             ; preds = %1841, %1835, %1827
  %1861 = load ptr, ptr %10, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1861, i32 0, i32 8
  %1863 = getelementptr inbounds [3 x i8], ptr %1862, i64 0, i64 0
  %1864 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1863)
  %1865 = icmp eq i32 1, %1864
  br i1 %1865, label %1866, label %1904

1866:                                             ; preds = %1860
  %1867 = load ptr, ptr %10, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1867, i32 0, i32 8
  %1869 = getelementptr inbounds [3 x i8], ptr %1868, i64 0, i64 0
  %1870 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1869)
  %1871 = icmp eq i32 3, %1870
  br i1 %1871, label %1872, label %1904

1872:                                             ; preds = %1866
  %1873 = load ptr, ptr %7, align 8, !tbaa !5
  %1874 = load ptr, ptr %9, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1874, i32 0, i32 21
  %1876 = load i8, ptr %1875, align 4, !tbaa !23
  %1877 = load i32, ptr %14, align 4, !tbaa !9
  %1878 = load i32, ptr %16, align 4, !tbaa !9
  %1879 = add i32 %1877, %1878
  %1880 = load i32, ptr %13, align 4, !tbaa !9
  %1881 = load i32, ptr %15, align 4, !tbaa !9
  %1882 = mul i32 %1880, %1881
  %1883 = add i32 %1879, %1882
  %1884 = load i32, ptr %14, align 4, !tbaa !9
  %1885 = load i32, ptr %16, align 4, !tbaa !9
  %1886 = add i32 %1884, %1885
  %1887 = load i32, ptr %13, align 4, !tbaa !9
  %1888 = load i32, ptr %15, align 4, !tbaa !9
  %1889 = mul i32 %1887, %1888
  %1890 = add i32 %1886, %1889
  %1891 = load ptr, ptr %7, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1891, i32 0, i32 6
  %1893 = load i32, ptr %1892, align 4, !tbaa !21
  %1894 = icmp ult i32 %1893, 1101
  %1895 = zext i1 %1894 to i64
  %1896 = select i1 %1894, i32 0, i32 1
  %1897 = load ptr, ptr %7, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1897, i32 0, i32 6
  %1899 = load i32, ptr %1898, align 4, !tbaa !21
  %1900 = icmp ult i32 %1899, 1101
  %1901 = zext i1 %1900 to i64
  %1902 = select i1 %1900, i32 0, i32 1
  %1903 = trunc i32 %1902 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %1873, i32 noundef 671954205, i8 noundef signext %1876, i32 noundef %1883, i32 noundef %1890, i32 noundef 0, i32 noundef %1896, i8 noundef zeroext %1903, i32 noundef 0)
  br label %1904

1904:                                             ; preds = %1872, %1866, %1860
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #4
  br label %1905

1905:                                             ; preds = %1904
  %1906 = load i32, ptr %16, align 4, !tbaa !9
  %1907 = add i32 %1906, 1
  store i32 %1907, ptr %16, align 4, !tbaa !9
  br label %1719, !llvm.loop !56

1908:                                             ; preds = %1719
  br label %1909

1909:                                             ; preds = %1908
  %1910 = load i32, ptr %15, align 4, !tbaa !9
  %1911 = add i32 %1910, 1
  store i32 %1911, ptr %15, align 4, !tbaa !9
  br label %1714, !llvm.loop !57

1912:                                             ; preds = %1714
  br label %1913

1913:                                             ; preds = %1912, %1712
  %1914 = load ptr, ptr %9, align 8, !tbaa !5
  %1915 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1914, i32 0, i32 29
  %1916 = load i32, ptr %1915, align 4, !tbaa !49
  %1917 = icmp eq i32 %1916, 1
  br i1 %1917, label %1918, label %1930

1918:                                             ; preds = %1913
  %1919 = load ptr, ptr %7, align 8, !tbaa !5
  %1920 = load ptr, ptr %8, align 8, !tbaa !5
  %1921 = load ptr, ptr %9, align 8, !tbaa !5
  %1922 = load i32, ptr %14, align 4, !tbaa !9
  %1923 = load i32, ptr %13, align 4, !tbaa !9
  %1924 = load i32, ptr %12, align 4, !tbaa !9
  %1925 = load i32, ptr %11, align 4, !tbaa !9
  %1926 = load ptr, ptr %9, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1926, i32 0, i32 2
  %1928 = load i32, ptr %1927, align 8, !tbaa !15
  %1929 = urem i32 %1925, %1928
  call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %1919, ptr noundef %1920, ptr noundef %1921, i32 noundef 1, i32 noundef 1, i32 noundef %1922, i32 noundef %1923, i32 noundef %1924, i32 noundef %1929)
  br label %1930

1930:                                             ; preds = %1918, %1913
  %1931 = load ptr, ptr %9, align 8, !tbaa !5
  %1932 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1931, i32 0, i32 26
  %1933 = load i32, ptr %1932, align 8, !tbaa !58
  %1934 = icmp eq i32 %1933, 1
  br i1 %1934, label %1935, label %1954

1935:                                             ; preds = %1930
  %1936 = load ptr, ptr %7, align 8, !tbaa !5
  %1937 = load ptr, ptr %8, align 8, !tbaa !5
  %1938 = load ptr, ptr %9, align 8, !tbaa !5
  %1939 = load ptr, ptr %10, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1939, i32 0, i32 8
  %1941 = getelementptr inbounds [3 x i8], ptr %1940, i64 0, i64 0
  %1942 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %1941)
  %1943 = icmp eq i32 3, %1942
  %1944 = zext i1 %1943 to i64
  %1945 = select i1 %1943, i32 3, i32 1
  %1946 = load i32, ptr %14, align 4, !tbaa !9
  %1947 = load i32, ptr %13, align 4, !tbaa !9
  %1948 = load i32, ptr %12, align 4, !tbaa !9
  %1949 = load i32, ptr %11, align 4, !tbaa !9
  %1950 = load ptr, ptr %9, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1950, i32 0, i32 2
  %1952 = load i32, ptr %1951, align 8, !tbaa !15
  %1953 = urem i32 %1949, %1952
  call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %1936, ptr noundef %1937, ptr noundef %1938, i32 noundef 3, i32 noundef %1945, i32 noundef %1946, i32 noundef %1947, i32 noundef %1948, i32 noundef %1953)
  br label %1954

1954:                                             ; preds = %1935, %1930
  br label %1955

1955:                                             ; preds = %1954, %1488
  br label %1956

1956:                                             ; preds = %1955, %1380
  br label %1957

1957:                                             ; preds = %1956, %1089
  br label %1958

1958:                                             ; preds = %1957, %897
  br label %1959

1959:                                             ; preds = %1958, %729
  br label %2132

1960:                                             ; preds = %602
  %1961 = load ptr, ptr %9, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1961, i32 0, i32 29
  %1963 = load i32, ptr %1962, align 4, !tbaa !49
  %1964 = icmp eq i32 %1963, 1
  br i1 %1964, label %1965, label %1977

1965:                                             ; preds = %1960
  %1966 = load ptr, ptr %7, align 8, !tbaa !5
  %1967 = load ptr, ptr %8, align 8, !tbaa !5
  %1968 = load ptr, ptr %9, align 8, !tbaa !5
  %1969 = load i32, ptr %14, align 4, !tbaa !9
  %1970 = load i32, ptr %13, align 4, !tbaa !9
  %1971 = load i32, ptr %12, align 4, !tbaa !9
  %1972 = load i32, ptr %11, align 4, !tbaa !9
  %1973 = load ptr, ptr %9, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1973, i32 0, i32 2
  %1975 = load i32, ptr %1974, align 8, !tbaa !15
  %1976 = urem i32 %1972, %1975
  call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %1966, ptr noundef %1967, ptr noundef %1968, i32 noundef 1, i32 noundef 1, i32 noundef %1969, i32 noundef %1970, i32 noundef %1971, i32 noundef %1976)
  br label %2131

1977:                                             ; preds = %1960
  %1978 = load ptr, ptr %9, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1978, i32 0, i32 25
  %1980 = load i32, ptr %1979, align 4, !tbaa !38
  %1981 = icmp eq i32 %1980, 1
  br i1 %1981, label %1982, label %1994

1982:                                             ; preds = %1977
  %1983 = load ptr, ptr %7, align 8, !tbaa !5
  %1984 = load ptr, ptr %8, align 8, !tbaa !5
  %1985 = load ptr, ptr %9, align 8, !tbaa !5
  %1986 = load i32, ptr %14, align 4, !tbaa !9
  %1987 = load i32, ptr %13, align 4, !tbaa !9
  %1988 = load i32, ptr %12, align 4, !tbaa !9
  %1989 = load i32, ptr %11, align 4, !tbaa !9
  %1990 = load ptr, ptr %9, align 8, !tbaa !5
  %1991 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1990, i32 0, i32 2
  %1992 = load i32, ptr %1991, align 8, !tbaa !15
  %1993 = urem i32 %1989, %1992
  call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %1983, ptr noundef %1984, ptr noundef %1985, i32 noundef 2, i32 noundef 1, i32 noundef %1986, i32 noundef %1987, i32 noundef %1988, i32 noundef %1993)
  br label %2130

1994:                                             ; preds = %1977
  %1995 = load ptr, ptr %9, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1995, i32 0, i32 26
  %1997 = load i32, ptr %1996, align 8, !tbaa !58
  %1998 = icmp eq i32 %1997, 1
  br i1 %1998, label %1999, label %2018

1999:                                             ; preds = %1994
  %2000 = load ptr, ptr %7, align 8, !tbaa !5
  %2001 = load ptr, ptr %8, align 8, !tbaa !5
  %2002 = load ptr, ptr %9, align 8, !tbaa !5
  %2003 = load ptr, ptr %10, 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_COMP_PREC(ptr noundef %2005)
  %2007 = icmp eq i32 3, %2006
  %2008 = zext i1 %2007 to i64
  %2009 = select i1 %2007, i32 3, i32 1
  %2010 = load i32, ptr %14, align 4, !tbaa !9
  %2011 = load i32, ptr %13, align 4, !tbaa !9
  %2012 = load i32, ptr %12, align 4, !tbaa !9
  %2013 = load i32, ptr %11, align 4, !tbaa !9
  %2014 = load ptr, ptr %9, align 8, !tbaa !5
  %2015 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2014, i32 0, i32 2
  %2016 = load i32, ptr %2015, align 8, !tbaa !15
  %2017 = urem i32 %2013, %2016
  call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %2000, ptr noundef %2001, ptr noundef %2002, i32 noundef 3, i32 noundef %2009, i32 noundef %2010, i32 noundef %2011, i32 noundef %2012, i32 noundef %2017)
  br label %2129

2018:                                             ; preds = %1994
  %2019 = load ptr, ptr %9, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2019, i32 0, i32 27
  %2021 = load i32, ptr %2020, align 4, !tbaa !48
  %2022 = icmp eq i32 %2021, 1
  br i1 %2022, label %2023, label %2035

2023:                                             ; preds = %2018
  %2024 = load ptr, ptr %7, align 8, !tbaa !5
  %2025 = load ptr, ptr %8, align 8, !tbaa !5
  %2026 = load ptr, ptr %9, align 8, !tbaa !5
  %2027 = load i32, ptr %14, align 4, !tbaa !9
  %2028 = load i32, ptr %13, align 4, !tbaa !9
  %2029 = load i32, ptr %12, align 4, !tbaa !9
  %2030 = load i32, ptr %11, align 4, !tbaa !9
  %2031 = load ptr, ptr %9, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2031, i32 0, i32 2
  %2033 = load i32, ptr %2032, align 8, !tbaa !15
  %2034 = urem i32 %2030, %2033
  call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %2024, ptr noundef %2025, ptr noundef %2026, i32 noundef 4, i32 noundef 1, i32 noundef %2027, i32 noundef %2028, i32 noundef %2029, i32 noundef %2034)
  br label %2128

2035:                                             ; preds = %2018
  %2036 = load ptr, ptr %9, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2036, i32 0, i32 28
  %2038 = load i32, ptr %2037, align 8, !tbaa !47
  %2039 = icmp eq i32 %2038, 1
  br i1 %2039, label %2040, label %2052

2040:                                             ; preds = %2035
  %2041 = load ptr, ptr %7, align 8, !tbaa !5
  %2042 = load ptr, ptr %8, align 8, !tbaa !5
  %2043 = load ptr, ptr %9, align 8, !tbaa !5
  %2044 = load i32, ptr %14, align 4, !tbaa !9
  %2045 = load i32, ptr %13, align 4, !tbaa !9
  %2046 = load i32, ptr %12, align 4, !tbaa !9
  %2047 = load i32, ptr %11, align 4, !tbaa !9
  %2048 = load ptr, ptr %9, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2048, i32 0, i32 2
  %2050 = load i32, ptr %2049, align 8, !tbaa !15
  %2051 = urem i32 %2047, %2050
  call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %2041, ptr noundef %2042, ptr noundef %2043, i32 noundef 5, i32 noundef 1, i32 noundef %2044, i32 noundef %2045, i32 noundef %2046, i32 noundef %2051)
  br label %2127

2052:                                             ; preds = %2035
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %2053

2053:                                             ; preds = %2123, %2052
  %2054 = load i32, ptr %15, align 4, !tbaa !9
  %2055 = load i32, ptr %12, align 4, !tbaa !9
  %2056 = icmp ult i32 %2054, %2055
  br i1 %2056, label %2057, label %2126

2057:                                             ; preds = %2053
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %2058

2058:                                             ; preds = %2119, %2057
  %2059 = load i32, ptr %16, align 4, !tbaa !9
  %2060 = load i32, ptr %13, align 4, !tbaa !9
  %2061 = icmp ult i32 %2059, %2060
  br i1 %2061, label %2062, label %2122

2062:                                             ; preds = %2058
  %2063 = load ptr, ptr %7, align 8, !tbaa !5
  %2064 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2063, i32 0, i32 6
  %2065 = load i32, ptr %2064, align 4, !tbaa !21
  %2066 = icmp uge i32 %2065, 1005
  br i1 %2066, label %2067, label %2096

2067:                                             ; preds = %2062
  %2068 = load ptr, ptr %7, align 8, !tbaa !5
  %2069 = load ptr, ptr %9, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2069, i32 0, i32 13
  %2071 = load i32, ptr %2070, align 4, !tbaa !50
  %2072 = load ptr, ptr %9, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2072, i32 0, i32 21
  %2074 = load i8, ptr %2073, align 4, !tbaa !23
  %2075 = load i32, ptr %14, align 4, !tbaa !9
  %2076 = load i32, ptr %16, align 4, !tbaa !9
  %2077 = add i32 %2075, %2076
  %2078 = load i32, ptr %13, align 4, !tbaa !9
  %2079 = load i32, ptr %15, align 4, !tbaa !9
  %2080 = mul i32 %2078, %2079
  %2081 = add i32 %2077, %2080
  %2082 = load i32, ptr %14, align 4, !tbaa !9
  %2083 = load i32, ptr %16, align 4, !tbaa !9
  %2084 = add i32 %2082, %2083
  %2085 = load i32, ptr %13, align 4, !tbaa !9
  %2086 = load i32, ptr %15, align 4, !tbaa !9
  %2087 = mul i32 %2085, %2086
  %2088 = add i32 %2084, %2087
  %2089 = load i32, ptr %14, align 4, !tbaa !9
  %2090 = load i32, ptr %16, align 4, !tbaa !9
  %2091 = add i32 %2089, %2090
  %2092 = load i32, ptr %13, align 4, !tbaa !9
  %2093 = load i32, ptr %15, align 4, !tbaa !9
  %2094 = mul i32 %2092, %2093
  %2095 = add i32 %2091, %2094
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2068, i32 noundef %2071, i8 noundef signext %2074, i32 noundef %2081, i32 noundef %2088, i32 noundef %2095)
  br label %2118

2096:                                             ; preds = %2062
  %2097 = load ptr, ptr %7, align 8, !tbaa !5
  %2098 = load ptr, ptr %9, align 8, !tbaa !5
  %2099 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2098, i32 0, i32 13
  %2100 = load i32, ptr %2099, align 4, !tbaa !50
  %2101 = load ptr, ptr %9, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2101, i32 0, i32 21
  %2103 = load i8, ptr %2102, align 4, !tbaa !23
  %2104 = load i32, ptr %14, align 4, !tbaa !9
  %2105 = load i32, ptr %16, align 4, !tbaa !9
  %2106 = add i32 %2104, %2105
  %2107 = load i32, ptr %13, align 4, !tbaa !9
  %2108 = load i32, ptr %15, align 4, !tbaa !9
  %2109 = mul i32 %2107, %2108
  %2110 = add i32 %2106, %2109
  %2111 = load i32, ptr %14, align 4, !tbaa !9
  %2112 = load i32, ptr %16, align 4, !tbaa !9
  %2113 = add i32 %2111, %2112
  %2114 = load i32, ptr %13, align 4, !tbaa !9
  %2115 = load i32, ptr %15, align 4, !tbaa !9
  %2116 = mul i32 %2114, %2115
  %2117 = add i32 %2113, %2116
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %2097, i32 noundef %2100, i8 noundef signext %2103, i32 noundef %2110, i32 noundef %2117)
  br label %2118

2118:                                             ; preds = %2096, %2067
  br label %2119

2119:                                             ; preds = %2118
  %2120 = load i32, ptr %16, align 4, !tbaa !9
  %2121 = add i32 %2120, 1
  store i32 %2121, ptr %16, align 4, !tbaa !9
  br label %2058, !llvm.loop !59

2122:                                             ; preds = %2058
  br label %2123

2123:                                             ; preds = %2122
  %2124 = load i32, ptr %15, align 4, !tbaa !9
  %2125 = add i32 %2124, 1
  store i32 %2125, ptr %15, align 4, !tbaa !9
  br label %2053, !llvm.loop !60

2126:                                             ; preds = %2053
  br label %2127

2127:                                             ; preds = %2126, %2040
  br label %2128

2128:                                             ; preds = %2127, %2023
  br label %2129

2129:                                             ; preds = %2128, %1999
  br label %2130

2130:                                             ; preds = %2129, %1982
  br label %2131

2131:                                             ; preds = %2130, %1965
  br label %2132

2132:                                             ; preds = %2131, %1959
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  ret void
}

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { 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 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 24}
!12 = !{!"libxsmm_gemm_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 28, !7, i64 29, !7, i64 32, !13, i64 33, !13, i64 41, !7, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !14, i64 62, !14, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !14, i64 70, !14, i64 72, !14, i64 74, !14, i64 76, !14, i64 78, !14, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !7, i64 94}
!13 = !{!"long long", !7, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!16, !10, i64 8}
!16 = !{!"libxsmm_micro_kernel_config", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !7, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !7, i64 364, !7, i64 380, !7, i64 396, !7, i64 412, !7, i64 428, !7, i64 444, !10, i64 460, !7, i64 464, !17, i64 520, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !6, i64 592, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !6, i64 616, !10, i64 624, !10, i64 628, !10, i64 632, !10, i64 636, !10, i64 640, !10, i64 644, !10, i64 648, !10, i64 652, !10, i64 656, !10, i64 660, !10, i64 664, !10, i64 668, !10, i64 672, !10, i64 676, !10, i64 680}
!17 = !{!"libxsmm_tile_config", !7, i64 0, !14, i64 2, !7, i64 4, !14, i64 6, !7, i64 8, !14, i64 10, !7, i64 12, !14, i64 14, !7, i64 16, !14, i64 18, !7, i64 20, !14, i64 22, !7, i64 24, !14, i64 26, !7, i64 28, !14, i64 30, !7, i64 32}
!18 = !{!16, !10, i64 4}
!19 = !{!20, !10, i64 80}
!20 = !{!"libxsmm_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128}
!21 = !{!22, !10, i64 28}
!22 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!23 = !{!16, !7, i64 84}
!24 = !{!7, !7, i64 0}
!25 = !{!16, !10, i64 16}
!26 = !{!16, !10, i64 44}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!20, !10, i64 84}
!30 = distinct !{!30, !28}
!31 = !{!16, !10, i64 0}
!32 = !{!20, !10, i64 88}
!33 = !{!20, !10, i64 20}
!34 = !{!12, !10, i64 20}
!35 = !{!16, !10, i64 20}
!36 = distinct !{!36, !28}
!37 = distinct !{!37, !28}
!38 = !{!16, !10, i64 100}
!39 = !{!16, !10, i64 36}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = distinct !{!43, !28}
!44 = !{!20, !10, i64 96}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}
!47 = !{!16, !10, i64 112}
!48 = !{!16, !10, i64 108}
!49 = !{!16, !10, i64 116}
!50 = !{!16, !10, i64 52}
!51 = distinct !{!51, !28}
!52 = distinct !{!52, !28}
!53 = !{!20, !10, i64 92}
!54 = distinct !{!54, !28}
!55 = distinct !{!55, !28}
!56 = distinct !{!56, !28}
!57 = distinct !{!57, !28}
!58 = !{!16, !10, i64 104}
!59 = distinct !{!59, !28}
!60 = distinct !{!60, !28}


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

@.str.1 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [41 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_gemm_load_C = external hidden unnamed_addr constant [203 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef) local_unnamed_addr #0

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 i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_getval_stack_var(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr 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_x86_instruction_vec_compute_2reg_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

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

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, 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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_maskedload_16bit_sse(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_maskedload_16bit_avx2(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

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

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

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

declare void @libxsmm_x86_instruction_unified_vec_move(ptr 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_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_load_C(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5) local_unnamed_addr #0 {
  %7 = getelementptr inbounds i8, ptr %3, i64 24
  %8 = load i32, ptr %7, align 1, !tbaa !5
  %9 = and i32 %8, 2097152
  %.not = icmp eq i32 %9, 0
  br i1 %.not, label %23, label %10

10:                                               ; preds = %6
  %11 = getelementptr inbounds i8, ptr %3, i64 29
  %12 = tail call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %11) #3
  %13 = icmp eq i32 %12, 12
  br i1 %13, label %14, label %23

14:                                               ; preds = %10
  %15 = tail call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %11) #3
  %16 = icmp eq i32 %15, 3
  br i1 %16, label %17, label %23

17:                                               ; preds = %14
  %18 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %11) #3
  %19 = icmp eq i32 %18, 3
  br i1 %19, label %23, label %20

20:                                               ; preds = %17
  %21 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %11) #3
  %22 = icmp eq i32 %21, 1
  br label %23

23:                                               ; preds = %10, %14, %20, %17, %6
  %24 = phi i1 [ false, %6 ], [ false, %14 ], [ false, %10 ], [ true, %17 ], [ %22, %20 ]
  %25 = getelementptr inbounds i8, ptr %3, i64 29
  %26 = tail call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %25) #3
  %27 = icmp eq i32 %26, 12
  br i1 %27, label %28, label %37

28:                                               ; preds = %23
  %29 = tail call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %25) #3
  %30 = icmp eq i32 %29, 3
  br i1 %30, label %31, label %37

31:                                               ; preds = %28
  %32 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %33 = icmp eq i32 %32, 3
  br i1 %33, label %37, label %34

34:                                               ; preds = %31
  %35 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %36 = icmp eq i32 %35, 1
  br label %37

37:                                               ; preds = %31, %34, %28, %23
  %38 = phi i1 [ false, %28 ], [ false, %23 ], [ true, %31 ], [ %36, %34 ]
  %39 = tail call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef nonnull %3)
  %40 = tail call i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef nonnull %3)
  %41 = tail call i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef nonnull %3)
  %42 = tail call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %25) #3
  %43 = icmp eq i32 %42, 12
  %44 = icmp eq i32 %39, 0
  %or.cond = select i1 %43, i1 %44, i1 false
  br i1 %or.cond, label %45, label %54

45:                                               ; preds = %37
  %46 = tail call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %25) #3
  %47 = icmp eq i32 %46, 2
  br i1 %47, label %48, label %54

48:                                               ; preds = %45
  %49 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %50 = icmp eq i32 %49, 2
  br i1 %50, label %54, label %51

51:                                               ; preds = %48
  %52 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %53 = icmp eq i32 %52, 1
  br label %54

54:                                               ; preds = %48, %51, %45, %37
  %55 = phi i1 [ false, %45 ], [ false, %37 ], [ true, %48 ], [ %53, %51 ]
  %56 = tail call i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef nonnull %3)
  %57 = load i32, ptr %7, align 1, !tbaa !5
  %58 = and i32 %57, 524288
  %.not727 = icmp ne i32 %58, 0
  %59 = select i1 %38, i1 true, i1 %55
  %spec.select = select i1 %.not727, i1 %59, i1 false
  %60 = and i32 %57, 1048576
  %.not728 = icmp eq i32 %60, 0
  br i1 %.not728, label %64, label %61

61:                                               ; preds = %54
  %62 = icmp ne i32 %56, 0
  %63 = select i1 %38, i1 true, i1 %62
  br label %64

64:                                               ; preds = %61, %54
  %65 = phi i1 [ false, %54 ], [ %63, %61 ]
  %66 = getelementptr inbounds i8, ptr %2, i64 8
  %67 = load i32, ptr %66, align 8, !tbaa !12
  %.not729 = icmp eq i32 %67, 0
  br i1 %.not729, label %68, label %69

68:                                               ; preds = %64
  tail call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 3994, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_gemm_load_C) #4
  unreachable

69:                                               ; preds = %64
  %70 = urem i32 %4, %67
  %71 = icmp ne i32 %70, 0
  %72 = udiv i32 %4, %67
  %73 = zext i1 %71 to i32
  %74 = add i32 %72, %73
  %75 = getelementptr inbounds i8, ptr %2, i64 4
  %76 = load i32, ptr %75, align 4, !tbaa !16
  %77 = mul i32 %74, %5
  %78 = sub i32 %76, %77
  br i1 %spec.select, label %79, label %.loopexit776

79:                                               ; preds = %69
  %80 = getelementptr inbounds i8, ptr %1, i64 80
  %81 = load i32, ptr %80, align 4, !tbaa !17
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %2, i32 noundef 5, i32 noundef %81)
  %.not816 = icmp eq i32 %74, 0
  br i1 %.not816, label %.loopexit775, label %.lr.ph

.lr.ph:                                           ; preds = %79
  %82 = getelementptr inbounds i8, ptr %2, i64 84
  %83 = add i32 %74, -1
  %84 = getelementptr inbounds i8, ptr %2, i64 44
  %85 = getelementptr inbounds i8, ptr %0, i64 28
  %86 = getelementptr inbounds i8, ptr %2, i64 16
  br i1 %38, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %127
  %.0691777.us = phi i32 [ %128, %127 ], [ 0, %.lr.ph ]
  %87 = load i32, ptr %85, align 4, !tbaa !19
  %88 = icmp ult i32 %87, 1104
  %89 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  br i1 %88, label %91, label %.thread.us

.thread.us:                                       ; preds = %.lr.ph.split.us
  %90 = icmp eq i32 %89, 1
  br i1 %90, label %101, label %.thread756.us

91:                                               ; preds = %.lr.ph.split.us
  %92 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %93 = icmp eq i32 %92, 1
  br i1 %93, label %101, label %94

94:                                               ; preds = %91
  %95 = icmp eq i32 %89, 3
  br i1 %95, label %97, label %.thread756.us

.thread756.us:                                    ; preds = %94, %.thread.us
  %96 = load i8, ptr %82, align 4, !tbaa !21
  br label %105

97:                                               ; preds = %94
  %98 = load i8, ptr %82, align 4, !tbaa !21
  %99 = icmp eq i8 %98, 122
  %100 = select i1 %99, i8 121, i8 120
  br label %105

101:                                              ; preds = %91, %.thread.us
  %102 = load i8, ptr %82, align 4, !tbaa !21
  %103 = icmp eq i8 %102, 122
  %104 = select i1 %103, i8 121, i8 120
  br label %105

105:                                              ; preds = %101, %97, %.thread756.us
  %106 = phi i8 [ %104, %101 ], [ %100, %97 ], [ %96, %.thread756.us ]
  %107 = load i32, ptr %80, align 4, !tbaa !17
  %108 = load i32, ptr %66, align 8, !tbaa !12
  %109 = mul i32 %108, %.0691777.us
  %110 = load i32, ptr %86, align 8, !tbaa !22
  %111 = mul i32 %109, %110
  %112 = add i32 %.0691777.us, 2
  %113 = select i1 %24, i32 %112, i32 %.0691777.us
  %114 = icmp eq i32 %.0691777.us, %83
  br i1 %114, label %115, label %117

115:                                              ; preds = %105
  %116 = load i32, ptr %84, align 4, !tbaa !23
  br label %117

117:                                              ; preds = %115, %105
  %118 = phi i32 [ %116, %115 ], [ 0, %105 ]
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef -528017809, i32 noundef %107, i32 noundef 127, i32 noundef 0, i32 noundef %111, i8 noundef signext %106, i32 noundef %113, i32 noundef %118, i32 noundef 1, i32 noundef 0) #3
  %119 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %120 = icmp eq i32 %119, 1
  br i1 %120, label %124, label %121

121:                                              ; preds = %117
  %122 = load i32, ptr %85, align 4, !tbaa !19
  %123 = icmp ult i32 %122, 1104
  br i1 %123, label %124, label %127

124:                                              ; preds = %121, %117
  %125 = icmp eq i8 %106, 120
  %126 = select i1 %125, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %126, i32 noundef %113, i32 noundef %113) #3
  br label %127

127:                                              ; preds = %124, %121
  %128 = add nuw i32 %.0691777.us, 1
  %exitcond844.not = icmp eq i32 %128, %74
  br i1 %exitcond844.not, label %.loopexit776, label %.lr.ph.split.us, !llvm.loop !24

.lr.ph.split:                                     ; preds = %.lr.ph, %138
  %.0691777 = phi i32 [ %134, %138 ], [ 0, %.lr.ph ]
  %129 = load i32, ptr %80, align 4, !tbaa !17
  %130 = load i32, ptr %66, align 8, !tbaa !12
  %131 = shl i32 %.0691777, 2
  %132 = mul i32 %131, %130
  %133 = load i8, ptr %82, align 4, !tbaa !21
  %134 = add nuw i32 %.0691777, 1
  %135 = icmp eq i32 %.0691777, %83
  br i1 %135, label %136, label %138

136:                                              ; preds = %.lr.ph.split
  %137 = load i32, ptr %84, align 4, !tbaa !23
  br label %138

138:                                              ; preds = %.lr.ph.split, %136
  %139 = phi i32 [ %137, %136 ], [ 0, %.lr.ph.split ]
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef 537138704, i32 noundef %129, i32 noundef 127, i32 noundef 0, i32 noundef %132, i8 noundef signext %133, i32 noundef %134, i32 noundef %139, i32 noundef 1, i32 noundef 0) #3
  %exitcond.not = icmp eq i32 %134, %74
  br i1 %exitcond.not, label %.loopexit776, label %.lr.ph.split, !llvm.loop !24

.loopexit776:                                     ; preds = %138, %127, %69
  %140 = icmp ne i32 %74, 0
  %or.cond815 = and i1 %65, %140
  br i1 %or.cond815, label %.lr.ph779, label %.loopexit775

.lr.ph779:                                        ; preds = %.loopexit776
  %141 = getelementptr inbounds i8, ptr %0, i64 28
  %142 = getelementptr inbounds i8, ptr %2, i64 84
  %143 = getelementptr inbounds i8, ptr %1, i64 84
  %144 = getelementptr inbounds i8, ptr %2, i64 16
  %145 = add i32 %74, -1
  %146 = getelementptr inbounds i8, ptr %2, i64 44
  %.not735 = icmp eq i32 %56, 0
  br label %147

147:                                              ; preds = %.lr.ph779, %211
  %.1692778 = phi i32 [ 0, %.lr.ph779 ], [ %212, %211 ]
  br i1 %38, label %148, label %189

148:                                              ; preds = %147
  %149 = load i32, ptr %141, align 4, !tbaa !19
  %150 = icmp ult i32 %149, 1104
  %151 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  br i1 %150, label %152, label %.thread757

152:                                              ; preds = %148
  %153 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %154 = icmp eq i32 %153, 1
  br i1 %154, label %156, label %160

.thread757:                                       ; preds = %148
  %155 = icmp eq i32 %151, 1
  br i1 %155, label %156, label %.thread758

156:                                              ; preds = %.thread757, %152
  %157 = load i8, ptr %142, align 4, !tbaa !21
  %158 = icmp eq i8 %157, 122
  %159 = select i1 %158, i8 121, i8 120
  br label %167

160:                                              ; preds = %152
  %161 = icmp eq i32 %151, 3
  br i1 %161, label %162, label %.thread758

162:                                              ; preds = %160
  %163 = load i8, ptr %142, align 4, !tbaa !21
  %164 = icmp eq i8 %163, 122
  %165 = select i1 %164, i8 121, i8 120
  br label %167

.thread758:                                       ; preds = %.thread757, %160
  %166 = load i8, ptr %142, align 4, !tbaa !21
  br label %167

167:                                              ; preds = %162, %.thread758, %156
  %168 = phi i8 [ %159, %156 ], [ %165, %162 ], [ %166, %.thread758 ]
  %169 = add i32 %.1692778, 2
  %.pn = select i1 %24, i32 %169, i32 %.1692778
  %170 = add i32 %.pn, %74
  %171 = load i32, ptr %143, align 4, !tbaa !26
  %172 = load i32, ptr %66, align 8, !tbaa !12
  %173 = mul i32 %172, %.1692778
  %174 = load i32, ptr %144, align 8, !tbaa !22
  %175 = mul i32 %173, %174
  %176 = icmp eq i32 %.1692778, %145
  br i1 %176, label %177, label %179

177:                                              ; preds = %167
  %178 = load i32, ptr %146, align 4, !tbaa !23
  br label %179

179:                                              ; preds = %167, %177
  %180 = phi i32 [ %178, %177 ], [ 0, %167 ]
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef -528017809, i32 noundef %171, i32 noundef 127, i32 noundef 0, i32 noundef %175, i8 noundef signext %168, i32 noundef %170, i32 noundef %180, i32 noundef 1, i32 noundef 0) #3
  %181 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %182 = icmp eq i32 %181, 1
  br i1 %182, label %186, label %183

183:                                              ; preds = %179
  %184 = load i32, ptr %141, align 4, !tbaa !19
  %185 = icmp ult i32 %184, 1104
  br i1 %185, label %186, label %189

186:                                              ; preds = %183, %179
  %187 = icmp eq i8 %168, 120
  %188 = select i1 %187, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %188, i32 noundef %170, i32 noundef %170) #3
  br label %189

189:                                              ; preds = %183, %186, %147
  br i1 %.not735, label %211, label %190

190:                                              ; preds = %189
  %191 = add i32 %.1692778, 3
  %192 = load i32, ptr %143, align 4, !tbaa !26
  %193 = load i32, ptr %66, align 8, !tbaa !12
  %194 = mul i32 %193, %.1692778
  %195 = load i32, ptr %144, align 8, !tbaa !22
  %196 = mul i32 %194, %195
  %197 = icmp eq i32 %.1692778, %145
  br i1 %197, label %198, label %200

198:                                              ; preds = %190
  %199 = load i32, ptr %146, align 4, !tbaa !23
  br label %200

200:                                              ; preds = %190, %198
  %201 = phi i32 [ %199, %198 ], [ 0, %190 ]
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef -536406417, i32 noundef %192, i32 noundef 127, i32 noundef 0, i32 noundef %196, i8 noundef signext 120, i32 noundef %191, i32 noundef %201, i32 noundef 1, i32 noundef 0) #3
  %202 = load i32, ptr %141, align 4, !tbaa !19
  %203 = icmp ugt i32 %202, 1103
  %204 = load i8, ptr %142, align 4, !tbaa !21
  br i1 %203, label %205, label %206

205:                                              ; preds = %200
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef -268097907, i8 noundef signext %204, i32 noundef %191, i32 noundef 2, i32 noundef %191) #3
  br label %211

206:                                              ; preds = %200
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537207857, i8 noundef signext %204, i32 noundef %191, i32 noundef %191) #3
  %207 = load i8, ptr %142, align 4, !tbaa !21
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 611128946, i8 noundef signext %207, i32 noundef %191, i32 noundef 2, i32 noundef 8) #3
  %208 = load i8, ptr %142, align 4, !tbaa !21
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639915, i8 noundef signext %208, i32 noundef 2, i32 noundef %191, i32 noundef %191) #3
  %209 = load i8, ptr %142, align 4, !tbaa !21
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 611128946, i8 noundef signext %209, i32 noundef %191, i32 noundef 2, i32 noundef 16) #3
  %210 = load i8, ptr %142, align 4, !tbaa !21
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639915, i8 noundef signext %210, i32 noundef 2, i32 noundef %191, i32 noundef %191) #3
  br label %211

211:                                              ; preds = %205, %206, %189
  %212 = add nuw i32 %.1692778, 1
  %exitcond845.not = icmp eq i32 %212, %74
  br i1 %exitcond845.not, label %.loopexit775, label %147, !llvm.loop !27

.loopexit775:                                     ; preds = %211, %79, %.loopexit776
  %213 = load i32, ptr %7, align 1, !tbaa !5
  %214 = and i32 %213, 4
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %720

216:                                              ; preds = %.loopexit775
  %217 = load i32, ptr %2, align 8, !tbaa !28
  %218 = icmp ult i32 %217, 1005
  br i1 %218, label %219, label %262

219:                                              ; preds = %216
  %220 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %221 = icmp eq i32 %220, 2
  br i1 %221, label %222, label %262

222:                                              ; preds = %219
  %223 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %224 = icmp eq i32 %223, 2
  br i1 %224, label %.preheader760, label %262

.preheader760:                                    ; preds = %222
  %.not831 = icmp eq i32 %5, 0
  br i1 %.not831, label %._crit_edge813, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.preheader760
  %.not832 = icmp eq i32 %74, 0
  %225 = getelementptr inbounds i8, ptr %2, i64 44
  %226 = add i32 %74, -1
  %227 = getelementptr inbounds i8, ptr %1, i64 20
  %228 = getelementptr inbounds i8, ptr %3, i64 20
  %229 = getelementptr inbounds i8, ptr %2, i64 20
  %230 = getelementptr inbounds i8, ptr %1, i64 88
  br i1 %.not832, label %._crit_edge813, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.lr.ph, %._crit_edge.us814
  %.0812.us = phi i32 [ %255, %._crit_edge.us814 ], [ 0, %.preheader.lr.ph ]
  %231 = mul i32 %.0812.us, %74
  %232 = add i32 %231, %78
  br label %233

233:                                              ; preds = %.preheader.us, %252
  %.2693810.us = phi i32 [ 0, %.preheader.us ], [ %254, %252 ]
  %234 = load i32, ptr %225, align 4, !tbaa !23
  %.not734.us = icmp ne i32 %234, 0
  %235 = icmp eq i32 %.2693810.us, %226
  %or.cond737.us = and i1 %235, %.not734.us
  %236 = load i32, ptr %227, align 4, !tbaa !29
  %237 = load i32, ptr %228, align 1, !tbaa !30
  %238 = mul i32 %237, %.0812.us
  %239 = load i32, ptr %66, align 8, !tbaa !12
  %240 = load i32, ptr %229, align 4, !tbaa !31
  br i1 %or.cond737.us, label %246, label %241

241:                                              ; preds = %233
  %242 = load i32, ptr %2, align 8, !tbaa !28
  %243 = mul i32 %239, %.2693810.us
  %244 = add i32 %243, %238
  %245 = mul i32 %244, %240
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %242, i32 noundef -1610149872, i32 noundef %236, i32 noundef 127, i32 noundef 0, i32 noundef %245, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0) #3
  br label %252

246:                                              ; preds = %233
  %247 = load i32, ptr %230, align 4, !tbaa !32
  %248 = mul i32 %239, %226
  %249 = add i32 %248, %238
  %250 = mul i32 %249, %240
  %251 = urem i32 %4, %239
  tail call void @libxsmm_generator_maskedload_16bit_sse(ptr noundef %0, i32 noundef %247, i32 noundef 0, i32 noundef %236, i32 noundef 127, i32 noundef 0, i32 noundef %250, i32 noundef 0, i32 noundef %251) #3
  br label %252

252:                                              ; preds = %246, %241
  %253 = add i32 %232, %.2693810.us
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext 120, i32 noundef 0, i32 noundef %253) #3
  %254 = add nuw i32 %.2693810.us, 1
  %exitcond860.not = icmp eq i32 %254, %74
  br i1 %exitcond860.not, label %._crit_edge.us814, label %233, !llvm.loop !33

._crit_edge.us814:                                ; preds = %252
  %255 = add nuw i32 %.0812.us, 1
  %exitcond861.not = icmp eq i32 %255, %5
  br i1 %exitcond861.not, label %._crit_edge813, label %.preheader.us, !llvm.loop !34

._crit_edge813:                                   ; preds = %._crit_edge.us814, %.preheader.lr.ph, %.preheader760
  %256 = getelementptr inbounds i8, ptr %2, i64 100
  %257 = load i32, ptr %256, align 4, !tbaa !35
  %258 = icmp eq i32 %257, 1
  br i1 %258, label %259, label %.loopexit

259:                                              ; preds = %._crit_edge813
  %260 = load i32, ptr %66, align 8, !tbaa !12
  %261 = urem i32 %4, %260
  tail call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 2, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %261)
  br label %.loopexit

262:                                              ; preds = %222, %219, %216
  %263 = load i32, ptr %2, align 8, !tbaa !28
  %264 = add i32 %263, -1006
  %or.cond738 = icmp ult i32 %264, 45
  br i1 %or.cond738, label %265, label %271

265:                                              ; preds = %262
  %266 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %267 = icmp eq i32 %266, 2
  br i1 %267, label %268, label %271

268:                                              ; preds = %265
  %269 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %270 = icmp eq i32 %269, 2
  br i1 %270, label %281, label %271

271:                                              ; preds = %268, %265, %262
  %272 = getelementptr inbounds i8, ptr %0, i64 28
  %273 = load i32, ptr %272, align 4, !tbaa !19
  %274 = icmp ugt i32 %273, 1005
  br i1 %274, label %275, label %327

275:                                              ; preds = %271
  %276 = icmp ne i32 %39, 0
  %277 = icmp ne i32 %41, 0
  %or.cond3 = select i1 %276, i1 true, i1 %277
  br i1 %or.cond3, label %278, label %327

278:                                              ; preds = %275
  %279 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %280 = icmp eq i32 %279, 2
  br i1 %280, label %281, label %327

281:                                              ; preds = %278, %268
  %.not829 = icmp eq i32 %5, 0
  br i1 %.not829, label %._crit_edge808, label %.preheader761.lr.ph

.preheader761.lr.ph:                              ; preds = %281
  %.not830 = icmp eq i32 %74, 0
  %282 = getelementptr inbounds i8, ptr %2, i64 44
  %283 = add i32 %74, -1
  %284 = getelementptr inbounds i8, ptr %2, i64 36
  %285 = getelementptr inbounds i8, ptr %1, i64 20
  %286 = getelementptr inbounds i8, ptr %3, i64 20
  %287 = getelementptr inbounds i8, ptr %2, i64 20
  %288 = getelementptr inbounds i8, ptr %1, i64 88
  br i1 %.not830, label %._crit_edge808, label %.preheader761.us

.preheader761.us:                                 ; preds = %.preheader761.lr.ph, %._crit_edge.us809
  %.1807.us = phi i32 [ %320, %._crit_edge.us809 ], [ 0, %.preheader761.lr.ph ]
  %289 = mul i32 %.1807.us, %74
  %290 = add i32 %289, %78
  %291 = add i32 %290, %283
  br label %292

292:                                              ; preds = %.preheader761.us, %318
  %.3694805.us = phi i32 [ 0, %.preheader761.us ], [ %319, %318 ]
  %293 = load i32, ptr %282, align 4, !tbaa !23
  %.not733.us = icmp ne i32 %293, 0
  %294 = icmp eq i32 %.3694805.us, %283
  %or.cond740.us = and i1 %294, %.not733.us
  br i1 %or.cond740.us, label %307, label %295

295:                                              ; preds = %292
  %296 = load i32, ptr %2, align 8, !tbaa !28
  %297 = load i32, ptr %284, align 4, !tbaa !36
  %298 = load i32, ptr %285, align 4, !tbaa !29
  %299 = load i32, ptr %286, align 1, !tbaa !30
  %300 = mul i32 %299, %.1807.us
  %301 = load i32, ptr %66, align 8, !tbaa !12
  %302 = mul i32 %301, %.3694805.us
  %303 = add i32 %302, %300
  %304 = load i32, ptr %287, align 4, !tbaa !31
  %305 = mul i32 %303, %304
  %306 = add i32 %290, %.3694805.us
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %296, i32 noundef %297, i32 noundef %298, i32 noundef 127, i32 noundef 0, i32 noundef %305, i8 noundef signext 120, i32 noundef %306, i32 noundef 0, i32 noundef 1, i32 noundef 0) #3
  br label %318

307:                                              ; preds = %292
  %308 = load i32, ptr %288, align 4, !tbaa !32
  %309 = load i32, ptr %285, align 4, !tbaa !29
  %310 = load i32, ptr %286, align 1, !tbaa !30
  %311 = mul i32 %310, %.1807.us
  %312 = load i32, ptr %66, align 8, !tbaa !12
  %313 = mul i32 %312, %283
  %314 = add i32 %313, %311
  %315 = load i32, ptr %287, align 4, !tbaa !31
  %316 = mul i32 %314, %315
  %317 = urem i32 %4, %312
  tail call void @libxsmm_generator_maskedload_16bit_avx2(ptr noundef %0, i32 noundef %308, i32 noundef %309, i32 noundef 127, i32 noundef 0, i32 noundef %316, i32 noundef %291, i32 noundef %317) #3
  %.pre = add i32 %290, %.3694805.us
  br label %318

318:                                              ; preds = %307, %295
  %.pre-phi = phi i32 [ %.pre, %307 ], [ %306, %295 ]
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext 121, i32 noundef %.pre-phi, i32 noundef %.pre-phi) #3
  %319 = add nuw i32 %.3694805.us, 1
  %exitcond858.not = icmp eq i32 %319, %74
  br i1 %exitcond858.not, label %._crit_edge.us809, label %292, !llvm.loop !37

._crit_edge.us809:                                ; preds = %318
  %320 = add nuw i32 %.1807.us, 1
  %exitcond859.not = icmp eq i32 %320, %5
  br i1 %exitcond859.not, label %._crit_edge808, label %.preheader761.us, !llvm.loop !38

._crit_edge808:                                   ; preds = %._crit_edge.us809, %.preheader761.lr.ph, %281
  %321 = getelementptr inbounds i8, ptr %2, i64 100
  %322 = load i32, ptr %321, align 4, !tbaa !35
  %323 = icmp eq i32 %322, 1
  br i1 %323, label %324, label %.loopexit

324:                                              ; preds = %._crit_edge808
  %325 = load i32, ptr %66, align 8, !tbaa !12
  %326 = urem i32 %4, %325
  tail call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 2, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %326)
  br label %.loopexit

327:                                              ; preds = %275, %278, %271
  %328 = load i32, ptr %2, align 8, !tbaa !28
  %329 = add i32 %328, -1051
  %or.cond759 = icmp ult i32 %329, 949
  br i1 %or.cond759, label %330, label %390

330:                                              ; preds = %327
  %331 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %332 = icmp eq i32 %331, 2
  br i1 %332, label %333, label %336

333:                                              ; preds = %330
  %334 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %335 = icmp eq i32 %334, 2
  br i1 %335, label %340, label %336

336:                                              ; preds = %333, %330
  br i1 %55, label %337, label %390

337:                                              ; preds = %336
  %338 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %339 = icmp eq i32 %338, 2
  br i1 %339, label %340, label %390

340:                                              ; preds = %337, %333
  %.not827 = icmp eq i32 %5, 0
  br i1 %.not827, label %._crit_edge803, label %.preheader762.lr.ph

.preheader762.lr.ph:                              ; preds = %340
  %.not828 = icmp eq i32 %74, 0
  %341 = getelementptr inbounds i8, ptr %2, i64 44
  %342 = add i32 %74, -1
  %343 = getelementptr inbounds i8, ptr %2, i64 36
  %344 = getelementptr inbounds i8, ptr %1, i64 20
  %345 = getelementptr inbounds i8, ptr %3, i64 20
  %346 = getelementptr inbounds i8, ptr %2, i64 20
  %347 = add i32 %78, -1
  br i1 %.not828, label %._crit_edge803, label %.preheader762.us

.preheader762.us:                                 ; preds = %.preheader762.lr.ph, %._crit_edge.us804
  %.2802.us = phi i32 [ %383, %._crit_edge.us804 ], [ 0, %.preheader762.lr.ph ]
  %348 = mul i32 %.2802.us, %74
  %349 = add i32 %348, %78
  br label %350

350:                                              ; preds = %.preheader762.us, %377
  %.4695800.us = phi i32 [ 0, %.preheader762.us ], [ %382, %377 ]
  %351 = load i32, ptr %341, align 4, !tbaa !23
  %.not732.us = icmp ne i32 %351, 0
  %352 = icmp eq i32 %.4695800.us, %342
  %or.cond744.us = and i1 %352, %.not732.us
  %353 = load i32, ptr %2, align 8, !tbaa !28
  br i1 %or.cond744.us, label %366, label %354

354:                                              ; preds = %350
  %355 = load i32, ptr %343, align 4, !tbaa !36
  %356 = load i32, ptr %344, align 4, !tbaa !29
  %357 = load i32, ptr %345, align 1, !tbaa !30
  %358 = mul i32 %357, %.2802.us
  %359 = load i32, ptr %66, align 8, !tbaa !12
  %360 = mul i32 %359, %.4695800.us
  %361 = add i32 %360, %358
  %362 = load i32, ptr %346, align 4, !tbaa !31
  %363 = mul i32 %361, %362
  %364 = add i32 %353, -1051
  %spec.select746.us = icmp ult i32 %364, 50
  %365 = select i1 %spec.select746.us, i8 120, i8 121
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %353, i32 noundef %355, i32 noundef %356, i32 noundef 127, i32 noundef 0, i32 noundef %363, i8 noundef signext %365, i32 noundef %347, i32 noundef 0, i32 noundef 1, i32 noundef 0) #3
  br label %377

366:                                              ; preds = %350
  %367 = load i32, ptr %344, align 4, !tbaa !29
  %368 = load i32, ptr %345, align 1, !tbaa !30
  %369 = mul i32 %368, %.2802.us
  %370 = load i32, ptr %66, align 8, !tbaa !12
  %371 = mul i32 %370, %342
  %372 = add i32 %371, %369
  %373 = load i32, ptr %346, align 4, !tbaa !31
  %374 = mul i32 %372, %373
  %375 = add i32 %353, -1051
  %spec.select745.us = icmp ult i32 %375, 50
  %376 = select i1 %spec.select745.us, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %353, i32 noundef -528017809, i32 noundef %367, i32 noundef 127, i32 noundef 0, i32 noundef %374, i8 noundef signext %376, i32 noundef %347, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3
  br label %377

377:                                              ; preds = %366, %354
  %378 = load i32, ptr %2, align 8, !tbaa !28
  %379 = add i32 %378, -1051
  %spec.select747.us = icmp ult i32 %379, 50
  %380 = select i1 %spec.select747.us, i8 121, i8 122
  %381 = add i32 %349, %.4695800.us
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %380, i32 noundef %347, i32 noundef %381) #3
  %382 = add nuw i32 %.4695800.us, 1
  %exitcond856.not = icmp eq i32 %382, %74
  br i1 %exitcond856.not, label %._crit_edge.us804, label %350, !llvm.loop !39

._crit_edge.us804:                                ; preds = %377
  %383 = add nuw i32 %.2802.us, 1
  %exitcond857.not = icmp eq i32 %383, %5
  br i1 %exitcond857.not, label %._crit_edge803, label %.preheader762.us, !llvm.loop !40

._crit_edge803:                                   ; preds = %._crit_edge.us804, %.preheader762.lr.ph, %340
  %384 = getelementptr inbounds i8, ptr %2, i64 100
  %385 = load i32, ptr %384, align 4, !tbaa !35
  %386 = icmp eq i32 %385, 1
  br i1 %386, label %387, label %.loopexit

387:                                              ; preds = %._crit_edge803
  %388 = load i32, ptr %66, align 8, !tbaa !12
  %389 = urem i32 %4, %388
  tail call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 2, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %389)
  br label %.loopexit

390:                                              ; preds = %327, %337, %336
  %391 = load i32, ptr %272, align 4, !tbaa !19
  %392 = add i32 %391, -1051
  %or.cond748 = icmp ult i32 %392, 949
  br i1 %or.cond748, label %393, label %411

393:                                              ; preds = %390
  %394 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %395 = icmp eq i32 %394, 4
  br i1 %395, label %396, label %399

396:                                              ; preds = %393
  %397 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %398 = icmp eq i32 %397, 4
  br i1 %398, label %432, label %399

399:                                              ; preds = %396, %393
  %400 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %401 = icmp eq i32 %400, 2
  br i1 %401, label %402, label %405

402:                                              ; preds = %399
  %403 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %404 = icmp eq i32 %403, 4
  br i1 %404, label %432, label %405

405:                                              ; preds = %402, %399
  %406 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %407 = icmp eq i32 %406, 1
  br i1 %407, label %408, label %411

408:                                              ; preds = %405
  %409 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %410 = icmp eq i32 %409, 4
  br i1 %410, label %432, label %411

411:                                              ; preds = %408, %405, %390
  %412 = load i32, ptr %272, align 4, !tbaa !19
  %413 = add i32 %412, -1051
  %or.cond749 = icmp ult i32 %413, 949
  br i1 %or.cond749, label %414, label %516

414:                                              ; preds = %411
  %415 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %416 = icmp eq i32 %415, 5
  br i1 %416, label %417, label %420

417:                                              ; preds = %414
  %418 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %419 = icmp eq i32 %418, 5
  br i1 %419, label %432, label %420

420:                                              ; preds = %417, %414
  %421 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %422 = icmp eq i32 %421, 2
  br i1 %422, label %423, label %426

423:                                              ; preds = %420
  %424 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %425 = icmp eq i32 %424, 5
  br i1 %425, label %432, label %426

426:                                              ; preds = %423, %420
  %427 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %428 = icmp eq i32 %427, 1
  br i1 %428, label %429, label %516

429:                                              ; preds = %426
  %430 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %431 = icmp eq i32 %430, 5
  br i1 %431, label %432, label %516

432:                                              ; preds = %429, %423, %417, %408, %402, %396
  %433 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %434 = icmp eq i32 %433, 5
  br i1 %434, label %435, label %438

435:                                              ; preds = %432
  %436 = getelementptr inbounds i8, ptr %1, i64 96
  %437 = load i32, ptr %436, align 4, !tbaa !41
  tail call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef %437) #3
  br label %438

438:                                              ; preds = %435, %432
  %.not825 = icmp eq i32 %5, 0
  br i1 %.not825, label %._crit_edge798, label %.preheader763.lr.ph

.preheader763.lr.ph:                              ; preds = %438
  %.not826 = icmp eq i32 %74, 0
  %439 = getelementptr inbounds i8, ptr %2, i64 44
  %440 = add i32 %74, -1
  %441 = getelementptr inbounds i8, ptr %2, i64 36
  %442 = getelementptr inbounds i8, ptr %1, i64 20
  %443 = getelementptr inbounds i8, ptr %3, i64 20
  %444 = getelementptr inbounds i8, ptr %2, i64 20
  %445 = getelementptr inbounds i8, ptr %2, i64 84
  br i1 %.not826, label %._crit_edge798, label %.preheader763.us

.preheader763.us:                                 ; preds = %.preheader763.lr.ph, %._crit_edge.us799
  %.3797.us = phi i32 [ %492, %._crit_edge.us799 ], [ 0, %.preheader763.lr.ph ]
  %446 = mul i32 %.3797.us, %74
  %447 = add i32 %446, %78
  br label %448

448:                                              ; preds = %.preheader763.us, %490
  %.5696795.us = phi i32 [ 0, %.preheader763.us ], [ %491, %490 ]
  %449 = load i32, ptr %439, align 4, !tbaa !23
  %.not731.us = icmp ne i32 %449, 0
  %450 = icmp eq i32 %.5696795.us, %440
  %or.cond751.us = and i1 %450, %.not731.us
  %451 = load i32, ptr %272, align 4, !tbaa !19
  br i1 %or.cond751.us, label %466, label %452

452:                                              ; preds = %448
  %453 = icmp ult i32 %451, 1101
  br i1 %453, label %456, label %454

454:                                              ; preds = %452
  %455 = load i32, ptr %441, align 4, !tbaa !36
  br label %456

456:                                              ; preds = %454, %452
  %457 = phi i32 [ %455, %454 ], [ 545725200, %452 ]
  %458 = load i32, ptr %442, align 4, !tbaa !29
  %459 = load i32, ptr %443, align 1, !tbaa !30
  %460 = mul i32 %459, %.3797.us
  %461 = load i32, ptr %66, align 8, !tbaa !12
  %462 = mul i32 %461, %.5696795.us
  %463 = add i32 %462, %460
  %464 = load i32, ptr %444, align 4, !tbaa !31
  %465 = mul i32 %463, %464
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %451, i32 noundef %457, i32 noundef %458, i32 noundef 127, i32 noundef 0, i32 noundef %465, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0) #3
  br label %478

466:                                              ; preds = %448
  %467 = load i32, ptr %442, align 4, !tbaa !29
  %468 = load i32, ptr %443, align 1, !tbaa !30
  %469 = mul i32 %468, %.3797.us
  %470 = load i32, ptr %66, align 8, !tbaa !12
  %471 = mul i32 %470, %440
  %472 = add i32 %471, %469
  %473 = load i32, ptr %444, align 4, !tbaa !31
  %474 = mul i32 %472, %473
  %475 = load i32, ptr %2, align 8, !tbaa !28
  %476 = add i32 %475, -1007
  %spec.select752.us = icmp ult i32 %476, 94
  %477 = select i1 %spec.select752.us, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %451, i32 noundef -536406417, i32 noundef %467, i32 noundef 127, i32 noundef 0, i32 noundef %474, i8 noundef signext %477, i32 noundef 0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3
  br label %478

478:                                              ; preds = %466, %456
  %479 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %480 = icmp eq i32 %479, 4
  br i1 %480, label %487, label %481

481:                                              ; preds = %478
  %482 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %483 = icmp eq i32 %482, 5
  br i1 %483, label %484, label %490

484:                                              ; preds = %481
  %485 = load i8, ptr %445, align 4, !tbaa !21
  %486 = add i32 %447, %.5696795.us
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %485, i32 noundef 0, i32 noundef %486, i32 noundef 1, i32 noundef 2, i32 noundef 6, i32 noundef 7) #3
  br label %490

487:                                              ; preds = %478
  %488 = load i8, ptr %445, align 4, !tbaa !21
  %489 = add i32 %447, %.5696795.us
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef nonnull %0, i8 noundef signext %488, i32 noundef 0, i32 noundef %489) #3
  br label %490

490:                                              ; preds = %487, %484, %481
  %491 = add nuw i32 %.5696795.us, 1
  %exitcond854.not = icmp eq i32 %491, %74
  br i1 %exitcond854.not, label %._crit_edge.us799, label %448, !llvm.loop !42

._crit_edge.us799:                                ; preds = %490
  %492 = add nuw i32 %.3797.us, 1
  %exitcond855.not = icmp eq i32 %492, %5
  br i1 %exitcond855.not, label %._crit_edge798, label %.preheader763.us, !llvm.loop !43

._crit_edge798:                                   ; preds = %._crit_edge.us799, %.preheader763.lr.ph, %438
  %493 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %494 = icmp eq i32 %493, 5
  br i1 %494, label %499, label %495

495:                                              ; preds = %._crit_edge798
  %496 = getelementptr inbounds i8, ptr %2, i64 112
  %497 = load i32, ptr %496, align 8, !tbaa !44
  %498 = icmp eq i32 %497, 1
  br i1 %498, label %499, label %502

499:                                              ; preds = %495, %._crit_edge798
  %500 = getelementptr inbounds i8, ptr %1, i64 96
  %501 = load i32, ptr %500, align 4, !tbaa !41
  tail call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef nonnull %0, i32 noundef %501) #3
  br label %502

502:                                              ; preds = %499, %495
  %503 = getelementptr inbounds i8, ptr %2, i64 108
  %504 = load i32, ptr %503, align 4, !tbaa !45
  %505 = icmp eq i32 %504, 1
  br i1 %505, label %506, label %509

506:                                              ; preds = %502
  %507 = load i32, ptr %66, align 8, !tbaa !12
  %508 = urem i32 %4, %507
  tail call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 4, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %508)
  br label %.loopexit

509:                                              ; preds = %502
  %510 = getelementptr inbounds i8, ptr %2, i64 112
  %511 = load i32, ptr %510, align 8, !tbaa !44
  %512 = icmp eq i32 %511, 1
  br i1 %512, label %513, label %.loopexit

513:                                              ; preds = %509
  %514 = load i32, ptr %66, align 8, !tbaa !12
  %515 = urem i32 %4, %514
  tail call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 5, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %515)
  br label %.loopexit

516:                                              ; preds = %429, %426, %411
  %517 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %25) #3
  %518 = icmp eq i32 %517, 12
  br i1 %518, label %519, label %545

519:                                              ; preds = %516
  %520 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %521 = icmp eq i32 %520, 1
  %522 = icmp eq i32 %41, 0
  %or.cond5 = select i1 %521, i1 %522, i1 false
  br i1 %or.cond5, label %523, label %545

523:                                              ; preds = %519
  %524 = getelementptr inbounds i8, ptr %2, i64 116
  %525 = load i32, ptr %524, align 4, !tbaa !46
  %526 = icmp eq i32 %525, 1
  br i1 %526, label %542, label %.preheader765

.preheader765:                                    ; preds = %523
  %.not823 = icmp eq i32 %5, 0
  br i1 %.not823, label %.loopexit, label %.preheader764.lr.ph

.preheader764.lr.ph:                              ; preds = %.preheader765
  %.not824 = icmp eq i32 %74, 0
  %527 = getelementptr inbounds i8, ptr %2, i64 52
  %528 = getelementptr inbounds i8, ptr %2, i64 84
  br i1 %.not824, label %.loopexit, label %.preheader764.us

.preheader764.us:                                 ; preds = %.preheader764.lr.ph, %._crit_edge.us794
  %.4793.us = phi i32 [ %541, %._crit_edge.us794 ], [ 0, %.preheader764.lr.ph ]
  %529 = mul i32 %.4793.us, %74
  %530 = add i32 %529, %78
  br label %531

531:                                              ; preds = %.preheader764.us, %539
  %.6697791.us = phi i32 [ 0, %.preheader764.us ], [ %540, %539 ]
  %532 = load i32, ptr %272, align 4, !tbaa !19
  %533 = icmp ugt i32 %532, 1004
  %534 = load i32, ptr %527, align 4, !tbaa !47
  %535 = load i8, ptr %528, align 4, !tbaa !21
  %536 = add i32 %530, %.6697791.us
  br i1 %533, label %538, label %537

537:                                              ; preds = %531
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef %534, i8 noundef signext %535, i32 noundef %536, i32 noundef %536) #3
  br label %539

538:                                              ; preds = %531
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %534, i8 noundef signext %535, i32 noundef %536, i32 noundef %536, i32 noundef %536) #3
  br label %539

539:                                              ; preds = %538, %537
  %540 = add nuw i32 %.6697791.us, 1
  %exitcond852.not = icmp eq i32 %540, %74
  br i1 %exitcond852.not, label %._crit_edge.us794, label %531, !llvm.loop !48

._crit_edge.us794:                                ; preds = %539
  %541 = add nuw i32 %.4793.us, 1
  %exitcond853.not = icmp eq i32 %541, %5
  br i1 %exitcond853.not, label %.loopexit, label %.preheader764.us, !llvm.loop !49

542:                                              ; preds = %523
  %543 = load i32, ptr %66, align 8, !tbaa !12
  %544 = urem i32 %4, %543
  tail call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 1, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %544)
  br label %.loopexit

545:                                              ; preds = %519, %516
  %546 = load i32, ptr %2, align 8, !tbaa !28
  %547 = add i32 %546, -1005
  %or.cond753 = icmp ult i32 %547, 46
  br i1 %or.cond753, label %548, label %560

548:                                              ; preds = %545
  %549 = getelementptr inbounds i8, ptr %2, i64 44
  %550 = load i32, ptr %549, align 4, !tbaa !23
  %.not730 = icmp eq i32 %550, 0
  br i1 %.not730, label %560, label %551

551:                                              ; preds = %548
  %552 = getelementptr inbounds i8, ptr %1, i64 92
  %553 = load i32, ptr %552, align 4, !tbaa !50
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 22, i32 noundef %553)
  %554 = load i32, ptr %2, align 8, !tbaa !28
  %555 = load i32, ptr %552, align 4, !tbaa !50
  %556 = icmp ne i32 %39, 0
  %557 = icmp ne i32 %40, 0
  %or.cond7 = select i1 %556, i1 true, i1 %557
  %558 = icmp ne i32 %41, 0
  %spec.select754 = select i1 %or.cond7, i1 true, i1 %558
  %559 = select i1 %spec.select754, i32 2, i32 1
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %554, i32 noundef 537138704, i32 noundef %555, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef %559, i32 noundef 0, i32 noundef 0, i32 noundef 0) #3
  br label %560

560:                                              ; preds = %551, %548, %545
  %561 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %562 = icmp eq i32 %561, 1
  br i1 %562, label %563, label %626

563:                                              ; preds = %560
  %564 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %565 = icmp eq i32 %564, 3
  br i1 %565, label %566, label %626

566:                                              ; preds = %563
  %567 = load i32, ptr %272, align 4, !tbaa !19
  %568 = icmp ugt i32 %567, 1103
  br i1 %568, label %.preheader767, label %626

.preheader767:                                    ; preds = %566
  %.not821 = icmp eq i32 %5, 0
  br i1 %.not821, label %.loopexit768, label %.preheader766.lr.ph

.preheader766.lr.ph:                              ; preds = %.preheader767
  %.not822 = icmp eq i32 %74, 0
  %569 = add i32 %78, -1
  %570 = getelementptr inbounds i8, ptr %2, i64 84
  %571 = getelementptr inbounds i8, ptr %2, i64 36
  %572 = getelementptr inbounds i8, ptr %1, i64 20
  %573 = getelementptr inbounds i8, ptr %3, i64 20
  %574 = getelementptr inbounds i8, ptr %2, i64 20
  %575 = add i32 %74, -1
  %576 = getelementptr inbounds i8, ptr %2, i64 44
  br i1 %.not822, label %.loopexit768, label %.preheader766.us

.preheader766.us:                                 ; preds = %.preheader766.lr.ph, %._crit_edge.us790
  %.5789.us = phi i32 [ %625, %._crit_edge.us790 ], [ 0, %.preheader766.lr.ph ]
  %577 = mul i32 %.5789.us, %74
  %578 = add i32 %577, %78
  br label %579

579:                                              ; preds = %.preheader766.us, %618
  %.7698787.us = phi i32 [ 0, %.preheader766.us ], [ %624, %618 ]
  %580 = add i32 %578, %.7698787.us
  %581 = load i8, ptr %570, align 4, !tbaa !21
  switch i8 %581, label %582 [
    i8 121, label %583
    i8 120, label %.fold.split.us
  ]

.fold.split.us:                                   ; preds = %579
  br label %583

582:                                              ; preds = %579
  br label %583

583:                                              ; preds = %582, %.fold.split.us, %579
  %584 = phi i8 [ 122, %579 ], [ %581, %582 ], [ 121, %.fold.split.us ]
  %585 = load i32, ptr %571, align 4, !tbaa !36
  %586 = load i32, ptr %572, align 4, !tbaa !29
  %587 = load i32, ptr %573, align 1, !tbaa !30
  %588 = mul i32 %587, %.5789.us
  %589 = load i32, ptr %66, align 8, !tbaa !12
  %590 = mul i32 %589, %.7698787.us
  %591 = add i32 %590, %588
  %592 = load i32, ptr %574, align 4, !tbaa !31
  %593 = mul i32 %591, %592
  %594 = icmp eq i32 %.7698787.us, %575
  br i1 %594, label %595, label %597

595:                                              ; preds = %583
  %596 = load i32, ptr %576, align 4, !tbaa !23
  br label %597

597:                                              ; preds = %595, %583
  %598 = phi i32 [ %596, %595 ], [ 0, %583 ]
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %585, i32 noundef %586, i32 noundef 127, i32 noundef 0, i32 noundef %593, i8 noundef signext %581, i32 noundef %580, i32 noundef %598, i32 noundef 2, i32 noundef 0) #3
  %599 = load i32, ptr %272, align 4, !tbaa !19
  %600 = icmp ugt i32 %599, 1100
  %601 = zext i1 %600 to i32
  %602 = zext i1 %600 to i8
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef 671954205, i8 noundef signext %584, i32 noundef %580, i32 noundef %580, i32 noundef 0, i32 noundef %601, i8 noundef zeroext %602, i32 noundef 0) #3
  %603 = load i32, ptr %571, align 4, !tbaa !36
  %604 = load i32, ptr %572, align 4, !tbaa !29
  %605 = load i32, ptr %573, align 1, !tbaa !30
  %606 = mul i32 %605, %.5789.us
  %607 = shl i32 %.7698787.us, 1
  %608 = or disjoint i32 %607, 1
  %609 = load i32, ptr %66, align 8, !tbaa !12
  %610 = lshr i32 %609, 1
  %611 = mul i32 %610, %608
  %612 = add i32 %611, %606
  %613 = load i32, ptr %574, align 4, !tbaa !31
  %614 = mul i32 %612, %613
  %615 = load i8, ptr %570, align 4, !tbaa !21
  br i1 %594, label %616, label %618

616:                                              ; preds = %597
  %617 = load i32, ptr %576, align 4, !tbaa !23
  br label %618

618:                                              ; preds = %616, %597
  %619 = phi i32 [ %617, %616 ], [ 0, %597 ]
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %603, i32 noundef %604, i32 noundef 127, i32 noundef 0, i32 noundef %614, i8 noundef signext %615, i32 noundef %569, i32 noundef %619, i32 noundef 3, i32 noundef 0) #3
  %620 = load i32, ptr %272, align 4, !tbaa !19
  %621 = icmp ugt i32 %620, 1100
  %622 = zext i1 %621 to i32
  %623 = zext i1 %621 to i8
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef 671954205, i8 noundef signext %584, i32 noundef %569, i32 noundef %569, i32 noundef 0, i32 noundef %622, i8 noundef zeroext %623, i32 noundef 0) #3
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef -259179206, i8 noundef signext %584, i32 noundef %569, i32 noundef %580, i32 noundef %580, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 1) #3
  %624 = add nuw i32 %.7698787.us, 1
  %exitcond850.not = icmp eq i32 %624, %74
  br i1 %exitcond850.not, label %._crit_edge.us790, label %579, !llvm.loop !51

._crit_edge.us790:                                ; preds = %618
  %625 = add nuw i32 %.5789.us, 1
  %exitcond851.not = icmp eq i32 %625, %5
  br i1 %exitcond851.not, label %.loopexit768, label %.preheader766.us, !llvm.loop !52

626:                                              ; preds = %566, %563, %560
  %.not819 = icmp eq i32 %5, 0
  br i1 %.not819, label %.loopexit768, label %.preheader769.lr.ph

.preheader769.lr.ph:                              ; preds = %626
  %.not820 = icmp eq i32 %74, 0
  %627 = getelementptr inbounds i8, ptr %2, i64 84
  %628 = icmp ne i32 %39, 0
  %629 = icmp ne i32 %40, 0
  %or.cond9 = select i1 %628, i1 true, i1 %629
  %630 = icmp ne i32 %41, 0
  %spec.select755 = select i1 %or.cond9, i1 true, i1 %630
  %631 = select i1 %spec.select755, i32 2, i32 1
  %632 = getelementptr inbounds i8, ptr %2, i64 36
  %633 = getelementptr inbounds i8, ptr %1, i64 20
  %634 = getelementptr inbounds i8, ptr %3, i64 20
  %635 = getelementptr inbounds i8, ptr %2, i64 20
  %636 = add i32 %74, -1
  %637 = getelementptr inbounds i8, ptr %2, i64 44
  br i1 %.not820, label %.loopexit768, label %.preheader769.us

.preheader769.us:                                 ; preds = %.preheader769.lr.ph, %._crit_edge.us786
  %.6785.us = phi i32 [ %703, %._crit_edge.us786 ], [ 0, %.preheader769.lr.ph ]
  %638 = mul i32 %.6785.us, %74
  %639 = add i32 %638, %78
  br label %640

640:                                              ; preds = %.preheader769.us, %701
  %.8783.us = phi i32 [ 0, %.preheader769.us ], [ %702, %701 ]
  %641 = load i8, ptr %627, align 4, !tbaa !21
  %642 = load i32, ptr %2, align 8, !tbaa !28
  %643 = icmp ugt i32 %642, 1004
  br i1 %643, label %647, label %644

644:                                              ; preds = %640
  %645 = load i32, ptr %66, align 8, !tbaa !12
  %646 = urem i32 %4, %645
  br label %647

647:                                              ; preds = %640, %644
  %648 = phi i32 [ %646, %644 ], [ %631, %640 ]
  %649 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %650 = icmp eq i32 %649, 1
  br i1 %650, label %651, label %654

651:                                              ; preds = %647
  %652 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %653 = icmp eq i32 %652, 3
  br i1 %653, label %663, label %654

654:                                              ; preds = %651, %647
  %655 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %656 = icmp eq i32 %655, 3
  br i1 %656, label %657, label %666

657:                                              ; preds = %654
  %658 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %659 = icmp eq i32 %658, 3
  br i1 %659, label %660, label %666

660:                                              ; preds = %657
  %661 = load i32, ptr %272, align 4, !tbaa !19
  %662 = icmp ult i32 %661, 1104
  br i1 %662, label %663, label %666

663:                                              ; preds = %660, %651
  %664 = icmp eq i8 %641, 122
  %665 = select i1 %664, i8 121, i8 120
  br label %666

666:                                              ; preds = %663, %660, %657, %654
  %.0690.us = phi i8 [ %665, %663 ], [ %641, %660 ], [ %641, %657 ], [ %641, %654 ]
  %667 = load i32, ptr %632, align 4, !tbaa !36
  %668 = load i32, ptr %633, align 4, !tbaa !29
  %669 = load i32, ptr %634, align 1, !tbaa !30
  %670 = mul i32 %669, %.6785.us
  %671 = load i32, ptr %66, align 8, !tbaa !12
  %672 = mul i32 %671, %.8783.us
  %673 = add i32 %672, %670
  %674 = load i32, ptr %635, align 4, !tbaa !31
  %675 = mul i32 %673, %674
  %676 = add i32 %639, %.8783.us
  %677 = icmp eq i32 %.8783.us, %636
  br i1 %677, label %678, label %680

678:                                              ; preds = %666
  %679 = load i32, ptr %637, align 4, !tbaa !23
  br label %680

680:                                              ; preds = %678, %666
  %681 = phi i32 [ %679, %678 ], [ 0, %666 ]
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %667, i32 noundef %668, i32 noundef 127, i32 noundef 0, i32 noundef %675, i8 noundef signext %.0690.us, i32 noundef %676, i32 noundef %681, i32 noundef %648, i32 noundef 0) #3
  %682 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %683 = icmp eq i32 %682, 3
  br i1 %683, label %684, label %689

684:                                              ; preds = %680
  %685 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %686 = icmp eq i32 %685, 1
  br i1 %686, label %687, label %689

687:                                              ; preds = %684
  %688 = load i8, ptr %627, align 4, !tbaa !21
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %688, i32 noundef %676, i32 noundef %676) #3
  br label %689

689:                                              ; preds = %687, %684, %680
  %690 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %25) #3
  %691 = icmp eq i32 %690, 1
  br i1 %691, label %692, label %701

692:                                              ; preds = %689
  %693 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %694 = icmp eq i32 %693, 3
  br i1 %694, label %695, label %701

695:                                              ; preds = %692
  %696 = load i8, ptr %627, align 4, !tbaa !21
  %697 = load i32, ptr %272, align 4, !tbaa !19
  %698 = icmp ugt i32 %697, 1100
  %699 = zext i1 %698 to i32
  %700 = zext i1 %698 to i8
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %0, i32 noundef 671954205, i8 noundef signext %696, i32 noundef %676, i32 noundef %676, i32 noundef 0, i32 noundef %699, i8 noundef zeroext %700, i32 noundef 0) #3
  br label %701

701:                                              ; preds = %695, %692, %689
  %702 = add nuw i32 %.8783.us, 1
  %exitcond848.not = icmp eq i32 %702, %74
  br i1 %exitcond848.not, label %._crit_edge.us786, label %640, !llvm.loop !53

._crit_edge.us786:                                ; preds = %701
  %703 = add nuw i32 %.6785.us, 1
  %exitcond849.not = icmp eq i32 %703, %5
  br i1 %exitcond849.not, label %.loopexit768, label %.preheader769.us, !llvm.loop !54

.loopexit768:                                     ; preds = %._crit_edge.us786, %._crit_edge.us790, %.preheader769.lr.ph, %.preheader766.lr.ph, %626, %.preheader767
  %704 = getelementptr inbounds i8, ptr %2, i64 116
  %705 = load i32, ptr %704, align 4, !tbaa !46
  %706 = icmp eq i32 %705, 1
  br i1 %706, label %707, label %710

707:                                              ; preds = %.loopexit768
  %708 = load i32, ptr %66, align 8, !tbaa !12
  %709 = urem i32 %4, %708
  tail call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 1, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %709)
  br label %710

710:                                              ; preds = %707, %.loopexit768
  %711 = getelementptr inbounds i8, ptr %2, i64 104
  %712 = load i32, ptr %711, align 8, !tbaa !55
  %713 = icmp eq i32 %712, 1
  br i1 %713, label %714, label %.loopexit

714:                                              ; preds = %710
  %715 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %716 = icmp eq i32 %715, 3
  %717 = select i1 %716, i32 3, i32 1
  %718 = load i32, ptr %66, align 8, !tbaa !12
  %719 = urem i32 %4, %718
  tail call void @libxsmm_generator_gemm_add_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 3, i32 noundef %717, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %719)
  br label %.loopexit

720:                                              ; preds = %.loopexit775
  %721 = getelementptr inbounds i8, ptr %2, i64 116
  %722 = load i32, ptr %721, align 4, !tbaa !46
  %723 = icmp eq i32 %722, 1
  br i1 %723, label %724, label %727

724:                                              ; preds = %720
  %725 = load i32, ptr %66, align 8, !tbaa !12
  %726 = urem i32 %4, %725
  tail call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 1, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %726)
  br label %.loopexit

727:                                              ; preds = %720
  %728 = getelementptr inbounds i8, ptr %2, i64 100
  %729 = load i32, ptr %728, align 4, !tbaa !35
  %730 = icmp eq i32 %729, 1
  br i1 %730, label %731, label %734

731:                                              ; preds = %727
  %732 = load i32, ptr %66, align 8, !tbaa !12
  %733 = urem i32 %4, %732
  tail call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 2, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %733)
  br label %.loopexit

734:                                              ; preds = %727
  %735 = getelementptr inbounds i8, ptr %2, i64 104
  %736 = load i32, ptr %735, align 8, !tbaa !55
  %737 = icmp eq i32 %736, 1
  br i1 %737, label %738, label %744

738:                                              ; preds = %734
  %739 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %25) #3
  %740 = icmp eq i32 %739, 3
  %741 = select i1 %740, i32 3, i32 1
  %742 = load i32, ptr %66, align 8, !tbaa !12
  %743 = urem i32 %4, %742
  tail call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 3, i32 noundef %741, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %743)
  br label %.loopexit

744:                                              ; preds = %734
  %745 = getelementptr inbounds i8, ptr %2, i64 108
  %746 = load i32, ptr %745, align 4, !tbaa !45
  %747 = icmp eq i32 %746, 1
  br i1 %747, label %748, label %751

748:                                              ; preds = %744
  %749 = load i32, ptr %66, align 8, !tbaa !12
  %750 = urem i32 %4, %749
  tail call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 4, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %750)
  br label %.loopexit

751:                                              ; preds = %744
  %752 = getelementptr inbounds i8, ptr %2, i64 112
  %753 = load i32, ptr %752, align 8, !tbaa !44
  %754 = icmp eq i32 %753, 1
  br i1 %754, label %771, label %.preheader772

.preheader772:                                    ; preds = %751
  %.not817 = icmp eq i32 %5, 0
  br i1 %.not817, label %.loopexit, label %.preheader771.lr.ph

.preheader771.lr.ph:                              ; preds = %.preheader772
  %.not818 = icmp eq i32 %74, 0
  %755 = getelementptr inbounds i8, ptr %0, i64 28
  %756 = getelementptr inbounds i8, ptr %2, i64 52
  %757 = getelementptr inbounds i8, ptr %2, i64 84
  br i1 %.not818, label %.loopexit, label %.preheader771.us

.preheader771.us:                                 ; preds = %.preheader771.lr.ph, %._crit_edge.us
  %.7782.us = phi i32 [ %770, %._crit_edge.us ], [ 0, %.preheader771.lr.ph ]
  %758 = mul i32 %.7782.us, %74
  %759 = add i32 %758, %78
  br label %760

760:                                              ; preds = %.preheader771.us, %768
  %.9780.us = phi i32 [ 0, %.preheader771.us ], [ %769, %768 ]
  %761 = load i32, ptr %755, align 4, !tbaa !19
  %762 = icmp ugt i32 %761, 1004
  %763 = load i32, ptr %756, align 4, !tbaa !47
  %764 = load i8, ptr %757, align 4, !tbaa !21
  %765 = add i32 %759, %.9780.us
  br i1 %762, label %767, label %766

766:                                              ; preds = %760
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef %763, i8 noundef signext %764, i32 noundef %765, i32 noundef %765) #3
  br label %768

767:                                              ; preds = %760
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %763, i8 noundef signext %764, i32 noundef %765, i32 noundef %765, i32 noundef %765) #3
  br label %768

768:                                              ; preds = %767, %766
  %769 = add nuw i32 %.9780.us, 1
  %exitcond846.not = icmp eq i32 %769, %74
  br i1 %exitcond846.not, label %._crit_edge.us, label %760, !llvm.loop !56

._crit_edge.us:                                   ; preds = %768
  %770 = add nuw i32 %.7782.us, 1
  %exitcond847.not = icmp eq i32 %770, %5
  br i1 %exitcond847.not, label %.loopexit, label %.preheader771.us, !llvm.loop !57

771:                                              ; preds = %751
  %772 = load i32, ptr %66, align 8, !tbaa !12
  %773 = urem i32 %4, %772
  tail call void @libxsmm_generator_gemm_load_colbias_to_2D_block(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, i32 noundef 5, i32 noundef 1, i32 noundef %78, i32 noundef %74, i32 noundef %5, i32 noundef %773)
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge.us, %._crit_edge.us794, %.preheader771.lr.ph, %.preheader764.lr.ph, %.preheader772, %.preheader765, %724, %738, %771, %748, %731, %259, %._crit_edge813, %387, %._crit_edge803, %542, %714, %710, %506, %513, %509, %._crit_edge808, %324
  ret void
}

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 = { 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 #3 = { nounwind }
attributes #4 = { 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, !7, i64 24}
!6 = !{!"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, !10, i64 33, !10, i64 41, !8, i64 49, !7, i64 50, !7, i64 54, !7, i64 58, !11, i64 62, !11, i64 64, !8, i64 66, !8, i64 67, !8, i64 68, !8, i64 69, !11, i64 70, !11, i64 72, !11, i64 74, !11, i64 76, !11, i64 78, !11, i64 80, !7, i64 82, !7, i64 86, !7, i64 90, !8, i64 94}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"long long", !8, i64 0}
!11 = !{!"short", !8, i64 0}
!12 = !{!13, !7, i64 8}
!13 = !{!"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, !14, 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, !15, i64 592, !7, i64 600, !7, i64 604, !7, i64 608, !7, i64 612, !15, 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}
!14 = !{!"libxsmm_tile_config", !8, i64 0, !11, i64 2, !8, i64 4, !11, i64 6, !8, i64 8, !11, i64 10, !8, i64 12, !11, i64 14, !8, i64 16, !11, i64 18, !8, i64 20, !11, i64 22, !8, i64 24, !11, i64 26, !8, i64 28, !11, i64 30, !8, i64 32}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!13, !7, i64 4}
!17 = !{!18, !7, i64 80}
!18 = !{!"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}
!19 = !{!20, !7, i64 28}
!20 = !{!"libxsmm_generated_code", !15, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!21 = !{!13, !8, i64 84}
!22 = !{!13, !7, i64 16}
!23 = !{!13, !7, i64 44}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!18, !7, i64 84}
!27 = distinct !{!27, !25}
!28 = !{!13, !7, i64 0}
!29 = !{!18, !7, i64 20}
!30 = !{!6, !7, i64 20}
!31 = !{!13, !7, i64 20}
!32 = !{!18, !7, i64 88}
!33 = distinct !{!33, !25}
!34 = distinct !{!34, !25}
!35 = !{!13, !7, i64 100}
!36 = !{!13, !7, i64 36}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = distinct !{!39, !25}
!40 = distinct !{!40, !25}
!41 = !{!18, !7, i64 96}
!42 = distinct !{!42, !25}
!43 = distinct !{!43, !25}
!44 = !{!13, !7, i64 112}
!45 = !{!13, !7, i64 108}
!46 = !{!13, !7, i64 116}
!47 = !{!13, !7, i64 52}
!48 = distinct !{!48, !25}
!49 = distinct !{!49, !25}
!50 = !{!18, !7, i64 92}
!51 = distinct !{!51, !25}
!52 = distinct !{!52, !25}
!53 = distinct !{!53, !25}
!54 = distinct !{!54, !25}
!55 = !{!13, !7, i64 104}
!56 = distinct !{!56, !25}
!57 = distinct !{!57, !25}


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