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

; 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_blocking_info_t = type { i32, [4 x 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_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_gemm_descriptor = type <{ i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], i8, i64, i64, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, i32, i32, i32, i8 }>
%struct.libxsmm_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@.str.3 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [46 x i8], align 1
@__func__.libxsmm_generator_gemm_amx_microkernel = external hidden unnamed_addr constant [39 x i8], align 1
@stderr = external global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [104 x i8], align 1

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

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

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

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

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #3

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #4

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

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

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

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

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

declare void @libxsmm_x86_instruction_tile_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #0

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

declare i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef) #0

declare i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef) #0

declare i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef) #0

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) #0

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #0

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_amx_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, i64 noundef %7, i64 noundef %8, i32 noundef %9, i64 noundef %10, i32 noundef %11) #1 {
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %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
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca [4 x i32], align 16
  %59 = alloca [4 x i32], align 16
  %60 = alloca [4 x i32], align 16
  %61 = alloca [4 x i32], align 16
  %62 = alloca [4 x i32], align 16
  %63 = alloca [4 x i32], align 16
  %64 = alloca [4 x i32], align 16
  %65 = alloca [4 x i32], align 16
  %66 = alloca [4 x i32], align 16
  %67 = alloca [4 x i32], align 16
  %68 = alloca [4 x i32], align 16
  %69 = alloca [4 x i32], align 16
  %70 = alloca [4 x i32], align 16
  %71 = alloca [4 x i64], align 16
  %72 = alloca [4 x i64], align 16
  %73 = alloca [4 x i32], align 16
  %74 = alloca [4 x i32], align 16
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  store ptr %0, ptr %13, align 8, !tbaa !5
  store ptr %1, ptr %14, align 8, !tbaa !5
  store ptr %2, ptr %15, align 8, !tbaa !5
  store ptr %3, ptr %16, align 8, !tbaa !5
  store ptr %4, ptr %17, align 8, !tbaa !5
  store ptr %5, ptr %18, align 8, !tbaa !5
  store ptr %6, ptr %19, align 8, !tbaa !5
  store i64 %7, ptr %20, align 8, !tbaa !9
  store i64 %8, ptr %21, align 8, !tbaa !9
  store i32 %9, ptr %22, align 4, !tbaa !11
  store i64 %10, ptr %23, align 8, !tbaa !9
  store i32 %11, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %102 = load ptr, ptr %19, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %102, i32 0, i32 0
  %104 = load i32, ptr %103, align 4, !tbaa !13
  store i32 %104, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %105, i32 0, i32 0
  %107 = load i32, ptr %106, align 4, !tbaa !13
  store i32 %107, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %108 = load i64, ptr %23, align 8, !tbaa !9
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %109, i32 0, i32 111
  %111 = load i32, ptr %110, align 8, !tbaa !15
  %112 = sub i32 %111, 1
  %113 = zext i32 %112 to i64
  %114 = icmp eq i64 %108, %113
  br i1 %114, label %115, label %127

115:                                              ; preds = %12
  %116 = load i32, ptr %22, align 4, !tbaa !11
  %117 = icmp eq i32 %116, 1
  br i1 %117, label %118, label %127

118:                                              ; preds = %115
  %119 = load i32, ptr %24, align 4, !tbaa !11
  %120 = icmp eq i32 %119, 1
  br i1 %120, label %121, label %127

121:                                              ; preds = %118
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %122, i32 0, i32 112
  %124 = load i32, ptr %123, align 4, !tbaa !19
  %125 = icmp eq i32 %124, 1
  br i1 %125, label %126, label %127

126:                                              ; preds = %121
  br label %140

127:                                              ; preds = %121, %118, %115, %12
  %128 = load i32, ptr %22, align 4, !tbaa !11
  %129 = icmp eq i32 %128, 1
  br i1 %129, label %130, label %136

130:                                              ; preds = %127
  %131 = load ptr, ptr %17, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %131, i32 0, i32 6
  %133 = load i32, ptr %132, align 1, !tbaa !20
  %134 = and i32 %133, 8388608
  %135 = icmp ugt i32 %134, 0
  br label %136

136:                                              ; preds = %130, %127
  %137 = phi i1 [ false, %127 ], [ %135, %130 ]
  %138 = zext i1 %137 to i64
  %139 = select i1 %137, i32 1, i32 0
  br label %140

140:                                              ; preds = %136, %126
  %141 = phi i32 [ 1, %126 ], [ %139, %136 ]
  store i32 %141, ptr %33, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %142 = load ptr, ptr %16, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %142, i32 0, i32 118
  %144 = load i32, ptr %143, align 8, !tbaa !22
  store i32 %144, ptr %34, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %145 = load ptr, ptr %17, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %145, i32 0, i32 8
  %147 = getelementptr inbounds [3 x i8], ptr %146, i64 0, i64 0
  %148 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %147)
  %149 = icmp eq i32 2, %148
  br i1 %149, label %150, label %162

150:                                              ; preds = %140
  %151 = load i32, ptr %25, align 4, !tbaa !11
  %152 = srem i32 %151, 2
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %162

154:                                              ; preds = %150
  %155 = load ptr, ptr %16, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %155, i32 0, i32 35
  %157 = load i32, ptr %156, align 4, !tbaa !23
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %162

159:                                              ; preds = %154
  %160 = load i32, ptr %34, align 4, !tbaa !11
  %161 = icmp eq i32 %160, 0
  br label %162

162:                                              ; preds = %159, %154, %150, %140
  %163 = phi i1 [ false, %154 ], [ false, %150 ], [ false, %140 ], [ %161, %159 ]
  %164 = zext i1 %163 to i64
  %165 = select i1 %163, i32 1, i32 0
  store i32 %165, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 0, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 0, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  store i32 0, ptr %39, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  %166 = call ptr @getenv(ptr noundef @.str.3) #6
  store ptr %166, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %167 = call ptr @getenv(ptr noundef @.str.4) #6
  store ptr %167, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %168 = load ptr, ptr %41, align 8, !tbaa !5
  %169 = icmp eq ptr %168, null
  %170 = zext i1 %169 to i64
  %171 = select i1 %169, i32 0, i32 1
  store i32 %171, ptr %43, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %172 = load ptr, ptr %41, align 8, !tbaa !5
  %173 = icmp eq ptr %172, null
  br i1 %173, label %174, label %175

174:                                              ; preds = %162
  br label %178

175:                                              ; preds = %162
  %176 = load ptr, ptr %41, align 8, !tbaa !5
  %177 = call i32 @atoi(ptr noundef %176) #7
  br label %178

178:                                              ; preds = %175, %174
  %179 = phi i32 [ 4, %174 ], [ %177, %175 ]
  store i32 %179, ptr %44, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %180 = load ptr, ptr %42, align 8, !tbaa !5
  %181 = icmp eq ptr %180, null
  %182 = zext i1 %181 to i64
  %183 = select i1 %181, i32 0, i32 1
  store i32 %183, ptr %45, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %184 = load ptr, ptr %42, align 8, !tbaa !5
  %185 = icmp eq ptr %184, null
  br i1 %185, label %186, label %187

186:                                              ; preds = %178
  br label %190

187:                                              ; preds = %178
  %188 = load ptr, ptr %42, align 8, !tbaa !5
  %189 = call i32 @atoi(ptr noundef %188) #7
  br label %190

190:                                              ; preds = %187, %186
  %191 = phi i32 [ 3, %186 ], [ %189, %187 ]
  store i32 %191, ptr %46, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 0, ptr %47, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 0, ptr %48, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  store i32 0, ptr %49, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  store i32 0, ptr %50, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  %192 = load ptr, ptr %17, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %192, i32 0, i32 6
  %194 = load i32, ptr %193, align 1, !tbaa !20
  %195 = and i32 %194, 8388608
  %196 = icmp ugt i32 %195, 0
  %197 = zext i1 %196 to i64
  %198 = select i1 %196, i32 1, i32 0
  store i32 %198, ptr %51, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %199)
  store i32 %200, ptr %52, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = call i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef %201)
  store i32 %202, ptr %53, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %203 = load ptr, ptr %17, align 8, !tbaa !5
  %204 = call i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef %203)
  store i32 %204, ptr %54, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  %205 = load ptr, ptr %17, align 8, !tbaa !5
  %206 = call i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef %205)
  store i32 %206, ptr %55, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  %207 = load ptr, ptr %17, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %207, i32 0, i32 6
  %209 = load i32, ptr %208, align 1, !tbaa !20
  %210 = and i32 %209, 2048
  %211 = icmp ugt i32 %210, 0
  %212 = zext i1 %211 to i64
  %213 = select i1 %211, i32 1, i32 2
  store i32 %213, ptr %56, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %214 = load ptr, ptr %17, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %214, i32 0, i32 6
  %216 = load i32, ptr %215, align 1, !tbaa !20
  %217 = and i32 %216, 2
  %218 = icmp ugt i32 %217, 0
  %219 = zext i1 %218 to i64
  %220 = select i1 %218, i32 2, i32 1
  store i32 %220, ptr %57, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #6
  call void @llvm.memset.p0.i64(ptr align 16 %58, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #6
  call void @llvm.memset.p0.i64(ptr align 16 %59, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #6
  call void @llvm.memset.p0.i64(ptr align 16 %60, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #6
  call void @llvm.memset.p0.i64(ptr align 16 %61, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #6
  call void @llvm.memset.p0.i64(ptr align 16 %62, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #6
  call void @llvm.memset.p0.i64(ptr align 16 %63, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #6
  call void @llvm.memset.p0.i64(ptr align 16 %64, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #6
  call void @llvm.memset.p0.i64(ptr align 16 %65, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #6
  call void @llvm.memset.p0.i64(ptr align 16 %66, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #6
  call void @llvm.memset.p0.i64(ptr align 16 %67, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #6
  call void @llvm.memset.p0.i64(ptr align 16 %68, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #6
  call void @llvm.memset.p0.i64(ptr align 16 %69, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #6
  call void @llvm.memset.p0.i64(ptr align 16 %70, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #6
  call void @llvm.memset.p0.i64(ptr align 16 %71, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #6
  call void @llvm.memset.p0.i64(ptr align 16 %72, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #6
  call void @llvm.memset.p0.i64(ptr align 16 %73, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #6
  call void @llvm.memset.p0.i64(ptr align 16 %74, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %221 = call ptr @getenv(ptr noundef @.str.5) #6
  store ptr %221, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  %222 = call ptr @getenv(ptr noundef @.str.6) #6
  store ptr %222, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #6
  %223 = call ptr @getenv(ptr noundef @.str.7) #6
  store ptr %223, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #6
  %224 = call ptr @getenv(ptr noundef @.str.8) #6
  store ptr %224, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #6
  %225 = call ptr @getenv(ptr noundef @.str.9) #6
  store ptr %225, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #6
  %226 = call ptr @getenv(ptr noundef @.str.10) #6
  store ptr %226, ptr %80, align 8, !tbaa !5
  %227 = load ptr, ptr %75, align 8, !tbaa !5
  %228 = icmp eq ptr null, %227
  br i1 %228, label %229, label %230

229:                                              ; preds = %190
  br label %233

230:                                              ; preds = %190
  %231 = load ptr, ptr %75, align 8, !tbaa !5
  %232 = call i32 @atoi(ptr noundef %231) #7
  store i32 %232, ptr %47, align 4, !tbaa !11
  br label %233

233:                                              ; preds = %230, %229
  %234 = load ptr, ptr %76, align 8, !tbaa !5
  %235 = icmp eq ptr null, %234
  br i1 %235, label %236, label %237

236:                                              ; preds = %233
  br label %240

237:                                              ; preds = %233
  %238 = load ptr, ptr %76, align 8, !tbaa !5
  %239 = call i32 @atoi(ptr noundef %238) #7
  store i32 %239, ptr %48, align 4, !tbaa !11
  br label %240

240:                                              ; preds = %237, %236
  %241 = load ptr, ptr %77, align 8, !tbaa !5
  %242 = icmp eq ptr null, %241
  br i1 %242, label %243, label %244

243:                                              ; preds = %240
  br label %247

244:                                              ; preds = %240
  %245 = load ptr, ptr %77, align 8, !tbaa !5
  %246 = call i32 @atoi(ptr noundef %245) #7
  store i32 %246, ptr %49, align 4, !tbaa !11
  br label %247

247:                                              ; preds = %244, %243
  %248 = load ptr, ptr %78, align 8, !tbaa !5
  %249 = icmp eq ptr null, %248
  br i1 %249, label %250, label %251

250:                                              ; preds = %247
  br label %254

251:                                              ; preds = %247
  %252 = load ptr, ptr %78, align 8, !tbaa !5
  %253 = call i32 @atoi(ptr noundef %252) #7
  store i32 %253, ptr %50, align 4, !tbaa !11
  br label %254

254:                                              ; preds = %251, %250
  %255 = load ptr, ptr %79, align 8, !tbaa !5
  %256 = icmp eq ptr null, %255
  br i1 %256, label %257, label %258

257:                                              ; preds = %254
  br label %261

258:                                              ; preds = %254
  %259 = load ptr, ptr %79, align 8, !tbaa !5
  %260 = call i32 @atoi(ptr noundef %259) #7
  store i32 %260, ptr %30, align 4, !tbaa !11
  br label %261

261:                                              ; preds = %258, %257
  %262 = load ptr, ptr %80, align 8, !tbaa !5
  %263 = icmp eq ptr null, %262
  br i1 %263, label %264, label %265

264:                                              ; preds = %261
  br label %268

265:                                              ; preds = %261
  %266 = load ptr, ptr %80, align 8, !tbaa !5
  %267 = call i32 @atoi(ptr noundef %266) #7
  store i32 %267, ptr %31, align 4, !tbaa !11
  br label %268

268:                                              ; preds = %265, %264
  %269 = load i64, ptr %23, align 8, !tbaa !9
  %270 = icmp eq i64 %269, -2
  br i1 %270, label %271, label %284

271:                                              ; preds = %268
  %272 = load ptr, ptr %16, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %272, i32 0, i32 111
  %274 = load i32, ptr %273, align 8, !tbaa !15
  %275 = add i32 %274, 2
  %276 = load i32, ptr %30, align 4, !tbaa !11
  %277 = add i32 %276, %275
  store i32 %277, ptr %30, align 4, !tbaa !11
  %278 = load ptr, ptr %16, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %278, i32 0, i32 111
  %280 = load i32, ptr %279, align 8, !tbaa !15
  %281 = add i32 %280, 2
  %282 = load i32, ptr %31, align 4, !tbaa !11
  %283 = add i32 %282, %281
  store i32 %283, ptr %31, align 4, !tbaa !11
  br label %284

284:                                              ; preds = %271, %268
  store i32 1, ptr %27, align 4, !tbaa !11
  br label %285

285:                                              ; preds = %305, %284
  %286 = load i32, ptr %27, align 4, !tbaa !11
  %287 = icmp slt i32 %286, 4
  br i1 %287, label %288, label %308

288:                                              ; preds = %285
  %289 = load i32, ptr %27, align 4, !tbaa !11
  %290 = sub nsw i32 %289, 1
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %291
  %293 = load i32, ptr %292, align 4, !tbaa !11
  %294 = load ptr, ptr %19, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %294, i32 0, i32 1
  %296 = load i32, ptr %27, align 4, !tbaa !11
  %297 = sub nsw i32 %296, 1
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [4 x i32], ptr %295, i64 0, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !11
  %301 = add i32 %293, %300
  %302 = load i32, ptr %27, align 4, !tbaa !11
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %303
  store i32 %301, ptr %304, align 4, !tbaa !11
  br label %305

305:                                              ; preds = %288
  %306 = load i32, ptr %27, align 4, !tbaa !11
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %27, align 4, !tbaa !11
  br label %285, !llvm.loop !24

308:                                              ; preds = %285
  store i32 1, ptr %27, align 4, !tbaa !11
  br label %309

309:                                              ; preds = %329, %308
  %310 = load i32, ptr %27, align 4, !tbaa !11
  %311 = icmp slt i32 %310, 4
  br i1 %311, label %312, label %332

312:                                              ; preds = %309
  %313 = load i32, ptr %27, align 4, !tbaa !11
  %314 = sub nsw i32 %313, 1
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %315
  %317 = load i32, ptr %316, align 4, !tbaa !11
  %318 = load ptr, ptr %18, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %318, i32 0, i32 1
  %320 = load i32, ptr %27, align 4, !tbaa !11
  %321 = sub nsw i32 %320, 1
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds [4 x i32], ptr %319, i64 0, i64 %322
  %324 = load i32, ptr %323, align 4, !tbaa !11
  %325 = add i32 %317, %324
  %326 = load i32, ptr %27, align 4, !tbaa !11
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %327
  store i32 %325, ptr %328, align 4, !tbaa !11
  br label %329

329:                                              ; preds = %312
  %330 = load i32, ptr %27, align 4, !tbaa !11
  %331 = add nsw i32 %330, 1
  store i32 %331, ptr %27, align 4, !tbaa !11
  br label %309, !llvm.loop !26

332:                                              ; preds = %309
  %333 = load i32, ptr %25, align 4, !tbaa !11
  %334 = icmp eq i32 %333, 2
  br i1 %334, label %335, label %340

335:                                              ; preds = %332
  %336 = load i32, ptr %26, align 4, !tbaa !11
  %337 = icmp eq i32 %336, 2
  br i1 %337, label %338, label %340

338:                                              ; preds = %335
  %339 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %339, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 1)
  br label %365

340:                                              ; preds = %335, %332
  %341 = load i32, ptr %25, align 4, !tbaa !11
  %342 = icmp eq i32 %341, 2
  br i1 %342, label %343, label %353

343:                                              ; preds = %340
  %344 = load i32, ptr %26, align 4, !tbaa !11
  %345 = icmp eq i32 %344, 1
  br i1 %345, label %346, label %353

346:                                              ; preds = %343
  %347 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %347, i32 noundef 2, i32 noundef -1, i32 noundef 0, i32 noundef -1)
  %348 = load i32, ptr %34, align 4, !tbaa !11
  %349 = icmp ugt i32 %348, 0
  br i1 %349, label %350, label %352

350:                                              ; preds = %346
  %351 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %351, i32 noundef 1, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  br label %352

352:                                              ; preds = %350, %346
  br label %364

353:                                              ; preds = %343, %340
  %354 = load i32, ptr %25, align 4, !tbaa !11
  %355 = icmp eq i32 %354, 4
  br i1 %355, label %356, label %361

356:                                              ; preds = %353
  %357 = load i32, ptr %26, align 4, !tbaa !11
  %358 = icmp eq i32 %357, 1
  br i1 %358, label %359, label %361

359:                                              ; preds = %356
  %360 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %360, i32 noundef 1, i32 noundef 0, i32 noundef 3, i32 noundef 2)
  br label %363

361:                                              ; preds = %356, %353
  %362 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %362, i32 noundef -1, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %363

363:                                              ; preds = %361, %359
  br label %364

364:                                              ; preds = %363, %352
  br label %365

365:                                              ; preds = %364, %338
  %366 = load ptr, ptr %17, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %366, i32 0, i32 8
  %368 = getelementptr inbounds [3 x i8], ptr %367, i64 0, i64 0
  %369 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %368)
  %370 = icmp eq i32 2, %369
  br i1 %370, label %380, label %371

371:                                              ; preds = %365
  %372 = load i32, ptr %53, align 4, !tbaa !11
  %373 = icmp ugt i32 %372, 0
  br i1 %373, label %380, label %374

374:                                              ; preds = %371
  %375 = load i32, ptr %55, align 4, !tbaa !11
  %376 = icmp ugt i32 %375, 0
  br i1 %376, label %380, label %377

377:                                              ; preds = %374
  %378 = load i32, ptr %52, align 4, !tbaa !11
  %379 = icmp ugt i32 %378, 0
  br i1 %379, label %380, label %388

380:                                              ; preds = %377, %374, %371, %365
  store i32 1879449692, ptr %37, align 4, !tbaa !11
  %381 = load ptr, ptr %17, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %381, i32 0, i32 6
  %383 = load i32, ptr %382, align 1, !tbaa !20
  %384 = and i32 %383, 2
  %385 = icmp ugt i32 %384, 0
  br i1 %385, label %386, label %387

386:                                              ; preds = %380
  store i32 1879449708, ptr %37, align 4, !tbaa !11
  br label %387

387:                                              ; preds = %386, %380
  br label %481

388:                                              ; preds = %377
  %389 = load ptr, ptr %17, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %389, i32 0, i32 8
  %391 = getelementptr inbounds [3 x i8], ptr %390, i64 0, i64 0
  %392 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %391)
  %393 = icmp eq i32 3, %392
  br i1 %393, label %397, label %394

394:                                              ; preds = %388
  %395 = load i32, ptr %54, align 4, !tbaa !11
  %396 = icmp ugt i32 %395, 0
  br i1 %396, label %397, label %405

397:                                              ; preds = %394, %388
  store i32 1879515228, ptr %37, align 4, !tbaa !11
  %398 = load ptr, ptr %17, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %398, i32 0, i32 6
  %400 = load i32, ptr %399, align 1, !tbaa !20
  %401 = and i32 %400, 2
  %402 = icmp ugt i32 %401, 0
  br i1 %402, label %403, label %404

403:                                              ; preds = %397
  store i32 1879515244, ptr %37, align 4, !tbaa !11
  br label %404

404:                                              ; preds = %403, %397
  br label %480

405:                                              ; preds = %394
  %406 = load ptr, ptr %17, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %406, i32 0, i32 8
  %408 = getelementptr inbounds [3 x i8], ptr %407, i64 0, i64 0
  %409 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %408)
  %410 = icmp eq i32 12, %409
  br i1 %410, label %411, label %454

411:                                              ; preds = %405
  %412 = load ptr, ptr %17, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %412, i32 0, i32 6
  %414 = load i32, ptr %413, align 1, !tbaa !20
  %415 = and i32 %414, 256
  %416 = icmp ugt i32 %415, 0
  br i1 %416, label %417, label %424

417:                                              ; preds = %411
  %418 = load ptr, ptr %17, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %418, i32 0, i32 6
  %420 = load i32, ptr %419, align 1, !tbaa !20
  %421 = and i32 %420, 512
  %422 = icmp ugt i32 %421, 0
  br i1 %422, label %423, label %424

423:                                              ; preds = %417
  store i32 1879318622, ptr %37, align 4, !tbaa !11
  br label %453

424:                                              ; preds = %417, %411
  %425 = load ptr, ptr %17, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %425, i32 0, i32 6
  %427 = load i32, ptr %426, align 1, !tbaa !20
  %428 = and i32 %427, 256
  %429 = icmp eq i32 %428, 0
  br i1 %429, label %430, label %437

430:                                              ; preds = %424
  %431 = load ptr, ptr %17, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %431, i32 0, i32 6
  %433 = load i32, ptr %432, align 1, !tbaa !20
  %434 = and i32 %433, 512
  %435 = icmp ugt i32 %434, 0
  br i1 %435, label %436, label %437

436:                                              ; preds = %430
  store i32 1879384158, ptr %37, align 4, !tbaa !11
  br label %452

437:                                              ; preds = %430, %424
  %438 = load ptr, ptr %17, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %438, i32 0, i32 6
  %440 = load i32, ptr %439, align 1, !tbaa !20
  %441 = and i32 %440, 256
  %442 = icmp ugt i32 %441, 0
  br i1 %442, label %443, label %450

443:                                              ; preds = %437
  %444 = load ptr, ptr %17, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %444, i32 0, i32 6
  %446 = load i32, ptr %445, align 1, !tbaa !20
  %447 = and i32 %446, 512
  %448 = icmp eq i32 %447, 0
  br i1 %448, label %449, label %450

449:                                              ; preds = %443
  store i32 1879449694, ptr %37, align 4, !tbaa !11
  br label %451

450:                                              ; preds = %443, %437
  store i32 1879515230, ptr %37, align 4, !tbaa !11
  br label %451

451:                                              ; preds = %450, %449
  br label %452

452:                                              ; preds = %451, %436
  br label %453

453:                                              ; preds = %452, %423
  br label %479

454:                                              ; preds = %405
  %455 = load ptr, ptr %17, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %455, i32 0, i32 8
  %457 = getelementptr inbounds [3 x i8], ptr %456, i64 0, i64 0
  %458 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %457)
  %459 = icmp eq i32 4, %458
  br i1 %459, label %460, label %461

460:                                              ; preds = %454
  store i32 1879331069, ptr %37, align 4, !tbaa !11
  br label %478

461:                                              ; preds = %454
  %462 = load ptr, ptr %17, 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 5, %465
  br i1 %466, label %467, label %468

467:                                              ; preds = %461
  store i32 1879396605, ptr %37, align 4, !tbaa !11
  br label %477

468:                                              ; preds = %461
  %469 = load ptr, ptr %13, align 8, !tbaa !5
  %470 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !11
  %471 = icmp ult i32 1, %470
  br i1 %471, label %472, label %474

472:                                              ; preds = %468
  %473 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !11
  br label %475

474:                                              ; preds = %468
  br label %475

475:                                              ; preds = %474, %472
  %476 = phi i32 [ %473, %472 ], [ 1, %474 ]
  call void @libxsmm_handle_error(ptr noundef %469, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_gemm_amx_microkernel, ptr noundef @.str.2, i32 noundef 1471, i32 noundef %476)
  store i32 1, ptr %81, align 4
  br label %2830

477:                                              ; preds = %467
  br label %478

478:                                              ; preds = %477, %460
  br label %479

479:                                              ; preds = %478, %453
  br label %480

480:                                              ; preds = %479, %404
  br label %481

481:                                              ; preds = %480, %387
  %482 = load ptr, ptr %16, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %482, i32 0, i32 38
  %484 = load i32, ptr %483, align 8, !tbaa !27
  %485 = icmp eq i32 %484, 1
  br i1 %485, label %486, label %518

486:                                              ; preds = %481
  %487 = load ptr, ptr %17, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %487, i32 0, i32 8
  %489 = getelementptr inbounds [3 x i8], ptr %488, i64 0, i64 0
  %490 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %489)
  %491 = icmp ne i32 2, %490
  br i1 %491, label %492, label %503

492:                                              ; preds = %486
  %493 = load ptr, ptr @stderr, align 8, !tbaa !5
  %494 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %493, ptr noundef @.str.11) #6
  %495 = load ptr, ptr %13, align 8, !tbaa !5
  %496 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !11
  %497 = icmp ult i32 1, %496
  br i1 %497, label %498, label %500

498:                                              ; preds = %492
  %499 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !11
  br label %501

500:                                              ; preds = %492
  br label %501

501:                                              ; preds = %500, %498
  %502 = phi i32 [ %499, %498 ], [ 1, %500 ]
  call void @libxsmm_handle_error(ptr noundef %495, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_gemm_amx_microkernel, ptr noundef @.str.2, i32 noundef 1479, i32 noundef %502)
  store i32 1, ptr %81, align 4
  br label %2830

503:                                              ; preds = %486
  %504 = load i32, ptr %35, align 4, !tbaa !11
  %505 = icmp eq i32 %504, 0
  br i1 %505, label %506, label %517

506:                                              ; preds = %503
  %507 = load ptr, ptr @stderr, align 8, !tbaa !5
  %508 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %507, ptr noundef @.str.12) #6
  %509 = load ptr, ptr %13, align 8, !tbaa !5
  %510 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !11
  %511 = icmp ult i32 1, %510
  br i1 %511, label %512, label %514

512:                                              ; preds = %506
  %513 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !11
  br label %515

514:                                              ; preds = %506
  br label %515

515:                                              ; preds = %514, %512
  %516 = phi i32 [ %513, %512 ], [ 1, %514 ]
  call void @libxsmm_handle_error(ptr noundef %509, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_gemm_amx_microkernel, ptr noundef @.str.2, i32 noundef 1484, i32 noundef %516)
  store i32 1, ptr %81, align 4
  br label %2830

517:                                              ; preds = %503
  br label %518

518:                                              ; preds = %517, %481
  %519 = load ptr, ptr %17, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %519, i32 0, i32 6
  %521 = load i32, ptr %520, align 1, !tbaa !20
  %522 = and i32 %521, 2048
  %523 = icmp eq i32 %522, 0
  br i1 %523, label %524, label %1083

524:                                              ; preds = %518
  %525 = load ptr, ptr %17, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %525, i32 0, i32 6
  %527 = load i32, ptr %526, align 1, !tbaa !20
  %528 = and i32 %527, 1
  %529 = icmp eq i32 %528, 0
  br i1 %529, label %530, label %710

530:                                              ; preds = %524
  %531 = load ptr, ptr %17, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %531, i32 0, i32 6
  %533 = load i32, ptr %532, align 1, !tbaa !20
  %534 = and i32 %533, 2
  %535 = icmp eq i32 %534, 0
  br i1 %535, label %536, label %710

536:                                              ; preds = %530
  %537 = load i32, ptr %47, align 4, !tbaa !11
  %538 = icmp ugt i32 %537, 0
  br i1 %538, label %539, label %544

539:                                              ; preds = %536
  %540 = load i32, ptr %48, align 4, !tbaa !11
  %541 = icmp ugt i32 %540, 0
  %542 = zext i1 %541 to i64
  %543 = select i1 %541, i32 1610895609, i32 1610883183
  br label %549

544:                                              ; preds = %536
  %545 = load i32, ptr %48, align 4, !tbaa !11
  %546 = icmp ugt i32 %545, 0
  %547 = zext i1 %546 to i64
  %548 = select i1 %546, i32 1610895608, i32 1610883182
  br label %549

549:                                              ; preds = %544, %539
  %550 = phi i32 [ %543, %539 ], [ %548, %544 ]
  store i32 %550, ptr %38, align 4, !tbaa !11
  %551 = load i32, ptr %49, align 4, !tbaa !11
  %552 = icmp ugt i32 %551, 0
  br i1 %552, label %553, label %558

553:                                              ; preds = %549
  %554 = load i32, ptr %50, align 4, !tbaa !11
  %555 = icmp ugt i32 %554, 0
  %556 = zext i1 %555 to i64
  %557 = select i1 %555, i32 1610948682, i32 1610948683
  br label %563

558:                                              ; preds = %549
  %559 = load i32, ptr %50, align 4, !tbaa !11
  %560 = icmp ugt i32 %559, 0
  %561 = zext i1 %560 to i64
  %562 = select i1 %560, i32 1611079754, i32 1611079755
  br label %563

563:                                              ; preds = %558, %553
  %564 = phi i32 [ %557, %553 ], [ %562, %558 ]
  store i32 %564, ptr %39, align 4, !tbaa !11
  %565 = load i32, ptr %25, align 4, !tbaa !11
  %566 = icmp eq i32 %565, 2
  br i1 %566, label %567, label %588

567:                                              ; preds = %563
  %568 = load i32, ptr %26, align 4, !tbaa !11
  %569 = icmp eq i32 %568, 2
  br i1 %569, label %570, label %588

570:                                              ; preds = %567
  %571 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %571, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  %572 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %572, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  %573 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %573, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  %574 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %574, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %575 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %575, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  %576 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %576, i32 noundef 6, i32 noundef -1, i32 noundef 7, i32 noundef -1)
  %577 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %577, i32 noundef 0, i32 noundef -1, i32 noundef 1, i32 noundef -1)
  %578 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %579 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %578, i32 noundef %579, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %580 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %581 = load i32, ptr %39, align 4, !tbaa !11
  %582 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %580, i32 noundef %581, i32 noundef -1, i32 noundef %582, i32 noundef -1)
  %583 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %584 = load i32, ptr %37, align 4, !tbaa !11
  %585 = load i32, ptr %37, align 4, !tbaa !11
  %586 = load i32, ptr %37, align 4, !tbaa !11
  %587 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %583, i32 noundef %584, i32 noundef %585, i32 noundef %586, i32 noundef %587)
  br label %588

588:                                              ; preds = %570, %567, %563
  %589 = load i32, ptr %25, align 4, !tbaa !11
  %590 = icmp eq i32 %589, 2
  br i1 %590, label %591, label %609

591:                                              ; preds = %588
  %592 = load i32, ptr %26, align 4, !tbaa !11
  %593 = icmp eq i32 %592, 1
  br i1 %593, label %594, label %609

594:                                              ; preds = %591
  %595 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %595, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %596 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %596, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  %597 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %597, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %598 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %598, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %599 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %599, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  %600 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %600, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %601 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %601, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %602 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %603 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %602, i32 noundef %603, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %604 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %605 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %604, i32 noundef %605, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %606 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %607 = load i32, ptr %37, align 4, !tbaa !11
  %608 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %606, i32 noundef %607, i32 noundef %608, i32 noundef -1, i32 noundef -1)
  br label %609

609:                                              ; preds = %594, %591, %588
  %610 = load i32, ptr %25, align 4, !tbaa !11
  %611 = icmp eq i32 %610, 1
  br i1 %611, label %612, label %631

612:                                              ; preds = %609
  %613 = load i32, ptr %26, align 4, !tbaa !11
  %614 = icmp eq i32 %613, 2
  br i1 %614, label %615, label %631

615:                                              ; preds = %612
  %616 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %616, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  %617 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %617, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %618 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %618, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  %619 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %619, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %620 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %620, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  %621 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %621, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  %622 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %622, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %623 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %624 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %623, i32 noundef %624, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %625 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %626 = load i32, ptr %39, align 4, !tbaa !11
  %627 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %625, i32 noundef %626, i32 noundef %627, i32 noundef -1, i32 noundef -1)
  %628 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %629 = load i32, ptr %37, align 4, !tbaa !11
  %630 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %628, i32 noundef %629, i32 noundef %630, i32 noundef -1, i32 noundef -1)
  br label %631

631:                                              ; preds = %615, %612, %609
  %632 = load i32, ptr %25, align 4, !tbaa !11
  %633 = icmp eq i32 %632, 1
  br i1 %633, label %634, label %651

634:                                              ; preds = %631
  %635 = load i32, ptr %26, align 4, !tbaa !11
  %636 = icmp eq i32 %635, 1
  br i1 %636, label %637, label %651

637:                                              ; preds = %634
  %638 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %638, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %639 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %639, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %640 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %640, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %641 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %641, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %642 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %642, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %643 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %643, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %644 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %644, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %645 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %646 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %645, i32 noundef %646, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %647 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %648 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %647, i32 noundef %648, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %649 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %650 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %649, i32 noundef %650, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %651

651:                                              ; preds = %637, %634, %631
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %652

652:                                              ; preds = %706, %651
  %653 = load i32, ptr %27, align 4, !tbaa !11
  %654 = icmp slt i32 %653, 4
  br i1 %654, label %655, label %709

655:                                              ; preds = %652
  %656 = load i32, ptr %27, align 4, !tbaa !11
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %657
  %659 = load i32, ptr %658, align 4, !tbaa !11
  %660 = mul nsw i32 %659, 2
  %661 = load i32, ptr %27, align 4, !tbaa !11
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %662
  %664 = load i32, ptr %663, align 4, !tbaa !11
  %665 = add nsw i32 %660, %664
  %666 = load i32, ptr %27, align 4, !tbaa !11
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %667
  store i32 %665, ptr %668, align 4, !tbaa !11
  %669 = load i64, ptr %20, align 8, !tbaa !9
  %670 = load i32, ptr %27, align 4, !tbaa !11
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %671
  %673 = load i32, ptr %672, align 4, !tbaa !11
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %674
  %676 = load i32, ptr %675, align 4, !tbaa !11
  %677 = mul nsw i32 %676, 2
  %678 = sext i32 %677 to i64
  %679 = add nsw i64 %669, %678
  %680 = load i32, ptr %27, align 4, !tbaa !11
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %681
  store i64 %679, ptr %682, align 8, !tbaa !9
  %683 = load i64, ptr %21, align 8, !tbaa !9
  %684 = load i32, ptr %27, align 4, !tbaa !11
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %685
  %687 = load i32, ptr %686, align 4, !tbaa !11
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %688
  %690 = load i32, ptr %689, align 4, !tbaa !11
  %691 = sext i32 %690 to i64
  %692 = load ptr, ptr %17, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %692, i32 0, i32 4
  %694 = load i32, ptr %693, align 1, !tbaa !28
  %695 = zext i32 %694 to i64
  %696 = mul nsw i64 %691, %695
  %697 = load ptr, ptr %16, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %697, i32 0, i32 4
  %699 = load i32, ptr %698, align 8, !tbaa !29
  %700 = zext i32 %699 to i64
  %701 = mul nsw i64 %696, %700
  %702 = add nsw i64 %683, %701
  %703 = load i32, ptr %27, align 4, !tbaa !11
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %704
  store i64 %702, ptr %705, align 8, !tbaa !9
  br label %706

706:                                              ; preds = %655
  %707 = load i32, ptr %27, align 4, !tbaa !11
  %708 = add nsw i32 %707, 1
  store i32 %708, ptr %27, align 4, !tbaa !11
  br label %652, !llvm.loop !30

709:                                              ; preds = %652
  br label %710

710:                                              ; preds = %709, %530, %524
  %711 = load ptr, ptr %17, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %711, i32 0, i32 6
  %713 = load i32, ptr %712, align 1, !tbaa !20
  %714 = and i32 %713, 1
  %715 = icmp ugt i32 %714, 0
  br i1 %715, label %716, label %903

716:                                              ; preds = %710
  %717 = load ptr, ptr %17, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %717, i32 0, i32 6
  %719 = load i32, ptr %718, align 1, !tbaa !20
  %720 = and i32 %719, 2
  %721 = icmp eq i32 %720, 0
  br i1 %721, label %722, label %903

722:                                              ; preds = %716
  %723 = load i32, ptr %47, align 4, !tbaa !11
  %724 = icmp ugt i32 %723, 0
  br i1 %724, label %725, label %730

725:                                              ; preds = %722
  %726 = load i32, ptr %48, align 4, !tbaa !11
  %727 = icmp ugt i32 %726, 0
  %728 = zext i1 %727 to i64
  %729 = select i1 %727, i32 1610948682, i32 1610948683
  br label %735

730:                                              ; preds = %722
  %731 = load i32, ptr %48, align 4, !tbaa !11
  %732 = icmp ugt i32 %731, 0
  %733 = zext i1 %732 to i64
  %734 = select i1 %732, i32 1611079754, i32 1611079755
  br label %735

735:                                              ; preds = %730, %725
  %736 = phi i32 [ %729, %725 ], [ %734, %730 ]
  store i32 %736, ptr %38, align 4, !tbaa !11
  %737 = load i32, ptr %49, align 4, !tbaa !11
  %738 = icmp ugt i32 %737, 0
  br i1 %738, label %739, label %744

739:                                              ; preds = %735
  %740 = load i32, ptr %50, align 4, !tbaa !11
  %741 = icmp ugt i32 %740, 0
  %742 = zext i1 %741 to i64
  %743 = select i1 %741, i32 1610948682, i32 1610948683
  br label %749

744:                                              ; preds = %735
  %745 = load i32, ptr %50, align 4, !tbaa !11
  %746 = icmp ugt i32 %745, 0
  %747 = zext i1 %746 to i64
  %748 = select i1 %746, i32 1611079754, i32 1611079755
  br label %749

749:                                              ; preds = %744, %739
  %750 = phi i32 [ %743, %739 ], [ %748, %744 ]
  store i32 %750, ptr %39, align 4, !tbaa !11
  %751 = load i32, ptr %25, align 4, !tbaa !11
  %752 = icmp eq i32 %751, 2
  br i1 %752, label %753, label %775

753:                                              ; preds = %749
  %754 = load i32, ptr %26, align 4, !tbaa !11
  %755 = icmp eq i32 %754, 2
  br i1 %755, label %756, label %775

756:                                              ; preds = %753
  %757 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %757, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  %758 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %758, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  %759 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %759, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  %760 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %760, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %761 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %761, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  %762 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %762, i32 noundef 6, i32 noundef -1, i32 noundef 7, i32 noundef -1)
  %763 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %763, i32 noundef 0, i32 noundef -1, i32 noundef 1, i32 noundef -1)
  %764 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %765 = load i32, ptr %38, align 4, !tbaa !11
  %766 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %764, i32 noundef %765, i32 noundef %766, i32 noundef -1, i32 noundef -1)
  %767 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %768 = load i32, ptr %39, align 4, !tbaa !11
  %769 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %767, i32 noundef %768, i32 noundef -1, i32 noundef %769, i32 noundef -1)
  %770 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %771 = load i32, ptr %37, align 4, !tbaa !11
  %772 = load i32, ptr %37, align 4, !tbaa !11
  %773 = load i32, ptr %37, align 4, !tbaa !11
  %774 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %770, i32 noundef %771, i32 noundef %772, i32 noundef %773, i32 noundef %774)
  br label %775

775:                                              ; preds = %756, %753, %749
  %776 = load i32, ptr %25, align 4, !tbaa !11
  %777 = icmp eq i32 %776, 2
  br i1 %777, label %778, label %797

778:                                              ; preds = %775
  %779 = load i32, ptr %26, align 4, !tbaa !11
  %780 = icmp eq i32 %779, 1
  br i1 %780, label %781, label %797

781:                                              ; preds = %778
  %782 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %782, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %783 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %783, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  %784 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %784, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %785 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %785, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %786 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %786, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  %787 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %787, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %788 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %788, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %789 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %790 = load i32, ptr %38, align 4, !tbaa !11
  %791 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %789, i32 noundef %790, i32 noundef %791, i32 noundef -1, i32 noundef -1)
  %792 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %793 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %792, i32 noundef %793, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %794 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %795 = load i32, ptr %37, align 4, !tbaa !11
  %796 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %794, i32 noundef %795, i32 noundef %796, i32 noundef -1, i32 noundef -1)
  br label %797

797:                                              ; preds = %781, %778, %775
  %798 = load i32, ptr %25, align 4, !tbaa !11
  %799 = icmp eq i32 %798, 1
  br i1 %799, label %800, label %819

800:                                              ; preds = %797
  %801 = load i32, ptr %26, align 4, !tbaa !11
  %802 = icmp eq i32 %801, 2
  br i1 %802, label %803, label %819

803:                                              ; preds = %800
  %804 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %804, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  %805 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %805, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %806 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %806, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  %807 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %807, i32 noundef 5, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %808 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %808, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  %809 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %809, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  %810 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %810, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %811 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %812 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %811, i32 noundef %812, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %813 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %814 = load i32, ptr %39, align 4, !tbaa !11
  %815 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %813, i32 noundef %814, i32 noundef %815, i32 noundef -1, i32 noundef -1)
  %816 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %817 = load i32, ptr %37, align 4, !tbaa !11
  %818 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %816, i32 noundef %817, i32 noundef %818, i32 noundef -1, i32 noundef -1)
  br label %819

819:                                              ; preds = %803, %800, %797
  %820 = load i32, ptr %25, align 4, !tbaa !11
  %821 = icmp eq i32 %820, 1
  br i1 %821, label %822, label %839

822:                                              ; preds = %819
  %823 = load i32, ptr %26, align 4, !tbaa !11
  %824 = icmp eq i32 %823, 1
  br i1 %824, label %825, label %839

825:                                              ; preds = %822
  %826 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %826, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %827 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %827, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %828 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %828, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %829 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %829, i32 noundef 5, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %830 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %830, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %831 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %831, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %832 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %832, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %833 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %834 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %833, i32 noundef %834, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %835 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %836 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %835, i32 noundef %836, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %837 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %838 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %837, i32 noundef %838, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %839

839:                                              ; preds = %825, %822, %819
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %840

840:                                              ; preds = %899, %839
  %841 = load i32, ptr %27, align 4, !tbaa !11
  %842 = icmp slt i32 %841, 4
  br i1 %842, label %843, label %902

843:                                              ; preds = %840
  %844 = load i32, ptr %27, align 4, !tbaa !11
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %845
  %847 = load i32, ptr %846, align 4, !tbaa !11
  %848 = mul nsw i32 %847, 2
  %849 = load i32, ptr %27, align 4, !tbaa !11
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %850
  %852 = load i32, ptr %851, align 4, !tbaa !11
  %853 = add nsw i32 %848, %852
  %854 = load i32, ptr %27, align 4, !tbaa !11
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %855
  store i32 %853, ptr %856, align 4, !tbaa !11
  %857 = load i64, ptr %20, align 8, !tbaa !9
  %858 = load i32, ptr %27, align 4, !tbaa !11
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %859
  %861 = load i32, ptr %860, align 4, !tbaa !11
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %862
  %864 = load i32, ptr %863, align 4, !tbaa !11
  %865 = sext i32 %864 to i64
  %866 = load ptr, ptr %17, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %866, i32 0, i32 3
  %868 = load i32, ptr %867, align 1, !tbaa !31
  %869 = zext i32 %868 to i64
  %870 = mul nsw i64 %865, %869
  %871 = mul nsw i64 %870, 2
  %872 = add nsw i64 %857, %871
  %873 = load i32, ptr %27, align 4, !tbaa !11
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %874
  store i64 %872, ptr %875, align 8, !tbaa !9
  %876 = load i64, ptr %21, align 8, !tbaa !9
  %877 = load i32, ptr %27, align 4, !tbaa !11
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %878
  %880 = load i32, ptr %879, align 4, !tbaa !11
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %881
  %883 = load i32, ptr %882, align 4, !tbaa !11
  %884 = sext i32 %883 to i64
  %885 = load ptr, ptr %17, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %885, i32 0, i32 4
  %887 = load i32, ptr %886, align 1, !tbaa !28
  %888 = zext i32 %887 to i64
  %889 = mul nsw i64 %884, %888
  %890 = load ptr, ptr %16, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %890, i32 0, i32 4
  %892 = load i32, ptr %891, align 8, !tbaa !29
  %893 = zext i32 %892 to i64
  %894 = mul nsw i64 %889, %893
  %895 = add nsw i64 %876, %894
  %896 = load i32, ptr %27, align 4, !tbaa !11
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %897
  store i64 %895, ptr %898, align 8, !tbaa !9
  br label %899

899:                                              ; preds = %843
  %900 = load i32, ptr %27, align 4, !tbaa !11
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %27, align 4, !tbaa !11
  br label %840, !llvm.loop !32

902:                                              ; preds = %840
  br label %903

903:                                              ; preds = %902, %716, %710
  %904 = load ptr, ptr %17, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %904, i32 0, i32 6
  %906 = load i32, ptr %905, align 1, !tbaa !20
  %907 = and i32 %906, 1
  %908 = icmp eq i32 %907, 0
  br i1 %908, label %909, label %1082

909:                                              ; preds = %903
  %910 = load ptr, ptr %17, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %910, i32 0, i32 6
  %912 = load i32, ptr %911, align 1, !tbaa !20
  %913 = and i32 %912, 2
  %914 = icmp ugt i32 %913, 0
  br i1 %914, label %915, label %1082

915:                                              ; preds = %909
  %916 = load i32, ptr %47, align 4, !tbaa !11
  %917 = icmp ugt i32 %916, 0
  br i1 %917, label %918, label %923

918:                                              ; preds = %915
  %919 = load i32, ptr %48, align 4, !tbaa !11
  %920 = icmp ugt i32 %919, 0
  %921 = zext i1 %920 to i64
  %922 = select i1 %920, i32 1610895609, i32 1610883183
  br label %928

923:                                              ; preds = %915
  %924 = load i32, ptr %48, align 4, !tbaa !11
  %925 = icmp ugt i32 %924, 0
  %926 = zext i1 %925 to i64
  %927 = select i1 %925, i32 1610895608, i32 1610883182
  br label %928

928:                                              ; preds = %923, %918
  %929 = phi i32 [ %922, %918 ], [ %927, %923 ]
  store i32 %929, ptr %38, align 4, !tbaa !11
  %930 = load i32, ptr %49, align 4, !tbaa !11
  %931 = icmp ugt i32 %930, 0
  br i1 %931, label %932, label %937

932:                                              ; preds = %928
  %933 = load i32, ptr %50, align 4, !tbaa !11
  %934 = icmp ugt i32 %933, 0
  %935 = zext i1 %934 to i64
  %936 = select i1 %934, i32 1610895609, i32 1610883183
  br label %942

937:                                              ; preds = %928
  %938 = load i32, ptr %50, align 4, !tbaa !11
  %939 = icmp ugt i32 %938, 0
  %940 = zext i1 %939 to i64
  %941 = select i1 %939, i32 1610895608, i32 1610883182
  br label %942

942:                                              ; preds = %937, %932
  %943 = phi i32 [ %936, %932 ], [ %941, %937 ]
  store i32 %943, ptr %39, align 4, !tbaa !11
  %944 = load i32, ptr %25, align 4, !tbaa !11
  %945 = icmp eq i32 %944, 2
  br i1 %945, label %946, label %966

946:                                              ; preds = %942
  %947 = load i32, ptr %26, align 4, !tbaa !11
  %948 = icmp eq i32 %947, 2
  br i1 %948, label %949, label %966

949:                                              ; preds = %946
  %950 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %950, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  %951 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %951, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  %952 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %952, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  %953 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %953, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %954 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %954, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  %955 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %955, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %956 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %956, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %957 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %958 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %957, i32 noundef %958, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %959 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %960 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %959, i32 noundef %960, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %961 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %962 = load i32, ptr %37, align 4, !tbaa !11
  %963 = load i32, ptr %37, align 4, !tbaa !11
  %964 = load i32, ptr %37, align 4, !tbaa !11
  %965 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %961, i32 noundef %962, i32 noundef %963, i32 noundef %964, i32 noundef %965)
  br label %966

966:                                              ; preds = %949, %946, %942
  %967 = load i32, ptr %25, align 4, !tbaa !11
  %968 = icmp eq i32 %967, 2
  br i1 %968, label %969, label %987

969:                                              ; preds = %966
  %970 = load i32, ptr %26, align 4, !tbaa !11
  %971 = icmp eq i32 %970, 1
  br i1 %971, label %972, label %987

972:                                              ; preds = %969
  %973 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %973, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  %974 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %974, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %975 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %975, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %976 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %976, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %977 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %977, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  %978 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %978, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %979 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %979, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %980 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %981 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %980, i32 noundef %981, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %982 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %983 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %982, i32 noundef %983, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %984 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %985 = load i32, ptr %37, align 4, !tbaa !11
  %986 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %984, i32 noundef %985, i32 noundef %986, i32 noundef -1, i32 noundef -1)
  br label %987

987:                                              ; preds = %972, %969, %966
  %988 = load i32, ptr %25, align 4, !tbaa !11
  %989 = icmp eq i32 %988, 1
  br i1 %989, label %990, label %1008

990:                                              ; preds = %987
  %991 = load i32, ptr %26, align 4, !tbaa !11
  %992 = icmp eq i32 %991, 2
  br i1 %992, label %993, label %1008

993:                                              ; preds = %990
  %994 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %994, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  %995 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %995, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %996 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %996, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  %997 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %997, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %998 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %998, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  %999 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %999, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1000 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1000, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1001 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1002 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1001, i32 noundef %1002, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1003 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1004 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1003, i32 noundef %1004, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1005 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1006 = load i32, ptr %37, align 4, !tbaa !11
  %1007 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1005, i32 noundef %1006, i32 noundef %1007, i32 noundef -1, i32 noundef -1)
  br label %1008

1008:                                             ; preds = %993, %990, %987
  %1009 = load i32, ptr %25, align 4, !tbaa !11
  %1010 = icmp eq i32 %1009, 1
  br i1 %1010, label %1011, label %1028

1011:                                             ; preds = %1008
  %1012 = load i32, ptr %26, align 4, !tbaa !11
  %1013 = icmp eq i32 %1012, 1
  br i1 %1013, label %1014, label %1028

1014:                                             ; preds = %1011
  %1015 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1015, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1016 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1016, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1017 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1017, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1018 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1018, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1019 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1019, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1020 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1020, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1021 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1021, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1022 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1023 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1022, i32 noundef %1023, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1024 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1025 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1024, i32 noundef %1025, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1026 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1027 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1026, i32 noundef %1027, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %1028

1028:                                             ; preds = %1014, %1011, %1008
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1029

1029:                                             ; preds = %1078, %1028
  %1030 = load i32, ptr %27, align 4, !tbaa !11
  %1031 = icmp slt i32 %1030, 4
  br i1 %1031, label %1032, label %1081

1032:                                             ; preds = %1029
  %1033 = load i32, ptr %27, align 4, !tbaa !11
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1034
  %1036 = load i32, ptr %1035, align 4, !tbaa !11
  %1037 = mul nsw i32 %1036, 2
  %1038 = load i32, ptr %27, align 4, !tbaa !11
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1039
  %1041 = load i32, ptr %1040, align 4, !tbaa !11
  %1042 = add nsw i32 %1037, %1041
  %1043 = load i32, ptr %27, align 4, !tbaa !11
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1044
  store i32 %1042, ptr %1045, align 4, !tbaa !11
  %1046 = load i64, ptr %20, align 8, !tbaa !9
  %1047 = load i32, ptr %27, align 4, !tbaa !11
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1048
  %1050 = load i32, ptr %1049, align 4, !tbaa !11
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1051
  %1053 = load i32, ptr %1052, align 4, !tbaa !11
  %1054 = mul nsw i32 %1053, 2
  %1055 = sext i32 %1054 to i64
  %1056 = add nsw i64 %1046, %1055
  %1057 = load i32, ptr %27, align 4, !tbaa !11
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1058
  store i64 %1056, ptr %1059, align 8, !tbaa !9
  %1060 = load i64, ptr %21, align 8, !tbaa !9
  %1061 = load i32, ptr %27, align 4, !tbaa !11
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1062
  %1064 = load i32, ptr %1063, align 4, !tbaa !11
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1065
  %1067 = load i32, ptr %1066, align 4, !tbaa !11
  %1068 = sext i32 %1067 to i64
  %1069 = load ptr, ptr %16, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1069, i32 0, i32 3
  %1071 = load i32, ptr %1070, align 4, !tbaa !33
  %1072 = zext i32 %1071 to i64
  %1073 = mul nsw i64 %1068, %1072
  %1074 = add nsw i64 %1060, %1073
  %1075 = load i32, ptr %27, align 4, !tbaa !11
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1076
  store i64 %1074, ptr %1077, align 8, !tbaa !9
  br label %1078

1078:                                             ; preds = %1032
  %1079 = load i32, ptr %27, align 4, !tbaa !11
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %27, align 4, !tbaa !11
  br label %1029, !llvm.loop !34

1081:                                             ; preds = %1029
  br label %1082

1082:                                             ; preds = %1081, %909, %903
  br label %1725

1083:                                             ; preds = %518
  %1084 = load ptr, ptr %17, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1084, i32 0, i32 6
  %1086 = load i32, ptr %1085, align 1, !tbaa !20
  %1087 = and i32 %1086, 1
  %1088 = icmp eq i32 %1087, 0
  br i1 %1088, label %1089, label %1724

1089:                                             ; preds = %1083
  %1090 = load ptr, ptr %17, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1090, i32 0, i32 6
  %1092 = load i32, ptr %1091, align 1, !tbaa !20
  %1093 = and i32 %1092, 2
  %1094 = icmp eq i32 %1093, 0
  br i1 %1094, label %1095, label %1724

1095:                                             ; preds = %1089
  %1096 = load i32, ptr %47, align 4, !tbaa !11
  %1097 = icmp ugt i32 %1096, 0
  br i1 %1097, label %1098, label %1103

1098:                                             ; preds = %1095
  %1099 = load i32, ptr %48, align 4, !tbaa !11
  %1100 = icmp ugt i32 %1099, 0
  %1101 = zext i1 %1100 to i64
  %1102 = select i1 %1100, i32 1610948682, i32 1610948683
  br label %1108

1103:                                             ; preds = %1095
  %1104 = load i32, ptr %48, align 4, !tbaa !11
  %1105 = icmp ugt i32 %1104, 0
  %1106 = zext i1 %1105 to i64
  %1107 = select i1 %1105, i32 1611079754, i32 1611079755
  br label %1108

1108:                                             ; preds = %1103, %1098
  %1109 = phi i32 [ %1102, %1098 ], [ %1107, %1103 ]
  store i32 %1109, ptr %38, align 4, !tbaa !11
  %1110 = load i32, ptr %49, align 4, !tbaa !11
  %1111 = icmp ugt i32 %1110, 0
  br i1 %1111, label %1112, label %1117

1112:                                             ; preds = %1108
  %1113 = load i32, ptr %50, align 4, !tbaa !11
  %1114 = icmp ugt i32 %1113, 0
  %1115 = zext i1 %1114 to i64
  %1116 = select i1 %1114, i32 1610948682, i32 1610948683
  br label %1122

1117:                                             ; preds = %1108
  %1118 = load i32, ptr %50, align 4, !tbaa !11
  %1119 = icmp ugt i32 %1118, 0
  %1120 = zext i1 %1119 to i64
  %1121 = select i1 %1119, i32 1611079754, i32 1611079755
  br label %1122

1122:                                             ; preds = %1117, %1112
  %1123 = phi i32 [ %1116, %1112 ], [ %1121, %1117 ]
  store i32 %1123, ptr %39, align 4, !tbaa !11
  %1124 = load i32, ptr %25, align 4, !tbaa !11
  %1125 = icmp eq i32 %1124, 2
  br i1 %1125, label %1126, label %1211

1126:                                             ; preds = %1122
  %1127 = load i32, ptr %26, align 4, !tbaa !11
  %1128 = icmp eq i32 %1127, 2
  br i1 %1128, label %1129, label %1211

1129:                                             ; preds = %1126
  %1130 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1130, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  %1131 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1131, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  %1132 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1132, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  %1133 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1133, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %1134 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1134, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  %1135 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1135, i32 noundef 6, i32 noundef -1, i32 noundef 7, i32 noundef -1)
  %1136 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1136, i32 noundef 0, i32 noundef -1, i32 noundef 1, i32 noundef -1)
  %1137 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1138 = load i32, ptr %38, align 4, !tbaa !11
  %1139 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1137, i32 noundef %1138, i32 noundef %1139, i32 noundef -1, i32 noundef -1)
  %1140 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1141 = load i32, ptr %39, align 4, !tbaa !11
  %1142 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1140, i32 noundef %1141, i32 noundef -1, i32 noundef %1142, i32 noundef -1)
  %1143 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1144 = load i32, ptr %37, align 4, !tbaa !11
  %1145 = load i32, ptr %37, align 4, !tbaa !11
  %1146 = load i32, ptr %37, align 4, !tbaa !11
  %1147 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1143, i32 noundef %1144, i32 noundef %1145, i32 noundef %1146, i32 noundef %1147)
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1148

1148:                                             ; preds = %1207, %1129
  %1149 = load i32, ptr %27, align 4, !tbaa !11
  %1150 = icmp slt i32 %1149, 4
  br i1 %1150, label %1151, label %1210

1151:                                             ; preds = %1148
  %1152 = load i32, ptr %27, align 4, !tbaa !11
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1153
  %1155 = load i32, ptr %1154, align 4, !tbaa !11
  %1156 = mul nsw i32 %1155, 2
  %1157 = load i32, ptr %27, align 4, !tbaa !11
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1158
  %1160 = load i32, ptr %1159, align 4, !tbaa !11
  %1161 = add nsw i32 %1156, %1160
  %1162 = load i32, ptr %27, align 4, !tbaa !11
  %1163 = sext i32 %1162 to i64
  %1164 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1163
  store i32 %1161, ptr %1164, align 4, !tbaa !11
  %1165 = load i64, ptr %20, align 8, !tbaa !9
  %1166 = load i32, ptr %27, align 4, !tbaa !11
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1167
  %1169 = load i32, ptr %1168, align 4, !tbaa !11
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1170
  %1172 = load i32, ptr %1171, align 4, !tbaa !11
  %1173 = sext i32 %1172 to i64
  %1174 = mul nsw i64 %1173, 4
  %1175 = load ptr, ptr %16, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1175, i32 0, i32 36
  %1177 = load i32, ptr %1176, align 8, !tbaa !35
  %1178 = zext i32 %1177 to i64
  %1179 = sdiv i64 %1174, %1178
  %1180 = add nsw i64 %1165, %1179
  %1181 = load i32, ptr %27, align 4, !tbaa !11
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1182
  store i64 %1180, ptr %1183, align 8, !tbaa !9
  %1184 = load i64, ptr %21, align 8, !tbaa !9
  %1185 = load i32, ptr %27, align 4, !tbaa !11
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1186
  %1188 = load i32, ptr %1187, align 4, !tbaa !11
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1189
  %1191 = load i32, ptr %1190, align 4, !tbaa !11
  %1192 = sext i32 %1191 to i64
  %1193 = load ptr, ptr %17, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1193, i32 0, i32 4
  %1195 = load i32, ptr %1194, align 1, !tbaa !28
  %1196 = zext i32 %1195 to i64
  %1197 = mul nsw i64 %1192, %1196
  %1198 = load ptr, ptr %16, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1198, i32 0, i32 4
  %1200 = load i32, ptr %1199, align 8, !tbaa !29
  %1201 = zext i32 %1200 to i64
  %1202 = mul nsw i64 %1197, %1201
  %1203 = add nsw i64 %1184, %1202
  %1204 = load i32, ptr %27, align 4, !tbaa !11
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1205
  store i64 %1203, ptr %1206, align 8, !tbaa !9
  br label %1207

1207:                                             ; preds = %1151
  %1208 = load i32, ptr %27, align 4, !tbaa !11
  %1209 = add nsw i32 %1208, 1
  store i32 %1209, ptr %27, align 4, !tbaa !11
  br label %1148, !llvm.loop !36

1210:                                             ; preds = %1148
  br label %1211

1211:                                             ; preds = %1210, %1126, %1122
  %1212 = load i32, ptr %25, align 4, !tbaa !11
  %1213 = icmp eq i32 %1212, 1
  br i1 %1213, label %1214, label %1294

1214:                                             ; preds = %1211
  %1215 = load i32, ptr %26, align 4, !tbaa !11
  %1216 = icmp eq i32 %1215, 4
  br i1 %1216, label %1217, label %1294

1217:                                             ; preds = %1214
  %1218 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1218, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1219 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1219, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef 3)
  %1220 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1220, i32 noundef 4, i32 noundef 4, i32 noundef 4, i32 noundef 4)
  %1221 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1221, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1222 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1222, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef 7)
  %1223 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1223, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef 7)
  %1224 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1224, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef 3)
  %1225 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1226 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1225, i32 noundef %1226, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1227 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1228 = load i32, ptr %39, align 4, !tbaa !11
  %1229 = load i32, ptr %39, align 4, !tbaa !11
  %1230 = load i32, ptr %39, align 4, !tbaa !11
  %1231 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1227, i32 noundef %1228, i32 noundef %1229, i32 noundef %1230, i32 noundef %1231)
  %1232 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1233 = load i32, ptr %37, align 4, !tbaa !11
  %1234 = load i32, ptr %37, align 4, !tbaa !11
  %1235 = load i32, ptr %37, align 4, !tbaa !11
  %1236 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1232, i32 noundef %1233, i32 noundef %1234, i32 noundef %1235, i32 noundef %1236)
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1237

1237:                                             ; preds = %1290, %1217
  %1238 = load i32, ptr %27, align 4, !tbaa !11
  %1239 = icmp slt i32 %1238, 4
  br i1 %1239, label %1240, label %1293

1240:                                             ; preds = %1237
  %1241 = load i32, ptr %27, align 4, !tbaa !11
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1242
  %1244 = load i32, ptr %1243, align 4, !tbaa !11
  %1245 = load i32, ptr %27, align 4, !tbaa !11
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1246
  store i32 %1244, ptr %1247, align 4, !tbaa !11
  %1248 = load i64, ptr %20, align 8, !tbaa !9
  %1249 = load i32, ptr %27, align 4, !tbaa !11
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1250
  %1252 = load i32, ptr %1251, align 4, !tbaa !11
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1253
  %1255 = load i32, ptr %1254, align 4, !tbaa !11
  %1256 = sext i32 %1255 to i64
  %1257 = mul nsw i64 %1256, 4
  %1258 = load ptr, ptr %16, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1258, i32 0, i32 36
  %1260 = load i32, ptr %1259, align 8, !tbaa !35
  %1261 = zext i32 %1260 to i64
  %1262 = sdiv i64 %1257, %1261
  %1263 = add nsw i64 %1248, %1262
  %1264 = load i32, ptr %27, align 4, !tbaa !11
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1265
  store i64 %1263, ptr %1266, align 8, !tbaa !9
  %1267 = load i64, ptr %21, align 8, !tbaa !9
  %1268 = load i32, ptr %27, align 4, !tbaa !11
  %1269 = sext i32 %1268 to i64
  %1270 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1269
  %1271 = load i32, ptr %1270, align 4, !tbaa !11
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1272
  %1274 = load i32, ptr %1273, align 4, !tbaa !11
  %1275 = sext i32 %1274 to i64
  %1276 = load ptr, ptr %17, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1276, i32 0, i32 4
  %1278 = load i32, ptr %1277, align 1, !tbaa !28
  %1279 = zext i32 %1278 to i64
  %1280 = mul nsw i64 %1275, %1279
  %1281 = load ptr, ptr %16, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1281, i32 0, i32 4
  %1283 = load i32, ptr %1282, align 8, !tbaa !29
  %1284 = zext i32 %1283 to i64
  %1285 = mul nsw i64 %1280, %1284
  %1286 = add nsw i64 %1267, %1285
  %1287 = load i32, ptr %27, align 4, !tbaa !11
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1288
  store i64 %1286, ptr %1289, align 8, !tbaa !9
  br label %1290

1290:                                             ; preds = %1240
  %1291 = load i32, ptr %27, align 4, !tbaa !11
  %1292 = add nsw i32 %1291, 1
  store i32 %1292, ptr %27, align 4, !tbaa !11
  br label %1237, !llvm.loop !37

1293:                                             ; preds = %1237
  br label %1294

1294:                                             ; preds = %1293, %1214, %1211
  %1295 = load i32, ptr %25, align 4, !tbaa !11
  %1296 = icmp eq i32 %1295, 1
  br i1 %1296, label %1297, label %1379

1297:                                             ; preds = %1294
  %1298 = load i32, ptr %26, align 4, !tbaa !11
  %1299 = icmp eq i32 %1298, 2
  br i1 %1299, label %1300, label %1379

1300:                                             ; preds = %1297
  %1301 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1301, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  %1302 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1302, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %1303 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1303, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  %1304 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1304, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1305 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1305, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  %1306 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1306, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  %1307 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1307, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %1308 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1309 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1308, i32 noundef %1309, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1310 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1311 = load i32, ptr %39, align 4, !tbaa !11
  %1312 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1310, i32 noundef %1311, i32 noundef %1312, i32 noundef -1, i32 noundef -1)
  %1313 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1314 = load i32, ptr %37, align 4, !tbaa !11
  %1315 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1313, i32 noundef %1314, i32 noundef %1315, i32 noundef -1, i32 noundef -1)
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1316

1316:                                             ; preds = %1375, %1300
  %1317 = load i32, ptr %27, align 4, !tbaa !11
  %1318 = icmp slt i32 %1317, 4
  br i1 %1318, label %1319, label %1378

1319:                                             ; preds = %1316
  %1320 = load i32, ptr %27, align 4, !tbaa !11
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1321
  %1323 = load i32, ptr %1322, align 4, !tbaa !11
  %1324 = mul nsw i32 %1323, 2
  %1325 = load i32, ptr %27, align 4, !tbaa !11
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1326
  %1328 = load i32, ptr %1327, align 4, !tbaa !11
  %1329 = add nsw i32 %1324, %1328
  %1330 = load i32, ptr %27, align 4, !tbaa !11
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1331
  store i32 %1329, ptr %1332, align 4, !tbaa !11
  %1333 = load i64, ptr %20, align 8, !tbaa !9
  %1334 = load i32, ptr %27, align 4, !tbaa !11
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1335
  %1337 = load i32, ptr %1336, align 4, !tbaa !11
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1338
  %1340 = load i32, ptr %1339, align 4, !tbaa !11
  %1341 = sext i32 %1340 to i64
  %1342 = mul nsw i64 %1341, 4
  %1343 = load ptr, ptr %16, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1343, i32 0, i32 36
  %1345 = load i32, ptr %1344, align 8, !tbaa !35
  %1346 = zext i32 %1345 to i64
  %1347 = sdiv i64 %1342, %1346
  %1348 = add nsw i64 %1333, %1347
  %1349 = load i32, ptr %27, align 4, !tbaa !11
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1350
  store i64 %1348, ptr %1351, align 8, !tbaa !9
  %1352 = load i64, ptr %21, align 8, !tbaa !9
  %1353 = load i32, ptr %27, align 4, !tbaa !11
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1354
  %1356 = load i32, ptr %1355, align 4, !tbaa !11
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1357
  %1359 = load i32, ptr %1358, align 4, !tbaa !11
  %1360 = sext i32 %1359 to i64
  %1361 = load ptr, ptr %17, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1361, i32 0, i32 4
  %1363 = load i32, ptr %1362, align 1, !tbaa !28
  %1364 = zext i32 %1363 to i64
  %1365 = mul nsw i64 %1360, %1364
  %1366 = load ptr, ptr %16, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1366, i32 0, i32 4
  %1368 = load i32, ptr %1367, align 8, !tbaa !29
  %1369 = zext i32 %1368 to i64
  %1370 = mul nsw i64 %1365, %1369
  %1371 = add nsw i64 %1352, %1370
  %1372 = load i32, ptr %27, align 4, !tbaa !11
  %1373 = sext i32 %1372 to i64
  %1374 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1373
  store i64 %1371, ptr %1374, align 8, !tbaa !9
  br label %1375

1375:                                             ; preds = %1319
  %1376 = load i32, ptr %27, align 4, !tbaa !11
  %1377 = add nsw i32 %1376, 1
  store i32 %1377, ptr %27, align 4, !tbaa !11
  br label %1316, !llvm.loop !38

1378:                                             ; preds = %1316
  br label %1379

1379:                                             ; preds = %1378, %1297, %1294
  %1380 = load i32, ptr %25, align 4, !tbaa !11
  %1381 = icmp eq i32 %1380, 2
  br i1 %1381, label %1382, label %1476

1382:                                             ; preds = %1379
  %1383 = load i32, ptr %26, align 4, !tbaa !11
  %1384 = icmp eq i32 %1383, 1
  br i1 %1384, label %1385, label %1476

1385:                                             ; preds = %1382
  %1386 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1386, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  %1387 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1387, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  %1388 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1388, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %1389 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1389, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  %1390 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1390, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  %1391 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1391, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1392 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1392, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1393 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1394 = load i32, ptr %38, align 4, !tbaa !11
  %1395 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1393, i32 noundef %1394, i32 noundef %1395, i32 noundef -1, i32 noundef -1)
  %1396 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1397 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1396, i32 noundef %1397, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1398 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1399 = load i32, ptr %37, align 4, !tbaa !11
  %1400 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1398, i32 noundef %1399, i32 noundef %1400, i32 noundef -1, i32 noundef -1)
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1401

1401:                                             ; preds = %1472, %1385
  %1402 = load i32, ptr %27, align 4, !tbaa !11
  %1403 = icmp slt i32 %1402, 4
  br i1 %1403, label %1404, label %1475

1404:                                             ; preds = %1401
  %1405 = load i32, ptr %34, align 4, !tbaa !11
  %1406 = icmp ugt i32 %1405, 0
  br i1 %1406, label %1407, label %1415

1407:                                             ; preds = %1404
  %1408 = load i32, ptr %27, align 4, !tbaa !11
  %1409 = sext i32 %1408 to i64
  %1410 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1409
  %1411 = load i32, ptr %1410, align 4, !tbaa !11
  %1412 = load i32, ptr %27, align 4, !tbaa !11
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1413
  store i32 %1411, ptr %1414, align 4, !tbaa !11
  br label %1429

1415:                                             ; preds = %1404
  %1416 = load i32, ptr %27, align 4, !tbaa !11
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1417
  %1419 = load i32, ptr %1418, align 4, !tbaa !11
  %1420 = mul nsw i32 %1419, 2
  %1421 = load i32, ptr %27, align 4, !tbaa !11
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1422
  %1424 = load i32, ptr %1423, align 4, !tbaa !11
  %1425 = add nsw i32 %1420, %1424
  %1426 = load i32, ptr %27, align 4, !tbaa !11
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1427
  store i32 %1425, ptr %1428, align 4, !tbaa !11
  br label %1429

1429:                                             ; preds = %1415, %1407
  %1430 = load i64, ptr %20, align 8, !tbaa !9
  %1431 = load i32, ptr %27, align 4, !tbaa !11
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1432
  %1434 = load i32, ptr %1433, align 4, !tbaa !11
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1435
  %1437 = load i32, ptr %1436, align 4, !tbaa !11
  %1438 = sext i32 %1437 to i64
  %1439 = mul nsw i64 %1438, 4
  %1440 = load ptr, ptr %16, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1440, i32 0, i32 36
  %1442 = load i32, ptr %1441, align 8, !tbaa !35
  %1443 = zext i32 %1442 to i64
  %1444 = sdiv i64 %1439, %1443
  %1445 = add nsw i64 %1430, %1444
  %1446 = load i32, ptr %27, align 4, !tbaa !11
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1447
  store i64 %1445, ptr %1448, align 8, !tbaa !9
  %1449 = load i64, ptr %21, align 8, !tbaa !9
  %1450 = load i32, ptr %27, align 4, !tbaa !11
  %1451 = sext i32 %1450 to i64
  %1452 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1451
  %1453 = load i32, ptr %1452, align 4, !tbaa !11
  %1454 = sext i32 %1453 to i64
  %1455 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1454
  %1456 = load i32, ptr %1455, align 4, !tbaa !11
  %1457 = sext i32 %1456 to i64
  %1458 = load ptr, ptr %17, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1458, i32 0, i32 4
  %1460 = load i32, ptr %1459, align 1, !tbaa !28
  %1461 = zext i32 %1460 to i64
  %1462 = mul nsw i64 %1457, %1461
  %1463 = load ptr, ptr %16, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1463, i32 0, i32 4
  %1465 = load i32, ptr %1464, align 8, !tbaa !29
  %1466 = zext i32 %1465 to i64
  %1467 = mul nsw i64 %1462, %1466
  %1468 = add nsw i64 %1449, %1467
  %1469 = load i32, ptr %27, align 4, !tbaa !11
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1470
  store i64 %1468, ptr %1471, align 8, !tbaa !9
  br label %1472

1472:                                             ; preds = %1429
  %1473 = load i32, ptr %27, align 4, !tbaa !11
  %1474 = add nsw i32 %1473, 1
  store i32 %1474, ptr %27, align 4, !tbaa !11
  br label %1401, !llvm.loop !39

1475:                                             ; preds = %1401
  br label %1476

1476:                                             ; preds = %1475, %1382, %1379
  %1477 = load i32, ptr %25, align 4, !tbaa !11
  %1478 = icmp eq i32 %1477, 3
  br i1 %1478, label %1479, label %1557

1479:                                             ; preds = %1476
  %1480 = load i32, ptr %26, align 4, !tbaa !11
  %1481 = icmp eq i32 %1480, 1
  br i1 %1481, label %1482, label %1557

1482:                                             ; preds = %1479
  %1483 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1483, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef -1)
  %1484 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1484, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef -1)
  %1485 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1485, i32 noundef 4, i32 noundef 4, i32 noundef 5, i32 noundef -1)
  %1486 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1486, i32 noundef 4, i32 noundef 4, i32 noundef 5, i32 noundef -1)
  %1487 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1487, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef -1)
  %1488 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1488, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1489 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1489, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1490 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1491 = load i32, ptr %38, align 4, !tbaa !11
  %1492 = load i32, ptr %38, align 4, !tbaa !11
  %1493 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1490, i32 noundef %1491, i32 noundef %1492, i32 noundef %1493, i32 noundef -1)
  %1494 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1495 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1494, i32 noundef %1495, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1496 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1497 = load i32, ptr %37, align 4, !tbaa !11
  %1498 = load i32, ptr %37, align 4, !tbaa !11
  %1499 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1496, i32 noundef %1497, i32 noundef %1498, i32 noundef %1499, i32 noundef -1)
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1500

1500:                                             ; preds = %1553, %1482
  %1501 = load i32, ptr %27, align 4, !tbaa !11
  %1502 = icmp slt i32 %1501, 4
  br i1 %1502, label %1503, label %1556

1503:                                             ; preds = %1500
  %1504 = load i32, ptr %27, align 4, !tbaa !11
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1505
  %1507 = load i32, ptr %1506, align 4, !tbaa !11
  %1508 = load i32, ptr %27, align 4, !tbaa !11
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1509
  store i32 %1507, ptr %1510, align 4, !tbaa !11
  %1511 = load i64, ptr %20, align 8, !tbaa !9
  %1512 = load i32, ptr %27, align 4, !tbaa !11
  %1513 = sext i32 %1512 to i64
  %1514 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1513
  %1515 = load i32, ptr %1514, align 4, !tbaa !11
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1516
  %1518 = load i32, ptr %1517, align 4, !tbaa !11
  %1519 = sext i32 %1518 to i64
  %1520 = mul nsw i64 %1519, 4
  %1521 = load ptr, ptr %16, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1521, i32 0, i32 36
  %1523 = load i32, ptr %1522, align 8, !tbaa !35
  %1524 = zext i32 %1523 to i64
  %1525 = sdiv i64 %1520, %1524
  %1526 = add nsw i64 %1511, %1525
  %1527 = load i32, ptr %27, align 4, !tbaa !11
  %1528 = sext i32 %1527 to i64
  %1529 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1528
  store i64 %1526, ptr %1529, align 8, !tbaa !9
  %1530 = load i64, ptr %21, align 8, !tbaa !9
  %1531 = load i32, ptr %27, align 4, !tbaa !11
  %1532 = sext i32 %1531 to i64
  %1533 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1532
  %1534 = load i32, ptr %1533, align 4, !tbaa !11
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1535
  %1537 = load i32, ptr %1536, align 4, !tbaa !11
  %1538 = sext i32 %1537 to i64
  %1539 = load ptr, ptr %17, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1539, i32 0, i32 4
  %1541 = load i32, ptr %1540, align 1, !tbaa !28
  %1542 = zext i32 %1541 to i64
  %1543 = mul nsw i64 %1538, %1542
  %1544 = load ptr, ptr %16, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1544, i32 0, i32 3
  %1546 = load i32, ptr %1545, align 4, !tbaa !33
  %1547 = zext i32 %1546 to i64
  %1548 = mul nsw i64 %1543, %1547
  %1549 = add nsw i64 %1530, %1548
  %1550 = load i32, ptr %27, align 4, !tbaa !11
  %1551 = sext i32 %1550 to i64
  %1552 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1551
  store i64 %1549, ptr %1552, align 8, !tbaa !9
  br label %1553

1553:                                             ; preds = %1503
  %1554 = load i32, ptr %27, align 4, !tbaa !11
  %1555 = add nsw i32 %1554, 1
  store i32 %1555, ptr %27, align 4, !tbaa !11
  br label %1500, !llvm.loop !40

1556:                                             ; preds = %1500
  br label %1557

1557:                                             ; preds = %1556, %1479, %1476
  %1558 = load i32, ptr %25, align 4, !tbaa !11
  %1559 = icmp eq i32 %1558, 4
  br i1 %1559, label %1560, label %1640

1560:                                             ; preds = %1557
  %1561 = load i32, ptr %26, align 4, !tbaa !11
  %1562 = icmp eq i32 %1561, 1
  br i1 %1562, label %1563, label %1640

1563:                                             ; preds = %1560
  %1564 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1564, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef 3)
  %1565 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1565, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1566 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1566, i32 noundef 4, i32 noundef 4, i32 noundef 4, i32 noundef 5)
  %1567 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1567, i32 noundef 4, i32 noundef 4, i32 noundef 4, i32 noundef 5)
  %1568 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1568, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef 6)
  %1569 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1569, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1570 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1570, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1571 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1572 = load i32, ptr %38, align 4, !tbaa !11
  %1573 = load i32, ptr %38, align 4, !tbaa !11
  %1574 = load i32, ptr %38, align 4, !tbaa !11
  %1575 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1571, i32 noundef %1572, i32 noundef %1573, i32 noundef %1574, i32 noundef %1575)
  %1576 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1577 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1576, i32 noundef %1577, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1578 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1579 = load i32, ptr %37, align 4, !tbaa !11
  %1580 = load i32, ptr %37, align 4, !tbaa !11
  %1581 = load i32, ptr %37, align 4, !tbaa !11
  %1582 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1578, i32 noundef %1579, i32 noundef %1580, i32 noundef %1581, i32 noundef %1582)
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1583

1583:                                             ; preds = %1636, %1563
  %1584 = load i32, ptr %27, align 4, !tbaa !11
  %1585 = icmp slt i32 %1584, 4
  br i1 %1585, label %1586, label %1639

1586:                                             ; preds = %1583
  %1587 = load i32, ptr %27, align 4, !tbaa !11
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1588
  %1590 = load i32, ptr %1589, align 4, !tbaa !11
  %1591 = load i32, ptr %27, align 4, !tbaa !11
  %1592 = sext i32 %1591 to i64
  %1593 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1592
  store i32 %1590, ptr %1593, align 4, !tbaa !11
  %1594 = load i64, ptr %20, align 8, !tbaa !9
  %1595 = load i32, ptr %27, align 4, !tbaa !11
  %1596 = sext i32 %1595 to i64
  %1597 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1596
  %1598 = load i32, ptr %1597, align 4, !tbaa !11
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1599
  %1601 = load i32, ptr %1600, align 4, !tbaa !11
  %1602 = sext i32 %1601 to i64
  %1603 = mul nsw i64 %1602, 4
  %1604 = load ptr, ptr %16, align 8, !tbaa !5
  %1605 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1604, i32 0, i32 36
  %1606 = load i32, ptr %1605, align 8, !tbaa !35
  %1607 = zext i32 %1606 to i64
  %1608 = sdiv i64 %1603, %1607
  %1609 = add nsw i64 %1594, %1608
  %1610 = load i32, ptr %27, align 4, !tbaa !11
  %1611 = sext i32 %1610 to i64
  %1612 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1611
  store i64 %1609, ptr %1612, align 8, !tbaa !9
  %1613 = load i64, ptr %21, align 8, !tbaa !9
  %1614 = load i32, ptr %27, align 4, !tbaa !11
  %1615 = sext i32 %1614 to i64
  %1616 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1615
  %1617 = load i32, ptr %1616, align 4, !tbaa !11
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1618
  %1620 = load i32, ptr %1619, align 4, !tbaa !11
  %1621 = sext i32 %1620 to i64
  %1622 = load ptr, ptr %17, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1622, i32 0, i32 4
  %1624 = load i32, ptr %1623, align 1, !tbaa !28
  %1625 = zext i32 %1624 to i64
  %1626 = mul nsw i64 %1621, %1625
  %1627 = load ptr, ptr %16, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1627, i32 0, i32 3
  %1629 = load i32, ptr %1628, align 4, !tbaa !33
  %1630 = zext i32 %1629 to i64
  %1631 = mul nsw i64 %1626, %1630
  %1632 = add nsw i64 %1613, %1631
  %1633 = load i32, ptr %27, align 4, !tbaa !11
  %1634 = sext i32 %1633 to i64
  %1635 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1634
  store i64 %1632, ptr %1635, align 8, !tbaa !9
  br label %1636

1636:                                             ; preds = %1586
  %1637 = load i32, ptr %27, align 4, !tbaa !11
  %1638 = add nsw i32 %1637, 1
  store i32 %1638, ptr %27, align 4, !tbaa !11
  br label %1583, !llvm.loop !41

1639:                                             ; preds = %1583
  br label %1640

1640:                                             ; preds = %1639, %1560, %1557
  %1641 = load i32, ptr %25, align 4, !tbaa !11
  %1642 = icmp eq i32 %1641, 1
  br i1 %1642, label %1643, label %1723

1643:                                             ; preds = %1640
  %1644 = load i32, ptr %26, align 4, !tbaa !11
  %1645 = icmp eq i32 %1644, 1
  br i1 %1645, label %1646, label %1723

1646:                                             ; preds = %1643
  %1647 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1647, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1648 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1648, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1649 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1649, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1650 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1650, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1651 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1651, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1652 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1652, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1653 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1653, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1654 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1655 = load i32, ptr %38, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1654, i32 noundef %1655, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1656 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1657 = load i32, ptr %39, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1656, i32 noundef %1657, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %1658 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 0
  %1659 = load i32, ptr %37, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef %1658, i32 noundef %1659, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1660

1660:                                             ; preds = %1719, %1646
  %1661 = load i32, ptr %27, align 4, !tbaa !11
  %1662 = icmp slt i32 %1661, 4
  br i1 %1662, label %1663, label %1722

1663:                                             ; preds = %1660
  %1664 = load i32, ptr %27, align 4, !tbaa !11
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1665
  %1667 = load i32, ptr %1666, align 4, !tbaa !11
  %1668 = mul nsw i32 %1667, 2
  %1669 = load i32, ptr %27, align 4, !tbaa !11
  %1670 = sext i32 %1669 to i64
  %1671 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1670
  %1672 = load i32, ptr %1671, align 4, !tbaa !11
  %1673 = add nsw i32 %1668, %1672
  %1674 = load i32, ptr %27, align 4, !tbaa !11
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1675
  store i32 %1673, ptr %1676, align 4, !tbaa !11
  %1677 = load i64, ptr %20, align 8, !tbaa !9
  %1678 = load i32, ptr %27, align 4, !tbaa !11
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1679
  %1681 = load i32, ptr %1680, align 4, !tbaa !11
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1682
  %1684 = load i32, ptr %1683, align 4, !tbaa !11
  %1685 = sext i32 %1684 to i64
  %1686 = mul nsw i64 %1685, 4
  %1687 = load ptr, ptr %16, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1687, i32 0, i32 36
  %1689 = load i32, ptr %1688, align 8, !tbaa !35
  %1690 = zext i32 %1689 to i64
  %1691 = sdiv i64 %1686, %1690
  %1692 = add nsw i64 %1677, %1691
  %1693 = load i32, ptr %27, align 4, !tbaa !11
  %1694 = sext i32 %1693 to i64
  %1695 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1694
  store i64 %1692, ptr %1695, align 8, !tbaa !9
  %1696 = load i64, ptr %21, align 8, !tbaa !9
  %1697 = load i32, ptr %27, align 4, !tbaa !11
  %1698 = sext i32 %1697 to i64
  %1699 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1698
  %1700 = load i32, ptr %1699, align 4, !tbaa !11
  %1701 = sext i32 %1700 to i64
  %1702 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1701
  %1703 = load i32, ptr %1702, align 4, !tbaa !11
  %1704 = sext i32 %1703 to i64
  %1705 = load ptr, ptr %17, align 8, !tbaa !5
  %1706 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1705, i32 0, i32 4
  %1707 = load i32, ptr %1706, align 1, !tbaa !28
  %1708 = zext i32 %1707 to i64
  %1709 = mul nsw i64 %1704, %1708
  %1710 = load ptr, ptr %16, align 8, !tbaa !5
  %1711 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1710, i32 0, i32 3
  %1712 = load i32, ptr %1711, align 4, !tbaa !33
  %1713 = zext i32 %1712 to i64
  %1714 = mul nsw i64 %1709, %1713
  %1715 = add nsw i64 %1696, %1714
  %1716 = load i32, ptr %27, align 4, !tbaa !11
  %1717 = sext i32 %1716 to i64
  %1718 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %1717
  store i64 %1715, ptr %1718, align 8, !tbaa !9
  br label %1719

1719:                                             ; preds = %1663
  %1720 = load i32, ptr %27, align 4, !tbaa !11
  %1721 = add nsw i32 %1720, 1
  store i32 %1721, ptr %27, align 4, !tbaa !11
  br label %1660, !llvm.loop !42

1722:                                             ; preds = %1660
  br label %1723

1723:                                             ; preds = %1722, %1643, %1640
  br label %1724

1724:                                             ; preds = %1723, %1089, %1083
  br label %1725

1725:                                             ; preds = %1724, %1082
  %1726 = load i32, ptr %35, align 4, !tbaa !11
  %1727 = load ptr, ptr %16, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1727, i32 0, i32 88
  store i32 %1726, ptr %1728, align 8, !tbaa !43
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1729

1729:                                             ; preds = %1787, %1725
  %1730 = load i32, ptr %27, align 4, !tbaa !11
  %1731 = icmp slt i32 %1730, 4
  br i1 %1731, label %1732, label %1790

1732:                                             ; preds = %1729
  %1733 = load i32, ptr %27, align 4, !tbaa !11
  %1734 = sext i32 %1733 to i64
  %1735 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1734
  %1736 = load i32, ptr %1735, align 4, !tbaa !11
  %1737 = load ptr, ptr %16, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1737, i32 0, i32 91
  %1739 = load i32, ptr %27, align 4, !tbaa !11
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds [4 x i32], ptr %1738, i64 0, i64 %1740
  store i32 %1736, ptr %1741, align 4, !tbaa !11
  %1742 = load i32, ptr %27, align 4, !tbaa !11
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1743
  %1745 = load i32, ptr %1744, align 4, !tbaa !11
  %1746 = load ptr, ptr %16, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1746, i32 0, i32 92
  %1748 = load i32, ptr %27, align 4, !tbaa !11
  %1749 = sext i32 %1748 to i64
  %1750 = getelementptr inbounds [4 x i32], ptr %1747, i64 0, i64 %1749
  store i32 %1745, ptr %1750, align 4, !tbaa !11
  %1751 = load i32, ptr %27, align 4, !tbaa !11
  %1752 = sext i32 %1751 to i64
  %1753 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %1752
  %1754 = load i32, ptr %1753, align 4, !tbaa !11
  %1755 = load ptr, ptr %16, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1755, i32 0, i32 93
  %1757 = load i32, ptr %27, align 4, !tbaa !11
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds [4 x i32], ptr %1756, i64 0, i64 %1758
  store i32 %1754, ptr %1759, align 4, !tbaa !11
  %1760 = load i32, ptr %27, align 4, !tbaa !11
  %1761 = sext i32 %1760 to i64
  %1762 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %1761
  %1763 = load i32, ptr %1762, align 4, !tbaa !11
  %1764 = load ptr, ptr %16, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1764, i32 0, i32 94
  %1766 = load i32, ptr %27, align 4, !tbaa !11
  %1767 = sext i32 %1766 to i64
  %1768 = getelementptr inbounds [4 x i32], ptr %1765, i64 0, i64 %1767
  store i32 %1763, ptr %1768, align 4, !tbaa !11
  %1769 = load i32, ptr %27, align 4, !tbaa !11
  %1770 = sext i32 %1769 to i64
  %1771 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %1770
  %1772 = load i32, ptr %1771, align 4, !tbaa !11
  %1773 = load ptr, ptr %16, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1773, i32 0, i32 95
  %1775 = load i32, ptr %27, align 4, !tbaa !11
  %1776 = sext i32 %1775 to i64
  %1777 = getelementptr inbounds [4 x i32], ptr %1774, i64 0, i64 %1776
  store i32 %1772, ptr %1777, align 4, !tbaa !11
  %1778 = load i32, ptr %27, align 4, !tbaa !11
  %1779 = sext i32 %1778 to i64
  %1780 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %1779
  %1781 = load i32, ptr %1780, align 4, !tbaa !11
  %1782 = load ptr, ptr %16, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1782, i32 0, i32 96
  %1784 = load i32, ptr %27, align 4, !tbaa !11
  %1785 = sext i32 %1784 to i64
  %1786 = getelementptr inbounds [4 x i32], ptr %1783, i64 0, i64 %1785
  store i32 %1781, ptr %1786, align 4, !tbaa !11
  br label %1787

1787:                                             ; preds = %1732
  %1788 = load i32, ptr %27, align 4, !tbaa !11
  %1789 = add nsw i32 %1788, 1
  store i32 %1789, ptr %27, align 4, !tbaa !11
  br label %1729, !llvm.loop !44

1790:                                             ; preds = %1729
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %1791

1791:                                             ; preds = %2826, %1790
  %1792 = load i32, ptr %27, align 4, !tbaa !11
  %1793 = load i32, ptr %25, align 4, !tbaa !11
  %1794 = load i32, ptr %26, align 4, !tbaa !11
  %1795 = mul nsw i32 %1793, %1794
  %1796 = icmp slt i32 %1792, %1795
  br i1 %1796, label %1797, label %2829

1797:                                             ; preds = %1791
  %1798 = load i32, ptr %27, align 4, !tbaa !11
  %1799 = sext i32 %1798 to i64
  %1800 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 %1799
  %1801 = load i32, ptr %1800, align 4, !tbaa !11
  store i32 %1801, ptr %28, align 4, !tbaa !11
  %1802 = load i32, ptr %27, align 4, !tbaa !11
  %1803 = sext i32 %1802 to i64
  %1804 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 %1803
  %1805 = load i32, ptr %1804, align 4, !tbaa !11
  store i32 %1805, ptr %29, align 4, !tbaa !11
  %1806 = load ptr, ptr %16, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1806, i32 0, i32 37
  %1808 = load i32, ptr %1807, align 4, !tbaa !45
  %1809 = icmp eq i32 %1808, 0
  br i1 %1809, label %1810, label %1814

1810:                                             ; preds = %1797
  %1811 = load ptr, ptr %15, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1811, i32 0, i32 1
  %1813 = load i32, ptr %1812, align 4, !tbaa !46
  br label %1818

1814:                                             ; preds = %1797
  %1815 = load ptr, ptr %15, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1815, i32 0, i32 30
  %1817 = load i32, ptr %1816, align 4, !tbaa !48
  br label %1818

1818:                                             ; preds = %1814, %1810
  %1819 = phi i32 [ %1813, %1810 ], [ %1817, %1814 ]
  store i32 %1819, ptr %40, align 4, !tbaa !11
  %1820 = load ptr, ptr %16, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1820, i32 0, i32 37
  %1822 = load i32, ptr %1821, align 4, !tbaa !45
  %1823 = icmp eq i32 %1822, 1
  br i1 %1823, label %1824, label %1973

1824:                                             ; preds = %1818
  %1825 = load i32, ptr %25, align 4, !tbaa !11
  %1826 = icmp eq i32 %1825, 1
  br i1 %1826, label %1827, label %1855

1827:                                             ; preds = %1824
  %1828 = load i32, ptr %27, align 4, !tbaa !11
  %1829 = sext i32 %1828 to i64
  %1830 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1829
  %1831 = load i32, ptr %1830, align 4, !tbaa !11
  %1832 = icmp sgt i32 %1831, 0
  br i1 %1832, label %1833, label %1855

1833:                                             ; preds = %1827
  %1834 = load i32, ptr %27, align 4, !tbaa !11
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1835
  %1837 = load i32, ptr %1836, align 4, !tbaa !11
  %1838 = srem i32 %1837, 2
  %1839 = icmp eq i32 %1838, 0
  br i1 %1839, label %1840, label %1855

1840:                                             ; preds = %1833
  %1841 = load ptr, ptr %13, align 8, !tbaa !5
  %1842 = load ptr, ptr %16, align 8, !tbaa !5
  %1843 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1842, i32 0, i32 18
  %1844 = load i32, ptr %1843, align 8, !tbaa !49
  %1845 = load ptr, ptr %15, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1845, i32 0, i32 10
  %1847 = load i32, ptr %1846, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1841, i32 noundef %1844, i32 noundef %1847, i64 noundef 16)
  %1848 = load ptr, ptr %13, align 8, !tbaa !5
  %1849 = load ptr, ptr %16, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1849, i32 0, i32 114
  %1851 = load i32, ptr %1850, align 8, !tbaa !51
  %1852 = load ptr, ptr %16, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1852, i32 0, i32 113
  %1854 = load ptr, ptr %1853, align 8, !tbaa !52
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %1848, i32 noundef 30104, i32 noundef %1851, ptr noundef %1854)
  br label %1855

1855:                                             ; preds = %1840, %1833, %1827, %1824
  %1856 = load i32, ptr %27, align 4, !tbaa !11
  %1857 = sext i32 %1856 to i64
  %1858 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1857
  %1859 = load i32, ptr %1858, align 4, !tbaa !11
  %1860 = icmp sgt i32 %1859, 0
  br i1 %1860, label %1861, label %1880

1861:                                             ; preds = %1855
  %1862 = load i32, ptr %27, align 4, !tbaa !11
  %1863 = sext i32 %1862 to i64
  %1864 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1863
  %1865 = load i32, ptr %1864, align 4, !tbaa !11
  %1866 = srem i32 %1865, 2
  %1867 = icmp eq i32 %1866, 0
  br i1 %1867, label %1868, label %1880

1868:                                             ; preds = %1861
  %1869 = load i64, ptr %23, align 8, !tbaa !9
  %1870 = icmp sle i64 %1869, 0
  br i1 %1870, label %1871, label %1880

1871:                                             ; preds = %1868
  %1872 = load ptr, ptr %13, align 8, !tbaa !5
  %1873 = load ptr, ptr %14, align 8, !tbaa !5
  %1874 = load ptr, ptr %15, align 8, !tbaa !5
  %1875 = load ptr, ptr %16, align 8, !tbaa !5
  %1876 = load i32, ptr %27, align 4, !tbaa !11
  %1877 = sext i32 %1876 to i64
  %1878 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1877
  %1879 = load i64, ptr %1878, align 8, !tbaa !9
  call void @libxsmm_generator_gemm_amx_decompress_32x32_A_block(ptr noundef %1872, ptr noundef %1873, ptr noundef %1874, ptr noundef %1875, i64 noundef %1879, i64 noundef 0, i64 noundef 0)
  br label %1880

1880:                                             ; preds = %1871, %1868, %1861, %1855
  %1881 = load i32, ptr %27, align 4, !tbaa !11
  %1882 = sext i32 %1881 to i64
  %1883 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1882
  %1884 = load i32, ptr %1883, align 4, !tbaa !11
  %1885 = icmp sgt i32 %1884, 0
  br i1 %1885, label %1886, label %1944

1886:                                             ; preds = %1880
  %1887 = load i32, ptr %27, align 4, !tbaa !11
  %1888 = sext i32 %1887 to i64
  %1889 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1888
  %1890 = load i32, ptr %1889, align 4, !tbaa !11
  %1891 = srem i32 %1890, 2
  %1892 = icmp eq i32 %1891, 0
  br i1 %1892, label %1893, label %1944

1893:                                             ; preds = %1886
  %1894 = load i64, ptr %23, align 8, !tbaa !9
  %1895 = icmp sge i64 %1894, 0
  br i1 %1895, label %1896, label %1944

1896:                                             ; preds = %1893
  %1897 = load i64, ptr %23, align 8, !tbaa !9
  %1898 = load ptr, ptr %16, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1898, i32 0, i32 111
  %1900 = load i32, ptr %1899, align 8, !tbaa !15
  %1901 = sub i32 %1900, 1
  %1902 = zext i32 %1901 to i64
  %1903 = icmp slt i64 %1897, %1902
  br i1 %1903, label %1904, label %1944

1904:                                             ; preds = %1896
  %1905 = load i32, ptr %24, align 4, !tbaa !11
  %1906 = icmp eq i32 %1905, 1
  br i1 %1906, label %1907, label %1944

1907:                                             ; preds = %1904
  %1908 = load ptr, ptr %17, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1908, i32 0, i32 6
  %1910 = load i32, ptr %1909, align 1, !tbaa !20
  %1911 = and i32 %1910, 262144
  %1912 = icmp ne i32 %1911, 0
  br i1 %1912, label %1913, label %1925

1913:                                             ; preds = %1907
  %1914 = load ptr, ptr %13, align 8, !tbaa !5
  %1915 = load ptr, ptr %14, align 8, !tbaa !5
  %1916 = load ptr, ptr %15, align 8, !tbaa !5
  %1917 = load ptr, ptr %16, align 8, !tbaa !5
  %1918 = load i32, ptr %27, align 4, !tbaa !11
  %1919 = sext i32 %1918 to i64
  %1920 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1919
  %1921 = load i64, ptr %1920, align 8, !tbaa !9
  %1922 = load ptr, ptr %17, align 8, !tbaa !5
  %1923 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1922, i32 0, i32 10
  %1924 = load i64, ptr %1923, align 1, !tbaa !53
  call void @libxsmm_generator_gemm_amx_decompress_32x32_A_block(ptr noundef %1914, ptr noundef %1915, ptr noundef %1916, ptr noundef %1917, i64 noundef %1921, i64 noundef %1924, i64 noundef 0)
  br label %1943

1925:                                             ; preds = %1907
  %1926 = load ptr, ptr %17, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1926, i32 0, i32 6
  %1928 = load i32, ptr %1927, align 1, !tbaa !20
  %1929 = and i32 %1928, 131072
  %1930 = icmp ne i32 %1929, 0
  br i1 %1930, label %1931, label %1942

1931:                                             ; preds = %1925
  %1932 = load ptr, ptr %13, align 8, !tbaa !5
  %1933 = load ptr, ptr %14, align 8, !tbaa !5
  %1934 = load ptr, ptr %15, align 8, !tbaa !5
  %1935 = load ptr, ptr %16, align 8, !tbaa !5
  %1936 = load i32, ptr %27, align 4, !tbaa !11
  %1937 = sext i32 %1936 to i64
  %1938 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %1937
  %1939 = load i64, ptr %1938, align 8, !tbaa !9
  %1940 = load i64, ptr %23, align 8, !tbaa !9
  %1941 = add nsw i64 %1940, 1
  call void @libxsmm_generator_gemm_amx_decompress_32x32_A_block(ptr noundef %1932, ptr noundef %1933, ptr noundef %1934, ptr noundef %1935, i64 noundef %1939, i64 noundef 0, i64 noundef %1941)
  br label %1942

1942:                                             ; preds = %1931, %1925
  br label %1943

1943:                                             ; preds = %1942, %1913
  br label %1944

1944:                                             ; preds = %1943, %1904, %1896, %1893, %1886, %1880
  %1945 = load i32, ptr %25, align 4, !tbaa !11
  %1946 = icmp eq i32 %1945, 1
  br i1 %1946, label %1947, label %1972

1947:                                             ; preds = %1944
  %1948 = load i32, ptr %27, align 4, !tbaa !11
  %1949 = sext i32 %1948 to i64
  %1950 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1949
  %1951 = load i32, ptr %1950, align 4, !tbaa !11
  %1952 = icmp sgt i32 %1951, 0
  br i1 %1952, label %1953, label %1972

1953:                                             ; preds = %1947
  %1954 = load i32, ptr %27, align 4, !tbaa !11
  %1955 = sext i32 %1954 to i64
  %1956 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1955
  %1957 = load i32, ptr %1956, align 4, !tbaa !11
  %1958 = srem i32 %1957, 2
  %1959 = icmp eq i32 %1958, 0
  br i1 %1959, label %1960, label %1972

1960:                                             ; preds = %1953
  %1961 = load ptr, ptr %13, align 8, !tbaa !5
  %1962 = load ptr, ptr %16, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1962, i32 0, i32 114
  %1964 = load i32, ptr %1963, align 8, !tbaa !51
  %1965 = load ptr, ptr %16, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1965, i32 0, i32 113
  %1967 = load ptr, ptr %1966, align 8, !tbaa !52
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %1961, i32 noundef %1964, ptr noundef %1967)
  %1968 = load ptr, ptr %16, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1968, i32 0, i32 114
  %1970 = load i32, ptr %1969, align 8, !tbaa !51
  %1971 = add i32 %1970, 1
  store i32 %1971, ptr %1969, align 8, !tbaa !51
  br label %1972

1972:                                             ; preds = %1960, %1953, %1947, %1944
  br label %1973

1973:                                             ; preds = %1972, %1818
  %1974 = load i32, ptr %51, align 4, !tbaa !11
  %1975 = icmp ugt i32 %1974, 0
  br i1 %1975, label %1976, label %2045

1976:                                             ; preds = %1973
  %1977 = load i32, ptr %27, align 4, !tbaa !11
  %1978 = sext i32 %1977 to i64
  %1979 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1978
  %1980 = load i32, ptr %1979, align 4, !tbaa !11
  %1981 = icmp sgt i32 %1980, 0
  br i1 %1981, label %1982, label %2045

1982:                                             ; preds = %1976
  %1983 = load i32, ptr %27, align 4, !tbaa !11
  %1984 = sext i32 %1983 to i64
  %1985 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %1984
  %1986 = load i32, ptr %1985, align 4, !tbaa !11
  %1987 = srem i32 %1986, 2
  %1988 = icmp eq i32 %1987, 0
  br i1 %1988, label %1989, label %2045

1989:                                             ; preds = %1982
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  %1990 = load i32, ptr %25, align 4, !tbaa !11
  %1991 = icmp eq i32 %1990, 1
  %1992 = zext i1 %1991 to i64
  %1993 = select i1 %1991, i32 16, i32 32
  store i32 %1993, ptr %82, align 4, !tbaa !11
  %1994 = load ptr, ptr %17, align 8, !tbaa !5
  %1995 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1994, i32 0, i32 0
  %1996 = load i32, ptr %1995, align 1, !tbaa !54
  %1997 = icmp eq i32 %1996, 8
  br i1 %1997, label %2013, label %1998

1998:                                             ; preds = %1989
  %1999 = load ptr, ptr %17, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1999, i32 0, i32 0
  %2001 = load i32, ptr %2000, align 1, !tbaa !54
  %2002 = icmp eq i32 %2001, 4
  br i1 %2002, label %2013, label %2003

2003:                                             ; preds = %1998
  %2004 = load ptr, ptr %17, align 8, !tbaa !5
  %2005 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2004, i32 0, i32 0
  %2006 = load i32, ptr %2005, align 1, !tbaa !54
  %2007 = icmp eq i32 %2006, 2
  br i1 %2007, label %2013, label %2008

2008:                                             ; preds = %2003
  %2009 = load ptr, ptr %17, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2009, i32 0, i32 0
  %2011 = load i32, ptr %2010, align 1, !tbaa !54
  %2012 = icmp eq i32 %2011, 1
  br i1 %2012, label %2013, label %2020

2013:                                             ; preds = %2008, %2003, %1998, %1989
  %2014 = load i32, ptr %82, align 4, !tbaa !11
  %2015 = load ptr, ptr %17, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2015, i32 0, i32 0
  %2017 = load i32, ptr %2016, align 1, !tbaa !54
  %2018 = udiv i32 16, %2017
  %2019 = udiv i32 %2014, %2018
  store i32 %2019, ptr %82, align 4, !tbaa !11
  br label %2021

2020:                                             ; preds = %2008
  br label %2021

2021:                                             ; preds = %2020, %2013
  %2022 = load i64, ptr %23, align 8, !tbaa !9
  %2023 = icmp eq i64 %2022, 0
  br i1 %2023, label %2024, label %2032

2024:                                             ; preds = %2021
  %2025 = load ptr, ptr %13, align 8, !tbaa !5
  %2026 = load ptr, ptr %14, align 8, !tbaa !5
  %2027 = load ptr, ptr %15, align 8, !tbaa !5
  %2028 = load ptr, ptr %17, align 8, !tbaa !5
  %2029 = load ptr, ptr %16, align 8, !tbaa !5
  %2030 = load i64, ptr %23, align 8, !tbaa !9
  %2031 = load i32, ptr %82, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_decompress_Kx32_A_block_kloop(ptr noundef %2025, ptr noundef %2026, ptr noundef %2027, ptr noundef %2028, ptr noundef %2029, i64 noundef %2030, i32 noundef %2031)
  br label %2032

2032:                                             ; preds = %2024, %2021
  %2033 = load i32, ptr %22, align 4, !tbaa !11
  %2034 = icmp eq i32 %2033, 0
  br i1 %2034, label %2035, label %2044

2035:                                             ; preds = %2032
  %2036 = load ptr, ptr %13, align 8, !tbaa !5
  %2037 = load ptr, ptr %14, align 8, !tbaa !5
  %2038 = load ptr, ptr %15, align 8, !tbaa !5
  %2039 = load ptr, ptr %17, align 8, !tbaa !5
  %2040 = load ptr, ptr %16, align 8, !tbaa !5
  %2041 = load i64, ptr %23, align 8, !tbaa !9
  %2042 = add nsw i64 %2041, 1
  %2043 = load i32, ptr %82, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_decompress_Kx32_A_block_kloop(ptr noundef %2036, ptr noundef %2037, ptr noundef %2038, ptr noundef %2039, ptr noundef %2040, i64 noundef %2042, i32 noundef %2043)
  br label %2044

2044:                                             ; preds = %2035, %2032
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  br label %2045

2045:                                             ; preds = %2044, %1982, %1976, %1973
  %2046 = load i32, ptr %27, align 4, !tbaa !11
  %2047 = sext i32 %2046 to i64
  %2048 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %2047
  %2049 = load i32, ptr %2048, align 4, !tbaa !11
  %2050 = icmp sgt i32 %2049, 0
  br i1 %2050, label %2051, label %2306

2051:                                             ; preds = %2045
  %2052 = load i32, ptr %51, align 4, !tbaa !11
  %2053 = icmp ugt i32 %2052, 0
  br i1 %2053, label %2054, label %2125

2054:                                             ; preds = %2051
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  %2055 = load i32, ptr %25, align 4, !tbaa !11
  %2056 = icmp eq i32 %2055, 1
  %2057 = zext i1 %2056 to i64
  %2058 = select i1 %2056, i32 16, i32 32
  store i32 %2058, ptr %83, align 4, !tbaa !11
  %2059 = load ptr, ptr %17, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2059, i32 0, i32 0
  %2061 = load i32, ptr %2060, align 1, !tbaa !54
  %2062 = icmp eq i32 %2061, 8
  br i1 %2062, label %2078, label %2063

2063:                                             ; preds = %2054
  %2064 = load ptr, ptr %17, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2064, i32 0, i32 0
  %2066 = load i32, ptr %2065, align 1, !tbaa !54
  %2067 = icmp eq i32 %2066, 4
  br i1 %2067, label %2078, label %2068

2068:                                             ; preds = %2063
  %2069 = load ptr, ptr %17, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2069, i32 0, i32 0
  %2071 = load i32, ptr %2070, align 1, !tbaa !54
  %2072 = icmp eq i32 %2071, 2
  br i1 %2072, label %2078, label %2073

2073:                                             ; preds = %2068
  %2074 = load ptr, ptr %17, align 8, !tbaa !5
  %2075 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2074, i32 0, i32 0
  %2076 = load i32, ptr %2075, align 1, !tbaa !54
  %2077 = icmp eq i32 %2076, 1
  br i1 %2077, label %2078, label %2085

2078:                                             ; preds = %2073, %2068, %2063, %2054
  %2079 = load i32, ptr %83, align 4, !tbaa !11
  %2080 = load ptr, ptr %17, align 8, !tbaa !5
  %2081 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2080, i32 0, i32 0
  %2082 = load i32, ptr %2081, align 1, !tbaa !54
  %2083 = udiv i32 16, %2082
  %2084 = udiv i32 %2079, %2083
  store i32 %2084, ptr %83, align 4, !tbaa !11
  br label %2086

2085:                                             ; preds = %2073
  br label %2086

2086:                                             ; preds = %2085, %2078
  %2087 = load ptr, ptr %13, align 8, !tbaa !5
  %2088 = load ptr, ptr %16, align 8, !tbaa !5
  %2089 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2088, i32 0, i32 0
  %2090 = load i32, ptr %2089, align 8, !tbaa !55
  %2091 = load i32, ptr %27, align 4, !tbaa !11
  %2092 = sext i32 %2091 to i64
  %2093 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 %2092
  %2094 = load i32, ptr %2093, align 4, !tbaa !11
  %2095 = load ptr, ptr %15, align 8, !tbaa !5
  %2096 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2095, i32 0, i32 30
  %2097 = load i32, ptr %2096, align 4, !tbaa !48
  %2098 = load ptr, ptr %15, align 8, !tbaa !5
  %2099 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2098, i32 0, i32 17
  %2100 = load i32, ptr %2099, align 4, !tbaa !56
  %2101 = load i32, ptr %27, align 4, !tbaa !11
  %2102 = sext i32 %2101 to i64
  %2103 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %2102
  %2104 = load i64, ptr %2103, align 8, !tbaa !9
  %2105 = load i64, ptr %23, align 8, !tbaa !9
  %2106 = srem i64 %2105, 2
  %2107 = load i32, ptr %83, align 4, !tbaa !11
  %2108 = zext i32 %2107 to i64
  %2109 = mul nsw i64 %2106, %2108
  %2110 = mul nsw i64 %2109, 32
  %2111 = mul nsw i64 %2110, 2
  %2112 = add nsw i64 %2104, %2111
  %2113 = load ptr, ptr %16, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2113, i32 0, i32 100
  %2115 = load i32, ptr %2114, align 4, !tbaa !57
  %2116 = mul i32 64, %2115
  %2117 = mul i32 %2116, 4
  %2118 = zext i32 %2117 to i64
  %2119 = add nsw i64 %2112, %2118
  %2120 = trunc i64 %2119 to i32
  %2121 = load i32, ptr %27, align 4, !tbaa !11
  %2122 = sext i32 %2121 to i64
  %2123 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %2122
  %2124 = load i32, ptr %2123, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %2087, i32 noundef %2090, i32 noundef %2094, i32 noundef %2097, i32 noundef %2100, i32 noundef 4, i32 noundef %2120, i32 noundef %2124)
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  br label %2154

2125:                                             ; preds = %2051
  %2126 = load ptr, ptr %13, align 8, !tbaa !5
  %2127 = load ptr, ptr %16, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2127, i32 0, i32 0
  %2129 = load i32, ptr %2128, align 8, !tbaa !55
  %2130 = load i32, ptr %27, align 4, !tbaa !11
  %2131 = sext i32 %2130 to i64
  %2132 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 %2131
  %2133 = load i32, ptr %2132, align 4, !tbaa !11
  %2134 = load i32, ptr %40, align 4, !tbaa !11
  %2135 = load ptr, ptr %15, align 8, !tbaa !5
  %2136 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2135, i32 0, i32 17
  %2137 = load i32, ptr %2136, align 4, !tbaa !56
  %2138 = load i32, ptr %56, align 4, !tbaa !11
  %2139 = sdiv i32 4, %2138
  %2140 = load i32, ptr %27, align 4, !tbaa !11
  %2141 = sext i32 %2140 to i64
  %2142 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %2141
  %2143 = load i64, ptr %2142, align 8, !tbaa !9
  %2144 = load ptr, ptr %16, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2144, i32 0, i32 36
  %2146 = load i32, ptr %2145, align 8, !tbaa !35
  %2147 = zext i32 %2146 to i64
  %2148 = mul nsw i64 %2143, %2147
  %2149 = trunc i64 %2148 to i32
  %2150 = load i32, ptr %27, align 4, !tbaa !11
  %2151 = sext i32 %2150 to i64
  %2152 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %2151
  %2153 = load i32, ptr %2152, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %2126, i32 noundef %2129, i32 noundef %2133, i32 noundef %2134, i32 noundef %2137, i32 noundef %2139, i32 noundef %2149, i32 noundef %2153)
  br label %2154

2154:                                             ; preds = %2125, %2086
  %2155 = load ptr, ptr %17, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2155, i32 0, i32 6
  %2157 = load i32, ptr %2156, align 1, !tbaa !20
  %2158 = and i32 %2157, 1
  %2159 = icmp ugt i32 %2158, 0
  br i1 %2159, label %2160, label %2173

2160:                                             ; preds = %2154
  %2161 = load ptr, ptr %13, align 8, !tbaa !5
  %2162 = load ptr, ptr %16, align 8, !tbaa !5
  %2163 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2162, i32 0, i32 0
  %2164 = load i32, ptr %2163, align 8, !tbaa !55
  %2165 = load i32, ptr %27, align 4, !tbaa !11
  %2166 = sext i32 %2165 to i64
  %2167 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %2166
  %2168 = load i32, ptr %2167, align 4, !tbaa !11
  %2169 = load i32, ptr %27, align 4, !tbaa !11
  %2170 = sext i32 %2169 to i64
  %2171 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 %2170
  %2172 = load i32, ptr %2171, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_tile_compute(ptr noundef %2161, i32 noundef %2164, i32 noundef 1611014239, i32 noundef %2168, i32 noundef 0, i32 noundef %2172)
  br label %2173

2173:                                             ; preds = %2160, %2154
  %2174 = load i32, ptr %24, align 4, !tbaa !11
  %2175 = icmp eq i32 %2174, 1
  br i1 %2175, label %2176, label %2239

2176:                                             ; preds = %2173
  %2177 = load i64, ptr %23, align 8, !tbaa !9
  %2178 = icmp sge i64 %2177, 0
  br i1 %2178, label %2179, label %2239

2179:                                             ; preds = %2176
  %2180 = load i32, ptr %30, align 4, !tbaa !11
  %2181 = icmp sgt i32 %2180, 0
  br i1 %2181, label %2182, label %2239

2182:                                             ; preds = %2179
  %2183 = load i64, ptr %23, align 8, !tbaa !9
  %2184 = load i32, ptr %30, align 4, !tbaa !11
  %2185 = sext i32 %2184 to i64
  %2186 = add nsw i64 %2183, %2185
  %2187 = load ptr, ptr %16, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2187, i32 0, i32 111
  %2189 = load i32, ptr %2188, align 8, !tbaa !15
  %2190 = zext i32 %2189 to i64
  %2191 = icmp slt i64 %2186, %2190
  br i1 %2191, label %2192, label %2197

2192:                                             ; preds = %2182
  %2193 = load ptr, ptr %16, align 8, !tbaa !5
  %2194 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2193, i32 0, i32 112
  %2195 = load i32, ptr %2194, align 4, !tbaa !19
  %2196 = icmp eq i32 %2195, 1
  br i1 %2196, label %2202, label %2197

2197:                                             ; preds = %2192, %2182
  %2198 = load ptr, ptr %16, align 8, !tbaa !5
  %2199 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2198, i32 0, i32 112
  %2200 = load i32, ptr %2199, align 4, !tbaa !19
  %2201 = icmp eq i32 %2200, 0
  br i1 %2201, label %2202, label %2239

2202:                                             ; preds = %2197, %2192
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #6
  %2203 = load ptr, ptr %17, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2203, i32 0, i32 6
  %2205 = load i32, ptr %2204, align 1, !tbaa !20
  %2206 = and i32 %2205, 2048
  %2207 = icmp ugt i32 %2206, 0
  %2208 = zext i1 %2207 to i64
  %2209 = select i1 %2207, i32 2, i32 1
  store i32 %2209, ptr %32, align 4, !tbaa !11
  %2210 = load i32, ptr %27, align 4, !tbaa !11
  %2211 = sext i32 %2210 to i64
  %2212 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %2211
  %2213 = load i32, ptr %2212, align 4, !tbaa !11
  %2214 = load ptr, ptr %16, align 8, !tbaa !5
  %2215 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2214, i32 0, i32 99
  call void @libxsmm_get_tileinfo(i32 noundef %2213, ptr noundef %84, ptr noundef %85, ptr noundef %2215)
  %2216 = load i32, ptr %85, align 4, !tbaa !11
  store i32 %2216, ptr %36, align 4, !tbaa !11
  %2217 = load ptr, ptr %13, align 8, !tbaa !5
  %2218 = load ptr, ptr %16, align 8, !tbaa !5
  %2219 = load i32, ptr %36, align 4, !tbaa !11
  %2220 = load ptr, ptr %17, align 8, !tbaa !5
  %2221 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2220, i32 0, i32 3
  %2222 = load i32, ptr %2221, align 1, !tbaa !31
  %2223 = load i32, ptr %32, align 4, !tbaa !11
  %2224 = mul i32 %2222, %2223
  %2225 = load ptr, ptr %15, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2225, i32 0, i32 1
  %2227 = load i32, ptr %2226, align 4, !tbaa !46
  %2228 = load i32, ptr %27, align 4, !tbaa !11
  %2229 = sext i32 %2228 to i64
  %2230 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %2229
  %2231 = load i64, ptr %2230, align 8, !tbaa !9
  %2232 = load i32, ptr %30, align 4, !tbaa !11
  %2233 = sext i32 %2232 to i64
  %2234 = load ptr, ptr %17, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2234, i32 0, i32 10
  %2236 = load i64, ptr %2235, align 1, !tbaa !53
  %2237 = mul nsw i64 %2233, %2236
  %2238 = add nsw i64 %2231, %2237
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L2(ptr noundef %2217, ptr noundef %2218, i32 noundef %2219, i32 noundef %2224, i32 noundef %2227, i64 noundef %2238)
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  br label %2239

2239:                                             ; preds = %2202, %2197, %2179, %2176, %2173
  %2240 = load i32, ptr %24, align 4, !tbaa !11
  %2241 = icmp eq i32 %2240, 1
  br i1 %2241, label %2242, label %2305

2242:                                             ; preds = %2239
  %2243 = load i64, ptr %23, align 8, !tbaa !9
  %2244 = icmp sge i64 %2243, 0
  br i1 %2244, label %2245, label %2305

2245:                                             ; preds = %2242
  %2246 = load i32, ptr %31, align 4, !tbaa !11
  %2247 = icmp sgt i32 %2246, 0
  br i1 %2247, label %2248, label %2305

2248:                                             ; preds = %2245
  %2249 = load i64, ptr %23, align 8, !tbaa !9
  %2250 = load i32, ptr %31, align 4, !tbaa !11
  %2251 = sext i32 %2250 to i64
  %2252 = add nsw i64 %2249, %2251
  %2253 = load ptr, ptr %16, align 8, !tbaa !5
  %2254 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2253, i32 0, i32 111
  %2255 = load i32, ptr %2254, align 8, !tbaa !15
  %2256 = zext i32 %2255 to i64
  %2257 = icmp slt i64 %2252, %2256
  br i1 %2257, label %2258, label %2263

2258:                                             ; preds = %2248
  %2259 = load ptr, ptr %16, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2259, i32 0, i32 112
  %2261 = load i32, ptr %2260, align 4, !tbaa !19
  %2262 = icmp eq i32 %2261, 1
  br i1 %2262, label %2268, label %2263

2263:                                             ; preds = %2258, %2248
  %2264 = load ptr, ptr %16, align 8, !tbaa !5
  %2265 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2264, i32 0, i32 112
  %2266 = load i32, ptr %2265, align 4, !tbaa !19
  %2267 = icmp eq i32 %2266, 0
  br i1 %2267, label %2268, label %2305

2268:                                             ; preds = %2263, %2258
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #6
  %2269 = load ptr, ptr %17, align 8, !tbaa !5
  %2270 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2269, i32 0, i32 6
  %2271 = load i32, ptr %2270, align 1, !tbaa !20
  %2272 = and i32 %2271, 2048
  %2273 = icmp ugt i32 %2272, 0
  %2274 = zext i1 %2273 to i64
  %2275 = select i1 %2273, i32 2, i32 1
  store i32 %2275, ptr %32, align 4, !tbaa !11
  %2276 = load i32, ptr %27, align 4, !tbaa !11
  %2277 = sext i32 %2276 to i64
  %2278 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %2277
  %2279 = load i32, ptr %2278, align 4, !tbaa !11
  %2280 = load ptr, ptr %16, align 8, !tbaa !5
  %2281 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2280, i32 0, i32 99
  call void @libxsmm_get_tileinfo(i32 noundef %2279, ptr noundef %86, ptr noundef %87, ptr noundef %2281)
  %2282 = load i32, ptr %87, align 4, !tbaa !11
  store i32 %2282, ptr %36, align 4, !tbaa !11
  %2283 = load ptr, ptr %13, align 8, !tbaa !5
  %2284 = load ptr, ptr %16, align 8, !tbaa !5
  %2285 = load i32, ptr %36, align 4, !tbaa !11
  %2286 = load ptr, ptr %17, align 8, !tbaa !5
  %2287 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2286, i32 0, i32 3
  %2288 = load i32, ptr %2287, align 1, !tbaa !31
  %2289 = load i32, ptr %32, align 4, !tbaa !11
  %2290 = mul i32 %2288, %2289
  %2291 = load ptr, ptr %15, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2291, i32 0, i32 1
  %2293 = load i32, ptr %2292, align 4, !tbaa !46
  %2294 = load i32, ptr %27, align 4, !tbaa !11
  %2295 = sext i32 %2294 to i64
  %2296 = getelementptr inbounds [4 x i64], ptr %71, i64 0, i64 %2295
  %2297 = load i64, ptr %2296, align 8, !tbaa !9
  %2298 = load i32, ptr %31, align 4, !tbaa !11
  %2299 = sext i32 %2298 to i64
  %2300 = load ptr, ptr %17, align 8, !tbaa !5
  %2301 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2300, i32 0, i32 10
  %2302 = load i64, ptr %2301, align 1, !tbaa !53
  %2303 = mul nsw i64 %2299, %2302
  %2304 = add nsw i64 %2297, %2303
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L1(ptr noundef %2283, ptr noundef %2284, i32 noundef %2285, i32 noundef %2290, i32 noundef %2293, i64 noundef %2304)
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  br label %2305

2305:                                             ; preds = %2268, %2263, %2245, %2242, %2239
  br label %2306

2306:                                             ; preds = %2305, %2045
  %2307 = load i32, ptr %27, align 4, !tbaa !11
  %2308 = sext i32 %2307 to i64
  %2309 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %2308
  %2310 = load i32, ptr %2309, align 4, !tbaa !11
  %2311 = icmp sgt i32 %2310, 0
  br i1 %2311, label %2312, label %2495

2312:                                             ; preds = %2306
  %2313 = load ptr, ptr %13, align 8, !tbaa !5
  %2314 = load ptr, ptr %16, align 8, !tbaa !5
  %2315 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2314, i32 0, i32 0
  %2316 = load i32, ptr %2315, align 8, !tbaa !55
  %2317 = load i32, ptr %27, align 4, !tbaa !11
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 %2318
  %2320 = load i32, ptr %2319, align 4, !tbaa !11
  %2321 = load ptr, ptr %15, align 8, !tbaa !5
  %2322 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2321, i32 0, i32 3
  %2323 = load i32, ptr %2322, align 4, !tbaa !58
  %2324 = load ptr, ptr %15, align 8, !tbaa !5
  %2325 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2324, i32 0, i32 18
  %2326 = load i32, ptr %2325, align 4, !tbaa !59
  %2327 = load i32, ptr %57, align 4, !tbaa !11
  %2328 = sdiv i32 4, %2327
  %2329 = load i32, ptr %27, align 4, !tbaa !11
  %2330 = sext i32 %2329 to i64
  %2331 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %2330
  %2332 = load i64, ptr %2331, align 8, !tbaa !9
  %2333 = trunc i64 %2332 to i32
  %2334 = load i32, ptr %27, align 4, !tbaa !11
  %2335 = sext i32 %2334 to i64
  %2336 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %2335
  %2337 = load i32, ptr %2336, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %2313, i32 noundef %2316, i32 noundef %2320, i32 noundef %2323, i32 noundef %2326, i32 noundef %2328, i32 noundef %2333, i32 noundef %2337)
  %2338 = load ptr, ptr %16, align 8, !tbaa !5
  %2339 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2338, i32 0, i32 39
  %2340 = load i32, ptr %2339, align 4, !tbaa !60
  %2341 = icmp eq i32 %2340, 1
  br i1 %2341, label %2342, label %2380

2342:                                             ; preds = %2312
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #6
  %2343 = load ptr, ptr %16, align 8, !tbaa !5
  %2344 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2343, i32 0, i32 116
  %2345 = load i32, ptr %2344, align 8, !tbaa !61
  %2346 = load ptr, ptr %16, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2346, i32 0, i32 115
  %2348 = load i32, ptr %2347, align 4, !tbaa !62
  %2349 = load ptr, ptr %17, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2349, i32 0, i32 4
  %2351 = load i32, ptr %2350, align 1, !tbaa !28
  %2352 = mul i32 %2348, %2351
  %2353 = load ptr, ptr %16, align 8, !tbaa !5
  %2354 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2353, i32 0, i32 3
  %2355 = load i32, ptr %2354, align 4, !tbaa !33
  %2356 = mul i32 %2352, %2355
  %2357 = add i32 %2345, %2356
  %2358 = load i32, ptr %27, align 4, !tbaa !11
  %2359 = sext i32 %2358 to i64
  %2360 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %2359
  %2361 = load i32, ptr %2360, align 4, !tbaa !11
  %2362 = sext i32 %2361 to i64
  %2363 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %2362
  %2364 = load i32, ptr %2363, align 4, !tbaa !11
  %2365 = mul nsw i32 %2364, 2
  %2366 = add i32 %2357, %2365
  store i32 %2366, ptr %88, align 4, !tbaa !11
  %2367 = load ptr, ptr %13, align 8, !tbaa !5
  %2368 = load ptr, ptr %14, align 8, !tbaa !5
  %2369 = load ptr, ptr %17, align 8, !tbaa !5
  %2370 = load ptr, ptr %16, align 8, !tbaa !5
  %2371 = load ptr, ptr %15, align 8, !tbaa !5
  %2372 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2371, i32 0, i32 3
  %2373 = load i32, ptr %2372, align 4, !tbaa !58
  %2374 = load i32, ptr %27, align 4, !tbaa !11
  %2375 = sext i32 %2374 to i64
  %2376 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %2375
  %2377 = load i64, ptr %2376, align 8, !tbaa !9
  %2378 = load i32, ptr %88, align 4, !tbaa !11
  %2379 = zext i32 %2378 to i64
  call void @libxsmm_generator_gemm_amx_normT_32x16_bf16_ext_buf(ptr noundef %2367, ptr noundef %2368, ptr noundef %2369, ptr noundef %2370, i32 noundef %2373, i64 noundef %2377, i64 noundef %2379)
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #6
  br label %2380

2380:                                             ; preds = %2342, %2312
  %2381 = load i32, ptr %24, align 4, !tbaa !11
  %2382 = icmp eq i32 %2381, 1
  br i1 %2382, label %2383, label %2437

2383:                                             ; preds = %2380
  %2384 = load i64, ptr %23, align 8, !tbaa !9
  %2385 = icmp sge i64 %2384, 0
  br i1 %2385, label %2386, label %2437

2386:                                             ; preds = %2383
  %2387 = load i32, ptr %30, align 4, !tbaa !11
  %2388 = icmp sgt i32 %2387, 0
  br i1 %2388, label %2389, label %2437

2389:                                             ; preds = %2386
  %2390 = load i64, ptr %23, align 8, !tbaa !9
  %2391 = load i32, ptr %30, align 4, !tbaa !11
  %2392 = sext i32 %2391 to i64
  %2393 = add nsw i64 %2390, %2392
  %2394 = load ptr, ptr %16, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2394, i32 0, i32 111
  %2396 = load i32, ptr %2395, align 8, !tbaa !15
  %2397 = zext i32 %2396 to i64
  %2398 = icmp slt i64 %2393, %2397
  br i1 %2398, label %2399, label %2404

2399:                                             ; preds = %2389
  %2400 = load ptr, ptr %16, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2400, i32 0, i32 112
  %2402 = load i32, ptr %2401, align 4, !tbaa !19
  %2403 = icmp eq i32 %2402, 1
  br i1 %2403, label %2409, label %2404

2404:                                             ; preds = %2399, %2389
  %2405 = load ptr, ptr %16, align 8, !tbaa !5
  %2406 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2405, i32 0, i32 112
  %2407 = load i32, ptr %2406, align 4, !tbaa !19
  %2408 = icmp eq i32 %2407, 0
  br i1 %2408, label %2409, label %2437

2409:                                             ; preds = %2404, %2399
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #6
  %2410 = load i32, ptr %27, align 4, !tbaa !11
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %2411
  %2413 = load i32, ptr %2412, align 4, !tbaa !11
  %2414 = load ptr, ptr %16, align 8, !tbaa !5
  %2415 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2414, i32 0, i32 99
  call void @libxsmm_get_tileinfo(i32 noundef %2413, ptr noundef %89, ptr noundef %90, ptr noundef %2415)
  %2416 = load i32, ptr %90, align 4, !tbaa !11
  store i32 %2416, ptr %36, align 4, !tbaa !11
  %2417 = load ptr, ptr %13, align 8, !tbaa !5
  %2418 = load ptr, ptr %16, align 8, !tbaa !5
  %2419 = load i32, ptr %36, align 4, !tbaa !11
  %2420 = load ptr, ptr %17, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2420, i32 0, i32 4
  %2422 = load i32, ptr %2421, align 1, !tbaa !28
  %2423 = load ptr, ptr %15, align 8, !tbaa !5
  %2424 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2423, i32 0, i32 3
  %2425 = load i32, ptr %2424, align 4, !tbaa !58
  %2426 = load i32, ptr %27, align 4, !tbaa !11
  %2427 = sext i32 %2426 to i64
  %2428 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %2427
  %2429 = load i64, ptr %2428, align 8, !tbaa !9
  %2430 = load i32, ptr %30, align 4, !tbaa !11
  %2431 = sext i32 %2430 to i64
  %2432 = load ptr, ptr %17, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2432, i32 0, i32 11
  %2434 = load i64, ptr %2433, align 1, !tbaa !63
  %2435 = mul nsw i64 %2431, %2434
  %2436 = add nsw i64 %2429, %2435
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L2(ptr noundef %2417, ptr noundef %2418, i32 noundef %2419, i32 noundef %2422, i32 noundef %2425, i64 noundef %2436)
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #6
  br label %2437

2437:                                             ; preds = %2409, %2404, %2386, %2383, %2380
  %2438 = load i32, ptr %24, align 4, !tbaa !11
  %2439 = icmp eq i32 %2438, 1
  br i1 %2439, label %2440, label %2494

2440:                                             ; preds = %2437
  %2441 = load i64, ptr %23, align 8, !tbaa !9
  %2442 = icmp sge i64 %2441, 0
  br i1 %2442, label %2443, label %2494

2443:                                             ; preds = %2440
  %2444 = load i32, ptr %31, align 4, !tbaa !11
  %2445 = icmp sgt i32 %2444, 0
  br i1 %2445, label %2446, label %2494

2446:                                             ; preds = %2443
  %2447 = load i64, ptr %23, align 8, !tbaa !9
  %2448 = load i32, ptr %31, align 4, !tbaa !11
  %2449 = sext i32 %2448 to i64
  %2450 = add nsw i64 %2447, %2449
  %2451 = load ptr, ptr %16, align 8, !tbaa !5
  %2452 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2451, i32 0, i32 111
  %2453 = load i32, ptr %2452, align 8, !tbaa !15
  %2454 = zext i32 %2453 to i64
  %2455 = icmp slt i64 %2450, %2454
  br i1 %2455, label %2456, label %2461

2456:                                             ; preds = %2446
  %2457 = load ptr, ptr %16, align 8, !tbaa !5
  %2458 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2457, i32 0, i32 112
  %2459 = load i32, ptr %2458, align 4, !tbaa !19
  %2460 = icmp eq i32 %2459, 1
  br i1 %2460, label %2466, label %2461

2461:                                             ; preds = %2456, %2446
  %2462 = load ptr, ptr %16, align 8, !tbaa !5
  %2463 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2462, i32 0, i32 112
  %2464 = load i32, ptr %2463, align 4, !tbaa !19
  %2465 = icmp eq i32 %2464, 0
  br i1 %2465, label %2466, label %2494

2466:                                             ; preds = %2461, %2456
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #6
  %2467 = load i32, ptr %27, align 4, !tbaa !11
  %2468 = sext i32 %2467 to i64
  %2469 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %2468
  %2470 = load i32, ptr %2469, align 4, !tbaa !11
  %2471 = load ptr, ptr %16, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2471, i32 0, i32 99
  call void @libxsmm_get_tileinfo(i32 noundef %2470, ptr noundef %91, ptr noundef %92, ptr noundef %2472)
  %2473 = load i32, ptr %92, align 4, !tbaa !11
  store i32 %2473, ptr %36, align 4, !tbaa !11
  %2474 = load ptr, ptr %13, align 8, !tbaa !5
  %2475 = load ptr, ptr %16, align 8, !tbaa !5
  %2476 = load i32, ptr %36, align 4, !tbaa !11
  %2477 = load ptr, ptr %17, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2477, i32 0, i32 4
  %2479 = load i32, ptr %2478, align 1, !tbaa !28
  %2480 = load ptr, ptr %15, align 8, !tbaa !5
  %2481 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2480, i32 0, i32 3
  %2482 = load i32, ptr %2481, align 4, !tbaa !58
  %2483 = load i32, ptr %27, align 4, !tbaa !11
  %2484 = sext i32 %2483 to i64
  %2485 = getelementptr inbounds [4 x i64], ptr %72, i64 0, i64 %2484
  %2486 = load i64, ptr %2485, align 8, !tbaa !9
  %2487 = load i32, ptr %31, align 4, !tbaa !11
  %2488 = sext i32 %2487 to i64
  %2489 = load ptr, ptr %17, align 8, !tbaa !5
  %2490 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2489, i32 0, i32 11
  %2491 = load i64, ptr %2490, align 1, !tbaa !63
  %2492 = mul nsw i64 %2488, %2491
  %2493 = add nsw i64 %2486, %2492
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L1(ptr noundef %2474, ptr noundef %2475, i32 noundef %2476, i32 noundef %2479, i32 noundef %2482, i64 noundef %2493)
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  br label %2494

2494:                                             ; preds = %2466, %2461, %2443, %2440, %2437
  br label %2495

2495:                                             ; preds = %2494, %2306
  %2496 = load ptr, ptr %13, align 8, !tbaa !5
  %2497 = load ptr, ptr %16, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2497, i32 0, i32 0
  %2499 = load i32, ptr %2498, align 8, !tbaa !55
  %2500 = load i32, ptr %27, align 4, !tbaa !11
  %2501 = sext i32 %2500 to i64
  %2502 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 %2501
  %2503 = load i32, ptr %2502, align 4, !tbaa !11
  %2504 = load i32, ptr %27, align 4, !tbaa !11
  %2505 = sext i32 %2504 to i64
  %2506 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 %2505
  %2507 = load i32, ptr %2506, align 4, !tbaa !11
  %2508 = load i32, ptr %27, align 4, !tbaa !11
  %2509 = sext i32 %2508 to i64
  %2510 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %2509
  %2511 = load i32, ptr %2510, align 4, !tbaa !11
  %2512 = load i32, ptr %27, align 4, !tbaa !11
  %2513 = sext i32 %2512 to i64
  %2514 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2513
  %2515 = load i32, ptr %2514, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_tile_compute(ptr noundef %2496, i32 noundef %2499, i32 noundef %2503, i32 noundef %2507, i32 noundef %2511, i32 noundef %2515)
  %2516 = load i32, ptr %43, align 4, !tbaa !11
  %2517 = icmp ugt i32 %2516, 0
  br i1 %2517, label %2518, label %2590

2518:                                             ; preds = %2495
  %2519 = load i32, ptr %22, align 4, !tbaa !11
  %2520 = icmp eq i32 %2519, 1
  br i1 %2520, label %2521, label %2590

2521:                                             ; preds = %2518
  %2522 = load ptr, ptr %16, align 8, !tbaa !5
  %2523 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2522, i32 0, i32 112
  %2524 = load i32, ptr %2523, align 4, !tbaa !19
  %2525 = icmp eq i32 %2524, 1
  br i1 %2525, label %2526, label %2590

2526:                                             ; preds = %2521
  %2527 = load i64, ptr %23, align 8, !tbaa !9
  %2528 = load i32, ptr %44, align 4, !tbaa !11
  %2529 = zext i32 %2528 to i64
  %2530 = add nsw i64 %2527, %2529
  %2531 = load ptr, ptr %16, align 8, !tbaa !5
  %2532 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2531, i32 0, i32 111
  %2533 = load i32, ptr %2532, align 8, !tbaa !15
  %2534 = zext i32 %2533 to i64
  %2535 = icmp eq i64 %2530, %2534
  br i1 %2535, label %2536, label %2590

2536:                                             ; preds = %2526
  %2537 = load i32, ptr %27, align 4, !tbaa !11
  %2538 = icmp slt i32 %2537, 2
  br i1 %2538, label %2539, label %2542

2539:                                             ; preds = %2536
  %2540 = load i32, ptr %35, align 4, !tbaa !11
  %2541 = icmp eq i32 %2540, 1
  br i1 %2541, label %2548, label %2542

2542:                                             ; preds = %2539, %2536
  %2543 = load i32, ptr %27, align 4, !tbaa !11
  %2544 = icmp slt i32 %2543, 1
  br i1 %2544, label %2545, label %2590

2545:                                             ; preds = %2542
  %2546 = load i32, ptr %35, align 4, !tbaa !11
  %2547 = icmp eq i32 %2546, 0
  br i1 %2547, label %2548, label %2590

2548:                                             ; preds = %2545, %2539
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #6
  store i32 0, ptr %93, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  %2549 = load ptr, ptr %15, align 8, !tbaa !5
  %2550 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2549, i32 0, i32 22
  %2551 = load i32, ptr %2550, align 4, !tbaa !64
  store i32 %2551, ptr %94, align 4, !tbaa !11
  %2552 = load i32, ptr %35, align 4, !tbaa !11
  %2553 = icmp eq i32 %2552, 1
  br i1 %2553, label %2554, label %2570

2554:                                             ; preds = %2548
  %2555 = load i32, ptr %27, align 4, !tbaa !11
  %2556 = icmp eq i32 %2555, 1
  br i1 %2556, label %2557, label %2570

2557:                                             ; preds = %2554
  %2558 = load ptr, ptr %18, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %2558, i32 0, i32 1
  %2560 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  %2561 = load i32, ptr %2560, align 16, !tbaa !11
  %2562 = sext i32 %2561 to i64
  %2563 = getelementptr inbounds [4 x i32], ptr %2559, i64 0, i64 %2562
  %2564 = load i32, ptr %2563, align 4, !tbaa !11
  %2565 = load ptr, ptr %16, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2565, i32 0, i32 100
  %2567 = load i32, ptr %2566, align 4, !tbaa !57
  %2568 = mul i32 %2564, %2567
  %2569 = mul i32 %2568, 4
  store i32 %2569, ptr %93, align 4, !tbaa !11
  br label %2570

2570:                                             ; preds = %2557, %2554, %2548
  %2571 = load ptr, ptr %13, align 8, !tbaa !5
  %2572 = load i32, ptr %94, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %2571, i32 noundef %2572)
  %2573 = load ptr, ptr %13, align 8, !tbaa !5
  %2574 = load ptr, ptr %16, align 8, !tbaa !5
  %2575 = load i32, ptr %94, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %2573, ptr noundef %2574, i32 noundef 6, i32 noundef %2575)
  %2576 = load ptr, ptr %13, align 8, !tbaa !5
  %2577 = load i32, ptr %94, align 4, !tbaa !11
  %2578 = load ptr, ptr %16, align 8, !tbaa !5
  %2579 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2578, i32 0, i32 100
  %2580 = load i32, ptr %2579, align 4, !tbaa !57
  %2581 = load i32, ptr %93, align 4, !tbaa !11
  %2582 = load ptr, ptr %18, align 8, !tbaa !5
  %2583 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %2582, i32 0, i32 1
  %2584 = load i32, ptr %29, align 4, !tbaa !11
  %2585 = sext i32 %2584 to i64
  %2586 = getelementptr inbounds [4 x i32], ptr %2583, i64 0, i64 %2585
  %2587 = load i32, ptr %2586, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_prefetch_output(ptr noundef %2576, i32 noundef %2577, i32 noundef %2580, i32 noundef 4, i32 noundef %2581, i32 noundef %2587)
  %2588 = load ptr, ptr %13, align 8, !tbaa !5
  %2589 = load i32, ptr %94, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2588, i32 noundef %2589)
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #6
  br label %2590

2590:                                             ; preds = %2570, %2545, %2542, %2526, %2521, %2518, %2495
  %2591 = load i32, ptr %27, align 4, !tbaa !11
  %2592 = sext i32 %2591 to i64
  %2593 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2592
  %2594 = load i32, ptr %2593, align 4, !tbaa !11
  %2595 = sext i32 %2594 to i64
  %2596 = getelementptr inbounds [4 x i32], ptr %65, i64 0, i64 %2595
  store i32 1, ptr %2596, align 4, !tbaa !11
  %2597 = load i32, ptr %45, align 4, !tbaa !11
  %2598 = icmp ugt i32 %2597, 0
  br i1 %2598, label %2599, label %2725

2599:                                             ; preds = %2590
  %2600 = load i32, ptr %22, align 4, !tbaa !11
  %2601 = icmp eq i32 %2600, 1
  br i1 %2601, label %2602, label %2725

2602:                                             ; preds = %2599
  %2603 = load ptr, ptr %16, align 8, !tbaa !5
  %2604 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2603, i32 0, i32 112
  %2605 = load i32, ptr %2604, align 4, !tbaa !19
  %2606 = icmp eq i32 %2605, 1
  br i1 %2606, label %2607, label %2725

2607:                                             ; preds = %2602
  %2608 = load i64, ptr %23, align 8, !tbaa !9
  %2609 = load i32, ptr %46, align 4, !tbaa !11
  %2610 = zext i32 %2609 to i64
  %2611 = add nsw i64 %2608, %2610
  %2612 = load ptr, ptr %16, align 8, !tbaa !5
  %2613 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %2612, i32 0, i32 111
  %2614 = load i32, ptr %2613, align 8, !tbaa !15
  %2615 = zext i32 %2614 to i64
  %2616 = icmp eq i64 %2611, %2615
  br i1 %2616, label %2617, label %2725

2617:                                             ; preds = %2607
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #6
  store i32 0, ptr %95, align 4, !tbaa !11
  %2618 = load i32, ptr %35, align 4, !tbaa !11
  %2619 = icmp eq i32 %2618, 1
  br i1 %2619, label %2620, label %2695

2620:                                             ; preds = %2617
  %2621 = load i32, ptr %27, align 4, !tbaa !11
  %2622 = sext i32 %2621 to i64
  %2623 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2622
  %2624 = load i32, ptr %2623, align 4, !tbaa !11
  %2625 = sext i32 %2624 to i64
  %2626 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %2625
  %2627 = load i32, ptr %2626, align 4, !tbaa !11
  %2628 = sext i32 %2627 to i64
  %2629 = getelementptr inbounds [4 x i32], ptr %65, i64 0, i64 %2628
  %2630 = load i32, ptr %2629, align 4, !tbaa !11
  %2631 = icmp eq i32 %2630, 1
  br i1 %2631, label %2632, label %2694

2632:                                             ; preds = %2620
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #6
  %2633 = load i32, ptr %27, align 4, !tbaa !11
  %2634 = sext i32 %2633 to i64
  %2635 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2634
  %2636 = load i32, ptr %2635, align 4, !tbaa !11
  %2637 = load i32, ptr %27, align 4, !tbaa !11
  %2638 = sext i32 %2637 to i64
  %2639 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2638
  %2640 = load i32, ptr %2639, align 4, !tbaa !11
  %2641 = sext i32 %2640 to i64
  %2642 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %2641
  %2643 = load i32, ptr %2642, align 4, !tbaa !11
  %2644 = icmp slt i32 %2636, %2643
  br i1 %2644, label %2645, label %2650

2645:                                             ; preds = %2632
  %2646 = load i32, ptr %27, align 4, !tbaa !11
  %2647 = sext i32 %2646 to i64
  %2648 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2647
  %2649 = load i32, ptr %2648, align 4, !tbaa !11
  br label %2658

2650:                                             ; preds = %2632
  %2651 = load i32, ptr %27, align 4, !tbaa !11
  %2652 = sext i32 %2651 to i64
  %2653 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2652
  %2654 = load i32, ptr %2653, align 4, !tbaa !11
  %2655 = sext i32 %2654 to i64
  %2656 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %2655
  %2657 = load i32, ptr %2656, align 4, !tbaa !11
  br label %2658

2658:                                             ; preds = %2650, %2645
  %2659 = phi i32 [ %2649, %2645 ], [ %2657, %2650 ]
  store i32 %2659, ptr %96, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #6
  %2660 = load i32, ptr %96, align 4, !tbaa !11
  %2661 = load i32, ptr %26, align 4, !tbaa !11
  %2662 = sdiv i32 %2660, %2661
  store i32 %2662, ptr %97, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #6
  %2663 = load i32, ptr %96, align 4, !tbaa !11
  %2664 = load i32, ptr %26, align 4, !tbaa !11
  %2665 = srem i32 %2663, %2664
  store i32 %2665, ptr %98, align 4, !tbaa !11
  %2666 = load i32, ptr %98, align 4, !tbaa !11
  %2667 = sext i32 %2666 to i64
  %2668 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %2667
  %2669 = load i32, ptr %2668, align 4, !tbaa !11
  %2670 = load ptr, ptr %17, align 8, !tbaa !5
  %2671 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2670, i32 0, i32 5
  %2672 = load i32, ptr %2671, align 1, !tbaa !65
  %2673 = mul i32 %2669, %2672
  %2674 = load i32, ptr %97, align 4, !tbaa !11
  %2675 = sext i32 %2674 to i64
  %2676 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %2675
  %2677 = load i32, ptr %2676, align 4, !tbaa !11
  %2678 = add i32 %2673, %2677
  %2679 = mul i32 %2678, 2
  store i32 %2679, ptr %95, align 4, !tbaa !11
  %2680 = load ptr, ptr %13, align 8, !tbaa !5
  %2681 = load ptr, ptr %15, align 8, !tbaa !5
  %2682 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2681, i32 0, i32 5
  %2683 = load i32, ptr %2682, align 4, !tbaa !66
  %2684 = load ptr, ptr %17, align 8, !tbaa !5
  %2685 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2684, i32 0, i32 5
  %2686 = load i32, ptr %2685, align 1, !tbaa !65
  %2687 = load i32, ptr %95, align 4, !tbaa !11
  %2688 = load ptr, ptr %18, align 8, !tbaa !5
  %2689 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %2688, i32 0, i32 1
  %2690 = load i32, ptr %98, align 4, !tbaa !11
  %2691 = sext i32 %2690 to i64
  %2692 = getelementptr inbounds [4 x i32], ptr %2689, i64 0, i64 %2691
  %2693 = load i32, ptr %2692, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_prefetch_output(ptr noundef %2680, i32 noundef %2683, i32 noundef %2686, i32 noundef 2, i32 noundef %2687, i32 noundef %2693)
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  br label %2694

2694:                                             ; preds = %2658, %2620
  br label %2724

2695:                                             ; preds = %2617
  %2696 = load i32, ptr %29, align 4, !tbaa !11
  %2697 = sext i32 %2696 to i64
  %2698 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %2697
  %2699 = load i32, ptr %2698, align 4, !tbaa !11
  %2700 = load ptr, ptr %17, align 8, !tbaa !5
  %2701 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2700, i32 0, i32 5
  %2702 = load i32, ptr %2701, align 1, !tbaa !65
  %2703 = mul i32 %2699, %2702
  %2704 = load i32, ptr %28, align 4, !tbaa !11
  %2705 = sext i32 %2704 to i64
  %2706 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %2705
  %2707 = load i32, ptr %2706, align 4, !tbaa !11
  %2708 = add i32 %2703, %2707
  %2709 = mul i32 %2708, 2
  store i32 %2709, ptr %95, align 4, !tbaa !11
  %2710 = load ptr, ptr %13, align 8, !tbaa !5
  %2711 = load ptr, ptr %15, align 8, !tbaa !5
  %2712 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %2711, i32 0, i32 5
  %2713 = load i32, ptr %2712, align 4, !tbaa !66
  %2714 = load ptr, ptr %17, align 8, !tbaa !5
  %2715 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2714, i32 0, i32 5
  %2716 = load i32, ptr %2715, align 1, !tbaa !65
  %2717 = load i32, ptr %95, align 4, !tbaa !11
  %2718 = load ptr, ptr %18, align 8, !tbaa !5
  %2719 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %2718, i32 0, i32 1
  %2720 = load i32, ptr %29, align 4, !tbaa !11
  %2721 = sext i32 %2720 to i64
  %2722 = getelementptr inbounds [4 x i32], ptr %2719, i64 0, i64 %2721
  %2723 = load i32, ptr %2722, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_prefetch_output(ptr noundef %2710, i32 noundef %2713, i32 noundef %2716, i32 noundef 2, i32 noundef %2717, i32 noundef %2723)
  br label %2724

2724:                                             ; preds = %2695, %2694
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  br label %2725

2725:                                             ; preds = %2724, %2607, %2602, %2599, %2590
  %2726 = load i32, ptr %33, align 4, !tbaa !11
  %2727 = icmp eq i32 %2726, 1
  br i1 %2727, label %2728, label %2825

2728:                                             ; preds = %2725
  %2729 = load i32, ptr %35, align 4, !tbaa !11
  %2730 = icmp eq i32 %2729, 1
  br i1 %2730, label %2731, label %2801

2731:                                             ; preds = %2728
  %2732 = load i32, ptr %27, align 4, !tbaa !11
  %2733 = sext i32 %2732 to i64
  %2734 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2733
  %2735 = load i32, ptr %2734, align 4, !tbaa !11
  %2736 = sext i32 %2735 to i64
  %2737 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %2736
  %2738 = load i32, ptr %2737, align 4, !tbaa !11
  %2739 = sext i32 %2738 to i64
  %2740 = getelementptr inbounds [4 x i32], ptr %65, i64 0, i64 %2739
  %2741 = load i32, ptr %2740, align 4, !tbaa !11
  %2742 = icmp eq i32 %2741, 1
  br i1 %2742, label %2743, label %2800

2743:                                             ; preds = %2731
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #6
  %2744 = load i32, ptr %27, align 4, !tbaa !11
  %2745 = sext i32 %2744 to i64
  %2746 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2745
  %2747 = load i32, ptr %2746, align 4, !tbaa !11
  %2748 = load i32, ptr %27, align 4, !tbaa !11
  %2749 = sext i32 %2748 to i64
  %2750 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2749
  %2751 = load i32, ptr %2750, align 4, !tbaa !11
  %2752 = sext i32 %2751 to i64
  %2753 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %2752
  %2754 = load i32, ptr %2753, align 4, !tbaa !11
  %2755 = icmp slt i32 %2747, %2754
  br i1 %2755, label %2756, label %2761

2756:                                             ; preds = %2743
  %2757 = load i32, ptr %27, align 4, !tbaa !11
  %2758 = sext i32 %2757 to i64
  %2759 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2758
  %2760 = load i32, ptr %2759, align 4, !tbaa !11
  br label %2769

2761:                                             ; preds = %2743
  %2762 = load i32, ptr %27, align 4, !tbaa !11
  %2763 = sext i32 %2762 to i64
  %2764 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2763
  %2765 = load i32, ptr %2764, align 4, !tbaa !11
  %2766 = sext i32 %2765 to i64
  %2767 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %2766
  %2768 = load i32, ptr %2767, align 4, !tbaa !11
  br label %2769

2769:                                             ; preds = %2761, %2756
  %2770 = phi i32 [ %2760, %2756 ], [ %2768, %2761 ]
  store i32 %2770, ptr %99, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #6
  %2771 = load i32, ptr %99, align 4, !tbaa !11
  %2772 = load i32, ptr %26, align 4, !tbaa !11
  %2773 = sdiv i32 %2771, %2772
  store i32 %2773, ptr %100, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #6
  %2774 = load i32, ptr %99, align 4, !tbaa !11
  %2775 = load i32, ptr %26, align 4, !tbaa !11
  %2776 = srem i32 %2774, %2775
  store i32 %2776, ptr %101, align 4, !tbaa !11
  %2777 = load ptr, ptr %13, align 8, !tbaa !5
  %2778 = load ptr, ptr %15, align 8, !tbaa !5
  %2779 = load ptr, ptr %16, align 8, !tbaa !5
  %2780 = load ptr, ptr %17, align 8, !tbaa !5
  %2781 = load i32, ptr %99, align 4, !tbaa !11
  %2782 = load i32, ptr %99, align 4, !tbaa !11
  %2783 = sext i32 %2782 to i64
  %2784 = getelementptr inbounds [4 x i32], ptr %64, i64 0, i64 %2783
  %2785 = load i32, ptr %2784, align 4, !tbaa !11
  %2786 = load i32, ptr %100, align 4, !tbaa !11
  %2787 = sext i32 %2786 to i64
  %2788 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %2787
  %2789 = load i32, ptr %2788, align 4, !tbaa !11
  %2790 = load i32, ptr %101, align 4, !tbaa !11
  %2791 = sext i32 %2790 to i64
  %2792 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %2791
  %2793 = load i32, ptr %2792, align 4, !tbaa !11
  %2794 = load ptr, ptr %18, align 8, !tbaa !5
  %2795 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %2794, i32 0, i32 1
  %2796 = load i32, ptr %101, align 4, !tbaa !11
  %2797 = sext i32 %2796 to i64
  %2798 = getelementptr inbounds [4 x i32], ptr %2795, i64 0, i64 %2797
  %2799 = load i32, ptr %2798, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_paired_tilestore(ptr noundef %2777, ptr noundef %2778, ptr noundef %2779, ptr noundef %2780, i32 noundef %2781, i32 noundef %2785, i32 noundef %2789, i32 noundef %2793, i32 noundef %2799)
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #6
  br label %2800

2800:                                             ; preds = %2769, %2731
  br label %2824

2801:                                             ; preds = %2728
  %2802 = load ptr, ptr %13, align 8, !tbaa !5
  %2803 = load ptr, ptr %15, align 8, !tbaa !5
  %2804 = load ptr, ptr %16, align 8, !tbaa !5
  %2805 = load ptr, ptr %17, align 8, !tbaa !5
  %2806 = load i32, ptr %27, align 4, !tbaa !11
  %2807 = sext i32 %2806 to i64
  %2808 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %2807
  %2809 = load i32, ptr %2808, align 4, !tbaa !11
  %2810 = load i32, ptr %28, align 4, !tbaa !11
  %2811 = sext i32 %2810 to i64
  %2812 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %2811
  %2813 = load i32, ptr %2812, align 4, !tbaa !11
  %2814 = load i32, ptr %29, align 4, !tbaa !11
  %2815 = sext i32 %2814 to i64
  %2816 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %2815
  %2817 = load i32, ptr %2816, align 4, !tbaa !11
  %2818 = load ptr, ptr %18, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %2818, i32 0, i32 1
  %2820 = load i32, ptr %29, align 4, !tbaa !11
  %2821 = sext i32 %2820 to i64
  %2822 = getelementptr inbounds [4 x i32], ptr %2819, i64 0, i64 %2821
  %2823 = load i32, ptr %2822, align 4, !tbaa !11
  call void @libxsmm_generator_gemm_amx_single_tilestore(ptr noundef %2802, ptr noundef %2803, ptr noundef %2804, ptr noundef %2805, i32 noundef %2809, i32 noundef %2813, i32 noundef %2817, i32 noundef %2823)
  br label %2824

2824:                                             ; preds = %2801, %2800
  br label %2825

2825:                                             ; preds = %2824, %2725
  br label %2826

2826:                                             ; preds = %2825
  %2827 = load i32, ptr %27, align 4, !tbaa !11
  %2828 = add nsw i32 %2827, 1
  store i32 %2828, ptr %27, align 4, !tbaa !11
  br label %1791, !llvm.loop !67

2829:                                             ; preds = %1791
  store i32 0, ptr %81, align 4
  br label %2830

2830:                                             ; preds = %2829, %515, %501, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  %2831 = load i32, ptr %81, align 4
  switch i32 %2831, label %2833 [
    i32 0, label %2832
    i32 1, label %2832
  ]

2832:                                             ; preds = %2830, %2830
  ret void

2833:                                             ; preds = %2830
  unreachable
}

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #3

declare void @libxsmm_x86_instruction_jump_to_label(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #0

declare void @libxsmm_x86_instruction_register_jump_label(ptr noundef, i32 noundef, ptr noundef) #0

declare void @libxsmm_x86_instruction_tile_compute(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

declare void @libxsmm_get_tileinfo(i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

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

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


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

@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@.str.3 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [46 x i8], align 1
@__func__.libxsmm_generator_gemm_amx_microkernel = external hidden unnamed_addr constant [39 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [104 x i8], align 1

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

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

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

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

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #4

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

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

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

declare void @libxsmm_x86_instruction_push_reg(ptr noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_generator_gemm_getval_stack_var(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_x86_instruction_tile_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_x86_instruction_pop_reg(ptr noundef, i32 noundef) local_unnamed_addr #0

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

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #0

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

declare i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef) local_unnamed_addr #0

declare i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef) local_unnamed_addr #0

declare i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef) local_unnamed_addr #0

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) local_unnamed_addr #0

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) local_unnamed_addr #0

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_amx_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, i64 noundef %7, i64 noundef %8, i32 noundef %9, i64 noundef %10, i32 noundef %11) local_unnamed_addr #1 {
  %13 = alloca [4 x i32], align 16
  %14 = alloca [4 x i32], align 16
  %15 = alloca [4 x i32], align 16
  %16 = alloca [4 x i32], align 16
  %17 = alloca [4 x i32], align 16
  %18 = alloca [4 x i32], align 16
  %19 = alloca [4 x i32], align 16
  %20 = alloca [4 x i32], align 16
  %21 = alloca [4 x i32], align 16
  %22 = alloca [4 x i32], align 16
  %23 = alloca [4 x i32], align 16
  %24 = alloca [4 x i32], align 16
  %25 = alloca [4 x i32], align 16
  %26 = alloca [4 x i64], align 16
  %27 = alloca [4 x i64], align 16
  %28 = alloca [4 x i32], align 16
  %29 = alloca [4 x i32], align 16
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = load i32, ptr %6, align 4, !tbaa !5
  %39 = load i32, ptr %5, align 4, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %3, i64 608
  %41 = load i32, ptr %40, align 8, !tbaa !10
  %42 = add i32 %41, -1
  %43 = zext i32 %42 to i64
  %44 = icmp eq i64 %43, %10
  %45 = icmp eq i32 %9, 1
  %or.cond = and i1 %45, %44
  %46 = icmp eq i32 %11, 1
  %or.cond3 = and i1 %46, %or.cond
  br i1 %or.cond3, label %47, label %51

47:                                               ; preds = %12
  %48 = getelementptr inbounds i8, ptr %3, i64 612
  %49 = load i32, ptr %48, align 4, !tbaa !15
  %50 = icmp eq i32 %49, 1
  br i1 %50, label %59, label %.thread

51:                                               ; preds = %12
  br i1 %45, label %.thread, label %56

.thread:                                          ; preds = %47, %51
  %52 = getelementptr inbounds i8, ptr %4, i64 24
  %53 = load i32, ptr %52, align 1, !tbaa !16
  %54 = and i32 %53, 8388608
  %55 = icmp ne i32 %54, 0
  br label %56

56:                                               ; preds = %.thread, %51
  %57 = phi i1 [ false, %51 ], [ %55, %.thread ]
  %58 = zext i1 %57 to i32
  br label %59

59:                                               ; preds = %47, %56
  %60 = phi i32 [ %58, %56 ], [ 1, %47 ]
  %61 = getelementptr inbounds i8, ptr %3, i64 640
  %62 = load i32, ptr %61, align 8, !tbaa !19
  %63 = getelementptr inbounds i8, ptr %4, i64 29
  %64 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %63) #9
  %65 = icmp eq i32 %64, 2
  %66 = and i32 %38, 1
  %67 = icmp eq i32 %66, 0
  %or.cond901 = select i1 %65, i1 %67, i1 false
  br i1 %or.cond901, label %68, label %73

68:                                               ; preds = %59
  %69 = getelementptr inbounds i8, ptr %3, i64 140
  %70 = load i32, ptr %69, align 4, !tbaa !20
  %71 = icmp eq i32 %70, 0
  %72 = icmp eq i32 %62, 0
  %spec.select = select i1 %71, i1 %72, i1 false
  br label %73

73:                                               ; preds = %68, %59
  %74 = phi i1 [ false, %59 ], [ %spec.select, %68 ]
  %75 = zext i1 %74 to i32
  %76 = tail call ptr @getenv(ptr noundef nonnull @.str.3) #9
  %77 = tail call ptr @getenv(ptr noundef nonnull @.str.4) #9
  %78 = icmp ne ptr %76, null
  br i1 %78, label %79, label %81

79:                                               ; preds = %73
  %80 = tail call i32 @atoi(ptr nocapture noundef %76) #10
  br label %81

81:                                               ; preds = %73, %79
  %82 = phi i32 [ %80, %79 ], [ 4, %73 ]
  %83 = icmp ne ptr %77, null
  br i1 %83, label %84, label %86

84:                                               ; preds = %81
  %85 = tail call i32 @atoi(ptr nocapture noundef %77) #10
  br label %86

86:                                               ; preds = %81, %84
  %87 = phi i32 [ %85, %84 ], [ 3, %81 ]
  %88 = getelementptr inbounds i8, ptr %4, i64 24
  %89 = load i32, ptr %88, align 1, !tbaa !16
  %90 = and i32 %89, 8388608
  %.not = icmp eq i32 %90, 0
  %91 = tail call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %4) #9
  %92 = tail call i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef %4) #9
  %93 = tail call i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef %4) #9
  %94 = tail call i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef %4) #9
  %95 = load i32, ptr %88, align 1, !tbaa !16
  %96 = and i32 %95, 2048
  %.not855 = icmp eq i32 %96, 0
  %97 = and i32 %95, 2
  %.not856 = icmp eq i32 %97, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %13, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %14, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %15, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %16, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %17, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %18, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %19, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %20, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %21, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %22, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %23, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %24, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %25, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %26, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %27, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %28, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %29, i8 0, i64 16, i1 false)
  %98 = tail call ptr @getenv(ptr noundef nonnull @.str.5) #9
  %99 = tail call ptr @getenv(ptr noundef nonnull @.str.6) #9
  %100 = tail call ptr @getenv(ptr noundef nonnull @.str.7) #9
  %101 = tail call ptr @getenv(ptr noundef nonnull @.str.8) #9
  %102 = tail call ptr @getenv(ptr noundef nonnull @.str.9) #9
  %103 = tail call ptr @getenv(ptr noundef nonnull @.str.10) #9
  %104 = icmp eq ptr %98, null
  br i1 %104, label %107, label %105

105:                                              ; preds = %86
  %106 = tail call i32 @atoi(ptr nocapture noundef %98) #10
  br label %107

107:                                              ; preds = %86, %105
  %.0824 = phi i32 [ 0, %86 ], [ %106, %105 ]
  %108 = icmp eq ptr %99, null
  br i1 %108, label %111, label %109

109:                                              ; preds = %107
  %110 = tail call i32 @atoi(ptr nocapture noundef %99) #10
  br label %111

111:                                              ; preds = %107, %109
  %.0825 = phi i32 [ 0, %107 ], [ %110, %109 ]
  %112 = icmp eq ptr %100, null
  br i1 %112, label %115, label %113

113:                                              ; preds = %111
  %114 = tail call i32 @atoi(ptr nocapture noundef %100) #10
  br label %115

115:                                              ; preds = %111, %113
  %.0826 = phi i32 [ 0, %111 ], [ %114, %113 ]
  %116 = icmp eq ptr %101, null
  br i1 %116, label %119, label %117

117:                                              ; preds = %115
  %118 = tail call i32 @atoi(ptr nocapture noundef %101) #10
  br label %119

119:                                              ; preds = %115, %117
  %.0827 = phi i32 [ 0, %115 ], [ %118, %117 ]
  %120 = icmp eq ptr %102, null
  br i1 %120, label %123, label %121

121:                                              ; preds = %119
  %122 = tail call i32 @atoi(ptr nocapture noundef %102) #10
  br label %123

123:                                              ; preds = %119, %121
  %.0816 = phi i32 [ 0, %119 ], [ %122, %121 ]
  %124 = icmp eq ptr %103, null
  br i1 %124, label %127, label %125

125:                                              ; preds = %123
  %126 = tail call i32 @atoi(ptr nocapture noundef %103) #10
  br label %127

127:                                              ; preds = %123, %125
  %.0818 = phi i32 [ 0, %123 ], [ %126, %125 ]
  %128 = icmp eq i64 %10, -2
  br i1 %128, label %129, label %.preheader961

129:                                              ; preds = %127
  %130 = load i32, ptr %40, align 8, !tbaa !10
  %131 = add i32 %130, 2
  %132 = add i32 %131, %.0816
  %133 = add i32 %131, %.0818
  br label %.preheader961

.preheader961:                                    ; preds = %129, %127
  %.1819 = phi i32 [ %133, %129 ], [ %.0818, %127 ]
  %.1817 = phi i32 [ %132, %129 ], [ %.0816, %127 ]
  %134 = getelementptr inbounds i8, ptr %6, i64 4
  %135 = load i32, ptr %134, align 4, !tbaa !21
  %136 = getelementptr inbounds i8, ptr %28, i64 4
  store i32 %135, ptr %136, align 4, !tbaa !21
  %137 = getelementptr inbounds i8, ptr %6, i64 8
  %138 = load i32, ptr %137, align 4, !tbaa !21
  %139 = add i32 %138, %135
  %140 = getelementptr inbounds i8, ptr %28, i64 8
  store i32 %139, ptr %140, align 8, !tbaa !21
  %141 = getelementptr inbounds i8, ptr %6, i64 12
  %142 = load i32, ptr %141, align 4, !tbaa !21
  %143 = add i32 %142, %139
  %144 = getelementptr inbounds i8, ptr %28, i64 12
  store i32 %143, ptr %144, align 4, !tbaa !21
  %145 = getelementptr inbounds i8, ptr %5, i64 4
  %146 = load i32, ptr %145, align 4, !tbaa !21
  %147 = getelementptr inbounds i8, ptr %29, i64 4
  store i32 %146, ptr %147, align 4, !tbaa !21
  %148 = getelementptr inbounds i8, ptr %5, i64 8
  %149 = load i32, ptr %148, align 4, !tbaa !21
  %150 = add i32 %149, %146
  %151 = getelementptr inbounds i8, ptr %29, i64 8
  store i32 %150, ptr %151, align 8, !tbaa !21
  %152 = getelementptr inbounds i8, ptr %5, i64 12
  %153 = load i32, ptr %152, align 4, !tbaa !21
  %154 = add i32 %153, %150
  %155 = getelementptr inbounds i8, ptr %29, i64 12
  store i32 %154, ptr %155, align 4, !tbaa !21
  %156 = icmp eq i32 %38, 2
  %157 = icmp eq i32 %39, 2
  %or.cond5 = select i1 %156, i1 %157, i1 false
  br i1 %or.cond5, label %158, label %159

158:                                              ; preds = %.preheader961
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %19, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 1)
  br label %167

159:                                              ; preds = %.preheader961
  %160 = icmp eq i32 %39, 1
  %or.cond7 = select i1 %156, i1 %160, i1 false
  br i1 %or.cond7, label %161, label %163

161:                                              ; preds = %159
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %19, i32 noundef 2, i32 noundef -1, i32 noundef 0, i32 noundef -1)
  %.not857 = icmp eq i32 %62, 0
  br i1 %.not857, label %167, label %162

162:                                              ; preds = %161
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %19, i32 noundef 1, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  br label %167

163:                                              ; preds = %159
  %164 = icmp eq i32 %38, 4
  %or.cond9 = select i1 %164, i1 %160, i1 false
  br i1 %or.cond9, label %165, label %166

165:                                              ; preds = %163
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %19, i32 noundef 1, i32 noundef 0, i32 noundef 3, i32 noundef 2)
  br label %167

166:                                              ; preds = %163
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %19, i32 noundef -1, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %167

167:                                              ; preds = %162, %161, %166, %165, %158
  %168 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %63) #9
  %169 = icmp eq i32 %168, 2
  %170 = icmp ne i32 %92, 0
  %or.cond11 = select i1 %169, i1 true, i1 %170
  %171 = icmp ne i32 %94, 0
  %or.cond13 = select i1 %or.cond11, i1 true, i1 %171
  %172 = icmp ne i32 %91, 0
  %or.cond15 = select i1 %or.cond13, i1 true, i1 %172
  br i1 %or.cond15, label %173, label %176

173:                                              ; preds = %167
  %174 = load i32, ptr %88, align 1, !tbaa !16
  %175 = and i32 %174, 2
  %.not863 = icmp eq i32 %175, 0
  %spec.store.select = select i1 %.not863, i32 1879449692, i32 1879449708
  br label %201

176:                                              ; preds = %167
  %177 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %63) #9
  %178 = icmp eq i32 %177, 3
  %179 = icmp ne i32 %93, 0
  %or.cond17 = select i1 %178, i1 true, i1 %179
  br i1 %or.cond17, label %180, label %183

180:                                              ; preds = %176
  %181 = load i32, ptr %88, align 1, !tbaa !16
  %182 = and i32 %181, 2
  %.not862 = icmp eq i32 %182, 0
  %spec.store.select18 = select i1 %.not862, i32 1879515228, i32 1879515244
  br label %201

183:                                              ; preds = %176
  %184 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %63) #9
  %185 = icmp eq i32 %184, 12
  br i1 %185, label %186, label %190

186:                                              ; preds = %183
  %187 = load i32, ptr %88, align 1, !tbaa !16
  %188 = and i32 %187, 768
  switch i32 %188, label %189 [
    i32 768, label %201
    i32 512, label %.fold.split
  ]

189:                                              ; preds = %186
  %or.cond905 = icmp eq i32 %188, 256
  %spec.select921 = select i1 %or.cond905, i32 1879449694, i32 1879515230
  br label %201

190:                                              ; preds = %183
  %191 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %63) #9
  %192 = icmp eq i32 %191, 4
  br i1 %192, label %201, label %193

193:                                              ; preds = %190
  %194 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %63) #9
  %195 = icmp eq i32 %194, 5
  br i1 %195, label %201, label %196

196:                                              ; preds = %193
  %197 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %198 = icmp ugt i32 %197, 1
  %199 = load i32, ptr @libxsmm_verbosity, align 4
  %200 = select i1 %198, i32 %199, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_gemm_amx_microkernel, ptr noundef nonnull @.str.2, i32 noundef 1471, i32 noundef %200) #9
  br label %.loopexit

.fold.split:                                      ; preds = %186
  br label %201

201:                                              ; preds = %186, %.fold.split, %189, %193, %190, %180, %173
  %.0820 = phi i32 [ %spec.store.select, %173 ], [ %spec.store.select18, %180 ], [ 1879318622, %186 ], [ 1879331069, %190 ], [ 1879396605, %193 ], [ %spec.select921, %189 ], [ 1879384158, %.fold.split ]
  %202 = getelementptr inbounds i8, ptr %3, i64 152
  %203 = load i32, ptr %202, align 8, !tbaa !22
  %204 = icmp eq i32 %203, 1
  br i1 %204, label %205, label %222

205:                                              ; preds = %201
  %206 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %63) #9
  %.not864 = icmp eq i32 %206, 2
  br i1 %.not864, label %214, label %207

207:                                              ; preds = %205
  %208 = load ptr, ptr @stderr, align 8, !tbaa !23
  %209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %208, ptr noundef nonnull @.str.11) #11
  %210 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %211 = icmp ugt i32 %210, 1
  %212 = load i32, ptr @libxsmm_verbosity, align 4
  %213 = select i1 %211, i32 %212, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_gemm_amx_microkernel, ptr noundef nonnull @.str.2, i32 noundef 1479, i32 noundef %213) #9
  br label %.loopexit

214:                                              ; preds = %205
  br i1 %74, label %222, label %215

215:                                              ; preds = %214
  %216 = load ptr, ptr @stderr, align 8, !tbaa !23
  %217 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %216, ptr noundef nonnull @.str.12) #11
  %218 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %219 = icmp ugt i32 %218, 1
  %220 = load i32, ptr @libxsmm_verbosity, align 4
  %221 = select i1 %219, i32 %220, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_gemm_amx_microkernel, ptr noundef nonnull @.str.2, i32 noundef 1484, i32 noundef %221) #9
  br label %.loopexit

222:                                              ; preds = %214, %201
  %223 = load i32, ptr %88, align 1, !tbaa !16
  %224 = and i32 %223, 2048
  %225 = icmp eq i32 %224, 0
  %226 = and i32 %223, 3
  %or.cond907 = icmp eq i32 %226, 0
  br i1 %225, label %227, label %476

227:                                              ; preds = %222
  br i1 %or.cond907, label %228, label %.loopexit953

228:                                              ; preds = %227
  %.not872 = icmp eq i32 %.0824, 0
  %.not874 = icmp eq i32 %.0825, 0
  %229 = select i1 %.not874, i32 1610883183, i32 1610895609
  %230 = select i1 %.not874, i32 1610883182, i32 1610895608
  %231 = select i1 %.not872, i32 %230, i32 %229
  %.not875 = icmp eq i32 %.0826, 0
  %.not877 = icmp eq i32 %.0827, 0
  %232 = select i1 %.not877, i32 1610948683, i32 1610948682
  %233 = select i1 %.not877, i32 1611079755, i32 1611079754
  %234 = select i1 %.not875, i32 %233, i32 %232
  br i1 %or.cond5, label %.thread922, label %235

.thread922:                                       ; preds = %228
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef 7, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef 1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %231, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %234, i32 noundef -1, i32 noundef %234, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820)
  br label %.loopexit953.loopexit

235:                                              ; preds = %228
  %236 = icmp eq i32 %39, 1
  %or.cond22 = select i1 %156, i1 %236, i1 false
  br i1 %or.cond22, label %237, label %238

237:                                              ; preds = %235
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %231, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %234, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  br label %.loopexit953.loopexit

238:                                              ; preds = %235
  %239 = icmp eq i32 %38, 1
  %or.cond24 = select i1 %239, i1 %157, i1 false
  br i1 %or.cond24, label %240, label %.thread924

240:                                              ; preds = %238
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %231, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %234, i32 noundef %234, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  br label %.loopexit953.loopexit

.thread924:                                       ; preds = %238
  %or.cond26 = select i1 %239, i1 %236, i1 false
  br i1 %or.cond26, label %241, label %.loopexit953.loopexit

241:                                              ; preds = %.thread924
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %231, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %234, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %.loopexit953.loopexit

.loopexit953.loopexit:                            ; preds = %240, %237, %.thread922, %241, %.thread924
  %242 = getelementptr inbounds i8, ptr %4, i64 16
  %243 = load i32, ptr %242, align 1, !tbaa !24
  %244 = zext i32 %243 to i64
  %245 = getelementptr inbounds i8, ptr %3, i64 16
  %246 = load i32, ptr %245, align 8, !tbaa !25
  %247 = zext i32 %246 to i64
  %factor.op.mul983 = mul nuw i64 %244, %247
  %248 = load i32, ptr %15, align 16, !tbaa !21
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %249
  %251 = load i32, ptr %250, align 4, !tbaa !21
  %252 = sext i32 %251 to i64
  %.reass984 = mul i64 %factor.op.mul983, %252
  %253 = add nsw i64 %.reass984, %8
  store i64 %253, ptr %27, align 16, !tbaa !26
  %254 = getelementptr inbounds i8, ptr %26, i64 8
  %255 = getelementptr inbounds i8, ptr %15, i64 4
  %256 = load i32, ptr %255, align 4, !tbaa !21
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !21
  %260 = sext i32 %259 to i64
  %.reass984.1 = mul i64 %factor.op.mul983, %260
  %261 = add nsw i64 %.reass984.1, %8
  %262 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %261, ptr %262, align 8, !tbaa !26
  %263 = getelementptr inbounds i8, ptr %26, i64 16
  %264 = getelementptr inbounds i8, ptr %15, i64 8
  %265 = load i32, ptr %264, align 8, !tbaa !21
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %266
  %268 = load i32, ptr %267, align 4, !tbaa !21
  %269 = sext i32 %268 to i64
  %.reass984.2 = mul i64 %factor.op.mul983, %269
  %270 = add nsw i64 %.reass984.2, %8
  %271 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %270, ptr %271, align 16, !tbaa !26
  %272 = load <4 x i32>, ptr %13, align 16, !tbaa !21
  %273 = extractelement <4 x i32> %272, i64 0
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %274
  %276 = load i32, ptr %275, align 4, !tbaa !21
  %277 = shl nsw i32 %276, 1
  %278 = sext i32 %277 to i64
  %279 = add nsw i64 %278, %7
  store i64 %279, ptr %26, align 16, !tbaa !26
  %280 = extractelement <4 x i32> %272, i64 1
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %281
  %283 = load i32, ptr %282, align 4, !tbaa !21
  %284 = shl nsw i32 %283, 1
  %285 = sext i32 %284 to i64
  %286 = add nsw i64 %285, %7
  store i64 %286, ptr %254, align 8, !tbaa !26
  %287 = extractelement <4 x i32> %272, i64 2
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %288
  %290 = load i32, ptr %289, align 4, !tbaa !21
  %291 = shl nsw i32 %290, 1
  %292 = sext i32 %291 to i64
  %293 = add nsw i64 %292, %7
  store i64 %293, ptr %263, align 16, !tbaa !26
  %294 = shl nsw <4 x i32> %272, <i32 1, i32 1, i32 1, i32 1>
  %295 = load <4 x i32>, ptr %14, align 16, !tbaa !21
  %296 = add nsw <4 x i32> %294, %295
  store <4 x i32> %296, ptr %18, align 16, !tbaa !21
  %297 = extractelement <4 x i32> %272, i64 3
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !21
  %301 = shl nsw i32 %300, 1
  %302 = sext i32 %301 to i64
  %303 = add nsw i64 %302, %7
  %304 = getelementptr inbounds i8, ptr %26, i64 24
  store i64 %303, ptr %304, align 8, !tbaa !26
  %305 = getelementptr inbounds i8, ptr %15, i64 12
  %306 = load i32, ptr %305, align 4, !tbaa !21
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %307
  %309 = load i32, ptr %308, align 4, !tbaa !21
  %310 = sext i32 %309 to i64
  %.reass984.3 = mul i64 %factor.op.mul983, %310
  %311 = add nsw i64 %.reass984.3, %8
  %312 = getelementptr inbounds i8, ptr %27, i64 24
  store i64 %311, ptr %312, align 8, !tbaa !26
  %.pre = load i32, ptr %88, align 1, !tbaa !16
  br label %.loopexit953

.loopexit953:                                     ; preds = %.loopexit953.loopexit, %227
  %313 = phi i32 [ %.pre, %.loopexit953.loopexit ], [ %223, %227 ]
  %314 = and i32 %313, 3
  %or.cond909 = icmp eq i32 %314, 1
  br i1 %or.cond909, label %315, label %.loopexit952

315:                                              ; preds = %.loopexit953
  %.not879 = icmp eq i32 %.0824, 0
  %.not881 = icmp eq i32 %.0825, 0
  %316 = select i1 %.not881, i32 1610948683, i32 1610948682
  %317 = select i1 %.not881, i32 1611079755, i32 1611079754
  %318 = select i1 %.not879, i32 %317, i32 %316
  %.not882 = icmp eq i32 %.0826, 0
  %.not884 = icmp eq i32 %.0827, 0
  %319 = select i1 %.not884, i32 1610948683, i32 1610948682
  %320 = select i1 %.not884, i32 1611079755, i32 1611079754
  %321 = select i1 %.not882, i32 %320, i32 %319
  br i1 %or.cond5, label %.thread926, label %322

.thread926:                                       ; preds = %315
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef 7, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef 1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %318, i32 noundef %318, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %321, i32 noundef -1, i32 noundef %321, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820)
  br label %.loopexit952.loopexit

322:                                              ; preds = %315
  %323 = icmp eq i32 %39, 1
  %or.cond30 = select i1 %156, i1 %323, i1 false
  br i1 %or.cond30, label %324, label %325

324:                                              ; preds = %322
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %318, i32 noundef %318, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %321, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  br label %.loopexit952.loopexit

325:                                              ; preds = %322
  %326 = icmp eq i32 %38, 1
  %or.cond32 = select i1 %326, i1 %157, i1 false
  br i1 %or.cond32, label %327, label %.thread930

327:                                              ; preds = %325
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 5, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %318, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %321, i32 noundef %321, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  br label %.loopexit952.loopexit

.thread930:                                       ; preds = %325
  %or.cond34 = select i1 %326, i1 %323, i1 false
  br i1 %or.cond34, label %328, label %.loopexit952.loopexit

328:                                              ; preds = %.thread930
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 5, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %318, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %321, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %.loopexit952.loopexit

.loopexit952.loopexit:                            ; preds = %327, %324, %.thread926, %328, %.thread930
  %329 = getelementptr inbounds i8, ptr %4, i64 12
  %330 = load i32, ptr %329, align 1, !tbaa !27
  %331 = zext i32 %330 to i64
  %factor.op.mul986 = shl nuw nsw i64 %331, 1
  %332 = getelementptr inbounds i8, ptr %4, i64 16
  %333 = load i32, ptr %332, align 1, !tbaa !24
  %334 = zext i32 %333 to i64
  %335 = getelementptr inbounds i8, ptr %3, i64 16
  %336 = load i32, ptr %335, align 8, !tbaa !25
  %337 = zext i32 %336 to i64
  %factor.op.mul988 = mul nuw i64 %334, %337
  %338 = load i32, ptr %15, align 16, !tbaa !21
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %339
  %341 = load i32, ptr %340, align 4, !tbaa !21
  %342 = sext i32 %341 to i64
  %.reass989 = mul i64 %factor.op.mul988, %342
  %343 = add nsw i64 %.reass989, %8
  store i64 %343, ptr %27, align 16, !tbaa !26
  %344 = getelementptr inbounds i8, ptr %26, i64 8
  %345 = getelementptr inbounds i8, ptr %15, i64 4
  %346 = load i32, ptr %345, align 4, !tbaa !21
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !21
  %350 = sext i32 %349 to i64
  %.reass989.1 = mul i64 %factor.op.mul988, %350
  %351 = add nsw i64 %.reass989.1, %8
  %352 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %351, ptr %352, align 8, !tbaa !26
  %353 = getelementptr inbounds i8, ptr %26, i64 16
  %354 = getelementptr inbounds i8, ptr %15, i64 8
  %355 = load i32, ptr %354, align 8, !tbaa !21
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %356
  %358 = load i32, ptr %357, align 4, !tbaa !21
  %359 = sext i32 %358 to i64
  %.reass989.2 = mul i64 %factor.op.mul988, %359
  %360 = add nsw i64 %.reass989.2, %8
  %361 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %360, ptr %361, align 16, !tbaa !26
  %362 = load <4 x i32>, ptr %13, align 16, !tbaa !21
  %363 = extractelement <4 x i32> %362, i64 0
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %364
  %366 = load i32, ptr %365, align 4, !tbaa !21
  %367 = sext i32 %366 to i64
  %.reass987 = mul i64 %factor.op.mul986, %367
  %368 = add nsw i64 %.reass987, %7
  store i64 %368, ptr %26, align 16, !tbaa !26
  %369 = extractelement <4 x i32> %362, i64 1
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %370
  %372 = load i32, ptr %371, align 4, !tbaa !21
  %373 = sext i32 %372 to i64
  %.reass987.1 = mul i64 %factor.op.mul986, %373
  %374 = add nsw i64 %.reass987.1, %7
  store i64 %374, ptr %344, align 8, !tbaa !26
  %375 = extractelement <4 x i32> %362, i64 2
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %376
  %378 = load i32, ptr %377, align 4, !tbaa !21
  %379 = sext i32 %378 to i64
  %.reass987.2 = mul i64 %factor.op.mul986, %379
  %380 = add nsw i64 %.reass987.2, %7
  store i64 %380, ptr %353, align 16, !tbaa !26
  %381 = shl nsw <4 x i32> %362, <i32 1, i32 1, i32 1, i32 1>
  %382 = load <4 x i32>, ptr %14, align 16, !tbaa !21
  %383 = add nsw <4 x i32> %381, %382
  store <4 x i32> %383, ptr %18, align 16, !tbaa !21
  %384 = extractelement <4 x i32> %362, i64 3
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !21
  %388 = sext i32 %387 to i64
  %.reass987.3 = mul i64 %factor.op.mul986, %388
  %389 = add nsw i64 %.reass987.3, %7
  %390 = getelementptr inbounds i8, ptr %26, i64 24
  store i64 %389, ptr %390, align 8, !tbaa !26
  %391 = getelementptr inbounds i8, ptr %15, i64 12
  %392 = load i32, ptr %391, align 4, !tbaa !21
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !21
  %396 = sext i32 %395 to i64
  %.reass989.3 = mul i64 %factor.op.mul988, %396
  %397 = add nsw i64 %.reass989.3, %8
  %398 = getelementptr inbounds i8, ptr %27, i64 24
  store i64 %397, ptr %398, align 8, !tbaa !26
  %.pre1012 = load i32, ptr %88, align 1, !tbaa !16
  br label %.loopexit952

.loopexit952:                                     ; preds = %.loopexit952.loopexit, %.loopexit953
  %399 = phi i32 [ %.pre1012, %.loopexit952.loopexit ], [ %313, %.loopexit953 ]
  %400 = and i32 %399, 3
  %or.cond910.not = icmp eq i32 %400, 2
  br i1 %or.cond910.not, label %401, label %.loopexit951

401:                                              ; preds = %.loopexit952
  %.not886 = icmp eq i32 %.0824, 0
  %.not888 = icmp eq i32 %.0825, 0
  %402 = select i1 %.not888, i32 1610883183, i32 1610895609
  %403 = select i1 %.not888, i32 1610883182, i32 1610895608
  %404 = select i1 %.not886, i32 %403, i32 %402
  %.not889 = icmp eq i32 %.0826, 0
  %.not891 = icmp eq i32 %.0827, 0
  %405 = select i1 %.not891, i32 1610883183, i32 1610895609
  %406 = select i1 %.not891, i32 1610883182, i32 1610895608
  %407 = select i1 %.not889, i32 %406, i32 %405
  br i1 %or.cond5, label %.thread932, label %408

.thread932:                                       ; preds = %401
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %404, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %407, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820)
  br label %.loopexit951.loopexit

408:                                              ; preds = %401
  %409 = icmp eq i32 %39, 1
  %or.cond38 = select i1 %156, i1 %409, i1 false
  br i1 %or.cond38, label %410, label %411

410:                                              ; preds = %408
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %404, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %407, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  br label %.loopexit951.loopexit

411:                                              ; preds = %408
  %412 = icmp eq i32 %38, 1
  %or.cond40 = select i1 %412, i1 %157, i1 false
  br i1 %or.cond40, label %413, label %.thread936

413:                                              ; preds = %411
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %404, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %407, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  br label %.loopexit951.loopexit

.thread936:                                       ; preds = %411
  %or.cond42 = select i1 %412, i1 %409, i1 false
  br i1 %or.cond42, label %414, label %.loopexit951.loopexit

414:                                              ; preds = %.thread936
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %404, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %407, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  br label %.loopexit951.loopexit

.loopexit951.loopexit:                            ; preds = %413, %410, %.thread932, %414, %.thread936
  %415 = getelementptr inbounds i8, ptr %3, i64 12
  %416 = load i32, ptr %415, align 4, !tbaa !28
  %417 = zext i32 %416 to i64
  %418 = load i32, ptr %15, align 16, !tbaa !21
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %419
  %421 = load i32, ptr %420, align 4, !tbaa !21
  %422 = sext i32 %421 to i64
  %423 = mul nsw i64 %417, %422
  %424 = add nsw i64 %423, %8
  store i64 %424, ptr %27, align 16, !tbaa !26
  %425 = getelementptr inbounds i8, ptr %26, i64 8
  %426 = getelementptr inbounds i8, ptr %15, i64 4
  %427 = load i32, ptr %426, align 4, !tbaa !21
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !21
  %431 = sext i32 %430 to i64
  %432 = mul nsw i64 %417, %431
  %433 = add nsw i64 %432, %8
  %434 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %433, ptr %434, align 8, !tbaa !26
  %435 = getelementptr inbounds i8, ptr %26, i64 16
  %436 = getelementptr inbounds i8, ptr %15, i64 8
  %437 = load i32, ptr %436, align 8, !tbaa !21
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %438
  %440 = load i32, ptr %439, align 4, !tbaa !21
  %441 = sext i32 %440 to i64
  %442 = mul nsw i64 %417, %441
  %443 = add nsw i64 %442, %8
  %444 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %443, ptr %444, align 16, !tbaa !26
  %445 = load <4 x i32>, ptr %13, align 16, !tbaa !21
  %446 = extractelement <4 x i32> %445, i64 0
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %447
  %449 = load i32, ptr %448, align 4, !tbaa !21
  %450 = shl nsw i32 %449, 1
  %451 = sext i32 %450 to i64
  %452 = add nsw i64 %451, %7
  store i64 %452, ptr %26, align 16, !tbaa !26
  %453 = extractelement <4 x i32> %445, i64 1
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %454
  %456 = load i32, ptr %455, align 4, !tbaa !21
  %457 = shl nsw i32 %456, 1
  %458 = sext i32 %457 to i64
  %459 = add nsw i64 %458, %7
  store i64 %459, ptr %425, align 8, !tbaa !26
  %460 = extractelement <4 x i32> %445, i64 2
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %461
  %463 = load i32, ptr %462, align 4, !tbaa !21
  %464 = shl nsw i32 %463, 1
  %465 = sext i32 %464 to i64
  %466 = add nsw i64 %465, %7
  store i64 %466, ptr %435, align 16, !tbaa !26
  %467 = shl nsw <4 x i32> %445, <i32 1, i32 1, i32 1, i32 1>
  %468 = load <4 x i32>, ptr %14, align 16, !tbaa !21
  %469 = add nsw <4 x i32> %467, %468
  store <4 x i32> %469, ptr %18, align 16, !tbaa !21
  %470 = extractelement <4 x i32> %445, i64 3
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %471
  %473 = load i32, ptr %472, align 4, !tbaa !21
  %474 = shl nsw i32 %473, 1
  %475 = sext i32 %474 to i64
  br label %.loopexit951.sink.split

476:                                              ; preds = %222
  br i1 %or.cond907, label %477, label %.loopexit951

477:                                              ; preds = %476
  %.not865 = icmp eq i32 %.0824, 0
  %.not867 = icmp eq i32 %.0825, 0
  %478 = select i1 %.not867, i32 1610948683, i32 1610948682
  %479 = select i1 %.not867, i32 1611079755, i32 1611079754
  %480 = select i1 %.not865, i32 %479, i32 %478
  %.not868 = icmp eq i32 %.0826, 0
  %.not870 = icmp eq i32 %.0827, 0
  %481 = select i1 %.not870, i32 1610948683, i32 1610948682
  %482 = select i1 %.not870, i32 1611079755, i32 1611079754
  %483 = select i1 %.not868, i32 %482, i32 %481
  br i1 %or.cond5, label %.loopexit960.thread, label %.loopexit960

.loopexit960.thread:                              ; preds = %477
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef 4, i32 noundef 5)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef 7, i32 noundef 7)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef 7, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef 1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %480, i32 noundef %480, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %483, i32 noundef -1, i32 noundef %483, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820)
  %484 = getelementptr inbounds i8, ptr %3, i64 144
  %485 = load i32, ptr %484, align 8, !tbaa !29
  %486 = zext i32 %485 to i64
  %487 = getelementptr inbounds i8, ptr %4, i64 16
  %488 = load i32, ptr %487, align 1, !tbaa !24
  %489 = zext i32 %488 to i64
  %490 = getelementptr inbounds i8, ptr %3, i64 16
  %491 = load i32, ptr %490, align 8, !tbaa !25
  %492 = zext i32 %491 to i64
  %factor.op.mul = mul nuw i64 %489, %492
  %493 = load i32, ptr %15, align 16, !tbaa !21
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %494
  %496 = load i32, ptr %495, align 4, !tbaa !21
  %497 = sext i32 %496 to i64
  %.reass = mul i64 %factor.op.mul, %497
  %498 = add nsw i64 %.reass, %8
  store i64 %498, ptr %27, align 16, !tbaa !26
  %499 = getelementptr inbounds i8, ptr %26, i64 8
  %500 = getelementptr inbounds i8, ptr %15, i64 4
  %501 = load i32, ptr %500, align 4, !tbaa !21
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %502
  %504 = load i32, ptr %503, align 4, !tbaa !21
  %505 = sext i32 %504 to i64
  %.reass.1 = mul i64 %factor.op.mul, %505
  %506 = add nsw i64 %.reass.1, %8
  %507 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %506, ptr %507, align 8, !tbaa !26
  %508 = getelementptr inbounds i8, ptr %26, i64 16
  %509 = getelementptr inbounds i8, ptr %15, i64 8
  %510 = load i32, ptr %509, align 8, !tbaa !21
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %511
  %513 = load i32, ptr %512, align 4, !tbaa !21
  %514 = sext i32 %513 to i64
  %.reass.2 = mul i64 %factor.op.mul, %514
  %515 = add nsw i64 %.reass.2, %8
  %516 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %515, ptr %516, align 16, !tbaa !26
  %517 = load <4 x i32>, ptr %13, align 16, !tbaa !21
  %518 = extractelement <4 x i32> %517, i64 0
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %519
  %521 = load i32, ptr %520, align 4, !tbaa !21
  %522 = sext i32 %521 to i64
  %523 = shl nsw i64 %522, 2
  %524 = sdiv i64 %523, %486
  %525 = add nsw i64 %524, %7
  store i64 %525, ptr %26, align 16, !tbaa !26
  %526 = extractelement <4 x i32> %517, i64 1
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %527
  %529 = load i32, ptr %528, align 4, !tbaa !21
  %530 = sext i32 %529 to i64
  %531 = shl nsw i64 %530, 2
  %532 = sdiv i64 %531, %486
  %533 = add nsw i64 %532, %7
  store i64 %533, ptr %499, align 8, !tbaa !26
  %534 = extractelement <4 x i32> %517, i64 2
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %535
  %537 = load i32, ptr %536, align 4, !tbaa !21
  %538 = sext i32 %537 to i64
  %539 = shl nsw i64 %538, 2
  %540 = sdiv i64 %539, %486
  %541 = add nsw i64 %540, %7
  store i64 %541, ptr %508, align 16, !tbaa !26
  %542 = shl nsw <4 x i32> %517, <i32 1, i32 1, i32 1, i32 1>
  %543 = load <4 x i32>, ptr %14, align 16, !tbaa !21
  %544 = add nsw <4 x i32> %542, %543
  store <4 x i32> %544, ptr %18, align 16, !tbaa !21
  %545 = extractelement <4 x i32> %517, i64 3
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %546
  %548 = load i32, ptr %547, align 4, !tbaa !21
  %549 = sext i32 %548 to i64
  %550 = shl nsw i64 %549, 2
  %551 = sdiv i64 %550, %486
  %552 = add nsw i64 %551, %7
  %553 = getelementptr inbounds i8, ptr %26, i64 24
  store i64 %552, ptr %553, align 8, !tbaa !26
  %554 = getelementptr inbounds i8, ptr %15, i64 12
  %555 = load i32, ptr %554, align 4, !tbaa !21
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %556
  %558 = load i32, ptr %557, align 4, !tbaa !21
  %559 = sext i32 %558 to i64
  %.reass.3 = mul i64 %factor.op.mul, %559
  %560 = add nsw i64 %.reass.3, %8
  %561 = getelementptr inbounds i8, ptr %27, i64 24
  store i64 %560, ptr %561, align 8, !tbaa !26
  br label %.loopexit959

.loopexit960:                                     ; preds = %477
  %562 = icmp eq i32 %38, 1
  %563 = icmp eq i32 %39, 4
  %or.cond46 = select i1 %562, i1 %563, i1 false
  br i1 %or.cond46, label %.loopexit959.thread, label %.loopexit959

.loopexit959.thread:                              ; preds = %.loopexit960
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef 3)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 4, i32 noundef 4, i32 noundef 4)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef 7)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef 7)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef 3)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %480, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %483, i32 noundef %483, i32 noundef %483, i32 noundef %483)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820)
  %564 = getelementptr inbounds i8, ptr %3, i64 144
  %565 = load i32, ptr %564, align 8, !tbaa !29
  %566 = zext i32 %565 to i64
  %567 = getelementptr inbounds i8, ptr %4, i64 16
  %568 = load i32, ptr %567, align 1, !tbaa !24
  %569 = zext i32 %568 to i64
  %570 = getelementptr inbounds i8, ptr %3, i64 16
  %571 = load i32, ptr %570, align 8, !tbaa !25
  %572 = zext i32 %571 to i64
  %factor.op.mul965 = mul nuw i64 %569, %572
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %18, ptr noundef nonnull align 16 dereferenceable(16) %14, i64 16, i1 false), !tbaa !21
  %573 = load i32, ptr %13, align 16, !tbaa !21
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %574
  %576 = load i32, ptr %575, align 4, !tbaa !21
  %577 = sext i32 %576 to i64
  %578 = shl nsw i64 %577, 2
  %579 = sdiv i64 %578, %566
  %580 = add nsw i64 %579, %7
  store i64 %580, ptr %26, align 16, !tbaa !26
  %581 = load i32, ptr %15, align 16, !tbaa !21
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %582
  %584 = load i32, ptr %583, align 4, !tbaa !21
  %585 = sext i32 %584 to i64
  %.reass966 = mul i64 %factor.op.mul965, %585
  %586 = add nsw i64 %.reass966, %8
  store i64 %586, ptr %27, align 16, !tbaa !26
  %587 = getelementptr inbounds i8, ptr %13, i64 4
  %588 = load i32, ptr %587, align 4, !tbaa !21
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %589
  %591 = load i32, ptr %590, align 4, !tbaa !21
  %592 = sext i32 %591 to i64
  %593 = shl nsw i64 %592, 2
  %594 = sdiv i64 %593, %566
  %595 = add nsw i64 %594, %7
  %596 = getelementptr inbounds i8, ptr %26, i64 8
  store i64 %595, ptr %596, align 8, !tbaa !26
  %597 = getelementptr inbounds i8, ptr %15, i64 4
  %598 = load i32, ptr %597, align 4, !tbaa !21
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %599
  %601 = load i32, ptr %600, align 4, !tbaa !21
  %602 = sext i32 %601 to i64
  %.reass966.1 = mul i64 %factor.op.mul965, %602
  %603 = add nsw i64 %.reass966.1, %8
  %604 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %603, ptr %604, align 8, !tbaa !26
  %605 = getelementptr inbounds i8, ptr %13, i64 8
  %606 = load i32, ptr %605, align 8, !tbaa !21
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %607
  %609 = load i32, ptr %608, align 4, !tbaa !21
  %610 = sext i32 %609 to i64
  %611 = shl nsw i64 %610, 2
  %612 = sdiv i64 %611, %566
  %613 = add nsw i64 %612, %7
  %614 = getelementptr inbounds i8, ptr %26, i64 16
  store i64 %613, ptr %614, align 16, !tbaa !26
  %615 = getelementptr inbounds i8, ptr %15, i64 8
  %616 = load i32, ptr %615, align 8, !tbaa !21
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %617
  %619 = load i32, ptr %618, align 4, !tbaa !21
  %620 = sext i32 %619 to i64
  %.reass966.2 = mul i64 %factor.op.mul965, %620
  %621 = add nsw i64 %.reass966.2, %8
  %622 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %621, ptr %622, align 16, !tbaa !26
  %623 = getelementptr inbounds i8, ptr %13, i64 12
  %624 = load i32, ptr %623, align 4, !tbaa !21
  br label %.loopexit958.thread

.loopexit959:                                     ; preds = %.loopexit960.thread, %.loopexit960
  %625 = phi i1 [ false, %.loopexit960.thread ], [ %562, %.loopexit960 ]
  %or.cond48 = select i1 %625, i1 %157, i1 false
  br i1 %or.cond48, label %.loopexit958.loopexit, label %.loopexit958

.loopexit958.loopexit:                            ; preds = %.loopexit959
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 4, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef 7, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %480, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %483, i32 noundef %483, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  %626 = getelementptr inbounds i8, ptr %3, i64 144
  %627 = load i32, ptr %626, align 8, !tbaa !29
  %628 = zext i32 %627 to i64
  %629 = getelementptr inbounds i8, ptr %4, i64 16
  %630 = load i32, ptr %629, align 1, !tbaa !24
  %631 = zext i32 %630 to i64
  %632 = getelementptr inbounds i8, ptr %3, i64 16
  %633 = load i32, ptr %632, align 8, !tbaa !25
  %634 = zext i32 %633 to i64
  %factor.op.mul968 = mul nuw i64 %631, %634
  %635 = load i32, ptr %15, align 16, !tbaa !21
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %636
  %638 = load i32, ptr %637, align 4, !tbaa !21
  %639 = sext i32 %638 to i64
  %.reass969 = mul i64 %factor.op.mul968, %639
  %640 = add nsw i64 %.reass969, %8
  store i64 %640, ptr %27, align 16, !tbaa !26
  %641 = getelementptr inbounds i8, ptr %26, i64 8
  %642 = getelementptr inbounds i8, ptr %15, i64 4
  %643 = load i32, ptr %642, align 4, !tbaa !21
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %644
  %646 = load i32, ptr %645, align 4, !tbaa !21
  %647 = sext i32 %646 to i64
  %.reass969.1 = mul i64 %factor.op.mul968, %647
  %648 = add nsw i64 %.reass969.1, %8
  %649 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %648, ptr %649, align 8, !tbaa !26
  %650 = getelementptr inbounds i8, ptr %26, i64 16
  %651 = getelementptr inbounds i8, ptr %15, i64 8
  %652 = load i32, ptr %651, align 8, !tbaa !21
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %653
  %655 = load i32, ptr %654, align 4, !tbaa !21
  %656 = sext i32 %655 to i64
  %.reass969.2 = mul i64 %factor.op.mul968, %656
  %657 = add nsw i64 %.reass969.2, %8
  %658 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %657, ptr %658, align 16, !tbaa !26
  %659 = load <4 x i32>, ptr %13, align 16, !tbaa !21
  %660 = extractelement <4 x i32> %659, i64 0
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %661
  %663 = load i32, ptr %662, align 4, !tbaa !21
  %664 = sext i32 %663 to i64
  %665 = shl nsw i64 %664, 2
  %666 = sdiv i64 %665, %628
  %667 = add nsw i64 %666, %7
  store i64 %667, ptr %26, align 16, !tbaa !26
  %668 = extractelement <4 x i32> %659, i64 1
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %669
  %671 = load i32, ptr %670, align 4, !tbaa !21
  %672 = sext i32 %671 to i64
  %673 = shl nsw i64 %672, 2
  %674 = sdiv i64 %673, %628
  %675 = add nsw i64 %674, %7
  store i64 %675, ptr %641, align 8, !tbaa !26
  %676 = extractelement <4 x i32> %659, i64 2
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %677
  %679 = load i32, ptr %678, align 4, !tbaa !21
  %680 = sext i32 %679 to i64
  %681 = shl nsw i64 %680, 2
  %682 = sdiv i64 %681, %628
  %683 = add nsw i64 %682, %7
  store i64 %683, ptr %650, align 16, !tbaa !26
  %684 = shl nsw <4 x i32> %659, <i32 1, i32 1, i32 1, i32 1>
  %685 = load <4 x i32>, ptr %14, align 16, !tbaa !21
  %686 = add nsw <4 x i32> %684, %685
  store <4 x i32> %686, ptr %18, align 16, !tbaa !21
  %687 = extractelement <4 x i32> %659, i64 3
  br label %.loopexit958.thread

.loopexit958.thread:                              ; preds = %.loopexit959.thread, %.loopexit958.loopexit
  %.sink1054 = phi i32 [ %624, %.loopexit959.thread ], [ %687, %.loopexit958.loopexit ]
  %.sink1049 = phi i64 [ %566, %.loopexit959.thread ], [ %628, %.loopexit958.loopexit ]
  %factor.op.mul965.sink = phi i64 [ %factor.op.mul965, %.loopexit959.thread ], [ %factor.op.mul968, %.loopexit958.loopexit ]
  %.ph = phi i1 [ %562, %.loopexit959.thread ], [ %625, %.loopexit958.loopexit ]
  %688 = sext i32 %.sink1054 to i64
  %689 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %688
  %690 = load i32, ptr %689, align 4, !tbaa !21
  %691 = sext i32 %690 to i64
  %692 = shl nsw i64 %691, 2
  %693 = sdiv i64 %692, %.sink1049
  %694 = add nsw i64 %693, %7
  %695 = getelementptr inbounds i8, ptr %26, i64 24
  store i64 %694, ptr %695, align 8, !tbaa !26
  %696 = getelementptr inbounds i8, ptr %15, i64 12
  %697 = load i32, ptr %696, align 4, !tbaa !21
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %698
  %700 = load i32, ptr %699, align 4, !tbaa !21
  %701 = sext i32 %700 to i64
  %.reass966.3 = mul i64 %factor.op.mul965.sink, %701
  %702 = add nsw i64 %.reass966.3, %8
  %703 = getelementptr inbounds i8, ptr %27, i64 24
  store i64 %702, ptr %703, align 8, !tbaa !26
  br label %.loopexit957

.loopexit958:                                     ; preds = %.loopexit959
  %704 = icmp eq i32 %39, 1
  %or.cond50 = select i1 %156, i1 %704, i1 false
  br i1 %or.cond50, label %.loopexit957.thread, label %.loopexit957

.loopexit957.thread:                              ; preds = %.loopexit958
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef 5, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %480, i32 noundef %480, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %483, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1, i32 noundef -1)
  %.not871 = icmp eq i32 %62, 0
  %705 = getelementptr inbounds i8, ptr %3, i64 144
  %706 = load i32, ptr %705, align 8, !tbaa !29
  %707 = zext i32 %706 to i64
  %708 = getelementptr inbounds i8, ptr %4, i64 16
  %709 = load i32, ptr %708, align 1, !tbaa !24
  %710 = zext i32 %709 to i64
  %711 = getelementptr inbounds i8, ptr %3, i64 16
  %712 = load i32, ptr %711, align 8, !tbaa !25
  %713 = zext i32 %712 to i64
  %factor.op.mul971 = mul nuw i64 %710, %713
  %714 = load i32, ptr %15, align 16, !tbaa !21
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %715
  %717 = load i32, ptr %716, align 4, !tbaa !21
  %718 = sext i32 %717 to i64
  %.reass972 = mul i64 %factor.op.mul971, %718
  %719 = add nsw i64 %.reass972, %8
  store i64 %719, ptr %27, align 16, !tbaa !26
  %720 = getelementptr inbounds i8, ptr %26, i64 8
  %721 = getelementptr inbounds i8, ptr %15, i64 4
  %722 = load i32, ptr %721, align 4, !tbaa !21
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !21
  %726 = sext i32 %725 to i64
  %.reass972.1 = mul i64 %factor.op.mul971, %726
  %727 = add nsw i64 %.reass972.1, %8
  %728 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %727, ptr %728, align 8, !tbaa !26
  %729 = getelementptr inbounds i8, ptr %26, i64 16
  %730 = getelementptr inbounds i8, ptr %15, i64 8
  %731 = load i32, ptr %730, align 8, !tbaa !21
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %732
  %734 = load i32, ptr %733, align 4, !tbaa !21
  %735 = sext i32 %734 to i64
  %.reass972.2 = mul i64 %factor.op.mul971, %735
  %736 = add nsw i64 %.reass972.2, %8
  %737 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %736, ptr %737, align 16, !tbaa !26
  %738 = load <4 x i32>, ptr %13, align 16, !tbaa !21
  %739 = extractelement <4 x i32> %738, i64 0
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %740
  %742 = load i32, ptr %741, align 4, !tbaa !21
  %743 = sext i32 %742 to i64
  %744 = shl nsw i64 %743, 2
  %745 = sdiv i64 %744, %707
  %746 = add nsw i64 %745, %7
  store i64 %746, ptr %26, align 16, !tbaa !26
  %747 = extractelement <4 x i32> %738, i64 1
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %748
  %750 = load i32, ptr %749, align 4, !tbaa !21
  %751 = sext i32 %750 to i64
  %752 = shl nsw i64 %751, 2
  %753 = sdiv i64 %752, %707
  %754 = add nsw i64 %753, %7
  store i64 %754, ptr %720, align 8, !tbaa !26
  %755 = extractelement <4 x i32> %738, i64 2
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %756
  %758 = load i32, ptr %757, align 4, !tbaa !21
  %759 = sext i32 %758 to i64
  %760 = shl nsw i64 %759, 2
  %761 = sdiv i64 %760, %707
  %762 = add nsw i64 %761, %7
  store i64 %762, ptr %729, align 16, !tbaa !26
  %763 = shl nsw <4 x i32> %738, <i32 1, i32 1, i32 1, i32 1>
  %764 = load <4 x i32>, ptr %14, align 16
  %765 = add nsw <4 x i32> %763, %764
  %766 = insertelement <4 x i1> poison, i1 %.not871, i64 0
  %767 = shufflevector <4 x i1> %766, <4 x i1> poison, <4 x i32> zeroinitializer
  %768 = select <4 x i1> %767, <4 x i32> %765, <4 x i32> %738
  store <4 x i32> %768, ptr %18, align 16
  %769 = extractelement <4 x i32> %738, i64 3
  br label %.loopexit955.sink.split

.loopexit957:                                     ; preds = %.loopexit958.thread, %.loopexit958
  %770 = phi i1 [ false, %.loopexit958.thread ], [ %704, %.loopexit958 ]
  %771 = phi i1 [ %.ph, %.loopexit958.thread ], [ %625, %.loopexit958 ]
  %772 = icmp eq i32 %38, 3
  %or.cond52 = select i1 %772, i1 %770, i1 false
  br i1 %or.cond52, label %.loopexit956.loopexit, label %.loopexit956

.loopexit956.loopexit:                            ; preds = %.loopexit957
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 4, i32 noundef 5, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef 4, i32 noundef 5, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %480, i32 noundef %480, i32 noundef %480, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %483, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820, i32 noundef -1)
  %773 = getelementptr inbounds i8, ptr %3, i64 144
  %774 = load i32, ptr %773, align 8, !tbaa !29
  %775 = zext i32 %774 to i64
  %776 = getelementptr inbounds i8, ptr %4, i64 16
  %777 = load i32, ptr %776, align 1, !tbaa !24
  %778 = zext i32 %777 to i64
  %779 = getelementptr inbounds i8, ptr %3, i64 12
  %780 = load i32, ptr %779, align 4, !tbaa !28
  %781 = zext i32 %780 to i64
  %factor.op.mul974 = mul nuw i64 %778, %781
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %18, ptr noundef nonnull align 16 dereferenceable(16) %13, i64 16, i1 false), !tbaa !21
  %782 = load i32, ptr %13, align 16, !tbaa !21
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %783
  %785 = load i32, ptr %784, align 4, !tbaa !21
  %786 = sext i32 %785 to i64
  %787 = shl nsw i64 %786, 2
  %788 = sdiv i64 %787, %775
  %789 = add nsw i64 %788, %7
  store i64 %789, ptr %26, align 16, !tbaa !26
  %790 = load i32, ptr %15, align 16, !tbaa !21
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %791
  %793 = load i32, ptr %792, align 4, !tbaa !21
  %794 = sext i32 %793 to i64
  %.reass975 = mul i64 %factor.op.mul974, %794
  %795 = add nsw i64 %.reass975, %8
  store i64 %795, ptr %27, align 16, !tbaa !26
  %796 = getelementptr inbounds i8, ptr %13, i64 4
  %797 = load i32, ptr %796, align 4, !tbaa !21
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %798
  %800 = load i32, ptr %799, align 4, !tbaa !21
  %801 = sext i32 %800 to i64
  %802 = shl nsw i64 %801, 2
  %803 = sdiv i64 %802, %775
  %804 = add nsw i64 %803, %7
  %805 = getelementptr inbounds i8, ptr %26, i64 8
  store i64 %804, ptr %805, align 8, !tbaa !26
  %806 = getelementptr inbounds i8, ptr %15, i64 4
  %807 = load i32, ptr %806, align 4, !tbaa !21
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %808
  %810 = load i32, ptr %809, align 4, !tbaa !21
  %811 = sext i32 %810 to i64
  %.reass975.1 = mul i64 %factor.op.mul974, %811
  %812 = add nsw i64 %.reass975.1, %8
  %813 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %812, ptr %813, align 8, !tbaa !26
  %814 = getelementptr inbounds i8, ptr %13, i64 8
  %815 = load i32, ptr %814, align 8, !tbaa !21
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %816
  %818 = load i32, ptr %817, align 4, !tbaa !21
  %819 = sext i32 %818 to i64
  %820 = shl nsw i64 %819, 2
  %821 = sdiv i64 %820, %775
  %822 = add nsw i64 %821, %7
  %823 = getelementptr inbounds i8, ptr %26, i64 16
  store i64 %822, ptr %823, align 16, !tbaa !26
  %824 = getelementptr inbounds i8, ptr %15, i64 8
  %825 = load i32, ptr %824, align 8, !tbaa !21
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %826
  %828 = load i32, ptr %827, align 4, !tbaa !21
  %829 = sext i32 %828 to i64
  %.reass975.2 = mul i64 %factor.op.mul974, %829
  %830 = add nsw i64 %.reass975.2, %8
  %831 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %830, ptr %831, align 16, !tbaa !26
  %832 = getelementptr inbounds i8, ptr %13, i64 12
  %833 = load i32, ptr %832, align 4, !tbaa !21
  br label %.loopexit955.sink.split

.loopexit956:                                     ; preds = %.loopexit957
  %834 = icmp eq i32 %38, 4
  %or.cond54 = select i1 %834, i1 %770, i1 false
  br i1 %or.cond54, label %.loopexit955.loopexit, label %.loopexit955

.loopexit955.loopexit:                            ; preds = %.loopexit956
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef 1, i32 noundef 2, i32 noundef 3)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef 4, i32 noundef 4, i32 noundef 5)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef 4, i32 noundef 4, i32 noundef 5)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef 6, i32 noundef 6, i32 noundef 6)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %480, i32 noundef %480, i32 noundef %480, i32 noundef %480)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %483, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820, i32 noundef %.0820)
  %835 = getelementptr inbounds i8, ptr %3, i64 144
  %836 = load i32, ptr %835, align 8, !tbaa !29
  %837 = zext i32 %836 to i64
  %838 = getelementptr inbounds i8, ptr %4, i64 16
  %839 = load i32, ptr %838, align 1, !tbaa !24
  %840 = zext i32 %839 to i64
  %841 = getelementptr inbounds i8, ptr %3, i64 12
  %842 = load i32, ptr %841, align 4, !tbaa !28
  %843 = zext i32 %842 to i64
  %factor.op.mul977 = mul nuw i64 %840, %843
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %18, ptr noundef nonnull align 16 dereferenceable(16) %13, i64 16, i1 false), !tbaa !21
  %844 = load i32, ptr %13, align 16, !tbaa !21
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %845
  %847 = load i32, ptr %846, align 4, !tbaa !21
  %848 = sext i32 %847 to i64
  %849 = shl nsw i64 %848, 2
  %850 = sdiv i64 %849, %837
  %851 = add nsw i64 %850, %7
  store i64 %851, ptr %26, align 16, !tbaa !26
  %852 = load i32, ptr %15, align 16, !tbaa !21
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %853
  %855 = load i32, ptr %854, align 4, !tbaa !21
  %856 = sext i32 %855 to i64
  %.reass978 = mul i64 %factor.op.mul977, %856
  %857 = add nsw i64 %.reass978, %8
  store i64 %857, ptr %27, align 16, !tbaa !26
  %858 = getelementptr inbounds i8, ptr %13, i64 4
  %859 = load i32, ptr %858, align 4, !tbaa !21
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %860
  %862 = load i32, ptr %861, align 4, !tbaa !21
  %863 = sext i32 %862 to i64
  %864 = shl nsw i64 %863, 2
  %865 = sdiv i64 %864, %837
  %866 = add nsw i64 %865, %7
  %867 = getelementptr inbounds i8, ptr %26, i64 8
  store i64 %866, ptr %867, align 8, !tbaa !26
  %868 = getelementptr inbounds i8, ptr %15, i64 4
  %869 = load i32, ptr %868, align 4, !tbaa !21
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %870
  %872 = load i32, ptr %871, align 4, !tbaa !21
  %873 = sext i32 %872 to i64
  %.reass978.1 = mul i64 %factor.op.mul977, %873
  %874 = add nsw i64 %.reass978.1, %8
  %875 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %874, ptr %875, align 8, !tbaa !26
  %876 = getelementptr inbounds i8, ptr %13, i64 8
  %877 = load i32, ptr %876, align 8, !tbaa !21
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %878
  %880 = load i32, ptr %879, align 4, !tbaa !21
  %881 = sext i32 %880 to i64
  %882 = shl nsw i64 %881, 2
  %883 = sdiv i64 %882, %837
  %884 = add nsw i64 %883, %7
  %885 = getelementptr inbounds i8, ptr %26, i64 16
  store i64 %884, ptr %885, align 16, !tbaa !26
  %886 = getelementptr inbounds i8, ptr %15, i64 8
  %887 = load i32, ptr %886, align 8, !tbaa !21
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %888
  %890 = load i32, ptr %889, align 4, !tbaa !21
  %891 = sext i32 %890 to i64
  %.reass978.2 = mul i64 %factor.op.mul977, %891
  %892 = add nsw i64 %.reass978.2, %8
  %893 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %892, ptr %893, align 16, !tbaa !26
  %894 = getelementptr inbounds i8, ptr %13, i64 12
  %895 = load i32, ptr %894, align 4, !tbaa !21
  br label %.loopexit955.sink.split

.loopexit955.sink.split:                          ; preds = %.loopexit955.loopexit, %.loopexit957.thread, %.loopexit956.loopexit
  %.sink1074 = phi i32 [ %833, %.loopexit956.loopexit ], [ %769, %.loopexit957.thread ], [ %895, %.loopexit955.loopexit ]
  %.sink1069 = phi i64 [ %775, %.loopexit956.loopexit ], [ %707, %.loopexit957.thread ], [ %837, %.loopexit955.loopexit ]
  %factor.op.mul974.sink = phi i64 [ %factor.op.mul974, %.loopexit956.loopexit ], [ %factor.op.mul971, %.loopexit957.thread ], [ %factor.op.mul977, %.loopexit955.loopexit ]
  %.ph1055 = phi i1 [ %770, %.loopexit956.loopexit ], [ %704, %.loopexit957.thread ], [ %770, %.loopexit955.loopexit ]
  %.ph1056 = phi i1 [ %771, %.loopexit956.loopexit ], [ %625, %.loopexit957.thread ], [ %771, %.loopexit955.loopexit ]
  %896 = sext i32 %.sink1074 to i64
  %897 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %896
  %898 = load i32, ptr %897, align 4, !tbaa !21
  %899 = sext i32 %898 to i64
  %900 = shl nsw i64 %899, 2
  %901 = sdiv i64 %900, %.sink1069
  %902 = add nsw i64 %901, %7
  %903 = getelementptr inbounds i8, ptr %26, i64 24
  store i64 %902, ptr %903, align 8, !tbaa !26
  %904 = getelementptr inbounds i8, ptr %15, i64 12
  %905 = load i32, ptr %904, align 4, !tbaa !21
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %906
  %908 = load i32, ptr %907, align 4, !tbaa !21
  %909 = sext i32 %908 to i64
  %.reass975.3 = mul i64 %factor.op.mul974.sink, %909
  %910 = add nsw i64 %.reass975.3, %8
  %911 = getelementptr inbounds i8, ptr %27, i64 24
  store i64 %910, ptr %911, align 8, !tbaa !26
  br label %.loopexit955

.loopexit955:                                     ; preds = %.loopexit955.sink.split, %.loopexit956
  %912 = phi i1 [ %770, %.loopexit956 ], [ %.ph1055, %.loopexit955.sink.split ]
  %913 = phi i1 [ %771, %.loopexit956 ], [ %.ph1056, %.loopexit955.sink.split ]
  %or.cond56 = select i1 %913, i1 %912, i1 false
  br i1 %or.cond56, label %.loopexit951.loopexit994, label %.loopexit951

.loopexit951.loopexit994:                         ; preds = %.loopexit955
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %13, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %14, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %16, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %21, i32 noundef 4, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %17, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %22, i32 noundef 6, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %15, i32 noundef 0, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %23, i32 noundef %480, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %24, i32 noundef %483, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  call void @libxsmm_generator_gemm_amx_fill_array_4_entries(ptr noundef nonnull %25, i32 noundef %.0820, i32 noundef -1, i32 noundef -1, i32 noundef -1)
  %914 = getelementptr inbounds i8, ptr %3, i64 144
  %915 = load i32, ptr %914, align 8, !tbaa !29
  %916 = zext i32 %915 to i64
  %917 = getelementptr inbounds i8, ptr %4, i64 16
  %918 = load i32, ptr %917, align 1, !tbaa !24
  %919 = zext i32 %918 to i64
  %920 = getelementptr inbounds i8, ptr %3, i64 12
  %921 = load i32, ptr %920, align 4, !tbaa !28
  %922 = zext i32 %921 to i64
  %factor.op.mul980 = mul nuw i64 %919, %922
  %923 = load i32, ptr %15, align 16, !tbaa !21
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %924
  %926 = load i32, ptr %925, align 4, !tbaa !21
  %927 = sext i32 %926 to i64
  %.reass981 = mul i64 %factor.op.mul980, %927
  %928 = add nsw i64 %.reass981, %8
  store i64 %928, ptr %27, align 16, !tbaa !26
  %929 = getelementptr inbounds i8, ptr %26, i64 8
  %930 = getelementptr inbounds i8, ptr %15, i64 4
  %931 = load i32, ptr %930, align 4, !tbaa !21
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %932
  %934 = load i32, ptr %933, align 4, !tbaa !21
  %935 = sext i32 %934 to i64
  %.reass981.1 = mul i64 %factor.op.mul980, %935
  %936 = add nsw i64 %.reass981.1, %8
  %937 = getelementptr inbounds i8, ptr %27, i64 8
  store i64 %936, ptr %937, align 8, !tbaa !26
  %938 = getelementptr inbounds i8, ptr %26, i64 16
  %939 = getelementptr inbounds i8, ptr %15, i64 8
  %940 = load i32, ptr %939, align 8, !tbaa !21
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %941
  %943 = load i32, ptr %942, align 4, !tbaa !21
  %944 = sext i32 %943 to i64
  %.reass981.2 = mul i64 %factor.op.mul980, %944
  %945 = add nsw i64 %.reass981.2, %8
  %946 = getelementptr inbounds i8, ptr %27, i64 16
  store i64 %945, ptr %946, align 16, !tbaa !26
  %947 = load <4 x i32>, ptr %13, align 16, !tbaa !21
  %948 = extractelement <4 x i32> %947, i64 0
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %949
  %951 = load i32, ptr %950, align 4, !tbaa !21
  %952 = sext i32 %951 to i64
  %953 = shl nsw i64 %952, 2
  %954 = sdiv i64 %953, %916
  %955 = add nsw i64 %954, %7
  store i64 %955, ptr %26, align 16, !tbaa !26
  %956 = extractelement <4 x i32> %947, i64 1
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %957
  %959 = load i32, ptr %958, align 4, !tbaa !21
  %960 = sext i32 %959 to i64
  %961 = shl nsw i64 %960, 2
  %962 = sdiv i64 %961, %916
  %963 = add nsw i64 %962, %7
  store i64 %963, ptr %929, align 8, !tbaa !26
  %964 = extractelement <4 x i32> %947, i64 2
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %965
  %967 = load i32, ptr %966, align 4, !tbaa !21
  %968 = sext i32 %967 to i64
  %969 = shl nsw i64 %968, 2
  %970 = sdiv i64 %969, %916
  %971 = add nsw i64 %970, %7
  store i64 %971, ptr %938, align 16, !tbaa !26
  %972 = shl nsw <4 x i32> %947, <i32 1, i32 1, i32 1, i32 1>
  %973 = load <4 x i32>, ptr %14, align 16, !tbaa !21
  %974 = add nsw <4 x i32> %972, %973
  store <4 x i32> %974, ptr %18, align 16, !tbaa !21
  %975 = extractelement <4 x i32> %947, i64 3
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %976
  %978 = load i32, ptr %977, align 4, !tbaa !21
  %979 = sext i32 %978 to i64
  %980 = shl nsw i64 %979, 2
  %981 = sdiv i64 %980, %916
  br label %.loopexit951.sink.split

.loopexit951.sink.split:                          ; preds = %.loopexit951.loopexit, %.loopexit951.loopexit994
  %.sink1085 = phi i64 [ %981, %.loopexit951.loopexit994 ], [ %475, %.loopexit951.loopexit ]
  %factor.op.mul980.sink = phi i64 [ %factor.op.mul980, %.loopexit951.loopexit994 ], [ %417, %.loopexit951.loopexit ]
  %982 = add nsw i64 %.sink1085, %7
  %983 = getelementptr inbounds i8, ptr %26, i64 24
  store i64 %982, ptr %983, align 8, !tbaa !26
  %984 = getelementptr inbounds i8, ptr %15, i64 12
  %985 = load i32, ptr %984, align 4, !tbaa !21
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %986
  %988 = load i32, ptr %987, align 4, !tbaa !21
  %989 = sext i32 %988 to i64
  %.reass981.3 = mul i64 %factor.op.mul980.sink, %989
  %990 = add nsw i64 %.reass981.3, %8
  %991 = getelementptr inbounds i8, ptr %27, i64 24
  store i64 %990, ptr %991, align 8, !tbaa !26
  br label %.loopexit951

.loopexit951:                                     ; preds = %.loopexit951.sink.split, %476, %.loopexit955, %.loopexit952
  %992 = getelementptr inbounds i8, ptr %3, i64 352
  store i32 %75, ptr %992, align 8, !tbaa !30
  %993 = getelementptr inbounds i8, ptr %3, i64 364
  %994 = getelementptr inbounds i8, ptr %3, i64 380
  %995 = getelementptr inbounds i8, ptr %3, i64 396
  %996 = getelementptr inbounds i8, ptr %3, i64 412
  %997 = getelementptr inbounds i8, ptr %3, i64 428
  %998 = getelementptr inbounds i8, ptr %3, i64 444
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %993, ptr noundef nonnull align 16 dereferenceable(16) %13, i64 16, i1 false), !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %994, ptr noundef nonnull align 16 dereferenceable(16) %14, i64 16, i1 false), !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %995, ptr noundef nonnull align 16 dereferenceable(16) %18, i64 16, i1 false), !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %996, ptr noundef nonnull align 16 dereferenceable(16) %19, i64 16, i1 false), !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %997, ptr noundef nonnull align 16 dereferenceable(16) %28, i64 16, i1 false), !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %998, ptr noundef nonnull align 16 dereferenceable(16) %29, i64 16, i1 false), !tbaa !21
  %999 = mul nsw i32 %39, %38
  %1000 = icmp sgt i32 %999, 0
  br i1 %1000, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.loopexit951
  %1001 = getelementptr inbounds i8, ptr %3, i64 148
  %1002 = getelementptr inbounds i8, ptr %2, i64 4
  %1003 = getelementptr inbounds i8, ptr %2, i64 120
  %1004 = icmp eq i32 %38, 1
  %1005 = getelementptr inbounds i8, ptr %3, i64 72
  %1006 = getelementptr inbounds i8, ptr %2, i64 40
  %1007 = getelementptr inbounds i8, ptr %3, i64 624
  %1008 = getelementptr inbounds i8, ptr %3, i64 616
  %1009 = icmp slt i64 %10, 1
  %1010 = icmp sgt i64 %10, -1
  %1011 = getelementptr inbounds i8, ptr %4, i64 33
  %1012 = add nsw i64 %10, 1
  %1013 = select i1 %1004, i32 16, i32 32
  %.lhs.trunc948 = trunc nuw nsw i32 %1013 to i8
  %1014 = icmp eq i64 %10, 0
  %1015 = icmp eq i32 %9, 0
  %1016 = getelementptr inbounds i8, ptr %2, i64 68
  %1017 = srem i64 %10, 2
  %1018 = shl nsw i64 %1017, 6
  %1019 = getelementptr inbounds i8, ptr %3, i64 556
  %1020 = select i1 %.not855, i32 2, i32 4
  %1021 = getelementptr inbounds i8, ptr %3, i64 144
  %or.cond64 = and i1 %1010, %46
  %1022 = icmp sgt i32 %.1817, 0
  %or.cond66 = select i1 %or.cond64, i1 %1022, i1 false
  %1023 = zext nneg i32 %.1817 to i64
  %1024 = add nuw nsw i64 %1023, %10
  %1025 = getelementptr inbounds i8, ptr %3, i64 612
  %1026 = getelementptr inbounds i8, ptr %3, i64 520
  %1027 = getelementptr inbounds i8, ptr %4, i64 12
  %1028 = icmp sgt i32 %.1819, 0
  %or.cond70 = select i1 %or.cond64, i1 %1028, i1 false
  %1029 = zext nneg i32 %.1819 to i64
  %1030 = add nuw nsw i64 %1029, %10
  %1031 = getelementptr inbounds i8, ptr %2, i64 12
  %1032 = getelementptr inbounds i8, ptr %2, i64 72
  %1033 = select i1 %.not856, i32 4, i32 2
  %1034 = getelementptr inbounds i8, ptr %3, i64 156
  %1035 = getelementptr inbounds i8, ptr %3, i64 632
  %1036 = getelementptr inbounds i8, ptr %3, i64 628
  %1037 = getelementptr inbounds i8, ptr %4, i64 16
  %1038 = getelementptr inbounds i8, ptr %3, i64 12
  %1039 = getelementptr inbounds i8, ptr %4, i64 41
  %or.cond80 = and i1 %45, %78
  %1040 = zext i32 %82 to i64
  %1041 = add nsw i64 %1040, %10
  %1042 = getelementptr inbounds i8, ptr %2, i64 88
  %or.cond88 = and i1 %45, %83
  %1043 = zext i32 %87 to i64
  %1044 = add nsw i64 %1043, %10
  %1045 = getelementptr inbounds i8, ptr %4, i64 20
  %1046 = getelementptr inbounds i8, ptr %2, i64 20
  %.not899942 = icmp eq i32 %60, 0
  %wide.trip.count = zext nneg i32 %999 to i64
  br label %1047

1047:                                             ; preds = %.lr.ph, %1375
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %1375 ]
  %1048 = getelementptr inbounds [4 x i32], ptr %13, i64 0, i64 %indvars.iv
  %1049 = load i32, ptr %1048, align 4, !tbaa !21
  %1050 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %indvars.iv
  %1051 = load i32, ptr %1050, align 4, !tbaa !21
  %1052 = load i32, ptr %1001, align 4, !tbaa !31
  %1053 = icmp eq i32 %1052, 0
  %.in = select i1 %1053, ptr %1002, ptr %1003
  %1054 = load i32, ptr %.in, align 4, !tbaa !21
  %1055 = icmp eq i32 %1052, 1
  br i1 %1055, label %1056, label %1108

1056:                                             ; preds = %1047
  br i1 %1004, label %1057, label %1068

1057:                                             ; preds = %1056
  %1058 = getelementptr inbounds [4 x i32], ptr %21, i64 0, i64 %indvars.iv
  %1059 = load i32, ptr %1058, align 4, !tbaa !21
  %1060 = icmp sgt i32 %1059, 0
  %1061 = and i32 %1059, 1
  %1062 = icmp eq i32 %1061, 0
  %or.cond914 = and i1 %1060, %1062
  br i1 %or.cond914, label %1063, label %1068

1063:                                             ; preds = %1057
  %1064 = load i32, ptr %1005, align 8, !tbaa !32
  %1065 = load i32, ptr %1006, align 4, !tbaa !33
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %1064, i32 noundef %1065, i64 noundef 16) #9
  %1066 = load i32, ptr %1007, align 8, !tbaa !35
  %1067 = load ptr, ptr %1008, align 8, !tbaa !36
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %0, i32 noundef 30104, i32 noundef %1066, ptr noundef %1067) #9
  br label %1068

1068:                                             ; preds = %1063, %1057, %1056
  %1069 = getelementptr inbounds [4 x i32], ptr %21, i64 0, i64 %indvars.iv
  %1070 = load i32, ptr %1069, align 4, !tbaa !21
  %1071 = icmp sgt i32 %1070, 0
  br i1 %1071, label %1072, label %.thread938

1072:                                             ; preds = %1068
  %1073 = and i32 %1070, 1
  %1074 = icmp eq i32 %1073, 0
  %or.cond58 = and i1 %1009, %1074
  br i1 %or.cond58, label %1075, label %.thread1034

1075:                                             ; preds = %1072
  %1076 = getelementptr inbounds [4 x i64], ptr %26, i64 0, i64 %indvars.iv
  %1077 = load i64, ptr %1076, align 8, !tbaa !26
  call void @libxsmm_generator_gemm_amx_decompress_32x32_A_block(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, i64 noundef %1077, i64 noundef 0, i64 noundef 0)
  %.pr.pre = load i32, ptr %1069, align 4, !tbaa !21
  %1078 = icmp sgt i32 %.pr.pre, 0
  br i1 %1078, label %.thread1034, label %.thread938

.thread1034:                                      ; preds = %1072, %1075
  %.pr1036 = phi i32 [ %.pr.pre, %1075 ], [ %1070, %1072 ]
  %1079 = and i32 %.pr1036, 1
  %1080 = icmp eq i32 %1079, 0
  %or.cond60 = and i1 %1010, %1080
  br i1 %or.cond60, label %1081, label %.thread938

1081:                                             ; preds = %.thread1034
  %1082 = load i32, ptr %40, align 8, !tbaa !10
  %1083 = add i32 %1082, -1
  %1084 = zext i32 %1083 to i64
  %1085 = icmp ugt i64 %1084, %10
  %or.cond62 = and i1 %46, %1085
  br i1 %or.cond62, label %1086, label %.thread938

1086:                                             ; preds = %1081
  %1087 = load i32, ptr %88, align 1, !tbaa !16
  %1088 = and i32 %1087, 262144
  %.not892 = icmp eq i32 %1088, 0
  br i1 %.not892, label %1093, label %1089

1089:                                             ; preds = %1086
  %1090 = getelementptr inbounds [4 x i64], ptr %26, i64 0, i64 %indvars.iv
  %1091 = load i64, ptr %1090, align 8, !tbaa !26
  %1092 = load i64, ptr %1011, align 1, !tbaa !37
  call void @libxsmm_generator_gemm_amx_decompress_32x32_A_block(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, i64 noundef %1091, i64 noundef %1092, i64 noundef 0)
  br label %.thread938

1093:                                             ; preds = %1086
  %1094 = and i32 %1087, 131072
  %.not893 = icmp eq i32 %1094, 0
  br i1 %.not893, label %.thread938, label %1095

1095:                                             ; preds = %1093
  %1096 = getelementptr inbounds [4 x i64], ptr %26, i64 0, i64 %indvars.iv
  %1097 = load i64, ptr %1096, align 8, !tbaa !26
  call void @libxsmm_generator_gemm_amx_decompress_32x32_A_block(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, i64 noundef %1097, i64 noundef 0, i64 noundef %1012)
  br label %.thread938

.thread938:                                       ; preds = %1068, %1089, %1095, %1093, %1081, %.thread1034, %1075
  br i1 %1004, label %1098, label %1108

1098:                                             ; preds = %.thread938
  %1099 = load i32, ptr %1069, align 4, !tbaa !21
  %1100 = icmp sgt i32 %1099, 0
  %1101 = and i32 %1099, 1
  %1102 = icmp eq i32 %1101, 0
  %or.cond916 = and i1 %1100, %1102
  br i1 %or.cond916, label %1103, label %1108

1103:                                             ; preds = %1098
  %1104 = load i32, ptr %1007, align 8, !tbaa !35
  %1105 = load ptr, ptr %1008, align 8, !tbaa !36
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %0, i32 noundef %1104, ptr noundef %1105) #9
  %1106 = load i32, ptr %1007, align 8, !tbaa !35
  %1107 = add i32 %1106, 1
  store i32 %1107, ptr %1007, align 8, !tbaa !35
  br label %1108

1108:                                             ; preds = %.thread938, %1098, %1103, %1047
  %1109 = getelementptr inbounds [4 x i32], ptr %21, i64 0, i64 %indvars.iv
  %1110 = load i32, ptr %1109, align 4, !tbaa !21
  %1111 = icmp sgt i32 %1110, 0
  br i1 %.not, label %.thread939, label %1112

1112:                                             ; preds = %1108
  %1113 = and i32 %1110, 1
  %1114 = icmp eq i32 %1113, 0
  %or.cond918 = and i1 %1111, %1114
  br i1 %or.cond918, label %1115, label %1124

1115:                                             ; preds = %1112
  %1116 = load i32, ptr %4, align 1, !tbaa !38
  switch i32 %1116, label %1120 [
    i32 8, label %1117
    i32 4, label %1117
    i32 2, label %1117
    i32 1, label %1117
  ]

1117:                                             ; preds = %1115, %1115, %1115, %1115
  %.rhs.trunc946 = trunc i32 %1116 to i8
  %1118 = udiv i8 16, %.rhs.trunc946
  %1119 = udiv i8 %.lhs.trunc948, %1118
  %.zext950 = zext nneg i8 %1119 to i32
  br label %1120

1120:                                             ; preds = %1115, %1117
  %.0823 = phi i32 [ %.zext950, %1117 ], [ %1013, %1115 ]
  br i1 %1014, label %1121, label %1122

1121:                                             ; preds = %1120
  call void @libxsmm_generator_gemm_amx_decompress_Kx32_A_block_kloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %3, i64 noundef 0, i32 noundef %.0823)
  br label %1122

1122:                                             ; preds = %1121, %1120
  br i1 %1015, label %1123, label %thread-pre-split

1123:                                             ; preds = %1122
  call void @libxsmm_generator_gemm_amx_decompress_Kx32_A_block_kloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %3, i64 noundef %1012, i32 noundef %.0823)
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %1123, %1122
  %.pr = load i32, ptr %1109, align 4, !tbaa !21
  br label %1124

1124:                                             ; preds = %thread-pre-split, %1112
  %1125 = phi i32 [ %.pr, %thread-pre-split ], [ %1110, %1112 ]
  %1126 = icmp sgt i32 %1125, 0
  br i1 %1126, label %1127, label %1201

.thread939:                                       ; preds = %1108
  br i1 %1111, label %.thread940, label %1201

1127:                                             ; preds = %1124
  %1128 = load i32, ptr %4, align 1, !tbaa !38
  switch i32 %1128, label %1132 [
    i32 8, label %1129
    i32 4, label %1129
    i32 2, label %1129
    i32 1, label %1129
  ]

1129:                                             ; preds = %1127, %1127, %1127, %1127
  %.rhs.trunc = trunc i32 %1128 to i8
  %1130 = udiv i8 16, %.rhs.trunc
  %1131 = udiv i8 %.lhs.trunc948, %1130
  %.zext945 = zext nneg i8 %1131 to i32
  br label %1132

1132:                                             ; preds = %1127, %1129
  %.0822 = phi i32 [ %.zext945, %1129 ], [ %1013, %1127 ]
  %1133 = load i32, ptr %3, align 8, !tbaa !39
  %1134 = getelementptr inbounds [4 x i32], ptr %23, i64 0, i64 %indvars.iv
  %1135 = load i32, ptr %1134, align 4, !tbaa !21
  %1136 = load i32, ptr %1003, align 4, !tbaa !40
  %1137 = load i32, ptr %1016, align 4, !tbaa !41
  %1138 = getelementptr inbounds [4 x i64], ptr %26, i64 0, i64 %indvars.iv
  %1139 = load i64, ptr %1138, align 8, !tbaa !26
  %1140 = zext nneg i32 %.0822 to i64
  %1141 = mul nsw i64 %1018, %1140
  %1142 = add nsw i64 %1139, %1141
  %1143 = load i32, ptr %1019, align 4, !tbaa !42
  %1144 = shl i32 %1143, 8
  %1145 = trunc i64 %1142 to i32
  %1146 = add i32 %1144, %1145
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %0, i32 noundef %1133, i32 noundef %1135, i32 noundef %1136, i32 noundef %1137, i32 noundef 4, i32 noundef %1146, i32 noundef %1125) #9
  br label %1156

.thread940:                                       ; preds = %.thread939
  %1147 = load i32, ptr %3, align 8, !tbaa !39
  %1148 = getelementptr inbounds [4 x i32], ptr %23, i64 0, i64 %indvars.iv
  %1149 = load i32, ptr %1148, align 4, !tbaa !21
  %1150 = load i32, ptr %1016, align 4, !tbaa !41
  %1151 = getelementptr inbounds [4 x i64], ptr %26, i64 0, i64 %indvars.iv
  %1152 = load i64, ptr %1151, align 8, !tbaa !26
  %1153 = load i32, ptr %1021, align 8, !tbaa !29
  %1154 = trunc i64 %1152 to i32
  %1155 = mul i32 %1153, %1154
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %0, i32 noundef %1147, i32 noundef %1149, i32 noundef %1054, i32 noundef %1150, i32 noundef %1020, i32 noundef %1155, i32 noundef %1110) #9
  br label %1156

1156:                                             ; preds = %.thread940, %1132
  %1157 = phi i64 [ %1152, %.thread940 ], [ %1139, %1132 ]
  %1158 = load i32, ptr %88, align 1, !tbaa !16
  %1159 = and i32 %1158, 1
  %.not894 = icmp eq i32 %1159, 0
  br i1 %.not894, label %1165, label %1160

1160:                                             ; preds = %1156
  %1161 = load i32, ptr %3, align 8, !tbaa !39
  %1162 = load i32, ptr %1109, align 4, !tbaa !21
  %1163 = getelementptr inbounds [4 x i32], ptr %16, i64 0, i64 %indvars.iv
  %1164 = load i32, ptr %1163, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_tile_compute(ptr noundef %0, i32 noundef %1161, i32 noundef 1611014239, i32 noundef %1162, i32 noundef 0, i32 noundef %1164) #9
  br label %1165

1165:                                             ; preds = %1160, %1156
  br i1 %or.cond66, label %1166, label %1183

1166:                                             ; preds = %1165
  %1167 = load i32, ptr %40, align 8, !tbaa !10
  %1168 = zext i32 %1167 to i64
  %1169 = icmp ult i64 %1024, %1168
  %.pre1014 = load i32, ptr %1025, align 4, !tbaa !15
  %1170 = icmp eq i32 %.pre1014, 1
  %or.cond1086 = select i1 %1169, i1 %1170, i1 false
  %1171 = icmp eq i32 %.pre1014, 0
  %or.cond1087 = select i1 %or.cond1086, i1 true, i1 %1171
  br i1 %or.cond1087, label %1172, label %1183

1172:                                             ; preds = %1166
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #9
  %1173 = load i32, ptr %88, align 1, !tbaa !16
  %1174 = load i32, ptr %1109, align 4, !tbaa !21
  call void @libxsmm_get_tileinfo(i32 noundef %1174, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %1026) #9
  %1175 = load i32, ptr %31, align 4, !tbaa !21
  %1176 = load i32, ptr %1027, align 1, !tbaa !27
  %1177 = lshr i32 %1173, 11
  %.lobit = and i32 %1177, 1
  %1178 = shl i32 %1176, %.lobit
  %1179 = load i32, ptr %1002, align 4, !tbaa !43
  %1180 = load i64, ptr %1011, align 1, !tbaa !37
  %1181 = mul nsw i64 %1180, %1023
  %1182 = add nsw i64 %1181, %1157
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L2(ptr noundef %0, ptr noundef nonnull %3, i32 noundef %1175, i32 noundef %1178, i32 noundef %1179, i64 noundef %1182)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #9
  br label %1183

1183:                                             ; preds = %1166, %1172, %1165
  br i1 %or.cond70, label %1184, label %1201

1184:                                             ; preds = %1183
  %1185 = load i32, ptr %40, align 8, !tbaa !10
  %1186 = zext i32 %1185 to i64
  %1187 = icmp ult i64 %1030, %1186
  %.pre1015 = load i32, ptr %1025, align 4, !tbaa !15
  %1188 = icmp eq i32 %.pre1015, 1
  %or.cond1088 = select i1 %1187, i1 %1188, i1 false
  %1189 = icmp eq i32 %.pre1015, 0
  %or.cond1089 = select i1 %or.cond1088, i1 true, i1 %1189
  br i1 %or.cond1089, label %1190, label %1201

1190:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #9
  %1191 = load i32, ptr %88, align 1, !tbaa !16
  %1192 = load i32, ptr %1109, align 4, !tbaa !21
  call void @libxsmm_get_tileinfo(i32 noundef %1192, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %1026) #9
  %1193 = load i32, ptr %33, align 4, !tbaa !21
  %1194 = load i32, ptr %1027, align 1, !tbaa !27
  %1195 = lshr i32 %1191, 11
  %.lobit897 = and i32 %1195, 1
  %1196 = shl i32 %1194, %.lobit897
  %1197 = load i32, ptr %1002, align 4, !tbaa !43
  %1198 = load i64, ptr %1011, align 1, !tbaa !37
  %1199 = mul nsw i64 %1198, %1029
  %1200 = add nsw i64 %1199, %1157
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L1(ptr noundef %0, ptr noundef nonnull %3, i32 noundef %1193, i32 noundef %1196, i32 noundef %1197, i64 noundef %1200)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #9
  br label %1201

1201:                                             ; preds = %1184, %.thread939, %1183, %1190, %1124
  %1202 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %indvars.iv
  %1203 = load i32, ptr %1202, align 4, !tbaa !21
  %1204 = icmp sgt i32 %1203, 0
  br i1 %1204, label %1205, label %1263

1205:                                             ; preds = %1201
  %1206 = load i32, ptr %3, align 8, !tbaa !39
  %1207 = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %indvars.iv
  %1208 = load i32, ptr %1207, align 4, !tbaa !21
  %1209 = load i32, ptr %1031, align 4, !tbaa !44
  %1210 = load i32, ptr %1032, align 4, !tbaa !45
  %1211 = getelementptr inbounds [4 x i64], ptr %27, i64 0, i64 %indvars.iv
  %1212 = load i64, ptr %1211, align 8, !tbaa !26
  %1213 = trunc i64 %1212 to i32
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %0, i32 noundef %1206, i32 noundef %1208, i32 noundef %1209, i32 noundef %1210, i32 noundef %1033, i32 noundef %1213, i32 noundef %1203) #9
  %1214 = load i32, ptr %1034, align 4, !tbaa !46
  %1215 = icmp eq i32 %1214, 1
  br i1 %1215, label %1216, label %1233

1216:                                             ; preds = %1205
  %1217 = load i32, ptr %1035, align 8, !tbaa !47
  %1218 = load i32, ptr %1036, align 4, !tbaa !48
  %1219 = load i32, ptr %1037, align 1, !tbaa !24
  %1220 = mul i32 %1219, %1218
  %1221 = load i32, ptr %1038, align 4, !tbaa !28
  %1222 = mul i32 %1220, %1221
  %1223 = add i32 %1222, %1217
  %1224 = getelementptr inbounds [4 x i32], ptr %15, i64 0, i64 %indvars.iv
  %1225 = load i32, ptr %1224, align 4, !tbaa !21
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %1226
  %1228 = load i32, ptr %1227, align 4, !tbaa !21
  %1229 = shl nsw i32 %1228, 1
  %1230 = add i32 %1223, %1229
  %1231 = load i32, ptr %1031, align 4, !tbaa !44
  %1232 = zext i32 %1230 to i64
  call void @libxsmm_generator_gemm_amx_normT_32x16_bf16_ext_buf(ptr noundef %0, ptr noundef %1, ptr noundef %4, ptr noundef nonnull %3, i32 noundef %1231, i64 noundef %1212, i64 noundef %1232)
  br label %1233

1233:                                             ; preds = %1216, %1205
  br i1 %or.cond66, label %1234, label %1248

1234:                                             ; preds = %1233
  %1235 = load i32, ptr %40, align 8, !tbaa !10
  %1236 = zext i32 %1235 to i64
  %1237 = icmp ult i64 %1024, %1236
  %.pre1016 = load i32, ptr %1025, align 4, !tbaa !15
  %1238 = icmp eq i32 %.pre1016, 1
  %or.cond1090 = select i1 %1237, i1 %1238, i1 false
  %1239 = icmp eq i32 %.pre1016, 0
  %or.cond1091 = select i1 %or.cond1090, i1 true, i1 %1239
  br i1 %or.cond1091, label %1240, label %1248

1240:                                             ; preds = %1234
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #9
  %1241 = load i32, ptr %1202, align 4, !tbaa !21
  call void @libxsmm_get_tileinfo(i32 noundef %1241, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %1026) #9
  %1242 = load i32, ptr %35, align 4, !tbaa !21
  %1243 = load i32, ptr %1037, align 1, !tbaa !24
  %1244 = load i32, ptr %1031, align 4, !tbaa !44
  %1245 = load i64, ptr %1039, align 1, !tbaa !49
  %1246 = mul nsw i64 %1245, %1023
  %1247 = add nsw i64 %1246, %1212
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L2(ptr noundef %0, ptr noundef nonnull %3, i32 noundef %1242, i32 noundef %1243, i32 noundef %1244, i64 noundef %1247)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #9
  br label %1248

1248:                                             ; preds = %1234, %1240, %1233
  br i1 %or.cond70, label %1249, label %1263

1249:                                             ; preds = %1248
  %1250 = load i32, ptr %40, align 8, !tbaa !10
  %1251 = zext i32 %1250 to i64
  %1252 = icmp ult i64 %1030, %1251
  %.pre1017 = load i32, ptr %1025, align 4, !tbaa !15
  %1253 = icmp eq i32 %.pre1017, 1
  %or.cond1092 = select i1 %1252, i1 %1253, i1 false
  %1254 = icmp eq i32 %.pre1017, 0
  %or.cond1093 = select i1 %or.cond1092, i1 true, i1 %1254
  br i1 %or.cond1093, label %1255, label %1263

1255:                                             ; preds = %1249
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #9
  %1256 = load i32, ptr %1202, align 4, !tbaa !21
  call void @libxsmm_get_tileinfo(i32 noundef %1256, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %1026) #9
  %1257 = load i32, ptr %37, align 4, !tbaa !21
  %1258 = load i32, ptr %1037, align 1, !tbaa !24
  %1259 = load i32, ptr %1031, align 4, !tbaa !44
  %1260 = load i64, ptr %1039, align 1, !tbaa !49
  %1261 = mul nsw i64 %1260, %1029
  %1262 = add nsw i64 %1261, %1212
  call void @libxsmm_generator_gemm_amx_prefetch_tile_in_L1(ptr noundef %0, ptr noundef nonnull %3, i32 noundef %1257, i32 noundef %1258, i32 noundef %1259, i64 noundef %1262)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #9
  br label %1263

1263:                                             ; preds = %1249, %1248, %1255, %1201
  %1264 = load i32, ptr %3, align 8, !tbaa !39
  %1265 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %indvars.iv
  %1266 = load i32, ptr %1265, align 4, !tbaa !21
  %1267 = getelementptr inbounds [4 x i32], ptr %16, i64 0, i64 %indvars.iv
  %1268 = load i32, ptr %1267, align 4, !tbaa !21
  %1269 = getelementptr inbounds [4 x i32], ptr %17, i64 0, i64 %indvars.iv
  %1270 = load i32, ptr %1269, align 4, !tbaa !21
  %1271 = getelementptr inbounds [4 x i32], ptr %18, i64 0, i64 %indvars.iv
  %1272 = load i32, ptr %1271, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_tile_compute(ptr noundef %0, i32 noundef %1264, i32 noundef %1266, i32 noundef %1268, i32 noundef %1270, i32 noundef %1272) #9
  br i1 %or.cond80, label %1273, label %1299

1273:                                             ; preds = %1263
  %1274 = load i32, ptr %1025, align 4, !tbaa !15
  %1275 = icmp eq i32 %1274, 1
  br i1 %1275, label %1276, label %1299

1276:                                             ; preds = %1273
  %1277 = load i32, ptr %40, align 8, !tbaa !10
  %1278 = zext i32 %1277 to i64
  %1279 = icmp eq i64 %1041, %1278
  br i1 %1279, label %1280, label %1299

1280:                                             ; preds = %1276
  %1281 = icmp ult i64 %indvars.iv, 2
  %or.cond82 = select i1 %1281, i1 %74, i1 false
  %or.cond82.not = xor i1 %or.cond82, true
  %1282 = icmp ne i64 %indvars.iv, 0
  %or.cond84.not = select i1 %1282, i1 true, i1 %74
  %or.cond919 = select i1 %or.cond82.not, i1 %or.cond84.not, i1 false
  br i1 %or.cond919, label %1299, label %1283

1283:                                             ; preds = %1280
  %1284 = load i32, ptr %1042, align 4, !tbaa !50
  %1285 = icmp eq i64 %indvars.iv, 1
  %or.cond86 = and i1 %74, %1285
  br i1 %or.cond86, label %1286, label %1294

1286:                                             ; preds = %1283
  %1287 = load i32, ptr %14, align 16, !tbaa !21
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 %1288
  %1290 = load i32, ptr %1289, align 4, !tbaa !21
  %1291 = load i32, ptr %1019, align 4, !tbaa !42
  %1292 = shl i32 %1290, 2
  %1293 = mul i32 %1292, %1291
  br label %1294

1294:                                             ; preds = %1286, %1283
  %.0821 = phi i32 [ %1293, %1286 ], [ 0, %1283 ]
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %0, i32 noundef %1284) #9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %3, i32 noundef 6, i32 noundef %1284) #9
  %1295 = load i32, ptr %1019, align 4, !tbaa !42
  %1296 = sext i32 %1051 to i64
  %1297 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 %1296
  %1298 = load i32, ptr %1297, align 4, !tbaa !21
  call void @libxsmm_generator_gemm_amx_prefetch_output(ptr noundef %0, i32 noundef %1284, i32 noundef %1295, i32 noundef 4, i32 noundef %.0821, i32 noundef %1298)
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %1284) #9
  br label %1299

1299:                                             ; preds = %1280, %1294, %1276, %1273, %1263
  %1300 = sext i32 %1272 to i64
  %1301 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 %1300
  store i32 1, ptr %1301, align 4, !tbaa !21
  br i1 %or.cond88, label %1302, label %1333

1302:                                             ; preds = %1299
  %1303 = load i32, ptr %1025, align 4, !tbaa !15
  %1304 = icmp eq i32 %1303, 1
  br i1 %1304, label %1305, label %1333

1305:                                             ; preds = %1302
  %1306 = load i32, ptr %40, align 8, !tbaa !10
  %1307 = zext i32 %1306 to i64
  %1308 = icmp eq i64 %1044, %1307
  br i1 %1308, label %1309, label %1333

1309:                                             ; preds = %1305
  br i1 %74, label %1310, label %.thread941

1310:                                             ; preds = %1309
  %1311 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %1300
  %1312 = load i32, ptr %1311, align 4, !tbaa !21
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 %1313
  %1315 = load i32, ptr %1314, align 4, !tbaa !21
  %1316 = icmp eq i32 %1315, 1
  br i1 %1316, label %1317, label %1333

1317:                                             ; preds = %1310
  %. = call i32 @llvm.smin.i32(i32 %1272, i32 %1312)
  %1318 = sdiv i32 %., %39
  %1319 = srem i32 %., %39
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %1320
  %1322 = load i32, ptr %1321, align 4, !tbaa !21
  %1323 = load i32, ptr %1045, align 1, !tbaa !51
  %1324 = mul i32 %1323, %1322
  %1325 = sext i32 %1318 to i64
  %1326 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %1325
  %1327 = load i32, ptr %1326, align 4, !tbaa !21
  %1328 = add i32 %1324, %1327
  %1329 = shl i32 %1328, 1
  %1330 = load i32, ptr %1046, align 4, !tbaa !52
  %1331 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 %1320
  %1332 = load i32, ptr %1331, align 4, !tbaa !21
  call void @libxsmm_generator_gemm_amx_prefetch_output(ptr noundef %0, i32 noundef %1330, i32 noundef %1323, i32 noundef 2, i32 noundef %1329, i32 noundef %1332)
  br label %1333

1333:                                             ; preds = %1317, %1310, %1305, %1302, %1299
  br i1 %.not899942, label %1375, label %1347

.thread941:                                       ; preds = %1309
  %1334 = sext i32 %1051 to i64
  %1335 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %1334
  %1336 = load i32, ptr %1335, align 4, !tbaa !21
  %1337 = load i32, ptr %1045, align 1, !tbaa !51
  %1338 = mul i32 %1337, %1336
  %1339 = sext i32 %1049 to i64
  %1340 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %1339
  %1341 = load i32, ptr %1340, align 4, !tbaa !21
  %1342 = add i32 %1338, %1341
  %1343 = shl i32 %1342, 1
  %1344 = load i32, ptr %1046, align 4, !tbaa !52
  %1345 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 %1334
  %1346 = load i32, ptr %1345, align 4, !tbaa !21
  call void @libxsmm_generator_gemm_amx_prefetch_output(ptr noundef %0, i32 noundef %1344, i32 noundef %1337, i32 noundef 2, i32 noundef %1343, i32 noundef %1346)
  br i1 %.not899942, label %1375, label %.thread943

1347:                                             ; preds = %1333
  br i1 %74, label %1348, label %..thread943_crit_edge

..thread943_crit_edge:                            ; preds = %1347
  %.pre1018 = sext i32 %1049 to i64
  %.pre1019 = sext i32 %1051 to i64
  br label %.thread943

1348:                                             ; preds = %1347
  %1349 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %1300
  %1350 = load i32, ptr %1349, align 4, !tbaa !21
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 %1351
  %1353 = load i32, ptr %1352, align 4, !tbaa !21
  %1354 = icmp eq i32 %1353, 1
  br i1 %1354, label %1355, label %1375

1355:                                             ; preds = %1348
  %.920 = call i32 @llvm.smin.i32(i32 %1272, i32 %1350)
  %1356 = sdiv i32 %.920, %39
  %1357 = srem i32 %.920, %39
  %1358 = sext i32 %.920 to i64
  %1359 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %1358
  %1360 = load i32, ptr %1359, align 4, !tbaa !21
  %1361 = sext i32 %1356 to i64
  %1362 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %1361
  %1363 = load i32, ptr %1362, align 4, !tbaa !21
  %1364 = sext i32 %1357 to i64
  %1365 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %1364
  %1366 = load i32, ptr %1365, align 4, !tbaa !21
  %1367 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 %1364
  %1368 = load i32, ptr %1367, align 4, !tbaa !21
  call void @libxsmm_generator_gemm_amx_paired_tilestore(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, i32 noundef %.920, i32 noundef %1360, i32 noundef %1363, i32 noundef %1366, i32 noundef %1368)
  br label %1375

.thread943:                                       ; preds = %..thread943_crit_edge, %.thread941
  %.pre-phi1020 = phi i64 [ %.pre1019, %..thread943_crit_edge ], [ %1334, %.thread941 ]
  %.pre-phi = phi i64 [ %.pre1018, %..thread943_crit_edge ], [ %1339, %.thread941 ]
  %1369 = getelementptr inbounds [4 x i32], ptr %28, i64 0, i64 %.pre-phi
  %1370 = load i32, ptr %1369, align 4, !tbaa !21
  %1371 = getelementptr inbounds [4 x i32], ptr %29, i64 0, i64 %.pre-phi1020
  %1372 = load i32, ptr %1371, align 4, !tbaa !21
  %1373 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 %.pre-phi1020
  %1374 = load i32, ptr %1373, align 4, !tbaa !21
  call void @libxsmm_generator_gemm_amx_single_tilestore(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, i32 noundef %1272, i32 noundef %1370, i32 noundef %1372, i32 noundef %1374)
  br label %1375

1375:                                             ; preds = %.thread941, %1333, %1348, %1355, %.thread943
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %1047, !llvm.loop !53

.loopexit:                                        ; preds = %1375, %.loopexit951, %215, %207, %196
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  ret void
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #6

declare void @libxsmm_x86_instruction_jump_to_label(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

declare void @libxsmm_x86_instruction_register_jump_label(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

declare void @libxsmm_x86_instruction_tile_compute(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_get_tileinfo(i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

; 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) #8

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

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

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


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass