; 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_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_gemm_descriptor = type <{ i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], i8, i64, i64, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, i32, i32, i32, i8 }>

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [77 x i8], align 1
@__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.sixteen_ones = external hidden unnamed_addr constant [16 x i16], align 16
@__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.avx2_bf16_mask = external hidden unnamed_addr constant [16 x i16], align 16
@.str.9 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch = external hidden unnamed_addr constant [153 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef) #1

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

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

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

; 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_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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_setup_stack_frame_allocate_scratch(ptr noundef %0, ptr noundef %1, ptr noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca [16 x i16], align 16
  %12 = alloca [16 x i16], align 16
  %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 i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  store i32 0, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store i32 64, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store i32 64, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %11, ptr align 16 @__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.sixteen_ones, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %12, ptr align 16 @__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.avx2_bf16_mask, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %35 = load ptr, ptr %5, align 8, !tbaa !5
  %36 = call i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef %35)
  store i32 %36, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %37 = load ptr, ptr %5, align 8, !tbaa !5
  %38 = call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %37)
  store i32 %38, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = call i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef %39)
  store i32 %40, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %41 = load ptr, ptr %5, align 8, !tbaa !5
  %42 = call i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef %41)
  store i32 %42, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  %44 = call i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef %43)
  store i32 %44, ptr %17, align 4, !tbaa !9
  %45 = load ptr, ptr %4, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %45, i32 0, i32 6
  %47 = load i32, ptr %46, align 4, !tbaa !11
  %48 = icmp uge i32 %47, 1104
  br i1 %48, label %49, label %108

49:                                               ; preds = %3
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %50, i32 0, i32 6
  %52 = load i32, ptr %51, align 4, !tbaa !11
  %53 = icmp ult i32 %52, 1999
  br i1 %53, label %54, label %108

54:                                               ; preds = %49
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %55, i32 0, i32 100
  store i32 16, ptr %56, align 4, !tbaa !13
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %57, i32 0, i32 35
  %59 = load i32, ptr %58, align 4, !tbaa !17
  %60 = icmp ugt i32 %59, 0
  br i1 %60, label %61, label %71

61:                                               ; preds = %54
  %62 = load ptr, ptr %5, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %62, i32 0, i32 1
  %64 = load i32, ptr %63, align 1, !tbaa !18
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %65, i32 0, i32 0
  %67 = load i32, ptr %66, align 1, !tbaa !21
  %68 = mul i32 %64, %67
  %69 = mul i32 %68, 4
  %70 = add i32 2048, %69
  br label %72

71:                                               ; preds = %54
  br label %72

72:                                               ; preds = %71, %61
  %73 = phi i32 [ %70, %61 ], [ 2048, %71 ]
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %74, i32 0, i32 100
  %76 = load i32, ptr %75, align 4, !tbaa !13
  %77 = mul i32 64, %76
  %78 = mul i32 %77, 4
  %79 = add i32 %78, 8192
  %80 = icmp ult i32 %73, %79
  br i1 %80, label %81, label %88

81:                                               ; preds = %72
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %82, i32 0, i32 100
  %84 = load i32, ptr %83, align 4, !tbaa !13
  %85 = mul i32 64, %84
  %86 = mul i32 %85, 4
  %87 = add i32 %86, 8192
  br label %106

88:                                               ; preds = %72
  %89 = load ptr, ptr %6, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %89, i32 0, i32 35
  %91 = load i32, ptr %90, align 4, !tbaa !17
  %92 = icmp ugt i32 %91, 0
  br i1 %92, label %93, label %103

93:                                               ; preds = %88
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %94, i32 0, i32 1
  %96 = load i32, ptr %95, align 1, !tbaa !18
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %97, i32 0, i32 0
  %99 = load i32, ptr %98, align 1, !tbaa !21
  %100 = mul i32 %96, %99
  %101 = mul i32 %100, 4
  %102 = add i32 2048, %101
  br label %104

103:                                              ; preds = %88
  br label %104

104:                                              ; preds = %103, %93
  %105 = phi i32 [ %102, %93 ], [ 2048, %103 ]
  br label %106

106:                                              ; preds = %104, %81
  %107 = phi i32 [ %87, %81 ], [ %105, %104 ]
  store i32 %107, ptr %7, align 4, !tbaa !9
  br label %131

108:                                              ; preds = %49, %3
  %109 = load ptr, ptr %5, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %109, i32 0, i32 6
  %111 = load i32, ptr %110, align 1, !tbaa !22
  %112 = and i32 32768, %111
  %113 = icmp eq i32 %112, 32768
  br i1 %113, label %114, label %115

114:                                              ; preds = %108
  store i32 2048, ptr %7, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %114, %108
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %116, i32 0, i32 35
  %118 = load i32, ptr %117, align 4, !tbaa !17
  %119 = icmp ugt i32 %118, 0
  br i1 %119, label %120, label %130

120:                                              ; preds = %115
  %121 = load ptr, ptr %5, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %121, i32 0, i32 1
  %123 = load i32, ptr %122, align 1, !tbaa !18
  %124 = load ptr, ptr %5, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %124, i32 0, i32 0
  %126 = load i32, ptr %125, align 1, !tbaa !21
  %127 = mul i32 %123, %126
  %128 = mul i32 %127, 4
  %129 = add i32 2048, %128
  store i32 %129, ptr %7, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %120, %115
  br label %131

131:                                              ; preds = %130, %106
  %132 = load i32, ptr %7, align 4, !tbaa !9
  %133 = urem i32 %132, 64
  %134 = icmp eq i32 %133, 0
  br i1 %134, label %135, label %136

135:                                              ; preds = %131
  br label %143

136:                                              ; preds = %131
  %137 = load i32, ptr %7, align 4, !tbaa !9
  %138 = add i32 %137, 63
  %139 = udiv i32 %138, 64
  %140 = mul i32 %139, 64
  %141 = load i32, ptr %7, align 4, !tbaa !9
  %142 = sub i32 %140, %141
  br label %143

143:                                              ; preds = %136, %135
  %144 = phi i32 [ 0, %135 ], [ %142, %136 ]
  store i32 %144, ptr %8, align 4, !tbaa !9
  %145 = load i32, ptr %8, align 4, !tbaa !9
  %146 = load i32, ptr %7, align 4, !tbaa !9
  %147 = add i32 %146, %145
  store i32 %147, ptr %7, align 4, !tbaa !9
  %148 = load ptr, ptr %4, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %148, i32 0, i32 6
  %150 = load i32, ptr %149, align 4, !tbaa !11
  %151 = icmp ule i32 %150, 1004
  br i1 %151, label %152, label %173

152:                                              ; preds = %143
  %153 = load ptr, ptr %5, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %153, i32 0, i32 8
  %155 = getelementptr inbounds [3 x i8], ptr %154, i64 0, i64 0
  %156 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %155)
  %157 = icmp eq i32 12, %156
  br i1 %157, label %158, label %173

158:                                              ; preds = %152
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %160, i32 0, i32 17
  %162 = load i32, ptr %161, align 4, !tbaa !23
  %163 = load i32, ptr %10, align 4, !tbaa !9
  %164 = zext i32 %163 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %159, i32 noundef %162, i32 noundef 4, i64 noundef %164)
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  %166 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %165, ptr noundef %166, i32 noundef 23, i32 noundef 4)
  %167 = load ptr, ptr %4, align 8, !tbaa !5
  %168 = getelementptr inbounds [16 x i16], ptr %11, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %167, ptr noundef %168, ptr noundef @.str.9, i8 noundef signext 120, i32 noundef 0)
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %170, i32 0, i32 6
  %172 = load i32, ptr %171, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %169, i32 noundef %172, i32 noundef -1610346480, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1)
  br label %173

173:                                              ; preds = %158, %152, %143
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %174, i32 0, i32 6
  %176 = load i32, ptr %175, align 4, !tbaa !11
  %177 = icmp ule i32 %176, 1004
  br i1 %177, label %178, label %205

178:                                              ; preds = %173
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %179, i32 0, i32 8
  %181 = getelementptr inbounds [3 x i8], ptr %180, i64 0, i64 0
  %182 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %181)
  %183 = icmp eq i32 2, %182
  br i1 %183, label %184, label %205

184:                                              ; preds = %178
  %185 = load ptr, ptr %5, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %185, i32 0, i32 6
  %187 = load i32, ptr %186, align 1, !tbaa !22
  %188 = and i32 %187, 2048
  %189 = icmp ugt i32 %188, 0
  br i1 %189, label %190, label %205

190:                                              ; preds = %184
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = load ptr, ptr %6, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %192, i32 0, i32 17
  %194 = load i32, ptr %193, align 4, !tbaa !23
  %195 = load i32, ptr %10, align 4, !tbaa !9
  %196 = zext i32 %195 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %191, i32 noundef %194, i32 noundef 4, i64 noundef %196)
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %197, ptr noundef %198, i32 noundef 23, i32 noundef 4)
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds [16 x i16], ptr %12, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %199, ptr noundef %200, ptr noundef @.str.10, i8 noundef signext 120, i32 noundef 0)
  %201 = load ptr, ptr %4, align 8, !tbaa !5
  %202 = load ptr, ptr %4, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %202, i32 0, i32 6
  %204 = load i32, ptr %203, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %201, i32 noundef %204, i32 noundef -1610346480, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1)
  br label %205

205:                                              ; preds = %190, %184, %178, %173
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %206, i32 0, i32 6
  %208 = load i32, ptr %207, align 4, !tbaa !11
  %209 = icmp uge i32 %208, 1005
  br i1 %209, label %210, label %232

210:                                              ; preds = %205
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %211, i32 0, i32 6
  %213 = load i32, ptr %212, align 4, !tbaa !11
  %214 = icmp ult i32 %213, 1051
  br i1 %214, label %215, label %232

215:                                              ; preds = %210
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %217, i32 0, i32 17
  %219 = load i32, ptr %218, align 4, !tbaa !23
  %220 = load i32, ptr %9, align 4, !tbaa !9
  %221 = zext i32 %220 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %216, i32 noundef %219, i32 noundef 4, i64 noundef %221)
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %222, ptr noundef %223, i32 noundef 22, i32 noundef 4)
  %224 = load ptr, ptr %4, align 8, !tbaa !5
  %225 = load ptr, ptr %6, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %225, i32 0, i32 17
  %227 = load i32, ptr %226, align 4, !tbaa !23
  %228 = load i32, ptr %10, align 4, !tbaa !9
  %229 = zext i32 %228 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %224, i32 noundef %227, i32 noundef 4, i64 noundef %229)
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %230, ptr noundef %231, i32 noundef 23, i32 noundef 4)
  br label %232

232:                                              ; preds = %215, %210, %205
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %233, i32 0, i32 6
  %235 = load i32, ptr %234, align 4, !tbaa !11
  %236 = icmp eq i32 %235, 1006
  br i1 %236, label %237, label %250

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

243:                                              ; preds = %237
  %244 = load ptr, ptr %4, align 8, !tbaa !5
  %245 = getelementptr inbounds [16 x i16], ptr %11, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %244, ptr noundef %245, ptr noundef @.str.9, i8 noundef signext 121, i32 noundef 0)
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %247, i32 0, i32 6
  %249 = load i32, ptr %248, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %246, i32 noundef %249, i32 noundef 537138704, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1)
  br label %250

250:                                              ; preds = %243, %237, %232
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %251, i32 0, i32 6
  %253 = load i32, ptr %252, align 4, !tbaa !11
  %254 = icmp uge i32 %253, 1006
  br i1 %254, label %255, label %282

255:                                              ; preds = %250
  %256 = load ptr, ptr %4, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %256, i32 0, i32 6
  %258 = load i32, ptr %257, align 4, !tbaa !11
  %259 = icmp ult i32 %258, 1051
  br i1 %259, label %260, label %272

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

266:                                              ; preds = %260
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %267, i32 0, i32 6
  %269 = load i32, ptr %268, align 1, !tbaa !22
  %270 = and i32 %269, 2048
  %271 = icmp ugt i32 %270, 0
  br i1 %271, label %275, label %272

272:                                              ; preds = %266, %260, %255
  %273 = load i32, ptr %14, align 4, !tbaa !9
  %274 = icmp ugt i32 %273, 0
  br i1 %274, label %275, label %282

275:                                              ; preds = %272, %266
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  %277 = getelementptr inbounds [16 x i16], ptr %12, i64 0, i64 0
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %276, ptr noundef %277, ptr noundef @.str.10, i8 noundef signext 121, i32 noundef 0)
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %279, i32 0, i32 6
  %281 = load i32, ptr %280, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %278, i32 noundef %281, i32 noundef 537138704, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1)
  br label %282

282:                                              ; preds = %275, %272, %250
  %283 = load i32, ptr %7, align 4, !tbaa !9
  %284 = icmp ugt i32 %283, 0
  br i1 %284, label %285, label %294

285:                                              ; preds = %282
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  %287 = load ptr, ptr %6, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %287, i32 0, i32 17
  %289 = load i32, ptr %288, align 4, !tbaa !23
  %290 = load i32, ptr %7, align 4, !tbaa !9
  %291 = zext i32 %290 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %286, i32 noundef %289, i32 noundef 4, i64 noundef %291)
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %292, ptr noundef %293, i32 noundef 6, i32 noundef 4)
  br label %294

294:                                              ; preds = %285, %282
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %295, i32 0, i32 6
  %297 = load i32, ptr %296, align 4, !tbaa !11
  %298 = icmp uge i32 %297, 1104
  br i1 %298, label %299, label %358

299:                                              ; preds = %294
  %300 = load i32, ptr %13, align 4, !tbaa !9
  %301 = icmp ugt i32 %300, 0
  br i1 %301, label %319, label %302

302:                                              ; preds = %299
  %303 = load i32, ptr %15, align 4, !tbaa !9
  %304 = icmp ugt i32 %303, 0
  br i1 %304, label %319, label %305

305:                                              ; preds = %302
  %306 = load i32, ptr %16, align 4, !tbaa !9
  %307 = icmp ugt i32 %306, 0
  br i1 %307, label %319, label %308

308:                                              ; preds = %305
  %309 = load i32, ptr %17, align 4, !tbaa !9
  %310 = icmp ugt i32 %309, 0
  br i1 %310, label %319, label %311

311:                                              ; preds = %308
  %312 = load i32, ptr %14, align 4, !tbaa !9
  %313 = icmp ugt i32 %312, 0
  br i1 %313, label %319, label %314

314:                                              ; preds = %311
  %315 = load ptr, ptr %6, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %315, i32 0, i32 124
  %317 = load i32, ptr %316, align 8, !tbaa !24
  %318 = icmp ugt i32 %317, 0
  br i1 %318, label %319, label %358

319:                                              ; preds = %314, %311, %308, %305, %302, %299
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %320 = load i32, ptr %13, align 4, !tbaa !9
  %321 = icmp ugt i32 %320, 0
  %322 = zext i1 %321 to i64
  %323 = select i1 %321, i32 1, i32 2
  store i32 %323, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %324, i32 0, i32 0
  %326 = load i32, ptr %325, align 1, !tbaa !21
  %327 = load ptr, ptr %5, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %327, i32 0, i32 2
  %329 = load i32, ptr %328, align 1, !tbaa !25
  %330 = mul i32 %326, %329
  %331 = mul i32 2, %330
  %332 = load i32, ptr %18, align 4, !tbaa !9
  %333 = mul i32 %331, %332
  store i32 %333, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %334 = load i32, ptr %19, align 4, !tbaa !9
  %335 = urem i32 %334, 64
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %337, label %338

337:                                              ; preds = %319
  br label %345

338:                                              ; preds = %319
  %339 = load i32, ptr %19, align 4, !tbaa !9
  %340 = add i32 %339, 63
  %341 = udiv i32 %340, 64
  %342 = mul i32 %341, 64
  %343 = load i32, ptr %19, align 4, !tbaa !9
  %344 = sub i32 %342, %343
  br label %345

345:                                              ; preds = %338, %337
  %346 = phi i32 [ 0, %337 ], [ %344, %338 ]
  store i32 %346, ptr %20, align 4, !tbaa !9
  %347 = load i32, ptr %20, align 4, !tbaa !9
  %348 = load i32, ptr %19, align 4, !tbaa !9
  %349 = add i32 %348, %347
  store i32 %349, ptr %19, align 4, !tbaa !9
  %350 = load ptr, ptr %4, align 8, !tbaa !5
  %351 = load ptr, ptr %6, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %351, i32 0, i32 17
  %353 = load i32, ptr %352, align 4, !tbaa !23
  %354 = load i32, ptr %19, align 4, !tbaa !9
  %355 = zext i32 %354 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %350, i32 noundef %353, i32 noundef 4, i64 noundef %355)
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %356, ptr noundef %357, i32 noundef 13, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %358

358:                                              ; preds = %345, %314, %294
  %359 = load ptr, ptr %6, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %359, i32 0, i32 120
  %361 = load i32, ptr %360, align 8, !tbaa !26
  %362 = icmp ugt i32 %361, 0
  br i1 %362, label %398, label %363

363:                                              ; preds = %358
  %364 = load ptr, ptr %6, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %364, i32 0, i32 121
  %366 = load i32, ptr %365, align 4, !tbaa !27
  %367 = icmp ugt i32 %366, 0
  br i1 %367, label %398, label %368

368:                                              ; preds = %363
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %369, i32 0, i32 122
  %371 = load i32, ptr %370, align 8, !tbaa !28
  %372 = icmp ugt i32 %371, 0
  br i1 %372, label %398, label %373

373:                                              ; preds = %368
  %374 = load ptr, ptr %6, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %374, i32 0, i32 123
  %376 = load i32, ptr %375, align 4, !tbaa !29
  %377 = icmp ugt i32 %376, 0
  br i1 %377, label %398, label %378

378:                                              ; preds = %373
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %379, i32 0, i32 125
  %381 = load i32, ptr %380, align 4, !tbaa !30
  %382 = icmp ugt i32 %381, 0
  br i1 %382, label %398, label %383

383:                                              ; preds = %378
  %384 = load ptr, ptr %6, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %384, i32 0, i32 126
  %386 = load i32, ptr %385, align 8, !tbaa !31
  %387 = icmp ugt i32 %386, 0
  br i1 %387, label %398, label %388

388:                                              ; preds = %383
  %389 = load ptr, ptr %6, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %389, i32 0, i32 127
  %391 = load i32, ptr %390, align 4, !tbaa !32
  %392 = icmp ugt i32 %391, 0
  br i1 %392, label %398, label %393

393:                                              ; preds = %388
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %394, i32 0, i32 128
  %396 = load i32, ptr %395, align 8, !tbaa !33
  %397 = icmp ugt i32 %396, 0
  br i1 %397, label %398, label %1119

398:                                              ; preds = %393, %388, %383, %378, %373, %368, %363, %358
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %399 = load ptr, ptr %5, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %399, i32 0, i32 6
  %401 = load i32, ptr %400, align 1, !tbaa !22
  %402 = and i32 %401, 262144
  %403 = icmp ugt i32 %402, 0
  %404 = zext i1 %403 to i64
  %405 = select i1 %403, i32 1, i32 0
  store i32 %405, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %406 = load ptr, ptr %5, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %406, i32 0, i32 6
  %408 = load i32, ptr %407, align 1, !tbaa !22
  %409 = and i32 %408, 131072
  %410 = icmp ugt i32 %409, 0
  %411 = zext i1 %410 to i64
  %412 = select i1 %410, i32 1, i32 0
  store i32 %412, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  %413 = load ptr, ptr %5, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %413, i32 0, i32 6
  %415 = load i32, ptr %414, align 1, !tbaa !22
  %416 = and i32 %415, 65536
  %417 = icmp ugt i32 %416, 0
  %418 = zext i1 %417 to i64
  %419 = select i1 %417, i32 1, i32 0
  store i32 %419, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  %420 = load i32, ptr %21, align 4, !tbaa !9
  %421 = icmp eq i32 %420, 1
  br i1 %421, label %428, label %422

422:                                              ; preds = %398
  %423 = load i32, ptr %22, align 4, !tbaa !9
  %424 = icmp eq i32 %423, 1
  br i1 %424, label %428, label %425

425:                                              ; preds = %422
  %426 = load i32, ptr %23, align 4, !tbaa !9
  %427 = icmp eq i32 %426, 1
  br label %428

428:                                              ; preds = %425, %422, %398
  %429 = phi i1 [ true, %422 ], [ true, %398 ], [ %427, %425 ]
  %430 = zext i1 %429 to i64
  %431 = select i1 %429, i32 1, i32 0
  store i32 %431, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %432 = load ptr, ptr %6, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %432, i32 0, i32 122
  %434 = load i32, ptr %433, align 8, !tbaa !28
  %435 = icmp ugt i32 %434, 0
  br i1 %435, label %461, label %436

436:                                              ; preds = %428
  %437 = load ptr, ptr %6, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %437, i32 0, i32 123
  %439 = load i32, ptr %438, align 4, !tbaa !29
  %440 = icmp ugt i32 %439, 0
  br i1 %440, label %461, label %441

441:                                              ; preds = %436
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %442, i32 0, i32 125
  %444 = load i32, ptr %443, align 4, !tbaa !30
  %445 = icmp ugt i32 %444, 0
  br i1 %445, label %461, label %446

446:                                              ; preds = %441
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %447, i32 0, i32 126
  %449 = load i32, ptr %448, align 8, !tbaa !31
  %450 = icmp ugt i32 %449, 0
  br i1 %450, label %461, label %451

451:                                              ; preds = %446
  %452 = load ptr, ptr %6, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %452, i32 0, i32 127
  %454 = load i32, ptr %453, align 4, !tbaa !32
  %455 = icmp ugt i32 %454, 0
  br i1 %455, label %461, label %456

456:                                              ; preds = %451
  %457 = load ptr, ptr %6, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %457, i32 0, i32 128
  %459 = load i32, ptr %458, align 8, !tbaa !33
  %460 = icmp ugt i32 %459, 0
  br i1 %460, label %461, label %589

461:                                              ; preds = %456, %451, %446, %441, %436, %428
  %462 = load ptr, ptr %5, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %462, i32 0, i32 8
  %464 = getelementptr inbounds [3 x i8], ptr %463, i64 0, i64 0
  %465 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %464)
  %466 = icmp eq i32 0, %465
  br i1 %466, label %467, label %468

467:                                              ; preds = %461
  br label %587

468:                                              ; preds = %461
  %469 = load ptr, ptr %5, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %469, i32 0, i32 8
  %471 = getelementptr inbounds [3 x i8], ptr %470, i64 0, i64 0
  %472 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %471)
  %473 = icmp eq i32 1, %472
  br i1 %473, label %474, label %475

474:                                              ; preds = %468
  br label %585

475:                                              ; preds = %468
  %476 = load ptr, ptr %5, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %476, i32 0, i32 8
  %478 = getelementptr inbounds [3 x i8], ptr %477, i64 0, i64 0
  %479 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %478)
  %480 = icmp eq i32 2, %479
  br i1 %480, label %481, label %482

481:                                              ; preds = %475
  br label %583

482:                                              ; preds = %475
  %483 = load ptr, ptr %5, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %483, i32 0, i32 8
  %485 = getelementptr inbounds [3 x i8], ptr %484, i64 0, i64 0
  %486 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %485)
  %487 = icmp eq i32 3, %486
  br i1 %487, label %488, label %489

488:                                              ; preds = %482
  br label %581

489:                                              ; preds = %482
  %490 = load ptr, ptr %5, 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_AB_COMMON_PREC(ptr noundef %492)
  %494 = icmp eq i32 4, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %489
  br label %579

496:                                              ; preds = %489
  %497 = load ptr, ptr %5, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %497, i32 0, i32 8
  %499 = getelementptr inbounds [3 x i8], ptr %498, i64 0, i64 0
  %500 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %499)
  %501 = icmp eq i32 5, %500
  br i1 %501, label %502, label %503

502:                                              ; preds = %496
  br label %577

503:                                              ; preds = %496
  %504 = load ptr, ptr %5, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %504, i32 0, i32 8
  %506 = getelementptr inbounds [3 x i8], ptr %505, i64 0, i64 0
  %507 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %506)
  %508 = icmp eq i32 6, %507
  br i1 %508, label %509, label %510

509:                                              ; preds = %503
  br label %575

510:                                              ; preds = %503
  %511 = load ptr, ptr %5, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %511, i32 0, i32 8
  %513 = getelementptr inbounds [3 x i8], ptr %512, i64 0, i64 0
  %514 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %513)
  %515 = icmp eq i32 7, %514
  br i1 %515, label %516, label %517

516:                                              ; preds = %510
  br label %573

517:                                              ; preds = %510
  %518 = load ptr, ptr %5, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %518, i32 0, i32 8
  %520 = getelementptr inbounds [3 x i8], ptr %519, i64 0, i64 0
  %521 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %520)
  %522 = icmp eq i32 8, %521
  br i1 %522, label %523, label %524

523:                                              ; preds = %517
  br label %571

524:                                              ; preds = %517
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %525, i32 0, i32 8
  %527 = getelementptr inbounds [3 x i8], ptr %526, i64 0, i64 0
  %528 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %527)
  %529 = icmp eq i32 9, %528
  br i1 %529, label %530, label %531

530:                                              ; preds = %524
  br label %569

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

537:                                              ; preds = %531
  br label %567

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

544:                                              ; preds = %538
  br label %565

545:                                              ; preds = %538
  %546 = load ptr, ptr %5, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %546, i32 0, i32 8
  %548 = getelementptr inbounds [3 x i8], ptr %547, i64 0, i64 0
  %549 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %548)
  %550 = icmp eq i32 12, %549
  br i1 %550, label %551, label %552

551:                                              ; preds = %545
  br label %563

552:                                              ; preds = %545
  %553 = load ptr, ptr %5, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %553, i32 0, i32 8
  %555 = getelementptr inbounds [3 x i8], ptr %554, i64 0, i64 0
  %556 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %555)
  %557 = icmp eq i32 13, %556
  br i1 %557, label %558, label %559

558:                                              ; preds = %552
  br label %561

559:                                              ; preds = %552
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1564, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch) #6
  unreachable

560:                                              ; No predecessors!
  br label %561

561:                                              ; preds = %560, %558
  %562 = phi i32 [ 1, %558 ], [ 0, %560 ]
  br label %563

563:                                              ; preds = %561, %551
  %564 = phi i32 [ 1, %551 ], [ %562, %561 ]
  br label %565

565:                                              ; preds = %563, %544
  %566 = phi i32 [ 2, %544 ], [ %564, %563 ]
  br label %567

567:                                              ; preds = %565, %537
  %568 = phi i32 [ 2, %537 ], [ %566, %565 ]
  br label %569

569:                                              ; preds = %567, %530
  %570 = phi i32 [ 4, %530 ], [ %568, %567 ]
  br label %571

571:                                              ; preds = %569, %523
  %572 = phi i32 [ 4, %523 ], [ %570, %569 ]
  br label %573

573:                                              ; preds = %571, %516
  %574 = phi i32 [ 8, %516 ], [ %572, %571 ]
  br label %575

575:                                              ; preds = %573, %509
  %576 = phi i32 [ 8, %509 ], [ %574, %573 ]
  br label %577

577:                                              ; preds = %575, %502
  %578 = phi i32 [ 1, %502 ], [ %576, %575 ]
  br label %579

579:                                              ; preds = %577, %495
  %580 = phi i32 [ 1, %495 ], [ %578, %577 ]
  br label %581

581:                                              ; preds = %579, %488
  %582 = phi i32 [ 2, %488 ], [ %580, %579 ]
  br label %583

583:                                              ; preds = %581, %481
  %584 = phi i32 [ 2, %481 ], [ %582, %581 ]
  br label %585

585:                                              ; preds = %583, %474
  %586 = phi i32 [ 4, %474 ], [ %584, %583 ]
  br label %587

587:                                              ; preds = %585, %467
  %588 = phi i32 [ 8, %467 ], [ %586, %585 ]
  br label %590

589:                                              ; preds = %456
  br label %590

590:                                              ; preds = %589, %587
  %591 = phi i32 [ %588, %587 ], [ 4, %589 ]
  store i32 %591, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  %592 = load ptr, ptr %5, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %592, i32 0, i32 0
  %594 = load i32, ptr %593, align 1, !tbaa !21
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %595, i32 0, i32 2
  %597 = load i32, ptr %596, align 1, !tbaa !25
  %598 = mul i32 %594, %597
  %599 = load i32, ptr %25, align 4, !tbaa !9
  %600 = mul i32 %598, %599
  store i32 %600, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  %601 = load ptr, ptr %5, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %601, i32 0, i32 2
  %603 = load i32, ptr %602, align 1, !tbaa !25
  %604 = load ptr, ptr %5, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %604, i32 0, i32 1
  %606 = load i32, ptr %605, align 1, !tbaa !18
  %607 = mul i32 %603, %606
  %608 = load i32, ptr %25, align 4, !tbaa !9
  %609 = mul i32 %607, %608
  store i32 %609, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  %610 = load ptr, ptr %5, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %610, i32 0, i32 0
  %612 = load i32, ptr %611, align 1, !tbaa !21
  %613 = load ptr, ptr %5, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %613, i32 0, i32 1
  %615 = load i32, ptr %614, align 1, !tbaa !18
  %616 = mul i32 %612, %615
  %617 = mul i32 %616, 4
  store i32 %617, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %618, i32 0, i32 0
  %620 = load i32, ptr %619, align 1, !tbaa !21
  %621 = mul i32 %620, 4
  store i32 %621, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %622 = load i32, ptr %26, align 4, !tbaa !9
  %623 = urem i32 %622, 64
  %624 = icmp eq i32 %623, 0
  br i1 %624, label %625, label %626

625:                                              ; preds = %590
  br label %633

626:                                              ; preds = %590
  %627 = load i32, ptr %26, align 4, !tbaa !9
  %628 = add i32 %627, 63
  %629 = udiv i32 %628, 64
  %630 = mul i32 %629, 64
  %631 = load i32, ptr %26, align 4, !tbaa !9
  %632 = sub i32 %630, %631
  br label %633

633:                                              ; preds = %626, %625
  %634 = phi i32 [ 0, %625 ], [ %632, %626 ]
  store i32 %634, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  %635 = load i32, ptr %27, align 4, !tbaa !9
  %636 = urem i32 %635, 64
  %637 = icmp eq i32 %636, 0
  br i1 %637, label %638, label %639

638:                                              ; preds = %633
  br label %646

639:                                              ; preds = %633
  %640 = load i32, ptr %27, align 4, !tbaa !9
  %641 = add i32 %640, 63
  %642 = udiv i32 %641, 64
  %643 = mul i32 %642, 64
  %644 = load i32, ptr %27, align 4, !tbaa !9
  %645 = sub i32 %643, %644
  br label %646

646:                                              ; preds = %639, %638
  %647 = phi i32 [ 0, %638 ], [ %645, %639 ]
  store i32 %647, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  %648 = load i32, ptr %28, align 4, !tbaa !9
  %649 = urem i32 %648, 64
  %650 = icmp eq i32 %649, 0
  br i1 %650, label %651, label %652

651:                                              ; preds = %646
  br label %659

652:                                              ; preds = %646
  %653 = load i32, ptr %28, align 4, !tbaa !9
  %654 = add i32 %653, 63
  %655 = udiv i32 %654, 64
  %656 = mul i32 %655, 64
  %657 = load i32, ptr %28, align 4, !tbaa !9
  %658 = sub i32 %656, %657
  br label %659

659:                                              ; preds = %652, %651
  %660 = phi i32 [ 0, %651 ], [ %658, %652 ]
  store i32 %660, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  %661 = load i32, ptr %29, align 4, !tbaa !9
  %662 = urem i32 %661, 64
  %663 = icmp eq i32 %662, 0
  br i1 %663, label %664, label %665

664:                                              ; preds = %659
  br label %672

665:                                              ; preds = %659
  %666 = load i32, ptr %29, align 4, !tbaa !9
  %667 = add i32 %666, 63
  %668 = udiv i32 %667, 64
  %669 = mul i32 %668, 64
  %670 = load i32, ptr %29, align 4, !tbaa !9
  %671 = sub i32 %669, %670
  br label %672

672:                                              ; preds = %665, %664
  %673 = phi i32 [ 0, %664 ], [ %671, %665 ]
  store i32 %673, ptr %33, align 4, !tbaa !9
  %674 = load i32, ptr %30, align 4, !tbaa !9
  %675 = load i32, ptr %26, align 4, !tbaa !9
  %676 = add i32 %675, %674
  store i32 %676, ptr %26, align 4, !tbaa !9
  %677 = load i32, ptr %31, align 4, !tbaa !9
  %678 = load i32, ptr %27, align 4, !tbaa !9
  %679 = add i32 %678, %677
  store i32 %679, ptr %27, align 4, !tbaa !9
  %680 = load i32, ptr %32, align 4, !tbaa !9
  %681 = load i32, ptr %28, align 4, !tbaa !9
  %682 = add i32 %681, %680
  store i32 %682, ptr %28, align 4, !tbaa !9
  %683 = load ptr, ptr %6, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %683, i32 0, i32 30
  %685 = load i32, ptr %684, align 8, !tbaa !34
  %686 = icmp ugt i32 %685, 0
  br i1 %686, label %687, label %733

687:                                              ; preds = %672
  %688 = load ptr, ptr %6, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %688, i32 0, i32 120
  %690 = load i32, ptr %689, align 8, !tbaa !26
  %691 = icmp ugt i32 %690, 0
  br i1 %691, label %697, label %692

692:                                              ; preds = %687
  %693 = load ptr, ptr %6, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %693, i32 0, i32 121
  %695 = load i32, ptr %694, align 4, !tbaa !27
  %696 = icmp ugt i32 %695, 0
  br i1 %696, label %697, label %733

697:                                              ; preds = %692, %687
  %698 = load ptr, ptr %5, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %698, i32 0, i32 0
  %700 = load i32, ptr %699, align 1, !tbaa !21
  %701 = load ptr, ptr %5, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %701, i32 0, i32 1
  %703 = load i32, ptr %702, align 1, !tbaa !18
  %704 = mul i32 %700, %703
  %705 = mul i32 %704, 4
  %706 = load ptr, ptr %5, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %706, i32 0, i32 0
  %708 = load i32, ptr %707, align 1, !tbaa !21
  %709 = add i32 %708, 15
  %710 = udiv i32 %709, 16
  %711 = mul i32 %710, 16
  %712 = load ptr, ptr %5, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %712, i32 0, i32 1
  %714 = load i32, ptr %713, align 1, !tbaa !18
  %715 = mul i32 %711, %714
  %716 = add i32 %705, %715
  store i32 %716, ptr %28, align 4, !tbaa !9
  %717 = load i32, ptr %28, align 4, !tbaa !9
  %718 = urem i32 %717, 64
  %719 = icmp eq i32 %718, 0
  br i1 %719, label %720, label %721

720:                                              ; preds = %697
  br label %728

721:                                              ; preds = %697
  %722 = load i32, ptr %28, align 4, !tbaa !9
  %723 = add i32 %722, 63
  %724 = udiv i32 %723, 64
  %725 = mul i32 %724, 64
  %726 = load i32, ptr %28, align 4, !tbaa !9
  %727 = sub i32 %725, %726
  br label %728

728:                                              ; preds = %721, %720
  %729 = phi i32 [ 0, %720 ], [ %727, %721 ]
  store i32 %729, ptr %32, align 4, !tbaa !9
  %730 = load i32, ptr %32, align 4, !tbaa !9
  %731 = load i32, ptr %28, align 4, !tbaa !9
  %732 = add i32 %731, %730
  store i32 %732, ptr %28, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %728, %692, %672
  %734 = load i32, ptr %33, align 4, !tbaa !9
  %735 = load i32, ptr %29, align 4, !tbaa !9
  %736 = add i32 %735, %734
  store i32 %736, ptr %29, align 4, !tbaa !9
  %737 = load ptr, ptr %6, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %737, i32 0, i32 120
  %739 = load i32, ptr %738, align 8, !tbaa !26
  %740 = icmp ugt i32 %739, 0
  br i1 %740, label %746, label %741

741:                                              ; preds = %733
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %742, i32 0, i32 121
  %744 = load i32, ptr %743, align 4, !tbaa !27
  %745 = icmp ugt i32 %744, 0
  br i1 %745, label %746, label %755

746:                                              ; preds = %741, %733
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = load ptr, ptr %6, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %748, i32 0, i32 17
  %750 = load i32, ptr %749, align 4, !tbaa !23
  %751 = load i32, ptr %26, align 4, !tbaa !9
  %752 = zext i32 %751 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %747, i32 noundef %750, i32 noundef 4, i64 noundef %752)
  %753 = load ptr, ptr %4, align 8, !tbaa !5
  %754 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %753, ptr noundef %754, i32 noundef 27, i32 noundef 4)
  br label %755

755:                                              ; preds = %746, %741
  %756 = load ptr, ptr %4, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %756, i32 0, i32 6
  %758 = load i32, ptr %757, align 4, !tbaa !11
  %759 = icmp uge i32 %758, 1104
  br i1 %759, label %760, label %803

760:                                              ; preds = %755
  %761 = load ptr, ptr %4, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %761, i32 0, i32 6
  %763 = load i32, ptr %762, align 4, !tbaa !11
  %764 = icmp ult i32 %763, 1999
  br i1 %764, label %765, label %803

765:                                              ; preds = %760
  %766 = load ptr, ptr %6, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %766, i32 0, i32 120
  %768 = load i32, ptr %767, align 8, !tbaa !26
  %769 = icmp ugt i32 %768, 0
  br i1 %769, label %775, label %770

770:                                              ; preds = %765
  %771 = load ptr, ptr %6, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %771, i32 0, i32 121
  %773 = load i32, ptr %772, align 4, !tbaa !27
  %774 = icmp ugt i32 %773, 0
  br i1 %774, label %775, label %803

775:                                              ; preds = %770, %765
  %776 = load ptr, ptr %4, align 8, !tbaa !5
  %777 = load ptr, ptr %6, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %777, i32 0, i32 17
  %779 = load i32, ptr %778, align 4, !tbaa !23
  %780 = load i32, ptr %28, align 4, !tbaa !9
  %781 = zext i32 %780 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %776, i32 noundef %779, i32 noundef 4, i64 noundef %781)
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %782, ptr noundef %783, i32 noundef 28, i32 noundef 4)
  %784 = load ptr, ptr %6, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %784, i32 0, i32 27
  %786 = load i32, ptr %785, align 4, !tbaa !35
  %787 = icmp ugt i32 %786, 0
  br i1 %787, label %793, label %788

788:                                              ; preds = %775
  %789 = load ptr, ptr %6, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %789, i32 0, i32 28
  %791 = load i32, ptr %790, align 8, !tbaa !36
  %792 = icmp ugt i32 %791, 0
  br i1 %792, label %793, label %802

793:                                              ; preds = %788, %775
  %794 = load ptr, ptr %4, align 8, !tbaa !5
  %795 = load ptr, ptr %6, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %795, i32 0, i32 17
  %797 = load i32, ptr %796, align 4, !tbaa !23
  %798 = load i32, ptr %29, align 4, !tbaa !9
  %799 = zext i32 %798 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %794, i32 noundef %797, i32 noundef 4, i64 noundef %799)
  %800 = load ptr, ptr %4, align 8, !tbaa !5
  %801 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %800, ptr noundef %801, i32 noundef 30, i32 noundef 4)
  br label %802

802:                                              ; preds = %793, %788
  br label %803

803:                                              ; preds = %802, %770, %760, %755
  %804 = load i32, ptr %24, align 4, !tbaa !9
  %805 = icmp eq i32 %804, 0
  br i1 %805, label %806, label %911

806:                                              ; preds = %803
  %807 = load ptr, ptr %6, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %807, i32 0, i32 122
  %809 = load i32, ptr %808, align 8, !tbaa !28
  %810 = icmp ugt i32 %809, 0
  br i1 %810, label %811, label %820

811:                                              ; preds = %806
  %812 = load ptr, ptr %4, align 8, !tbaa !5
  %813 = load ptr, ptr %6, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %813, i32 0, i32 17
  %815 = load i32, ptr %814, align 4, !tbaa !23
  %816 = load i32, ptr %26, align 4, !tbaa !9
  %817 = zext i32 %816 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %812, i32 noundef %815, i32 noundef 4, i64 noundef %817)
  %818 = load ptr, ptr %4, align 8, !tbaa !5
  %819 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %818, ptr noundef %819, i32 noundef 21, i32 noundef 4)
  br label %910

820:                                              ; preds = %806
  %821 = load ptr, ptr %6, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %821, i32 0, i32 123
  %823 = load i32, ptr %822, align 4, !tbaa !29
  %824 = icmp ugt i32 %823, 0
  br i1 %824, label %825, label %834

825:                                              ; preds = %820
  %826 = load ptr, ptr %4, align 8, !tbaa !5
  %827 = load ptr, ptr %6, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %827, i32 0, i32 17
  %829 = load i32, ptr %828, align 4, !tbaa !23
  %830 = load i32, ptr %26, align 4, !tbaa !9
  %831 = zext i32 %830 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %826, i32 noundef %829, i32 noundef 4, i64 noundef %831)
  %832 = load ptr, ptr %4, align 8, !tbaa !5
  %833 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %832, ptr noundef %833, i32 noundef 21, i32 noundef 4)
  br label %909

834:                                              ; preds = %820
  %835 = load ptr, ptr %6, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %835, i32 0, i32 126
  %837 = load i32, ptr %836, align 8, !tbaa !31
  %838 = icmp ugt i32 %837, 0
  br i1 %838, label %844, label %839

839:                                              ; preds = %834
  %840 = load ptr, ptr %6, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %840, i32 0, i32 127
  %842 = load i32, ptr %841, align 4, !tbaa !32
  %843 = icmp ugt i32 %842, 0
  br i1 %843, label %844, label %861

844:                                              ; preds = %839, %834
  %845 = load ptr, ptr %4, align 8, !tbaa !5
  %846 = load ptr, ptr %6, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %846, i32 0, i32 17
  %848 = load i32, ptr %847, align 4, !tbaa !23
  %849 = load i32, ptr %26, align 4, !tbaa !9
  %850 = zext i32 %849 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %845, i32 noundef %848, i32 noundef 4, i64 noundef %850)
  %851 = load ptr, ptr %4, align 8, !tbaa !5
  %852 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %851, ptr noundef %852, i32 noundef 21, i32 noundef 4)
  %853 = load ptr, ptr %4, align 8, !tbaa !5
  %854 = load ptr, ptr %6, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %854, i32 0, i32 17
  %856 = load i32, ptr %855, align 4, !tbaa !23
  %857 = load i32, ptr %27, align 4, !tbaa !9
  %858 = zext i32 %857 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %853, i32 noundef %856, i32 noundef 4, i64 noundef %858)
  %859 = load ptr, ptr %4, align 8, !tbaa !5
  %860 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %859, ptr noundef %860, i32 noundef 25, i32 noundef 4)
  br label %908

861:                                              ; preds = %839
  %862 = load ptr, ptr %6, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %862, i32 0, i32 125
  %864 = load i32, ptr %863, align 4, !tbaa !30
  %865 = icmp ugt i32 %864, 0
  br i1 %865, label %866, label %875

866:                                              ; preds = %861
  %867 = load ptr, ptr %4, align 8, !tbaa !5
  %868 = load ptr, ptr %6, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %868, i32 0, i32 17
  %870 = load i32, ptr %869, align 4, !tbaa !23
  %871 = load i32, ptr %26, align 4, !tbaa !9
  %872 = zext i32 %871 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %867, i32 noundef %870, i32 noundef 4, i64 noundef %872)
  %873 = load ptr, ptr %4, align 8, !tbaa !5
  %874 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %873, ptr noundef %874, i32 noundef 21, i32 noundef 4)
  br label %907

875:                                              ; preds = %861
  %876 = load ptr, ptr %6, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %876, i32 0, i32 128
  %878 = load i32, ptr %877, align 8, !tbaa !33
  %879 = icmp ugt i32 %878, 0
  br i1 %879, label %880, label %889

880:                                              ; preds = %875
  %881 = load ptr, ptr %4, align 8, !tbaa !5
  %882 = load ptr, ptr %6, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %882, i32 0, i32 17
  %884 = load i32, ptr %883, align 4, !tbaa !23
  %885 = load i32, ptr %27, align 4, !tbaa !9
  %886 = zext i32 %885 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %881, i32 noundef %884, i32 noundef 4, i64 noundef %886)
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %887, ptr noundef %888, i32 noundef 25, i32 noundef 4)
  br label %906

889:                                              ; preds = %875
  %890 = load ptr, ptr %4, align 8, !tbaa !5
  %891 = load ptr, ptr %6, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %891, i32 0, i32 17
  %893 = load i32, ptr %892, align 4, !tbaa !23
  %894 = load i32, ptr %26, align 4, !tbaa !9
  %895 = zext i32 %894 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %890, i32 noundef %893, i32 noundef 4, i64 noundef %895)
  %896 = load ptr, ptr %4, align 8, !tbaa !5
  %897 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %896, ptr noundef %897, i32 noundef 24, i32 noundef 4)
  %898 = load ptr, ptr %4, align 8, !tbaa !5
  %899 = load ptr, ptr %6, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %899, i32 0, i32 17
  %901 = load i32, ptr %900, align 4, !tbaa !23
  %902 = load i32, ptr %27, align 4, !tbaa !9
  %903 = zext i32 %902 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %898, i32 noundef %901, i32 noundef 4, i64 noundef %903)
  %904 = load ptr, ptr %4, align 8, !tbaa !5
  %905 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %904, ptr noundef %905, i32 noundef 25, i32 noundef 4)
  br label %906

906:                                              ; preds = %889, %880
  br label %907

907:                                              ; preds = %906, %866
  br label %908

908:                                              ; preds = %907, %844
  br label %909

909:                                              ; preds = %908, %825
  br label %910

910:                                              ; preds = %909, %811
  br label %1112

911:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  store i32 10, ptr %34, align 4, !tbaa !9
  %912 = load ptr, ptr %6, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %912, i32 0, i32 122
  %914 = load i32, ptr %913, align 8, !tbaa !28
  %915 = icmp ugt i32 %914, 0
  br i1 %915, label %916, label %946

916:                                              ; preds = %911
  %917 = load ptr, ptr %4, align 8, !tbaa !5
  %918 = load ptr, ptr %6, align 8, !tbaa !5
  %919 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %917, ptr noundef %918, i32 noundef 20, i32 noundef %919)
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = load i32, ptr %34, align 4, !tbaa !9
  %922 = load i32, ptr %26, align 4, !tbaa !9
  %923 = zext i32 %922 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %920, i32 noundef 30003, i32 noundef %921, i64 noundef %923)
  %924 = load ptr, ptr %4, align 8, !tbaa !5
  %925 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %924, i32 noundef 30008, i32 noundef %925, i32 noundef 4)
  %926 = load ptr, ptr %4, align 8, !tbaa !5
  %927 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %926, ptr noundef %927, i32 noundef 21, i32 noundef 4)
  %928 = load i32, ptr %22, align 4, !tbaa !9
  %929 = icmp sgt i32 %928, 0
  br i1 %929, label %933, label %930

930:                                              ; preds = %916
  %931 = load i32, ptr %23, align 4, !tbaa !9
  %932 = icmp sgt i32 %931, 0
  br i1 %932, label %933, label %945

933:                                              ; preds = %930, %916
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = load ptr, ptr %6, align 8, !tbaa !5
  %936 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %934, ptr noundef %935, i32 noundef 20, i32 noundef %936)
  %937 = load ptr, ptr %4, align 8, !tbaa !5
  %938 = load i32, ptr %34, align 4, !tbaa !9
  %939 = load i32, ptr %27, align 4, !tbaa !9
  %940 = zext i32 %939 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %937, i32 noundef 30003, i32 noundef %938, i64 noundef %940)
  %941 = load ptr, ptr %4, align 8, !tbaa !5
  %942 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %941, i32 noundef 30008, i32 noundef %942, i32 noundef 4)
  %943 = load ptr, ptr %4, align 8, !tbaa !5
  %944 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %943, ptr noundef %944, i32 noundef 25, i32 noundef 4)
  br label %945

945:                                              ; preds = %933, %930
  br label %1111

946:                                              ; preds = %911
  %947 = load ptr, ptr %6, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %947, i32 0, i32 123
  %949 = load i32, ptr %948, align 4, !tbaa !29
  %950 = icmp ugt i32 %949, 0
  br i1 %950, label %951, label %981

951:                                              ; preds = %946
  %952 = load ptr, ptr %4, align 8, !tbaa !5
  %953 = load ptr, ptr %6, align 8, !tbaa !5
  %954 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %952, ptr noundef %953, i32 noundef 20, i32 noundef %954)
  %955 = load ptr, ptr %4, align 8, !tbaa !5
  %956 = load i32, ptr %34, align 4, !tbaa !9
  %957 = load i32, ptr %26, align 4, !tbaa !9
  %958 = zext i32 %957 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %955, i32 noundef 30003, i32 noundef %956, i64 noundef %958)
  %959 = load ptr, ptr %4, align 8, !tbaa !5
  %960 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %959, i32 noundef 30008, i32 noundef %960, i32 noundef 4)
  %961 = load ptr, ptr %4, align 8, !tbaa !5
  %962 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %961, ptr noundef %962, i32 noundef 21, i32 noundef 4)
  %963 = load i32, ptr %22, align 4, !tbaa !9
  %964 = icmp sgt i32 %963, 0
  br i1 %964, label %968, label %965

965:                                              ; preds = %951
  %966 = load i32, ptr %23, align 4, !tbaa !9
  %967 = icmp sgt i32 %966, 0
  br i1 %967, label %968, label %980

968:                                              ; preds = %965, %951
  %969 = load ptr, ptr %4, align 8, !tbaa !5
  %970 = load ptr, ptr %6, align 8, !tbaa !5
  %971 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %969, ptr noundef %970, i32 noundef 20, i32 noundef %971)
  %972 = load ptr, ptr %4, align 8, !tbaa !5
  %973 = load i32, ptr %34, align 4, !tbaa !9
  %974 = load i32, ptr %27, align 4, !tbaa !9
  %975 = zext i32 %974 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %972, i32 noundef 30003, i32 noundef %973, i64 noundef %975)
  %976 = load ptr, ptr %4, align 8, !tbaa !5
  %977 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %976, i32 noundef 30008, i32 noundef %977, i32 noundef 4)
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %978, ptr noundef %979, i32 noundef 25, i32 noundef 4)
  br label %980

980:                                              ; preds = %968, %965
  br label %1110

981:                                              ; preds = %946
  %982 = load ptr, ptr %6, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %982, i32 0, i32 126
  %984 = load i32, ptr %983, align 8, !tbaa !31
  %985 = icmp ugt i32 %984, 0
  br i1 %985, label %991, label %986

986:                                              ; preds = %981
  %987 = load ptr, ptr %6, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %987, i32 0, i32 127
  %989 = load i32, ptr %988, align 4, !tbaa !32
  %990 = icmp ugt i32 %989, 0
  br i1 %990, label %991, label %1014

991:                                              ; preds = %986, %981
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = load ptr, ptr %6, align 8, !tbaa !5
  %994 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %992, ptr noundef %993, i32 noundef 20, i32 noundef %994)
  %995 = load ptr, ptr %4, align 8, !tbaa !5
  %996 = load i32, ptr %34, align 4, !tbaa !9
  %997 = load i32, ptr %26, align 4, !tbaa !9
  %998 = zext i32 %997 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %995, i32 noundef 30003, i32 noundef %996, i64 noundef %998)
  %999 = load ptr, ptr %4, align 8, !tbaa !5
  %1000 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %999, i32 noundef 30008, i32 noundef %1000, i32 noundef 4)
  %1001 = load ptr, ptr %4, align 8, !tbaa !5
  %1002 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1001, ptr noundef %1002, i32 noundef 21, i32 noundef 4)
  %1003 = load ptr, ptr %4, align 8, !tbaa !5
  %1004 = load ptr, ptr %6, align 8, !tbaa !5
  %1005 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1003, ptr noundef %1004, i32 noundef 20, i32 noundef %1005)
  %1006 = load ptr, ptr %4, align 8, !tbaa !5
  %1007 = load i32, ptr %34, align 4, !tbaa !9
  %1008 = load i32, ptr %27, align 4, !tbaa !9
  %1009 = zext i32 %1008 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1006, i32 noundef 30003, i32 noundef %1007, i64 noundef %1009)
  %1010 = load ptr, ptr %4, align 8, !tbaa !5
  %1011 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1010, i32 noundef 30008, i32 noundef %1011, i32 noundef 4)
  %1012 = load ptr, ptr %4, align 8, !tbaa !5
  %1013 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1012, ptr noundef %1013, i32 noundef 25, i32 noundef 4)
  br label %1109

1014:                                             ; preds = %986
  %1015 = load ptr, ptr %6, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1015, i32 0, i32 125
  %1017 = load i32, ptr %1016, align 4, !tbaa !30
  %1018 = icmp ugt i32 %1017, 0
  br i1 %1018, label %1019, label %1049

1019:                                             ; preds = %1014
  %1020 = load ptr, ptr %4, align 8, !tbaa !5
  %1021 = load ptr, ptr %6, align 8, !tbaa !5
  %1022 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1020, ptr noundef %1021, i32 noundef 20, i32 noundef %1022)
  %1023 = load ptr, ptr %4, align 8, !tbaa !5
  %1024 = load i32, ptr %34, align 4, !tbaa !9
  %1025 = load i32, ptr %26, align 4, !tbaa !9
  %1026 = zext i32 %1025 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1023, i32 noundef 30003, i32 noundef %1024, i64 noundef %1026)
  %1027 = load ptr, ptr %4, align 8, !tbaa !5
  %1028 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1027, i32 noundef 30008, i32 noundef %1028, i32 noundef 4)
  %1029 = load ptr, ptr %4, align 8, !tbaa !5
  %1030 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1029, ptr noundef %1030, i32 noundef 21, i32 noundef 4)
  %1031 = load i32, ptr %22, align 4, !tbaa !9
  %1032 = icmp sgt i32 %1031, 0
  br i1 %1032, label %1036, label %1033

1033:                                             ; preds = %1019
  %1034 = load i32, ptr %23, align 4, !tbaa !9
  %1035 = icmp sgt i32 %1034, 0
  br i1 %1035, label %1036, label %1048

1036:                                             ; preds = %1033, %1019
  %1037 = load ptr, ptr %4, align 8, !tbaa !5
  %1038 = load ptr, ptr %6, align 8, !tbaa !5
  %1039 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1037, ptr noundef %1038, i32 noundef 20, i32 noundef %1039)
  %1040 = load ptr, ptr %4, align 8, !tbaa !5
  %1041 = load i32, ptr %34, align 4, !tbaa !9
  %1042 = load i32, ptr %27, align 4, !tbaa !9
  %1043 = zext i32 %1042 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1040, i32 noundef 30003, i32 noundef %1041, i64 noundef %1043)
  %1044 = load ptr, ptr %4, align 8, !tbaa !5
  %1045 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1044, i32 noundef 30008, i32 noundef %1045, i32 noundef 4)
  %1046 = load ptr, ptr %4, align 8, !tbaa !5
  %1047 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1046, ptr noundef %1047, i32 noundef 25, i32 noundef 4)
  br label %1048

1048:                                             ; preds = %1036, %1033
  br label %1108

1049:                                             ; preds = %1014
  %1050 = load ptr, ptr %6, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1050, i32 0, i32 128
  %1052 = load i32, ptr %1051, align 8, !tbaa !33
  %1053 = icmp ugt i32 %1052, 0
  br i1 %1053, label %1054, label %1084

1054:                                             ; preds = %1049
  %1055 = load ptr, ptr %4, align 8, !tbaa !5
  %1056 = load ptr, ptr %6, align 8, !tbaa !5
  %1057 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1055, ptr noundef %1056, i32 noundef 20, i32 noundef %1057)
  %1058 = load ptr, ptr %4, align 8, !tbaa !5
  %1059 = load i32, ptr %34, align 4, !tbaa !9
  %1060 = load i32, ptr %27, align 4, !tbaa !9
  %1061 = zext i32 %1060 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1058, i32 noundef 30003, i32 noundef %1059, i64 noundef %1061)
  %1062 = load ptr, ptr %4, align 8, !tbaa !5
  %1063 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1062, i32 noundef 30008, i32 noundef %1063, i32 noundef 4)
  %1064 = load ptr, ptr %4, align 8, !tbaa !5
  %1065 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1064, ptr noundef %1065, i32 noundef 25, i32 noundef 4)
  %1066 = load i32, ptr %22, align 4, !tbaa !9
  %1067 = icmp sgt i32 %1066, 0
  br i1 %1067, label %1071, label %1068

1068:                                             ; preds = %1054
  %1069 = load i32, ptr %23, align 4, !tbaa !9
  %1070 = icmp sgt i32 %1069, 0
  br i1 %1070, label %1071, label %1083

1071:                                             ; preds = %1068, %1054
  %1072 = load ptr, ptr %4, align 8, !tbaa !5
  %1073 = load ptr, ptr %6, align 8, !tbaa !5
  %1074 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1072, ptr noundef %1073, i32 noundef 20, i32 noundef %1074)
  %1075 = load ptr, ptr %4, align 8, !tbaa !5
  %1076 = load i32, ptr %34, align 4, !tbaa !9
  %1077 = load i32, ptr %26, align 4, !tbaa !9
  %1078 = zext i32 %1077 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1075, i32 noundef 30003, i32 noundef %1076, i64 noundef %1078)
  %1079 = load ptr, ptr %4, align 8, !tbaa !5
  %1080 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1079, i32 noundef 30008, i32 noundef %1080, i32 noundef 4)
  %1081 = load ptr, ptr %4, align 8, !tbaa !5
  %1082 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1081, ptr noundef %1082, i32 noundef 24, i32 noundef 4)
  br label %1083

1083:                                             ; preds = %1071, %1068
  br label %1107

1084:                                             ; preds = %1049
  %1085 = load ptr, ptr %4, align 8, !tbaa !5
  %1086 = load ptr, ptr %6, align 8, !tbaa !5
  %1087 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1085, ptr noundef %1086, i32 noundef 20, i32 noundef %1087)
  %1088 = load ptr, ptr %4, align 8, !tbaa !5
  %1089 = load i32, ptr %34, align 4, !tbaa !9
  %1090 = load i32, ptr %26, align 4, !tbaa !9
  %1091 = zext i32 %1090 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1088, i32 noundef 30003, i32 noundef %1089, i64 noundef %1091)
  %1092 = load ptr, ptr %4, align 8, !tbaa !5
  %1093 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1092, i32 noundef 30008, i32 noundef %1093, i32 noundef 4)
  %1094 = load ptr, ptr %4, align 8, !tbaa !5
  %1095 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1094, ptr noundef %1095, i32 noundef 24, i32 noundef 4)
  %1096 = load ptr, ptr %4, align 8, !tbaa !5
  %1097 = load ptr, ptr %6, align 8, !tbaa !5
  %1098 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1096, ptr noundef %1097, i32 noundef 20, i32 noundef %1098)
  %1099 = load ptr, ptr %4, align 8, !tbaa !5
  %1100 = load i32, ptr %34, align 4, !tbaa !9
  %1101 = load i32, ptr %27, align 4, !tbaa !9
  %1102 = zext i32 %1101 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1099, i32 noundef 30003, i32 noundef %1100, i64 noundef %1102)
  %1103 = load ptr, ptr %4, align 8, !tbaa !5
  %1104 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1103, i32 noundef 30008, i32 noundef %1104, i32 noundef 4)
  %1105 = load ptr, ptr %4, align 8, !tbaa !5
  %1106 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1105, ptr noundef %1106, i32 noundef 25, i32 noundef 4)
  br label %1107

1107:                                             ; preds = %1084, %1083
  br label %1108

1108:                                             ; preds = %1107, %1048
  br label %1109

1109:                                             ; preds = %1108, %991
  br label %1110

1110:                                             ; preds = %1109, %980
  br label %1111

1111:                                             ; preds = %1110, %945
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  br label %1112

1112:                                             ; preds = %1111, %910
  %1113 = load ptr, ptr %4, align 8, !tbaa !5
  %1114 = load ptr, ptr %6, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1114, i32 0, i32 17
  %1116 = load i32, ptr %1115, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1113, i32 noundef %1116, i32 noundef 4, i64 noundef 128)
  %1117 = load ptr, ptr %4, align 8, !tbaa !5
  %1118 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef %1117, ptr noundef %1118, i32 noundef 26, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %1119

1119:                                             ; preds = %1112, %393
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nounwind }
attributes #6 = { 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 28}
!12 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!13 = !{!14, !10, i64 556}
!14 = !{!"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, !15, 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}
!15 = !{!"libxsmm_tile_config", !7, i64 0, !16, i64 2, !7, i64 4, !16, i64 6, !7, i64 8, !16, i64 10, !7, i64 12, !16, i64 14, !7, i64 16, !16, i64 18, !7, i64 20, !16, i64 22, !7, i64 24, !16, i64 26, !7, i64 28, !16, i64 30, !7, i64 32}
!16 = !{!"short", !7, i64 0}
!17 = !{!14, !10, i64 140}
!18 = !{!19, !10, i64 4}
!19 = !{!"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, !20, i64 33, !20, i64 41, !7, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !16, i64 62, !16, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !16, i64 70, !16, i64 72, !16, i64 74, !16, i64 76, !16, i64 78, !16, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !7, i64 94}
!20 = !{!"long long", !7, i64 0}
!21 = !{!19, !10, i64 0}
!22 = !{!19, !10, i64 24}
!23 = !{!14, !10, i64 68}
!24 = !{!14, !10, i64 664}
!25 = !{!19, !10, i64 8}
!26 = !{!14, !10, i64 648}
!27 = !{!14, !10, i64 652}
!28 = !{!14, !10, i64 656}
!29 = !{!14, !10, i64 660}
!30 = !{!14, !10, i64 668}
!31 = !{!14, !10, i64 672}
!32 = !{!14, !10, i64 676}
!33 = !{!14, !10, i64 680}
!34 = !{!14, !10, i64 120}
!35 = !{!14, !10, i64 108}
!36 = !{!14, !10, i64 112}


; 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 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [77 x i8], align 1
@__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.sixteen_ones = external hidden unnamed_addr constant [16 x i16], align 16
@__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.avx2_bf16_mask = external hidden unnamed_addr constant [16 x i16], align 16
@.str.9 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch = external hidden unnamed_addr constant [153 x i8], align 1

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

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

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

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

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

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

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

; 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 #1

declare void @libxsmm_x86_instruction_alu_reg(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) local_unnamed_addr #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) local_unnamed_addr #2

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_setup_stack_frame_allocate_scratch(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #1 {
  %4 = alloca [16 x i16], align 16
  %5 = alloca [16 x i16], align 16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.sixteen_ones, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch.avx2_bf16_mask, i64 32, i1 false)
  %6 = tail call i32 @libxsmm_x86_is_Ai4_Bi8_gemm(ptr noundef %1)
  %7 = tail call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %1)
  %8 = tail call i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef %1)
  %9 = tail call i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef %1)
  %10 = tail call i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef %1)
  %11 = getelementptr inbounds i8, ptr %0, i64 28
  %12 = load i32, ptr %11, align 4, !tbaa !5
  %13 = add i32 %12, -1104
  %or.cond457 = icmp ult i32 %13, 895
  br i1 %or.cond457, label %14, label %25

14:                                               ; preds = %3
  %15 = getelementptr inbounds i8, ptr %2, i64 556
  store i32 16, ptr %15, align 4, !tbaa !11
  %16 = getelementptr inbounds i8, ptr %2, i64 140
  %17 = load i32, ptr %16, align 4, !tbaa !15
  %.not417 = icmp eq i32 %17, 0
  br i1 %.not417, label %.thread.thread, label %18

18:                                               ; preds = %14
  %19 = getelementptr inbounds i8, ptr %1, i64 4
  %20 = load i32, ptr %19, align 1, !tbaa !16
  %21 = load i32, ptr %1, align 1, !tbaa !19
  %22 = shl i32 %20, 2
  %23 = mul i32 %22, %21
  %24 = add i32 %23, 2048
  %spec.select471 = tail call i32 @llvm.umax.i32(i32 %24, i32 12288)
  br label %.thread.thread

25:                                               ; preds = %3
  %26 = getelementptr inbounds i8, ptr %1, i64 24
  %27 = load i32, ptr %26, align 1, !tbaa !20
  %28 = lshr i32 %27, 4
  %spec.select = and i32 %28, 2048
  %29 = getelementptr inbounds i8, ptr %2, i64 140
  %30 = load i32, ptr %29, align 4, !tbaa !15
  %.not416 = icmp eq i32 %30, 0
  br i1 %.not416, label %.thread, label %31

31:                                               ; preds = %25
  %32 = getelementptr inbounds i8, ptr %1, i64 4
  %33 = load i32, ptr %32, align 1, !tbaa !16
  %34 = load i32, ptr %1, align 1, !tbaa !19
  %35 = shl i32 %33, 2
  %36 = mul i32 %35, %34
  %37 = add i32 %36, 2048
  br label %.thread

.thread:                                          ; preds = %25, %31
  %.1 = phi i32 [ %37, %31 ], [ %spec.select, %25 ]
  %38 = icmp ult i32 %12, 1005
  br i1 %38, label %39, label %.thread.thread

39:                                               ; preds = %.thread
  %40 = getelementptr inbounds i8, ptr %1, i64 29
  %41 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %40) #6
  %42 = icmp eq i32 %41, 12
  br i1 %42, label %43, label %.thread.thread

43:                                               ; preds = %39
  %44 = getelementptr inbounds i8, ptr %2, i64 68
  %45 = load i32, ptr %44, align 4, !tbaa !21
  tail call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %45, i32 noundef 4, i64 noundef 64) #6
  tail call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 23, i32 noundef 4)
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull @.str.9, i8 noundef signext 120, i32 noundef 0) #6
  %46 = load i32, ptr %11, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %46, i32 noundef -1610346480, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1) #6
  br label %.thread.thread

.thread.thread:                                   ; preds = %14, %18, %43, %39, %.thread
  %.in.in = phi i32 [ %.1, %43 ], [ %.1, %39 ], [ %.1, %.thread ], [ 12288, %14 ], [ %spec.select471, %18 ]
  %.in = add i32 %.in.in, 63
  %47 = and i32 %.in, -64
  %48 = load i32, ptr %11, align 4, !tbaa !5
  %49 = icmp ult i32 %48, 1005
  br i1 %49, label %50, label %62

50:                                               ; preds = %.thread.thread
  %51 = getelementptr inbounds i8, ptr %1, i64 29
  %52 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %51) #6
  %53 = icmp eq i32 %52, 2
  br i1 %53, label %54, label %62

54:                                               ; preds = %50
  %55 = getelementptr inbounds i8, ptr %1, i64 24
  %56 = load i32, ptr %55, align 1, !tbaa !20
  %57 = and i32 %56, 2048
  %.not419 = icmp eq i32 %57, 0
  br i1 %.not419, label %62, label %58

58:                                               ; preds = %54
  %59 = getelementptr inbounds i8, ptr %2, i64 68
  %60 = load i32, ptr %59, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %60, i32 noundef 4, i64 noundef 64) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 23, i32 noundef 4)
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %5, ptr noundef nonnull @.str.10, i8 noundef signext 120, i32 noundef 0) #6
  %61 = load i32, ptr %11, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %61, i32 noundef -1610346480, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 120, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1) #6
  br label %62

62:                                               ; preds = %58, %54, %50, %.thread.thread
  %63 = load i32, ptr %11, align 4, !tbaa !5
  %64 = add i32 %63, -1005
  %or.cond458 = icmp ult i32 %64, 46
  br i1 %or.cond458, label %65, label %.thread460

65:                                               ; preds = %62
  %66 = getelementptr inbounds i8, ptr %2, i64 68
  %67 = load i32, ptr %66, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %67, i32 noundef 4, i64 noundef 64) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 22, i32 noundef 4)
  %68 = load i32, ptr %66, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %68, i32 noundef 4, i64 noundef 64) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 23, i32 noundef 4)
  %.pr = load i32, ptr %11, align 4, !tbaa !5
  %69 = icmp eq i32 %.pr, 1006
  br i1 %69, label %70, label %.thread460

70:                                               ; preds = %65
  %71 = getelementptr inbounds i8, ptr %1, i64 29
  %72 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %71) #6
  %73 = icmp eq i32 %72, 12
  br i1 %73, label %74, label %thread-pre-split

74:                                               ; preds = %70
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull @.str.9, i8 noundef signext 121, i32 noundef 0) #6
  %75 = load i32, ptr %11, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %75, i32 noundef 537138704, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1) #6
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %70, %74
  %.pr461 = load i32, ptr %11, align 4, !tbaa !5
  br label %.thread460

.thread460:                                       ; preds = %62, %thread-pre-split, %65
  %76 = phi i32 [ %.pr461, %thread-pre-split ], [ %.pr, %65 ], [ %63, %62 ]
  %77 = icmp ugt i32 %76, 1005
  br i1 %77, label %78, label %93

78:                                               ; preds = %.thread460
  %79 = icmp ult i32 %76, 1051
  br i1 %79, label %80, label %90

80:                                               ; preds = %78
  %81 = getelementptr inbounds i8, ptr %1, i64 29
  %82 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %81) #6
  %83 = icmp eq i32 %82, 2
  br i1 %83, label %84, label %90

84:                                               ; preds = %80
  %85 = getelementptr inbounds i8, ptr %1, i64 24
  %86 = load i32, ptr %85, align 1, !tbaa !20
  %87 = and i32 %86, 2048
  %88 = icmp ne i32 %87, 0
  %89 = icmp ne i32 %7, 0
  %or.cond = select i1 %88, i1 true, i1 %89
  br i1 %or.cond, label %91, label %93

90:                                               ; preds = %80, %78
  %.old1.not = icmp eq i32 %7, 0
  br i1 %.old1.not, label %93, label %91

91:                                               ; preds = %90, %84
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %5, ptr noundef nonnull @.str.10, i8 noundef signext 121, i32 noundef 0) #6
  %92 = load i32, ptr %11, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %92, i32 noundef 537138704, i32 noundef 4, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext 121, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 1) #6
  br label %93

93:                                               ; preds = %84, %91, %90, %.thread460
  %.not420 = icmp eq i32 %47, 0
  br i1 %.not420, label %98, label %94

94:                                               ; preds = %93
  %95 = getelementptr inbounds i8, ptr %2, i64 68
  %96 = load i32, ptr %95, align 4, !tbaa !21
  %97 = zext i32 %47 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %96, i32 noundef 4, i64 noundef %97) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 6, i32 noundef 4)
  br label %98

98:                                               ; preds = %94, %93
  %99 = load i32, ptr %11, align 4, !tbaa !5
  %100 = icmp ugt i32 %99, 1103
  br i1 %100, label %101, label %126

101:                                              ; preds = %98
  %102 = icmp ne i32 %6, 0
  %103 = icmp ne i32 %8, 0
  %or.cond4 = select i1 %102, i1 true, i1 %103
  %104 = icmp ne i32 %9, 0
  %or.cond7 = select i1 %or.cond4, i1 true, i1 %104
  %105 = icmp ne i32 %10, 0
  %or.cond10 = select i1 %or.cond7, i1 true, i1 %105
  %106 = icmp ne i32 %7, 0
  %or.cond13 = select i1 %or.cond10, i1 true, i1 %106
  br i1 %or.cond13, label %110, label %107

107:                                              ; preds = %101
  %108 = getelementptr inbounds i8, ptr %2, i64 664
  %109 = load i32, ptr %108, align 8, !tbaa !22
  %.not421 = icmp eq i32 %109, 0
  br i1 %.not421, label %126, label %110

110:                                              ; preds = %107, %101
  %111 = load i32, ptr %1, align 1, !tbaa !19
  %112 = getelementptr inbounds i8, ptr %1, i64 8
  %113 = load i32, ptr %112, align 1, !tbaa !23
  %114 = shl i32 %111, 1
  %115 = mul i32 %114, %113
  %not. = xor i1 %102, true
  %116 = zext i1 %not. to i32
  %117 = shl i32 %115, %116
  %118 = and i32 %117, 62
  %119 = icmp eq i32 %118, 0
  %120 = add i32 %117, 63
  %121 = and i32 %120, -64
  %122 = select i1 %119, i32 %117, i32 %121
  %123 = getelementptr inbounds i8, ptr %2, i64 68
  %124 = load i32, ptr %123, align 4, !tbaa !21
  %125 = zext i32 %122 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %124, i32 noundef 4, i64 noundef %125) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 13, i32 noundef 4)
  br label %126

126:                                              ; preds = %110, %107, %98
  %127 = getelementptr inbounds i8, ptr %2, i64 648
  %128 = load i32, ptr %127, align 8, !tbaa !24
  %.not422 = icmp eq i32 %128, 0
  br i1 %.not422, label %129, label %150

129:                                              ; preds = %126
  %130 = getelementptr inbounds i8, ptr %2, i64 652
  %131 = load i32, ptr %130, align 4, !tbaa !25
  %.not423 = icmp eq i32 %131, 0
  br i1 %.not423, label %132, label %150

132:                                              ; preds = %129
  %133 = getelementptr inbounds i8, ptr %2, i64 656
  %134 = load i32, ptr %133, align 8, !tbaa !26
  %.not424 = icmp eq i32 %134, 0
  br i1 %.not424, label %135, label %150

135:                                              ; preds = %132
  %136 = getelementptr inbounds i8, ptr %2, i64 660
  %137 = load i32, ptr %136, align 4, !tbaa !27
  %.not425 = icmp eq i32 %137, 0
  br i1 %.not425, label %138, label %150

138:                                              ; preds = %135
  %139 = getelementptr inbounds i8, ptr %2, i64 668
  %140 = load i32, ptr %139, align 4, !tbaa !28
  %.not426 = icmp eq i32 %140, 0
  br i1 %.not426, label %141, label %150

141:                                              ; preds = %138
  %142 = getelementptr inbounds i8, ptr %2, i64 672
  %143 = load i32, ptr %142, align 8, !tbaa !29
  %.not427 = icmp eq i32 %143, 0
  br i1 %.not427, label %144, label %150

144:                                              ; preds = %141
  %145 = getelementptr inbounds i8, ptr %2, i64 676
  %146 = load i32, ptr %145, align 4, !tbaa !30
  %.not428 = icmp eq i32 %146, 0
  br i1 %.not428, label %147, label %150

147:                                              ; preds = %144
  %148 = getelementptr inbounds i8, ptr %2, i64 680
  %149 = load i32, ptr %148, align 8, !tbaa !31
  %.not429 = icmp eq i32 %149, 0
  br i1 %.not429, label %377, label %150

150:                                              ; preds = %147, %144, %141, %138, %135, %132, %129, %126
  %151 = getelementptr inbounds i8, ptr %1, i64 24
  %152 = load i32, ptr %151, align 1, !tbaa !20
  %153 = and i32 %152, 458752
  %.not = icmp eq i32 %153, 0
  %154 = getelementptr inbounds i8, ptr %2, i64 656
  %155 = load i32, ptr %154, align 8, !tbaa !26
  %.not430 = icmp eq i32 %155, 0
  br i1 %.not430, label %156, label %171

156:                                              ; preds = %150
  %157 = getelementptr inbounds i8, ptr %2, i64 660
  %158 = load i32, ptr %157, align 4, !tbaa !27
  %.not431 = icmp eq i32 %158, 0
  br i1 %.not431, label %159, label %171

159:                                              ; preds = %156
  %160 = getelementptr inbounds i8, ptr %2, i64 668
  %161 = load i32, ptr %160, align 4, !tbaa !28
  %.not432 = icmp eq i32 %161, 0
  br i1 %.not432, label %162, label %171

162:                                              ; preds = %159
  %163 = getelementptr inbounds i8, ptr %2, i64 672
  %164 = load i32, ptr %163, align 8, !tbaa !29
  %.not433 = icmp eq i32 %164, 0
  br i1 %.not433, label %165, label %171

165:                                              ; preds = %162
  %166 = getelementptr inbounds i8, ptr %2, i64 676
  %167 = load i32, ptr %166, align 4, !tbaa !30
  %.not434 = icmp eq i32 %167, 0
  br i1 %.not434, label %168, label %171

168:                                              ; preds = %165
  %169 = getelementptr inbounds i8, ptr %2, i64 680
  %170 = load i32, ptr %169, align 8, !tbaa !31
  %.not435 = icmp eq i32 %170, 0
  br i1 %.not435, label %215, label %171

171:                                              ; preds = %168, %165, %162, %159, %156, %150
  %172 = getelementptr inbounds i8, ptr %1, i64 29
  %173 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %174 = icmp eq i32 %173, 0
  br i1 %174, label %215, label %175

175:                                              ; preds = %171
  %176 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %177 = icmp eq i32 %176, 1
  br i1 %177, label %215, label %178

178:                                              ; preds = %175
  %179 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %180 = icmp eq i32 %179, 2
  br i1 %180, label %215, label %181

181:                                              ; preds = %178
  %182 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %183 = icmp eq i32 %182, 3
  br i1 %183, label %215, label %184

184:                                              ; preds = %181
  %185 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %186 = icmp eq i32 %185, 4
  br i1 %186, label %215, label %187

187:                                              ; preds = %184
  %188 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %189 = icmp eq i32 %188, 5
  br i1 %189, label %215, label %190

190:                                              ; preds = %187
  %191 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %192 = icmp eq i32 %191, 6
  br i1 %192, label %215, label %193

193:                                              ; preds = %190
  %194 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %195 = icmp eq i32 %194, 7
  br i1 %195, label %215, label %196

196:                                              ; preds = %193
  %197 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %198 = icmp eq i32 %197, 8
  br i1 %198, label %215, label %199

199:                                              ; preds = %196
  %200 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %201 = icmp eq i32 %200, 9
  br i1 %201, label %215, label %202

202:                                              ; preds = %199
  %203 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %204 = icmp eq i32 %203, 10
  br i1 %204, label %215, label %205

205:                                              ; preds = %202
  %206 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %207 = icmp eq i32 %206, 11
  br i1 %207, label %215, label %208

208:                                              ; preds = %205
  %209 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %210 = icmp eq i32 %209, 12
  br i1 %210, label %215, label %211

211:                                              ; preds = %208
  %212 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %172) #6
  %213 = icmp eq i32 %212, 13
  br i1 %213, label %215, label %214

214:                                              ; preds = %211
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 1564, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_stack_frame_allocate_scratch) #7
  unreachable

215:                                              ; preds = %168, %171, %178, %184, %190, %196, %202, %208, %211, %205, %199, %193, %187, %181, %175
  %216 = phi i32 [ 8, %171 ], [ 4, %175 ], [ 2, %178 ], [ 2, %181 ], [ 1, %184 ], [ 1, %187 ], [ 8, %190 ], [ 8, %193 ], [ 4, %196 ], [ 4, %199 ], [ 2, %202 ], [ 2, %205 ], [ 1, %208 ], [ 1, %211 ], [ 4, %168 ]
  %217 = load i32, ptr %1, align 1, !tbaa !19
  %218 = getelementptr inbounds i8, ptr %1, i64 8
  %219 = load i32, ptr %218, align 1, !tbaa !23
  %220 = mul i32 %219, %216
  %221 = mul i32 %220, %217
  %222 = getelementptr inbounds i8, ptr %1, i64 4
  %223 = load i32, ptr %222, align 1, !tbaa !16
  %224 = mul i32 %220, %223
  %225 = mul i32 %223, %217
  %226 = shl i32 %225, 2
  %227 = shl i32 %217, 2
  %228 = and i32 %225, 15
  %229 = icmp eq i32 %228, 0
  %230 = add i32 %226, 63
  %231 = and i32 %230, -64
  %232 = and i32 %217, 15
  %233 = icmp eq i32 %232, 0
  %234 = add i32 %227, 63
  %235 = and i32 %234, -64
  %.biased = add i32 %221, 63
  %236 = and i32 %.biased, -64
  %.biased462 = add i32 %224, 63
  %237 = and i32 %.biased462, -64
  %238 = select i1 %229, i32 %226, i32 %231
  %239 = getelementptr inbounds i8, ptr %2, i64 120
  %240 = load i32, ptr %239, align 8, !tbaa !32
  %.not436 = icmp eq i32 %240, 0
  %.pre = load i32, ptr %127, align 8, !tbaa !24
  br i1 %.not436, label %256, label %241

241:                                              ; preds = %215
  %.not437 = icmp eq i32 %.pre, 0
  br i1 %.not437, label %242, label %246

242:                                              ; preds = %241
  %243 = getelementptr inbounds i8, ptr %2, i64 652
  %244 = load i32, ptr %243, align 4, !tbaa !25
  %.not438 = icmp eq i32 %244, 0
  br i1 %.not438, label %.thread465, label %246

.thread465:                                       ; preds = %242
  %245 = select i1 %233, i32 %227, i32 %235
  br label %258

246:                                              ; preds = %242, %241
  %247 = add i32 %217, 15
  %248 = and i32 %247, -16
  %249 = mul i32 %248, %223
  %250 = add i32 %226, %249
  %251 = and i32 %250, 60
  %252 = icmp eq i32 %251, 0
  %253 = add i32 %250, 63
  %254 = and i32 %253, -64
  %255 = select i1 %252, i32 %250, i32 %254
  br label %256

256:                                              ; preds = %246, %215
  %.0409 = phi i32 [ %255, %246 ], [ %238, %215 ]
  %257 = select i1 %233, i32 %227, i32 %235
  %.not439 = icmp eq i32 %.pre, 0
  br i1 %.not439, label %258, label %262

258:                                              ; preds = %.thread465, %256
  %259 = phi i32 [ %245, %.thread465 ], [ %257, %256 ]
  %.0409470 = phi i32 [ %238, %.thread465 ], [ %.0409, %256 ]
  %260 = getelementptr inbounds i8, ptr %2, i64 652
  %261 = load i32, ptr %260, align 4, !tbaa !25
  %.not440 = icmp eq i32 %261, 0
  br i1 %.not440, label %267, label %262

262:                                              ; preds = %258, %256
  %263 = phi i32 [ %259, %258 ], [ %257, %256 ]
  %.0409468 = phi i32 [ %.0409470, %258 ], [ %.0409, %256 ]
  %264 = getelementptr inbounds i8, ptr %2, i64 68
  %265 = load i32, ptr %264, align 4, !tbaa !21
  %266 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %265, i32 noundef 4, i64 noundef %266) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 27, i32 noundef 4)
  br label %267

267:                                              ; preds = %262, %258
  %268 = phi i32 [ %263, %262 ], [ %259, %258 ]
  %.0409469 = phi i32 [ %.0409468, %262 ], [ %.0409470, %258 ]
  %269 = load i32, ptr %11, align 4, !tbaa !5
  %270 = add i32 %269, -1104
  %or.cond459 = icmp ult i32 %270, 895
  br i1 %or.cond459, label %271, label %288

271:                                              ; preds = %267
  %272 = load i32, ptr %127, align 8, !tbaa !24
  %.not441 = icmp eq i32 %272, 0
  br i1 %.not441, label %273, label %276

273:                                              ; preds = %271
  %274 = getelementptr inbounds i8, ptr %2, i64 652
  %275 = load i32, ptr %274, align 4, !tbaa !25
  %.not442 = icmp eq i32 %275, 0
  br i1 %.not442, label %288, label %276

276:                                              ; preds = %273, %271
  %277 = getelementptr inbounds i8, ptr %2, i64 68
  %278 = load i32, ptr %277, align 4, !tbaa !21
  %279 = zext i32 %.0409469 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %278, i32 noundef 4, i64 noundef %279) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 28, i32 noundef 4)
  %280 = getelementptr inbounds i8, ptr %2, i64 108
  %281 = load i32, ptr %280, align 4, !tbaa !33
  %.not443 = icmp eq i32 %281, 0
  br i1 %.not443, label %282, label %285

282:                                              ; preds = %276
  %283 = getelementptr inbounds i8, ptr %2, i64 112
  %284 = load i32, ptr %283, align 8, !tbaa !34
  %.not444 = icmp eq i32 %284, 0
  br i1 %.not444, label %288, label %285

285:                                              ; preds = %282, %276
  %286 = load i32, ptr %277, align 4, !tbaa !21
  %287 = zext i32 %268 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %286, i32 noundef 4, i64 noundef %287) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 30, i32 noundef 4)
  br label %288

288:                                              ; preds = %282, %285, %273, %267
  %289 = load i32, ptr %154, align 8, !tbaa !26
  %.not451 = icmp eq i32 %289, 0
  br i1 %.not, label %290, label %332

290:                                              ; preds = %288
  br i1 %.not451, label %295, label %291

291:                                              ; preds = %290
  %292 = getelementptr inbounds i8, ptr %2, i64 68
  %293 = load i32, ptr %292, align 4, !tbaa !21
  %294 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %293, i32 noundef 4, i64 noundef %294) #6
  br label %.sink.split

295:                                              ; preds = %290
  %296 = getelementptr inbounds i8, ptr %2, i64 660
  %297 = load i32, ptr %296, align 4, !tbaa !27
  %.not452 = icmp eq i32 %297, 0
  br i1 %.not452, label %302, label %298

298:                                              ; preds = %295
  %299 = getelementptr inbounds i8, ptr %2, i64 68
  %300 = load i32, ptr %299, align 4, !tbaa !21
  %301 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %300, i32 noundef 4, i64 noundef %301) #6
  br label %.sink.split

302:                                              ; preds = %295
  %303 = getelementptr inbounds i8, ptr %2, i64 672
  %304 = load i32, ptr %303, align 8, !tbaa !29
  %.not453 = icmp eq i32 %304, 0
  br i1 %.not453, label %305, label %308

305:                                              ; preds = %302
  %306 = getelementptr inbounds i8, ptr %2, i64 676
  %307 = load i32, ptr %306, align 4, !tbaa !30
  %.not454 = icmp eq i32 %307, 0
  br i1 %.not454, label %314, label %308

308:                                              ; preds = %305, %302
  %309 = getelementptr inbounds i8, ptr %2, i64 68
  %310 = load i32, ptr %309, align 4, !tbaa !21
  %311 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %310, i32 noundef 4, i64 noundef %311) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 21, i32 noundef 4)
  %312 = load i32, ptr %309, align 4, !tbaa !21
  %313 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %312, i32 noundef 4, i64 noundef %313) #6
  br label %.sink.split

314:                                              ; preds = %305
  %315 = getelementptr inbounds i8, ptr %2, i64 668
  %316 = load i32, ptr %315, align 4, !tbaa !28
  %.not455 = icmp eq i32 %316, 0
  br i1 %.not455, label %321, label %317

317:                                              ; preds = %314
  %318 = getelementptr inbounds i8, ptr %2, i64 68
  %319 = load i32, ptr %318, align 4, !tbaa !21
  %320 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %319, i32 noundef 4, i64 noundef %320) #6
  br label %.sink.split

321:                                              ; preds = %314
  %322 = getelementptr inbounds i8, ptr %2, i64 680
  %323 = load i32, ptr %322, align 8, !tbaa !31
  %.not456 = icmp eq i32 %323, 0
  %324 = getelementptr inbounds i8, ptr %2, i64 68
  %325 = load i32, ptr %324, align 4, !tbaa !21
  br i1 %.not456, label %328, label %326

326:                                              ; preds = %321
  %327 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %325, i32 noundef 4, i64 noundef %327) #6
  br label %.sink.split

328:                                              ; preds = %321
  %329 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %325, i32 noundef 4, i64 noundef %329) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 24, i32 noundef 4)
  %330 = load i32, ptr %324, align 4, !tbaa !21
  %331 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %330, i32 noundef 4, i64 noundef %331) #6
  br label %.sink.split

332:                                              ; preds = %288
  br i1 %.not451, label %338, label %333

333:                                              ; preds = %332
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %334 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %334) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 21, i32 noundef 4)
  %335 = and i32 %152, 196608
  %or.cond19.not = icmp eq i32 %335, 0
  br i1 %or.cond19.not, label %374, label %336

336:                                              ; preds = %333
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %337 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %337) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  br label %.sink.split

338:                                              ; preds = %332
  %339 = getelementptr inbounds i8, ptr %2, i64 660
  %340 = load i32, ptr %339, align 4, !tbaa !27
  %.not446 = icmp eq i32 %340, 0
  br i1 %.not446, label %346, label %341

341:                                              ; preds = %338
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %342 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %342) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 21, i32 noundef 4)
  %343 = and i32 %152, 196608
  %or.cond22.not = icmp eq i32 %343, 0
  br i1 %or.cond22.not, label %374, label %344

344:                                              ; preds = %341
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %345 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %345) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  br label %.sink.split

346:                                              ; preds = %338
  %347 = getelementptr inbounds i8, ptr %2, i64 672
  %348 = load i32, ptr %347, align 8, !tbaa !29
  %.not447 = icmp eq i32 %348, 0
  br i1 %.not447, label %349, label %352

349:                                              ; preds = %346
  %350 = getelementptr inbounds i8, ptr %2, i64 676
  %351 = load i32, ptr %350, align 4, !tbaa !30
  %.not448 = icmp eq i32 %351, 0
  br i1 %.not448, label %355, label %352

352:                                              ; preds = %349, %346
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %353 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %353) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 21, i32 noundef 4)
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %354 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %354) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  br label %.sink.split

355:                                              ; preds = %349
  %356 = getelementptr inbounds i8, ptr %2, i64 668
  %357 = load i32, ptr %356, align 4, !tbaa !28
  %.not449 = icmp eq i32 %357, 0
  br i1 %.not449, label %363, label %358

358:                                              ; preds = %355
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %359 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %359) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 21, i32 noundef 4)
  %360 = and i32 %152, 196608
  %or.cond25.not = icmp eq i32 %360, 0
  br i1 %or.cond25.not, label %374, label %361

361:                                              ; preds = %358
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %362 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %362) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  br label %.sink.split

363:                                              ; preds = %355
  %364 = getelementptr inbounds i8, ptr %2, i64 680
  %365 = load i32, ptr %364, align 8, !tbaa !31
  %.not450 = icmp eq i32 %365, 0
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  br i1 %.not450, label %371, label %366

366:                                              ; preds = %363
  %367 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %367) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 25, i32 noundef 4)
  %368 = and i32 %152, 196608
  %or.cond28.not = icmp eq i32 %368, 0
  br i1 %or.cond28.not, label %374, label %369

369:                                              ; preds = %366
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %370 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %370) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  br label %.sink.split

371:                                              ; preds = %363
  %372 = zext i32 %236 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %372) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 24, i32 noundef 4)
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 20, i32 noundef 10)
  %373 = zext i32 %237 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30003, i32 noundef 10, i64 noundef %373) #6
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 10, i32 noundef 4) #6
  br label %.sink.split

.sink.split:                                      ; preds = %298, %317, %328, %326, %308, %291, %344, %361, %369, %371, %352, %336
  %.sink = phi i32 [ 25, %336 ], [ 25, %352 ], [ 25, %371 ], [ 24, %369 ], [ 25, %361 ], [ 25, %344 ], [ 21, %291 ], [ 25, %308 ], [ 25, %326 ], [ 25, %328 ], [ 21, %317 ], [ 21, %298 ]
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef %.sink, i32 noundef 4)
  br label %374

374:                                              ; preds = %.sink.split, %333, %366, %358, %341
  %375 = getelementptr inbounds i8, ptr %2, i64 68
  %376 = load i32, ptr %375, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %376, i32 noundef 4, i64 noundef 128) #6
  call void @libxsmm_generator_gemm_setval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 26, i32 noundef 4)
  br label %377

377:                                              ; preds = %374, %147
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  ret void
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 28}
!6 = !{!"libxsmm_generated_code", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !10, i64 556}
!12 = !{!"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, !8, 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, !8, i64 364, !8, i64 380, !8, i64 396, !8, i64 412, !8, i64 428, !8, i64 444, !10, i64 460, !8, i64 464, !13, 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, !7, i64 592, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !7, 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}
!13 = !{!"libxsmm_tile_config", !8, i64 0, !14, i64 2, !8, i64 4, !14, i64 6, !8, i64 8, !14, i64 10, !8, i64 12, !14, i64 14, !8, i64 16, !14, i64 18, !8, i64 20, !14, i64 22, !8, i64 24, !14, i64 26, !8, i64 28, !14, i64 30, !8, i64 32}
!14 = !{!"short", !8, i64 0}
!15 = !{!12, !10, i64 140}
!16 = !{!17, !10, i64 4}
!17 = !{!"libxsmm_gemm_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !8, i64 28, !8, i64 29, !8, i64 32, !18, i64 33, !18, i64 41, !8, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !14, i64 62, !14, i64 64, !8, i64 66, !8, i64 67, !8, i64 68, !8, i64 69, !14, i64 70, !14, i64 72, !14, i64 74, !14, i64 76, !14, i64 78, !14, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !8, i64 94}
!18 = !{!"long long", !8, i64 0}
!19 = !{!17, !10, i64 0}
!20 = !{!17, !10, i64 24}
!21 = !{!12, !10, i64 68}
!22 = !{!12, !10, i64 664}
!23 = !{!17, !10, i64 8}
!24 = !{!12, !10, i64 648}
!25 = !{!12, !10, i64 652}
!26 = !{!12, !10, i64 656}
!27 = !{!12, !10, i64 660}
!28 = !{!12, !10, i64 668}
!29 = !{!12, !10, i64 672}
!30 = !{!12, !10, i64 676}
!31 = !{!12, !10, i64 680}
!32 = !{!12, !10, i64 120}
!33 = !{!12, !10, i64 108}
!34 = !{!12, !10, i64 112}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass