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

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

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

@.str.1 = external hidden unnamed_addr constant [74 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@__func__.libxsmm_generator_gemm_amx_kernel = external hidden unnamed_addr constant [34 x i8], align 1

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

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

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #0

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

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) #0

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_GEMM_GETENUM_C_PREC(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_amx_setup_masking_infra(ptr noundef, ptr noundef) #3

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_amx_setup_fusion_infra(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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_init_micro_kernel_config_tileblocking(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef) #0

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_amx_kernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #3 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %10 = alloca %struct.libxsmm_gemm_descriptor, align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [2 x %struct.libxsmm_blocking_info_t], align 16
  %27 = alloca [2 x %struct.libxsmm_blocking_info_t], align 16
  %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 %struct.libxsmm_tile_config, align 2
  %40 = alloca i8, align 1
  %41 = alloca ptr, align 8
  %42 = alloca i8, align 1
  %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
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 688, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 95, ptr %10) #4
  %49 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 1 %49, i64 95, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  store ptr %10, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 0, ptr %12, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = call i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef %50)
  store i32 %51, ptr %14, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %52 = load ptr, ptr %8, align 8, !tbaa !5
  %53 = call i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef %52)
  store i32 %53, ptr %15, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  %54 = load ptr, ptr %8, align 8, !tbaa !5
  %55 = call i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef %54)
  store i32 %55, ptr %16, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %56)
  store i32 %57, ptr %17, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %58 = load ptr, ptr %11, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %58, i32 0, i32 6
  %60 = load i32, ptr %59, align 1, !tbaa !17
  %61 = and i32 %60, 1
  %62 = icmp eq i32 %61, 0
  br i1 %62, label %63, label %119

63:                                               ; preds = %4
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %64, i32 0, i32 6
  %66 = load i32, ptr %65, align 1, !tbaa !17
  %67 = and i32 %66, 2048
  %68 = icmp eq i32 %67, 0
  br i1 %68, label %69, label %119

69:                                               ; preds = %63
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %70, i32 0, i32 6
  %72 = load i32, ptr %71, align 1, !tbaa !17
  %73 = and i32 %72, 2
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %119

75:                                               ; preds = %69
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %76, i32 0, i32 6
  %78 = load i32, ptr %77, align 1, !tbaa !17
  %79 = and i32 %78, 4096
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %81, label %119

81:                                               ; preds = %75
  %82 = load ptr, ptr %11, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %82, i32 0, i32 2
  %84 = load i32, ptr %83, align 1, !tbaa !19
  %85 = urem i32 %84, 2
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %119

87:                                               ; preds = %81
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %88, i32 0, i32 8
  %90 = getelementptr inbounds [3 x i8], ptr %89, i64 0, i64 0
  %91 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %90)
  %92 = icmp eq i32 2, %91
  br i1 %92, label %99, label %93

93:                                               ; preds = %87
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %94, i32 0, i32 8
  %96 = getelementptr inbounds [3 x i8], ptr %95, i64 0, i64 0
  %97 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %96)
  %98 = icmp eq i32 3, %97
  br i1 %98, label %99, label %119

99:                                               ; preds = %93, %87
  %100 = load ptr, ptr %5, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %100, i32 0, i32 6
  %102 = load i32, ptr %101, align 4, !tbaa !20
  %103 = icmp uge i32 %102, 1005
  br i1 %103, label %104, label %117

104:                                              ; preds = %99
  %105 = load ptr, ptr %5, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %105, i32 0, i32 6
  %107 = load i32, ptr %106, align 4, !tbaa !20
  %108 = icmp ult i32 %107, 1106
  br i1 %108, label %115, label %109

109:                                              ; preds = %104
  %110 = load ptr, ptr %11, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %110, i32 0, i32 0
  %112 = load i32, ptr %111, align 1, !tbaa !22
  %113 = urem i32 %112, 2
  %114 = icmp eq i32 %113, 1
  br label %115

115:                                              ; preds = %109, %104
  %116 = phi i1 [ true, %104 ], [ %114, %109 ]
  br label %117

117:                                              ; preds = %115, %99
  %118 = phi i1 [ false, %99 ], [ %116, %115 ]
  br label %119

119:                                              ; preds = %117, %93, %81, %75, %69, %63, %4
  %120 = phi i1 [ false, %93 ], [ false, %81 ], [ false, %75 ], [ false, %69 ], [ false, %63 ], [ false, %4 ], [ %118, %117 ]
  %121 = zext i1 %120 to i32
  store i32 %121, ptr %18, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %122, i32 0, i32 6
  %124 = load i32, ptr %123, align 1, !tbaa !17
  %125 = and i32 %124, 1
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %127, label %175

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

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

139:                                              ; preds = %133
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %140, i32 0, i32 6
  %142 = load i32, ptr %141, align 1, !tbaa !17
  %143 = and i32 %142, 4096
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %145, label %175

145:                                              ; preds = %139
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %146, i32 0, i32 2
  %148 = load i32, ptr %147, align 1, !tbaa !19
  %149 = urem i32 %148, 2
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %175

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

157:                                              ; preds = %151
  %158 = load ptr, ptr %11, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %158, i32 0, i32 8
  %160 = getelementptr inbounds [3 x i8], ptr %159, i64 0, i64 0
  %161 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %160)
  %162 = icmp eq i32 3, %161
  br i1 %162, label %163, label %175

163:                                              ; preds = %157, %151
  %164 = load ptr, ptr %5, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %164, i32 0, i32 6
  %166 = load i32, ptr %165, align 4, !tbaa !20
  %167 = icmp uge i32 %166, 1005
  br i1 %167, label %168, label %173

168:                                              ; preds = %163
  %169 = load ptr, ptr %5, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %169, i32 0, i32 6
  %171 = load i32, ptr %170, align 4, !tbaa !20
  %172 = icmp ult i32 %171, 1106
  br label %173

173:                                              ; preds = %168, %163
  %174 = phi i1 [ false, %163 ], [ %172, %168 ]
  br label %175

175:                                              ; preds = %173, %157, %145, %139, %133, %127, %119
  %176 = phi i1 [ false, %157 ], [ false, %145 ], [ false, %139 ], [ false, %133 ], [ false, %127 ], [ false, %119 ], [ %174, %173 ]
  %177 = zext i1 %176 to i32
  store i32 %177, ptr %19, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %178 = load ptr, ptr %11, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %178, i32 0, i32 6
  %180 = load i32, ptr %179, align 1, !tbaa !17
  %181 = and i32 %180, 1
  %182 = icmp eq i32 %181, 0
  br i1 %182, label %183, label %245

183:                                              ; preds = %175
  %184 = load ptr, ptr %11, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %184, i32 0, i32 6
  %186 = load i32, ptr %185, align 1, !tbaa !17
  %187 = and i32 %186, 2048
  %188 = icmp eq i32 %187, 0
  br i1 %188, label %189, label %245

189:                                              ; preds = %183
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %190, i32 0, i32 6
  %192 = load i32, ptr %191, align 1, !tbaa !17
  %193 = and i32 %192, 2
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %195, label %245

195:                                              ; preds = %189
  %196 = load ptr, ptr %11, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %196, i32 0, i32 6
  %198 = load i32, ptr %197, align 1, !tbaa !17
  %199 = and i32 %198, 4096
  %200 = icmp eq i32 %199, 0
  br i1 %200, label %201, label %245

201:                                              ; preds = %195
  %202 = load ptr, ptr %11, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %202, i32 0, i32 2
  %204 = load i32, ptr %203, align 1, !tbaa !19
  %205 = urem i32 %204, 2
  %206 = icmp eq i32 %205, 0
  br i1 %206, label %207, label %245

207:                                              ; preds = %201
  %208 = load ptr, ptr %11, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %208, i32 0, i32 8
  %210 = getelementptr inbounds [3 x i8], ptr %209, i64 0, i64 0
  %211 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %210)
  %212 = icmp eq i32 2, %211
  br i1 %212, label %219, label %213

213:                                              ; preds = %207
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %214, i32 0, i32 8
  %216 = getelementptr inbounds [3 x i8], ptr %215, i64 0, i64 0
  %217 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %216)
  %218 = icmp eq i32 3, %217
  br i1 %218, label %219, label %245

219:                                              ; preds = %213, %207
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %220, i32 0, i32 6
  %222 = load i32, ptr %221, align 4, !tbaa !20
  %223 = icmp uge i32 %222, 1005
  br i1 %223, label %224, label %243

224:                                              ; preds = %219
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %225, i32 0, i32 6
  %227 = load i32, ptr %226, align 4, !tbaa !20
  %228 = icmp ult i32 %227, 1106
  br i1 %228, label %241, label %229

229:                                              ; preds = %224
  %230 = load ptr, ptr %11, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %230, i32 0, i32 0
  %232 = load i32, ptr %231, align 1, !tbaa !22
  %233 = urem i32 %232, 2
  %234 = icmp eq i32 %233, 1
  br i1 %234, label %241, label %235

235:                                              ; preds = %229
  %236 = load ptr, ptr %11, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %236, i32 0, i32 1
  %238 = load i32, ptr %237, align 1, !tbaa !23
  %239 = urem i32 %238, 2
  %240 = icmp eq i32 %239, 1
  br label %241

241:                                              ; preds = %235, %229, %224
  %242 = phi i1 [ true, %229 ], [ true, %224 ], [ %240, %235 ]
  br label %243

243:                                              ; preds = %241, %219
  %244 = phi i1 [ false, %219 ], [ %242, %241 ]
  br label %245

245:                                              ; preds = %243, %213, %201, %195, %189, %183, %175
  %246 = phi i1 [ false, %213 ], [ false, %201 ], [ false, %195 ], [ false, %189 ], [ false, %183 ], [ false, %175 ], [ %244, %243 ]
  %247 = zext i1 %246 to i32
  store i32 %247, ptr %20, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %248 = load ptr, ptr %11, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %248, i32 0, i32 6
  %250 = load i32, ptr %249, align 1, !tbaa !17
  %251 = and i32 %250, 1
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %253, label %294

253:                                              ; preds = %245
  %254 = load ptr, ptr %11, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %254, i32 0, i32 6
  %256 = load i32, ptr %255, align 1, !tbaa !17
  %257 = and i32 %256, 2048
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %259, label %294

259:                                              ; preds = %253
  %260 = load ptr, ptr %11, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %260, i32 0, i32 6
  %262 = load i32, ptr %261, align 1, !tbaa !17
  %263 = and i32 %262, 2
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %294

265:                                              ; preds = %259
  %266 = load ptr, ptr %11, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %266, i32 0, i32 6
  %268 = load i32, ptr %267, align 1, !tbaa !17
  %269 = and i32 %268, 4096
  %270 = icmp eq i32 %269, 0
  br i1 %270, label %271, label %294

271:                                              ; preds = %265
  %272 = load ptr, ptr %11, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %272, i32 0, i32 2
  %274 = load i32, ptr %273, align 1, !tbaa !19
  %275 = urem i32 %274, 2
  %276 = icmp eq i32 %275, 0
  br i1 %276, label %277, label %294

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

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

289:                                              ; preds = %283, %277
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %290, i32 0, i32 6
  %292 = load i32, ptr %291, align 4, !tbaa !20
  %293 = icmp uge i32 %292, 1005
  br label %294

294:                                              ; preds = %289, %283, %271, %265, %259, %253, %245
  %295 = phi i1 [ false, %283 ], [ false, %271 ], [ false, %265 ], [ false, %259 ], [ false, %253 ], [ false, %245 ], [ %293, %289 ]
  %296 = zext i1 %295 to i32
  store i32 %296, ptr %21, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  %297 = load ptr, ptr %11, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %297, i32 0, i32 6
  %299 = load i32, ptr %298, align 1, !tbaa !17
  %300 = and i32 %299, 1
  %301 = icmp eq i32 %300, 0
  br i1 %301, label %302, label %351

302:                                              ; preds = %294
  %303 = load ptr, ptr %11, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %303, i32 0, i32 6
  %305 = load i32, ptr %304, align 1, !tbaa !17
  %306 = and i32 %305, 2048
  %307 = icmp eq i32 %306, 0
  br i1 %307, label %308, label %351

308:                                              ; preds = %302
  %309 = load ptr, ptr %11, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %309, i32 0, i32 6
  %311 = load i32, ptr %310, align 1, !tbaa !17
  %312 = and i32 %311, 2
  %313 = icmp eq i32 %312, 0
  br i1 %313, label %314, label %351

314:                                              ; preds = %308
  %315 = load ptr, ptr %11, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %315, i32 0, i32 6
  %317 = load i32, ptr %316, align 1, !tbaa !17
  %318 = and i32 %317, 4096
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %320, label %351

320:                                              ; preds = %314
  %321 = load ptr, ptr %11, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %321, i32 0, i32 2
  %323 = load i32, ptr %322, align 1, !tbaa !19
  %324 = urem i32 %323, 2
  %325 = icmp eq i32 %324, 0
  br i1 %325, label %326, label %351

326:                                              ; preds = %320
  %327 = load ptr, ptr %11, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %327, i32 0, i32 8
  %329 = getelementptr inbounds [3 x i8], ptr %328, i64 0, i64 0
  %330 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %329)
  %331 = icmp eq i32 2, %330
  br i1 %331, label %338, label %332

332:                                              ; preds = %326
  %333 = load ptr, ptr %11, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %333, i32 0, i32 8
  %335 = getelementptr inbounds [3 x i8], ptr %334, i64 0, i64 0
  %336 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %335)
  %337 = icmp eq i32 3, %336
  br i1 %337, label %338, label %351

338:                                              ; preds = %332, %326
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %339, i32 0, i32 6
  %341 = load i32, ptr %340, align 4, !tbaa !20
  %342 = icmp uge i32 %341, 1106
  br i1 %342, label %343, label %349

343:                                              ; preds = %338
  %344 = load ptr, ptr %11, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %344, i32 0, i32 0
  %346 = load i32, ptr %345, align 1, !tbaa !22
  %347 = urem i32 %346, 2
  %348 = icmp eq i32 %347, 0
  br label %349

349:                                              ; preds = %343, %338
  %350 = phi i1 [ false, %338 ], [ %348, %343 ]
  br label %351

351:                                              ; preds = %349, %332, %320, %314, %308, %302, %294
  %352 = phi i1 [ false, %332 ], [ false, %320 ], [ false, %314 ], [ false, %308 ], [ false, %302 ], [ false, %294 ], [ %350, %349 ]
  %353 = zext i1 %352 to i32
  store i32 %353, ptr %22, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  %354 = load ptr, ptr %11, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %354, i32 0, i32 6
  %356 = load i32, ptr %355, align 1, !tbaa !17
  %357 = and i32 %356, 1
  %358 = icmp eq i32 %357, 0
  br i1 %358, label %359, label %414

359:                                              ; preds = %351
  %360 = load ptr, ptr %11, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %360, i32 0, i32 6
  %362 = load i32, ptr %361, align 1, !tbaa !17
  %363 = and i32 %362, 2048
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %414

365:                                              ; preds = %359
  %366 = load ptr, ptr %11, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %366, i32 0, i32 6
  %368 = load i32, ptr %367, align 1, !tbaa !17
  %369 = and i32 %368, 2
  %370 = icmp ne i32 %369, 0
  br i1 %370, label %371, label %414

371:                                              ; preds = %365
  %372 = load ptr, ptr %11, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %372, i32 0, i32 6
  %374 = load i32, ptr %373, align 1, !tbaa !17
  %375 = and i32 %374, 4096
  %376 = icmp eq i32 %375, 0
  br i1 %376, label %377, label %414

377:                                              ; preds = %371
  %378 = load ptr, ptr %11, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %378, i32 0, i32 2
  %380 = load i32, ptr %379, align 1, !tbaa !19
  %381 = urem i32 %380, 2
  %382 = icmp eq i32 %381, 0
  br i1 %382, label %383, label %414

383:                                              ; preds = %377
  %384 = load ptr, ptr %11, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %384, i32 0, i32 8
  %386 = getelementptr inbounds [3 x i8], ptr %385, i64 0, i64 0
  %387 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %386)
  %388 = icmp eq i32 2, %387
  br i1 %388, label %395, label %389

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

395:                                              ; preds = %389, %383
  %396 = load ptr, ptr %5, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %396, i32 0, i32 6
  %398 = load i32, ptr %397, align 4, !tbaa !20
  %399 = icmp uge i32 %398, 1106
  br i1 %399, label %400, label %412

400:                                              ; preds = %395
  %401 = load ptr, ptr %11, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %401, i32 0, i32 0
  %403 = load i32, ptr %402, align 1, !tbaa !22
  %404 = urem i32 %403, 2
  %405 = icmp eq i32 %404, 0
  br i1 %405, label %406, label %412

406:                                              ; preds = %400
  %407 = load ptr, ptr %11, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %407, i32 0, i32 1
  %409 = load i32, ptr %408, align 1, !tbaa !23
  %410 = urem i32 %409, 2
  %411 = icmp eq i32 %410, 0
  br label %412

412:                                              ; preds = %406, %400, %395
  %413 = phi i1 [ false, %400 ], [ false, %395 ], [ %411, %406 ]
  br label %414

414:                                              ; preds = %412, %389, %377, %371, %365, %359, %351
  %415 = phi i1 [ false, %389 ], [ false, %377 ], [ false, %371 ], [ false, %365 ], [ false, %359 ], [ false, %351 ], [ %413, %412 ]
  %416 = zext i1 %415 to i32
  store i32 %416, ptr %23, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %417 = call i32 @libxsmm_cpuid_x86_amx_gemm_enforce_mx1_tile_blocking()
  %418 = icmp sgt i32 %417, 0
  br i1 %418, label %419, label %420

419:                                              ; preds = %414
  br label %435

420:                                              ; preds = %414
  %421 = load ptr, ptr %8, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 1, !tbaa !23
  %424 = icmp ule i32 %423, 16
  br i1 %424, label %425, label %431

425:                                              ; preds = %420
  %426 = load i32, ptr %22, align 4, !tbaa !10
  %427 = icmp eq i32 %426, 0
  br i1 %427, label %428, label %431

428:                                              ; preds = %425
  %429 = load i32, ptr %23, align 4, !tbaa !10
  %430 = icmp eq i32 %429, 0
  br label %431

431:                                              ; preds = %428, %425, %420
  %432 = phi i1 [ false, %425 ], [ false, %420 ], [ %430, %428 ]
  %433 = zext i1 %432 to i64
  %434 = select i1 %432, i32 1, i32 0
  br label %435

435:                                              ; preds = %431, %419
  %436 = phi i32 [ 1, %419 ], [ %434, %431 ]
  store i32 %436, ptr %24, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %437 = load i32, ptr %23, align 4, !tbaa !10
  %438 = icmp ugt i32 %437, 0
  %439 = zext i1 %438 to i64
  %440 = select i1 %438, i32 2, i32 1
  store i32 %440, ptr %25, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 56, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 56, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store i32 0, ptr %28, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %441 = load ptr, ptr %11, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %441, i32 0, i32 8
  %443 = getelementptr inbounds [3 x i8], ptr %442, i64 0, i64 0
  %444 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %443)
  %445 = icmp eq i32 4, %444
  br i1 %445, label %446, label %459

446:                                              ; preds = %435
  %447 = load ptr, ptr %5, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %447, i32 0, i32 6
  %449 = load i32, ptr %448, align 4, !tbaa !20
  %450 = icmp ult i32 %449, 1106
  br i1 %450, label %457, label %451

451:                                              ; preds = %446
  %452 = load ptr, ptr %11, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %452, i32 0, i32 6
  %454 = load i32, ptr %453, align 1, !tbaa !17
  %455 = and i32 %454, 2048
  %456 = icmp eq i32 %455, 0
  br label %457

457:                                              ; preds = %451, %446
  %458 = phi i1 [ true, %446 ], [ %456, %451 ]
  br label %459

459:                                              ; preds = %457, %435
  %460 = phi i1 [ false, %435 ], [ %458, %457 ]
  %461 = zext i1 %460 to i64
  %462 = select i1 %460, i32 1, i32 0
  store i32 %462, ptr %29, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  %463 = load ptr, ptr %11, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %463, i32 0, i32 8
  %465 = getelementptr inbounds [3 x i8], ptr %464, i64 0, i64 0
  %466 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %465)
  %467 = icmp eq i32 4, %466
  br i1 %467, label %468, label %481

468:                                              ; preds = %459
  %469 = load ptr, ptr %5, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %469, i32 0, i32 6
  %471 = load i32, ptr %470, align 4, !tbaa !20
  %472 = icmp ult i32 %471, 1106
  br i1 %472, label %479, label %473

473:                                              ; preds = %468
  %474 = load ptr, ptr %11, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %474, i32 0, i32 6
  %476 = load i32, ptr %475, align 1, !tbaa !17
  %477 = and i32 %476, 2048
  %478 = icmp eq i32 %477, 0
  br label %479

479:                                              ; preds = %473, %468
  %480 = phi i1 [ true, %468 ], [ %478, %473 ]
  br label %481

481:                                              ; preds = %479, %459
  %482 = phi i1 [ false, %459 ], [ %480, %479 ]
  %483 = zext i1 %482 to i64
  %484 = select i1 %482, i32 1, i32 0
  store i32 %484, ptr %30, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %485 = load ptr, ptr %11, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %485, i32 0, i32 8
  %487 = getelementptr inbounds [3 x i8], ptr %486, i64 0, i64 0
  %488 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %487)
  %489 = icmp eq i32 5, %488
  br i1 %489, label %490, label %503

490:                                              ; preds = %481
  %491 = load ptr, ptr %5, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %491, i32 0, i32 6
  %493 = load i32, ptr %492, align 4, !tbaa !20
  %494 = icmp ult i32 %493, 1106
  br i1 %494, label %501, label %495

495:                                              ; preds = %490
  %496 = load ptr, ptr %11, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %496, i32 0, i32 6
  %498 = load i32, ptr %497, align 1, !tbaa !17
  %499 = and i32 %498, 2048
  %500 = icmp eq i32 %499, 0
  br label %501

501:                                              ; preds = %495, %490
  %502 = phi i1 [ true, %490 ], [ %500, %495 ]
  br label %503

503:                                              ; preds = %501, %481
  %504 = phi i1 [ false, %481 ], [ %502, %501 ]
  %505 = zext i1 %504 to i64
  %506 = select i1 %504, i32 1, i32 0
  store i32 %506, ptr %31, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %507 = load ptr, ptr %11, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %507, i32 0, i32 8
  %509 = getelementptr inbounds [3 x i8], ptr %508, i64 0, i64 0
  %510 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %509)
  %511 = icmp eq i32 5, %510
  br i1 %511, label %512, label %525

512:                                              ; preds = %503
  %513 = load ptr, ptr %5, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %513, i32 0, i32 6
  %515 = load i32, ptr %514, align 4, !tbaa !20
  %516 = icmp ult i32 %515, 1106
  br i1 %516, label %523, label %517

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

523:                                              ; preds = %517, %512
  %524 = phi i1 [ true, %512 ], [ %522, %517 ]
  br label %525

525:                                              ; preds = %523, %503
  %526 = phi i1 [ false, %503 ], [ %524, %523 ]
  %527 = zext i1 %526 to i64
  %528 = select i1 %526, i32 1, i32 0
  store i32 %528, ptr %32, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 0, ptr %33, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  store i32 0, ptr %34, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  store i32 0, ptr %35, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  store i32 0, ptr %36, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  store i32 0, ptr %37, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  store i32 0, ptr %38, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 34, ptr %39) #4
  br label %529

529:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #4
  store i8 34, ptr %40, align 1, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  store ptr %39, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #4
  store i8 0, ptr %42, align 1, !tbaa !12
  br label %530

530:                                              ; preds = %541, %529
  %531 = load i8, ptr %42, align 1, !tbaa !12
  %532 = sext i8 %531 to i32
  %533 = load i8, ptr %40, align 1, !tbaa !12
  %534 = sext i8 %533 to i32
  %535 = icmp slt i32 %532, %534
  br i1 %535, label %536, label %544

536:                                              ; preds = %530
  %537 = load ptr, ptr %41, align 8, !tbaa !5
  %538 = load i8, ptr %42, align 1, !tbaa !12
  %539 = sext i8 %538 to i64
  %540 = getelementptr inbounds i8, ptr %537, i64 %539
  store i8 0, ptr %540, align 1, !tbaa !12
  br label %541

541:                                              ; preds = %536
  %542 = load i8, ptr %42, align 1, !tbaa !12
  %543 = add i8 %542, 1
  store i8 %543, ptr %42, align 1, !tbaa !12
  br label %530, !llvm.loop !24

544:                                              ; preds = %530
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #4
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545
  %547 = load i32, ptr %29, align 4, !tbaa !10
  %548 = icmp sgt i32 %547, 0
  br i1 %548, label %552, label %549

549:                                              ; preds = %546
  %550 = load i32, ptr %31, align 4, !tbaa !10
  %551 = icmp sgt i32 %550, 0
  br i1 %551, label %552, label %642

552:                                              ; preds = %549, %546
  %553 = load ptr, ptr %11, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %553, i32 0, i32 6
  %555 = load i32, ptr %554, align 1, !tbaa !17
  %556 = and i32 64, %555
  %557 = icmp eq i32 %556, 0
  br i1 %557, label %558, label %564

558:                                              ; preds = %552
  %559 = load ptr, ptr %11, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %559, i32 0, i32 6
  %561 = load i32, ptr %560, align 1, !tbaa !17
  %562 = and i32 128, %561
  %563 = icmp eq i32 %562, 0
  br i1 %563, label %577, label %564

564:                                              ; preds = %558, %552
  %565 = load ptr, ptr %11, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %565, i32 0, i32 6
  %567 = load i32, ptr %566, align 1, !tbaa !17
  %568 = and i32 64, %567
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %570, label %576

570:                                              ; preds = %564
  %571 = load ptr, ptr %11, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %571, i32 0, i32 6
  %573 = load i32, ptr %572, align 1, !tbaa !17
  %574 = and i32 128, %573
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %577, label %576

576:                                              ; preds = %570, %564
  store i32 1, ptr %43, align 4
  br label %1733

577:                                              ; preds = %570, %558
  %578 = load ptr, ptr %5, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %578, i32 0, i32 6
  %580 = load i32, ptr %579, align 4, !tbaa !20
  %581 = icmp uge i32 %580, 1105
  br i1 %581, label %582, label %595

582:                                              ; preds = %577
  %583 = load i32, ptr %29, align 4, !tbaa !10
  %584 = icmp sgt i32 %583, 0
  br i1 %584, label %585, label %595

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

591:                                              ; preds = %585
  %592 = load ptr, ptr %11, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %592, i32 0, i32 8
  %594 = getelementptr inbounds [3 x i8], ptr %593, i64 0, i64 0
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 3, i32 noundef 3, i32 noundef 1, i32 noundef 1, ptr noundef %594)
  br label %599

595:                                              ; preds = %585, %582, %577
  %596 = load ptr, ptr %11, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %596, i32 0, i32 8
  %598 = getelementptr inbounds [3 x i8], ptr %597, i64 0, i64 0
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 2, i32 noundef 2, i32 noundef 1, i32 noundef 1, ptr noundef %598)
  br label %599

599:                                              ; preds = %595, %591
  %600 = load ptr, ptr %11, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %600, i32 0, i32 0
  %602 = load i32, ptr %601, align 1, !tbaa !22
  %603 = load ptr, ptr %11, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %603, i32 0, i32 3
  store i32 %602, ptr %604, align 1, !tbaa !27
  %605 = load ptr, ptr %8, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %605, i32 0, i32 2
  %607 = load i32, ptr %606, align 1, !tbaa !19
  %608 = load ptr, ptr %11, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %608, i32 0, i32 2
  store i32 %607, ptr %609, align 1, !tbaa !19
  %610 = load ptr, ptr %11, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %610, i32 0, i32 2
  %612 = load i32, ptr %611, align 1, !tbaa !19
  %613 = load ptr, ptr %11, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %613, i32 0, i32 4
  store i32 %612, ptr %614, align 1, !tbaa !28
  %615 = load i32, ptr %30, align 4, !tbaa !10
  %616 = icmp sgt i32 %615, 0
  br i1 %616, label %620, label %617

617:                                              ; preds = %599
  %618 = load i32, ptr %32, align 4, !tbaa !10
  %619 = icmp sgt i32 %618, 0
  br i1 %619, label %620, label %626

620:                                              ; preds = %617, %599
  %621 = load ptr, ptr %11, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %621, i32 0, i32 0
  %623 = load i32, ptr %622, align 1, !tbaa !22
  %624 = load ptr, ptr %11, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %624, i32 0, i32 5
  store i32 %623, ptr %625, align 1, !tbaa !29
  br label %626

626:                                              ; preds = %620, %617
  %627 = load i32, ptr %29, align 4, !tbaa !10
  %628 = icmp sgt i32 %627, 0
  br i1 %628, label %629, label %636

629:                                              ; preds = %626
  %630 = load ptr, ptr %11, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %630, i32 0, i32 6
  %632 = load i32, ptr %631, align 1, !tbaa !17
  %633 = and i32 %632, 2048
  %634 = icmp eq i32 %633, 0
  br i1 %634, label %635, label %636

635:                                              ; preds = %629
  store i32 1, ptr %38, align 4, !tbaa !10
  br label %637

636:                                              ; preds = %629, %626
  store i32 0, ptr %38, align 4, !tbaa !10
  br label %637

637:                                              ; preds = %636, %635
  %638 = load ptr, ptr %11, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %638, i32 0, i32 6
  %640 = load i32, ptr %639, align 1, !tbaa !17
  %641 = or i32 %640, 2048
  store i32 %641, ptr %639, align 1, !tbaa !17
  br label %642

642:                                              ; preds = %637, %549
  %643 = load i32, ptr %18, align 4, !tbaa !10
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %654, label %645

645:                                              ; preds = %642
  %646 = load i32, ptr %19, align 4, !tbaa !10
  %647 = icmp ne i32 %646, 0
  br i1 %647, label %654, label %648

648:                                              ; preds = %645
  %649 = load i32, ptr %20, align 4, !tbaa !10
  %650 = icmp ne i32 %649, 0
  br i1 %650, label %654, label %651

651:                                              ; preds = %648
  %652 = load i32, ptr %21, align 4, !tbaa !10
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %659

654:                                              ; preds = %651, %648, %645, %642
  %655 = load ptr, ptr %11, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %655, i32 0, i32 6
  %657 = load i32, ptr %656, align 1, !tbaa !17
  %658 = or i32 %657, 2048
  store i32 %658, ptr %656, align 1, !tbaa !17
  br label %659

659:                                              ; preds = %654, %651
  %660 = load i32, ptr %19, align 4, !tbaa !10
  %661 = icmp ne i32 %660, 0
  br i1 %661, label %665, label %662

662:                                              ; preds = %659
  %663 = load i32, ptr %21, align 4, !tbaa !10
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %672

665:                                              ; preds = %662, %659
  %666 = load ptr, ptr %11, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %666, i32 0, i32 6
  %668 = load i32, ptr %667, align 1, !tbaa !17
  %669 = and i32 %668, -2
  %670 = load ptr, ptr %11, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %670, i32 0, i32 6
  store i32 %669, ptr %671, align 1, !tbaa !17
  br label %672

672:                                              ; preds = %665, %662
  %673 = load i32, ptr %20, align 4, !tbaa !10
  %674 = icmp ne i32 %673, 0
  br i1 %674, label %678, label %675

675:                                              ; preds = %672
  %676 = load i32, ptr %21, align 4, !tbaa !10
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %678, label %685

678:                                              ; preds = %675, %672
  %679 = load ptr, ptr %11, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %679, i32 0, i32 6
  %681 = load i32, ptr %680, align 1, !tbaa !17
  %682 = and i32 %681, -3
  %683 = load ptr, ptr %11, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %683, i32 0, i32 6
  store i32 %682, ptr %684, align 1, !tbaa !17
  br label %685

685:                                              ; preds = %678, %675
  %686 = load ptr, ptr %5, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %686, i32 0, i32 6
  %688 = load i32, ptr %687, align 4, !tbaa !20
  %689 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef %9, i32 noundef %688, ptr noundef %689, i32 noundef 0)
  %690 = load i32, ptr %24, align 4, !tbaa !10
  %691 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 118
  store i32 %690, ptr %691, align 8, !tbaa !30
  %692 = load i32, ptr %38, align 4, !tbaa !10
  %693 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 119
  store i32 %692, ptr %693, align 4, !tbaa !33
  %694 = load i32, ptr %18, align 4, !tbaa !10
  %695 = icmp ne i32 %694, 0
  br i1 %695, label %696, label %698

696:                                              ; preds = %685
  %697 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 124
  store i32 1, ptr %697, align 8, !tbaa !34
  br label %698

698:                                              ; preds = %696, %685
  %699 = load i32, ptr %19, align 4, !tbaa !10
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %708

701:                                              ; preds = %698
  %702 = load ptr, ptr %11, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %702, i32 0, i32 0
  %704 = load i32, ptr %703, align 1, !tbaa !22
  %705 = load ptr, ptr %11, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %705, i32 0, i32 3
  store i32 %704, ptr %706, align 1, !tbaa !27
  %707 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 125
  store i32 1, ptr %707, align 4, !tbaa !35
  br label %708

708:                                              ; preds = %701, %698
  %709 = load i32, ptr %20, align 4, !tbaa !10
  %710 = icmp ne i32 %709, 0
  br i1 %710, label %711, label %723

711:                                              ; preds = %708
  %712 = load ptr, ptr %11, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %712, i32 0, i32 0
  %714 = load i32, ptr %713, align 1, !tbaa !22
  %715 = load ptr, ptr %11, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %715, i32 0, i32 3
  store i32 %714, ptr %716, align 1, !tbaa !27
  %717 = load ptr, ptr %11, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %717, i32 0, i32 2
  %719 = load i32, ptr %718, align 1, !tbaa !19
  %720 = load ptr, ptr %11, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %720, i32 0, i32 4
  store i32 %719, ptr %721, align 1, !tbaa !28
  %722 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 126
  store i32 1, ptr %722, align 8, !tbaa !36
  br label %723

723:                                              ; preds = %711, %708
  %724 = load i32, ptr %21, align 4, !tbaa !10
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %738

726:                                              ; preds = %723
  %727 = load ptr, ptr %11, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %727, i32 0, i32 0
  %729 = load i32, ptr %728, align 1, !tbaa !22
  %730 = load ptr, ptr %11, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %730, i32 0, i32 3
  store i32 %729, ptr %731, align 1, !tbaa !27
  %732 = load ptr, ptr %11, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %732, i32 0, i32 2
  %734 = load i32, ptr %733, align 1, !tbaa !19
  %735 = load ptr, ptr %11, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %735, i32 0, i32 4
  store i32 %734, ptr %736, align 1, !tbaa !28
  %737 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 127
  store i32 1, ptr %737, align 4, !tbaa !37
  br label %738

738:                                              ; preds = %726, %723
  %739 = load ptr, ptr %11, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %739, i32 0, i32 0
  %741 = load i32, ptr %740, align 1, !tbaa !22
  %742 = urem i32 %741, 16
  %743 = icmp eq i32 %742, 0
  br i1 %743, label %752, label %744

744:                                              ; preds = %738
  %745 = load ptr, ptr %11, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %745, i32 0, i32 0
  %747 = load i32, ptr %746, align 1, !tbaa !22
  %748 = icmp ule i32 %747, 32
  br i1 %748, label %752, label %749

749:                                              ; preds = %744
  %750 = load i32, ptr %24, align 4, !tbaa !10
  %751 = icmp ugt i32 %750, 0
  br i1 %751, label %752, label %810

752:                                              ; preds = %749, %744, %738
  %753 = load i32, ptr %24, align 4, !tbaa !10
  %754 = icmp ugt i32 %753, 0
  br i1 %754, label %755, label %808

755:                                              ; preds = %752
  %756 = load ptr, ptr %11, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %756, i32 0, i32 0
  %758 = load i32, ptr %757, align 1, !tbaa !22
  %759 = icmp ugt i32 %758, 32
  br i1 %759, label %760, label %808

760:                                              ; preds = %755
  %761 = load ptr, ptr %11, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %761, i32 0, i32 0
  %763 = load i32, ptr %762, align 1, !tbaa !22
  %764 = urem i32 %763, 16
  %765 = icmp eq i32 %764, 0
  br i1 %765, label %789, label %766

766:                                              ; preds = %760
  %767 = load ptr, ptr %11, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %767, i32 0, i32 0
  %769 = load i32, ptr %768, align 1, !tbaa !22
  %770 = urem i32 %769, 32
  %771 = icmp eq i32 %770, 0
  br i1 %771, label %789, label %772

772:                                              ; preds = %766
  %773 = load ptr, ptr %11, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %773, i32 0, i32 0
  %775 = load i32, ptr %774, align 1, !tbaa !22
  %776 = urem i32 %775, 48
  %777 = icmp eq i32 %776, 0
  br i1 %777, label %789, label %778

778:                                              ; preds = %772
  %779 = load ptr, ptr %11, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %779, i32 0, i32 0
  %781 = load i32, ptr %780, align 1, !tbaa !22
  %782 = urem i32 %781, 64
  %783 = icmp eq i32 %782, 0
  br i1 %783, label %789, label %784

784:                                              ; preds = %778
  %785 = load ptr, ptr %11, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %785, i32 0, i32 0
  %787 = load i32, ptr %786, align 1, !tbaa !22
  %788 = icmp ule i32 %787, 64
  br i1 %788, label %789, label %790

789:                                              ; preds = %784, %778, %772, %766, %760
  store i32 1, ptr %28, align 4, !tbaa !10
  br label %807

790:                                              ; preds = %784
  %791 = load ptr, ptr %11, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %791, i32 0, i32 0
  %793 = load i32, ptr %792, align 1, !tbaa !22
  %794 = load ptr, ptr %11, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %794, i32 0, i32 0
  %796 = load i32, ptr %795, align 1, !tbaa !22
  %797 = urem i32 %796, 64
  %798 = sub i32 %793, %797
  store i32 %798, ptr %12, align 4, !tbaa !10
  %799 = load ptr, ptr %11, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %799, i32 0, i32 0
  %801 = load i32, ptr %800, align 1, !tbaa !22
  %802 = load i32, ptr %12, align 4, !tbaa !10
  %803 = sub i32 %801, %802
  store i32 %803, ptr %13, align 4, !tbaa !10
  %804 = load i32, ptr %12, align 4, !tbaa !10
  %805 = load ptr, ptr %11, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %805, i32 0, i32 0
  store i32 %804, ptr %806, align 1, !tbaa !22
  store i32 2, ptr %28, align 4, !tbaa !10
  br label %807

807:                                              ; preds = %790, %789
  br label %809

808:                                              ; preds = %755, %752
  store i32 1, ptr %28, align 4, !tbaa !10
  br label %809

809:                                              ; preds = %808, %807
  br label %827

810:                                              ; preds = %749
  %811 = load ptr, ptr %11, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %811, i32 0, i32 0
  %813 = load i32, ptr %812, align 1, !tbaa !22
  %814 = load ptr, ptr %11, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %814, i32 0, i32 0
  %816 = load i32, ptr %815, align 1, !tbaa !22
  %817 = urem i32 %816, 32
  %818 = sub i32 %813, %817
  store i32 %818, ptr %12, align 4, !tbaa !10
  %819 = load ptr, ptr %11, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %819, i32 0, i32 0
  %821 = load i32, ptr %820, align 1, !tbaa !22
  %822 = load i32, ptr %12, align 4, !tbaa !10
  %823 = sub i32 %821, %822
  store i32 %823, ptr %13, align 4, !tbaa !10
  %824 = load i32, ptr %12, align 4, !tbaa !10
  %825 = load ptr, ptr %11, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %825, i32 0, i32 0
  store i32 %824, ptr %826, align 1, !tbaa !22
  store i32 2, ptr %28, align 4, !tbaa !10
  br label %827

827:                                              ; preds = %810, %809
  %828 = load ptr, ptr %8, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %828, i32 0, i32 6
  %830 = load i32, ptr %829, align 1, !tbaa !17
  %831 = and i32 %830, 1
  %832 = icmp ugt i32 %831, 0
  br i1 %832, label %833, label %916

833:                                              ; preds = %827
  %834 = load ptr, ptr %5, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %834, i32 0, i32 6
  %836 = load i32, ptr %835, align 4, !tbaa !20
  %837 = icmp uge i32 %836, 1106
  br i1 %837, label %838, label %916

838:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  store i32 32, ptr %44, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  %839 = load ptr, ptr %8, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %839, i32 0, i32 8
  %841 = getelementptr inbounds [3 x i8], ptr %840, i64 0, i64 0
  %842 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %841)
  %843 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %842)
  store i32 %843, ptr %45, align 4, !tbaa !10
  %844 = load ptr, ptr %8, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %844, i32 0, i32 8
  %846 = getelementptr inbounds [3 x i8], ptr %845, i64 0, i64 0
  %847 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %846)
  %848 = icmp eq i32 2, %847
  br i1 %848, label %855, label %849

849:                                              ; preds = %838
  %850 = load ptr, ptr %8, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %850, i32 0, i32 8
  %852 = getelementptr inbounds [3 x i8], ptr %851, i64 0, i64 0
  %853 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %852)
  %854 = icmp eq i32 3, %853
  br i1 %854, label %855, label %856

855:                                              ; preds = %849, %838
  store i32 32, ptr %44, align 4, !tbaa !10
  br label %865

856:                                              ; preds = %849
  %857 = load ptr, ptr %8, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %857, i32 0, i32 8
  %859 = getelementptr inbounds [3 x i8], ptr %858, i64 0, i64 0
  %860 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %859)
  %861 = icmp eq i32 12, %860
  br i1 %861, label %862, label %863

862:                                              ; preds = %856
  store i32 64, ptr %44, align 4, !tbaa !10
  br label %864

863:                                              ; preds = %856
  store i32 1, ptr %44, align 4, !tbaa !10
  br label %864

864:                                              ; preds = %863, %862
  br label %865

865:                                              ; preds = %864, %855
  br label %866

866:                                              ; preds = %873, %865
  %867 = load ptr, ptr %8, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %867, i32 0, i32 2
  %869 = load i32, ptr %868, align 1, !tbaa !19
  %870 = load i32, ptr %44, align 4, !tbaa !10
  %871 = urem i32 %869, %870
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %873, label %877

873:                                              ; preds = %866
  %874 = load i32, ptr %45, align 4, !tbaa !10
  %875 = load i32, ptr %44, align 4, !tbaa !10
  %876 = sub i32 %875, %874
  store i32 %876, ptr %44, align 4, !tbaa !10
  br label %866, !llvm.loop !38

877:                                              ; preds = %866
  %878 = load ptr, ptr %8, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %878, i32 0, i32 0
  %880 = load i32, ptr %879, align 1, !tbaa !22
  %881 = urem i32 %880, 32
  %882 = icmp eq i32 %881, 0
  br i1 %882, label %883, label %886

883:                                              ; preds = %877
  %884 = load i32, ptr %44, align 4, !tbaa !10
  %885 = icmp eq i32 %884, 32
  br i1 %885, label %897, label %886

886:                                              ; preds = %883, %877
  %887 = load ptr, ptr %8, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %887, i32 0, i32 0
  %889 = load i32, ptr %888, align 1, !tbaa !22
  %890 = urem i32 %889, 16
  %891 = icmp eq i32 %890, 0
  br i1 %891, label %897, label %892

892:                                              ; preds = %886
  %893 = load ptr, ptr %8, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %893, i32 0, i32 0
  %895 = load i32, ptr %894, align 1, !tbaa !22
  %896 = icmp ule i32 %895, 16
  br i1 %896, label %897, label %898

897:                                              ; preds = %892, %886, %883
  br label %915

898:                                              ; preds = %892
  %899 = load ptr, ptr %8, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %899, i32 0, i32 0
  %901 = load i32, ptr %900, align 1, !tbaa !22
  %902 = load ptr, ptr %8, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %902, i32 0, i32 0
  %904 = load i32, ptr %903, align 1, !tbaa !22
  %905 = urem i32 %904, 16
  %906 = sub i32 %901, %905
  store i32 %906, ptr %12, align 4, !tbaa !10
  %907 = load ptr, ptr %8, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %907, i32 0, i32 0
  %909 = load i32, ptr %908, align 1, !tbaa !22
  %910 = load i32, ptr %12, align 4, !tbaa !10
  %911 = sub i32 %909, %910
  store i32 %911, ptr %13, align 4, !tbaa !10
  %912 = load i32, ptr %12, align 4, !tbaa !10
  %913 = load ptr, ptr %11, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %913, i32 0, i32 0
  store i32 %912, ptr %914, align 1, !tbaa !22
  store i32 2, ptr %28, align 4, !tbaa !10
  br label %915

915:                                              ; preds = %898, %897
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  br label %916

916:                                              ; preds = %915, %833, %827
  %917 = load ptr, ptr %11, align 8, !tbaa !5
  %918 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  %919 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %27, i64 0, i64 0
  call void @libxsmm_generator_gemm_init_micro_kernel_config_tileblocking(ptr noundef %917, ptr noundef %9, ptr noundef %918, ptr noundef %919, ptr noundef %39)
  %920 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  %921 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %920, i32 0, i32 0
  %922 = load i32, ptr %921, align 16, !tbaa !39
  %923 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 89
  store i32 %922, ptr %923, align 4, !tbaa !41
  %924 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %27, i64 0, i64 0
  %925 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %924, i32 0, i32 0
  %926 = load i32, ptr %925, align 16, !tbaa !39
  %927 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 90
  store i32 %926, ptr %927, align 8, !tbaa !42
  %928 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 98
  %929 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %928, i64 0, i64 0
  %930 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %929, ptr align 16 %930, i64 28, i1 false), !tbaa.struct !43
  %931 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 98
  %932 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %931, i64 0, i64 1
  %933 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %932, ptr align 4 %933, i64 28, i1 false), !tbaa.struct !43
  %934 = load ptr, ptr %11, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %934, i32 0, i32 6
  %936 = load i32, ptr %935, align 1, !tbaa !17
  %937 = and i32 64, %936
  %938 = icmp eq i32 %937, 0
  br i1 %938, label %939, label %945

939:                                              ; preds = %916
  %940 = load ptr, ptr %11, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %940, i32 0, i32 6
  %942 = load i32, ptr %941, align 1, !tbaa !17
  %943 = and i32 128, %942
  %944 = icmp eq i32 %943, 0
  br i1 %944, label %957, label %945

945:                                              ; preds = %939, %916
  %946 = load ptr, ptr %11, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %946, i32 0, i32 6
  %948 = load i32, ptr %947, align 1, !tbaa !17
  %949 = and i32 64, %948
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %1116

951:                                              ; preds = %945
  %952 = load ptr, ptr %11, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %952, i32 0, i32 6
  %954 = load i32, ptr %953, align 1, !tbaa !17
  %955 = and i32 128, %954
  %956 = icmp ne i32 %955, 0
  br i1 %956, label %957, label %1116

957:                                              ; preds = %951, %939
  %958 = load ptr, ptr %11, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %958, i32 0, i32 6
  %960 = load i32, ptr %959, align 1, !tbaa !17
  %961 = and i32 16384, %960
  %962 = icmp eq i32 %961, 16384
  br i1 %962, label %969, label %963

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

969:                                              ; preds = %963, %957
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  store i32 32, ptr %46, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  store i32 80, ptr %47, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  store i32 128, ptr %48, align 4, !tbaa !10
  %970 = load ptr, ptr %5, align 8, !tbaa !5
  %971 = load ptr, ptr %7, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %971, i32 0, i32 0
  %973 = load i32, ptr %972, align 4, !tbaa !44
  %974 = load ptr, ptr %7, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %974, i32 0, i32 23
  %976 = load i32, ptr %975, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %970, i32 noundef -1568407413, i32 noundef %973, i32 noundef %976)
  %977 = load ptr, ptr %5, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %979 = load i32, ptr %978, align 8, !tbaa !47
  %980 = load ptr, ptr %7, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %980, i32 0, i32 23
  %982 = load i32, ptr %981, align 4, !tbaa !46
  %983 = load i32, ptr %46, align 4, !tbaa !10
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %977, i32 noundef %979, i32 noundef %982, i32 noundef 127, i32 noundef 0, i32 noundef %983, i32 noundef 7, i32 noundef 0)
  %984 = load ptr, ptr %8, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %984, i32 0, i32 6
  %986 = load i32, ptr %985, align 1, !tbaa !17
  %987 = and i32 %986, 8388608
  %988 = icmp ne i32 %987, 0
  br i1 %988, label %989, label %1001

989:                                              ; preds = %969
  %990 = load ptr, ptr %5, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %992 = load i32, ptr %991, align 8, !tbaa !47
  %993 = load ptr, ptr %7, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %993, i32 0, i32 23
  %995 = load i32, ptr %994, align 4, !tbaa !46
  %996 = load i32, ptr %46, align 4, !tbaa !10
  %997 = add nsw i32 %996, 8
  %998 = load ptr, ptr %7, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %998, i32 0, i32 29
  %1000 = load i32, ptr %999, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %990, i32 noundef %992, i32 noundef %995, i32 noundef 127, i32 noundef 0, i32 noundef %997, i32 noundef %1000, i32 noundef 0)
  br label %1001

1001:                                             ; preds = %989, %969
  %1002 = load ptr, ptr %5, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1004 = load i32, ptr %1003, align 8, !tbaa !47
  %1005 = load ptr, ptr %7, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1005, i32 0, i32 23
  %1007 = load i32, ptr %1006, align 4, !tbaa !46
  %1008 = load i32, ptr %47, align 4, !tbaa !10
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1002, i32 noundef %1004, i32 noundef %1007, i32 noundef 127, i32 noundef 0, i32 noundef %1008, i32 noundef 6, i32 noundef 0)
  %1009 = load ptr, ptr %5, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1011 = load i32, ptr %1010, align 8, !tbaa !47
  %1012 = load ptr, ptr %7, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1012, i32 0, i32 23
  %1014 = load i32, ptr %1013, align 4, !tbaa !46
  %1015 = load i32, ptr %48, align 4, !tbaa !10
  %1016 = load ptr, ptr %7, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1016, i32 0, i32 5
  %1018 = load i32, ptr %1017, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1009, i32 noundef %1011, i32 noundef %1014, i32 noundef 127, i32 noundef 0, i32 noundef %1015, i32 noundef %1018, i32 noundef 0)
  %1019 = load ptr, ptr %11, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1019, i32 0, i32 6
  %1021 = load i32, ptr %1020, align 1, !tbaa !17
  %1022 = and i32 %1021, 65536
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1036, label %1024

1024:                                             ; preds = %1001
  %1025 = load ptr, ptr %11, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1025, i32 0, i32 6
  %1027 = load i32, ptr %1026, align 1, !tbaa !17
  %1028 = and i32 %1027, 262144
  %1029 = icmp ne i32 %1028, 0
  br i1 %1029, label %1036, label %1030

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %11, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1031, i32 0, i32 6
  %1033 = load i32, ptr %1032, align 1, !tbaa !17
  %1034 = and i32 %1033, 131072
  %1035 = icmp ne i32 %1034, 0
  br i1 %1035, label %1036, label %1075

1036:                                             ; preds = %1030, %1024, %1001
  %1037 = load ptr, ptr %5, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1039 = load i32, ptr %1038, align 8, !tbaa !47
  %1040 = load ptr, ptr %7, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1040, i32 0, i32 23
  %1042 = load i32, ptr %1041, align 4, !tbaa !46
  %1043 = load ptr, ptr %7, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1043, i32 0, i32 13
  %1045 = load i32, ptr %1044, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1037, i32 noundef %1039, i32 noundef %1042, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %1045, i32 noundef 0)
  %1046 = load ptr, ptr %11, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1046, i32 0, i32 6
  %1048 = load i32, ptr %1047, align 1, !tbaa !17
  %1049 = and i32 %1048, 131072
  %1050 = icmp ne i32 %1049, 0
  br i1 %1050, label %1051, label %1074

1051:                                             ; preds = %1036
  %1052 = load ptr, ptr %5, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1054 = load i32, ptr %1053, align 8, !tbaa !47
  %1055 = load ptr, ptr %7, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1055, i32 0, i32 23
  %1057 = load i32, ptr %1056, align 4, !tbaa !46
  %1058 = load i32, ptr %46, align 4, !tbaa !10
  %1059 = add nsw i32 %1058, 8
  %1060 = load ptr, ptr %7, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1060, i32 0, i32 7
  %1062 = load i32, ptr %1061, align 4, !tbaa !51
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1052, i32 noundef %1054, i32 noundef %1057, i32 noundef 127, i32 noundef 0, i32 noundef %1059, i32 noundef %1062, i32 noundef 0)
  %1063 = load ptr, ptr %5, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1065 = load i32, ptr %1064, align 8, !tbaa !47
  %1066 = load ptr, ptr %7, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1066, i32 0, i32 23
  %1068 = load i32, ptr %1067, align 4, !tbaa !46
  %1069 = load i32, ptr %47, align 4, !tbaa !10
  %1070 = add nsw i32 %1069, 8
  %1071 = load ptr, ptr %7, align 8, !tbaa !5
  %1072 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1071, i32 0, i32 9
  %1073 = load i32, ptr %1072, align 4, !tbaa !52
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1063, i32 noundef %1065, i32 noundef %1068, i32 noundef 127, i32 noundef 0, i32 noundef %1070, i32 noundef %1073, i32 noundef 0)
  br label %1074

1074:                                             ; preds = %1051, %1036
  br label %1075

1075:                                             ; preds = %1074, %1030
  %1076 = load ptr, ptr %11, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1076, i32 0, i32 8
  %1078 = getelementptr inbounds [3 x i8], ptr %1077, i64 0, i64 0
  %1079 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1078)
  %1080 = icmp eq i32 12, %1079
  br i1 %1080, label %1081, label %1099

1081:                                             ; preds = %1075
  %1082 = load ptr, ptr %11, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1082, i32 0, i32 8
  %1084 = getelementptr inbounds [3 x i8], ptr %1083, i64 0, i64 0
  %1085 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1084)
  %1086 = icmp eq i32 1, %1085
  br i1 %1086, label %1087, label %1099

1087:                                             ; preds = %1081
  %1088 = load ptr, ptr %5, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1090 = load i32, ptr %1089, align 8, !tbaa !47
  %1091 = load ptr, ptr %7, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1091, i32 0, i32 23
  %1093 = load i32, ptr %1092, align 4, !tbaa !46
  %1094 = load i32, ptr %48, align 4, !tbaa !10
  %1095 = add nsw i32 %1094, 16
  %1096 = load ptr, ptr %7, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1096, i32 0, i32 20
  %1098 = load i32, ptr %1097, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1088, i32 noundef %1090, i32 noundef %1093, i32 noundef 127, i32 noundef 0, i32 noundef %1095, i32 noundef %1098, i32 noundef 0)
  br label %1099

1099:                                             ; preds = %1087, %1081, %1075
  %1100 = load i32, ptr %17, align 4, !tbaa !10
  %1101 = icmp ugt i32 %1100, 0
  br i1 %1101, label %1102, label %1114

1102:                                             ; preds = %1099
  %1103 = load ptr, ptr %5, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1105 = load i32, ptr %1104, align 8, !tbaa !47
  %1106 = load ptr, ptr %7, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1106, i32 0, i32 23
  %1108 = load i32, ptr %1107, align 4, !tbaa !46
  %1109 = load i32, ptr %46, align 4, !tbaa !10
  %1110 = add nsw i32 %1109, 16
  %1111 = load ptr, ptr %7, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1111, i32 0, i32 20
  %1113 = load i32, ptr %1112, align 4, !tbaa !53
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1103, i32 noundef %1105, i32 noundef %1108, i32 noundef 127, i32 noundef 0, i32 noundef %1110, i32 noundef %1113, i32 noundef 0)
  br label %1114

1114:                                             ; preds = %1102, %1099
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  br label %1115

1115:                                             ; preds = %1114, %963
  br label %1116

1116:                                             ; preds = %1115, %951, %945
  %1117 = load i32, ptr %29, align 4, !tbaa !10
  %1118 = icmp sgt i32 %1117, 0
  br i1 %1118, label %1122, label %1119

1119:                                             ; preds = %1116
  %1120 = load i32, ptr %31, align 4, !tbaa !10
  %1121 = icmp sgt i32 %1120, 0
  br i1 %1121, label %1122, label %1142

1122:                                             ; preds = %1119, %1116
  %1123 = load ptr, ptr %8, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1123, i32 0, i32 2
  %1125 = load i32, ptr %1124, align 1, !tbaa !19
  %1126 = load ptr, ptr %11, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1126, i32 0, i32 2
  store i32 %1125, ptr %1127, align 1, !tbaa !19
  %1128 = load ptr, ptr %11, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1128, i32 0, i32 2
  %1130 = load i32, ptr %1129, align 1, !tbaa !19
  %1131 = load ptr, ptr %11, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1131, i32 0, i32 4
  store i32 %1130, ptr %1132, align 1, !tbaa !28
  %1133 = load ptr, ptr %8, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1133, i32 0, i32 0
  %1135 = load i32, ptr %1134, align 1, !tbaa !22
  %1136 = load ptr, ptr %11, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1136, i32 0, i32 0
  store i32 %1135, ptr %1137, align 1, !tbaa !22
  %1138 = load ptr, ptr %11, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1138, i32 0, i32 6
  %1140 = load i32, ptr %1139, align 1, !tbaa !17
  %1141 = or i32 %1140, 2048
  store i32 %1141, ptr %1139, align 1, !tbaa !17
  br label %1142

1142:                                             ; preds = %1122, %1119
  %1143 = load ptr, ptr %11, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1143, i32 0, i32 6
  %1145 = load i32, ptr %1144, align 1, !tbaa !17
  %1146 = and i32 16384, %1145
  %1147 = icmp eq i32 %1146, 16384
  br i1 %1147, label %1154, label %1148

1148:                                             ; preds = %1142
  %1149 = load ptr, ptr %11, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1149, i32 0, i32 6
  %1151 = load i32, ptr %1150, align 1, !tbaa !17
  %1152 = and i32 32768, %1151
  %1153 = icmp eq i32 %1152, 32768
  br i1 %1153, label %1154, label %1156

1154:                                             ; preds = %1148, %1142
  %1155 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setup_fusion_microkernel_properties(ptr noundef %1155, ptr noundef %9)
  br label %1165

1156:                                             ; preds = %1148
  %1157 = load ptr, ptr %5, align 8, !tbaa !5
  %1158 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !10
  %1159 = icmp ult i32 1, %1158
  br i1 %1159, label %1160, label %1162

1160:                                             ; preds = %1156
  %1161 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !10
  br label %1163

1162:                                             ; preds = %1156
  br label %1163

1163:                                             ; preds = %1162, %1160
  %1164 = phi i32 [ %1161, %1160 ], [ 1, %1162 ]
  call void @libxsmm_handle_error(ptr noundef %1157, i32 noundef 90046, ptr noundef @__func__.libxsmm_generator_gemm_amx_kernel, ptr noundef @.str.1, i32 noundef 3834, i32 noundef %1164)
  br label %1165

1165:                                             ; preds = %1163, %1154
  %1166 = load i32, ptr %29, align 4, !tbaa !10
  %1167 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 120
  store i32 %1166, ptr %1167, align 8, !tbaa !54
  %1168 = load i32, ptr %31, align 4, !tbaa !10
  %1169 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 121
  store i32 %1168, ptr %1169, align 4, !tbaa !55
  %1170 = load i32, ptr %19, align 4, !tbaa !10
  %1171 = icmp ne i32 %1170, 0
  br i1 %1171, label %1178, label %1172

1172:                                             ; preds = %1165
  %1173 = load i32, ptr %20, align 4, !tbaa !10
  %1174 = icmp ne i32 %1173, 0
  br i1 %1174, label %1178, label %1175

1175:                                             ; preds = %1172
  %1176 = load i32, ptr %21, align 4, !tbaa !10
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1178, label %1203

1178:                                             ; preds = %1175, %1172, %1165
  %1179 = load ptr, ptr %11, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1179, i32 0, i32 0
  %1181 = load i32, ptr %1180, align 1, !tbaa !22
  store i32 %1181, ptr %35, align 4, !tbaa !10
  %1182 = load ptr, ptr %11, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1182, i32 0, i32 1
  %1184 = load i32, ptr %1183, align 1, !tbaa !23
  store i32 %1184, ptr %37, align 4, !tbaa !10
  %1185 = load ptr, ptr %11, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1185, i32 0, i32 2
  %1187 = load i32, ptr %1186, align 1, !tbaa !19
  store i32 %1187, ptr %36, align 4, !tbaa !10
  %1188 = load ptr, ptr %8, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1188, i32 0, i32 0
  %1190 = load i32, ptr %1189, align 1, !tbaa !22
  %1191 = load ptr, ptr %11, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1191, i32 0, i32 0
  store i32 %1190, ptr %1192, align 1, !tbaa !22
  %1193 = load ptr, ptr %8, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1193, i32 0, i32 1
  %1195 = load i32, ptr %1194, align 1, !tbaa !23
  %1196 = load ptr, ptr %11, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1196, i32 0, i32 1
  store i32 %1195, ptr %1197, align 1, !tbaa !23
  %1198 = load ptr, ptr %8, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1198, i32 0, i32 2
  %1200 = load i32, ptr %1199, align 1, !tbaa !19
  %1201 = load ptr, ptr %11, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1201, i32 0, i32 2
  store i32 %1200, ptr %1202, align 1, !tbaa !19
  br label %1203

1203:                                             ; preds = %1178, %1175
  %1204 = load ptr, ptr %11, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1204, i32 0, i32 6
  %1206 = load i32, ptr %1205, align 1, !tbaa !17
  %1207 = and i32 64, %1206
  %1208 = icmp eq i32 %1207, 0
  br i1 %1208, label %1209, label %1215

1209:                                             ; preds = %1203
  %1210 = load ptr, ptr %11, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1210, i32 0, i32 6
  %1212 = load i32, ptr %1211, align 1, !tbaa !17
  %1213 = and i32 128, %1212
  %1214 = icmp eq i32 %1213, 0
  br i1 %1214, label %1227, label %1215

1215:                                             ; preds = %1209, %1203
  %1216 = load ptr, ptr %11, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1216, i32 0, i32 6
  %1218 = load i32, ptr %1217, align 1, !tbaa !17
  %1219 = and i32 64, %1218
  %1220 = icmp ne i32 %1219, 0
  br i1 %1220, label %1221, label %1231

1221:                                             ; preds = %1215
  %1222 = load ptr, ptr %11, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1222, i32 0, i32 6
  %1224 = load i32, ptr %1223, align 1, !tbaa !17
  %1225 = and i32 128, %1224
  %1226 = icmp ne i32 %1225, 0
  br i1 %1226, label %1227, label %1231

1227:                                             ; preds = %1221, %1209
  %1228 = load ptr, ptr %5, align 8, !tbaa !5
  %1229 = load ptr, ptr %11, align 8, !tbaa !5
  %1230 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setup_stack_frame(ptr noundef %1228, ptr noundef %1229, ptr noundef %1230, ptr noundef %9)
  br label %1231

1231:                                             ; preds = %1227, %1221, %1215
  %1232 = load i32, ptr %19, align 4, !tbaa !10
  %1233 = icmp ne i32 %1232, 0
  br i1 %1233, label %1240, label %1234

1234:                                             ; preds = %1231
  %1235 = load i32, ptr %20, align 4, !tbaa !10
  %1236 = icmp ne i32 %1235, 0
  br i1 %1236, label %1240, label %1237

1237:                                             ; preds = %1234
  %1238 = load i32, ptr %21, align 4, !tbaa !10
  %1239 = icmp ne i32 %1238, 0
  br i1 %1239, label %1240, label %1275

1240:                                             ; preds = %1237, %1234, %1231
  %1241 = load ptr, ptr %11, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1241, i32 0, i32 6
  %1243 = load i32, ptr %1242, align 1, !tbaa !17
  %1244 = and i32 64, %1243
  %1245 = icmp eq i32 %1244, 0
  br i1 %1245, label %1246, label %1252

1246:                                             ; preds = %1240
  %1247 = load ptr, ptr %11, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1247, i32 0, i32 6
  %1249 = load i32, ptr %1248, align 1, !tbaa !17
  %1250 = and i32 128, %1249
  %1251 = icmp eq i32 %1250, 0
  br i1 %1251, label %1264, label %1252

1252:                                             ; preds = %1246, %1240
  %1253 = load ptr, ptr %11, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1253, i32 0, i32 6
  %1255 = load i32, ptr %1254, align 1, !tbaa !17
  %1256 = and i32 64, %1255
  %1257 = icmp ne i32 %1256, 0
  br i1 %1257, label %1258, label %1274

1258:                                             ; preds = %1252
  %1259 = load ptr, ptr %11, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1259, i32 0, i32 6
  %1261 = load i32, ptr %1260, align 1, !tbaa !17
  %1262 = and i32 128, %1261
  %1263 = icmp ne i32 %1262, 0
  br i1 %1263, label %1264, label %1274

1264:                                             ; preds = %1258, %1246
  %1265 = load ptr, ptr %5, align 8, !tbaa !5
  %1266 = load ptr, ptr %6, align 8, !tbaa !5
  %1267 = load ptr, ptr %7, align 8, !tbaa !5
  %1268 = load ptr, ptr %11, align 8, !tbaa !5
  %1269 = load ptr, ptr %8, align 8, !tbaa !5
  %1270 = load ptr, ptr %8, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1270, i32 0, i32 8
  %1272 = getelementptr inbounds [3 x i8], ptr %1271, i64 0, i64 0
  %1273 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1272)
  call void @libxsmm_generator_gemm_setup_A_vnni_or_trans_B_vnni_or_trans_tensor_to_stack(ptr noundef %1265, ptr noundef %1266, ptr noundef %1267, ptr noundef %9, ptr noundef %1268, ptr noundef %1269, i32 noundef %1273, i32 noundef 1)
  br label %1274

1274:                                             ; preds = %1264, %1258, %1252
  br label %1275

1275:                                             ; preds = %1274, %1237
  %1276 = load i32, ptr %19, align 4, !tbaa !10
  %1277 = icmp ne i32 %1276, 0
  br i1 %1277, label %1284, label %1278

1278:                                             ; preds = %1275
  %1279 = load i32, ptr %20, align 4, !tbaa !10
  %1280 = icmp ne i32 %1279, 0
  br i1 %1280, label %1284, label %1281

1281:                                             ; preds = %1278
  %1282 = load i32, ptr %21, align 4, !tbaa !10
  %1283 = icmp ne i32 %1282, 0
  br i1 %1283, label %1284, label %1294

1284:                                             ; preds = %1281, %1278, %1275
  %1285 = load i32, ptr %35, align 4, !tbaa !10
  %1286 = load ptr, ptr %11, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1286, i32 0, i32 0
  store i32 %1285, ptr %1287, align 1, !tbaa !22
  %1288 = load i32, ptr %37, align 4, !tbaa !10
  %1289 = load ptr, ptr %11, align 8, !tbaa !5
  %1290 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1289, i32 0, i32 1
  store i32 %1288, ptr %1290, align 1, !tbaa !23
  %1291 = load i32, ptr %36, align 4, !tbaa !10
  %1292 = load ptr, ptr %11, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1292, i32 0, i32 2
  store i32 %1291, ptr %1293, align 1, !tbaa !19
  br label %1294

1294:                                             ; preds = %1284, %1281
  %1295 = load ptr, ptr %8, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1295, i32 0, i32 6
  %1297 = load i32, ptr %1296, align 1, !tbaa !17
  %1298 = and i32 %1297, 8388608
  %1299 = icmp ne i32 %1298, 0
  br i1 %1299, label %1300, label %1305

1300:                                             ; preds = %1294
  %1301 = load ptr, ptr %5, align 8, !tbaa !5
  %1302 = load ptr, ptr %7, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1302, i32 0, i32 30
  %1304 = load i32, ptr %1303, align 4, !tbaa !56
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %1301, ptr noundef %9, i32 noundef 6, i32 noundef %1304)
  br label %1305

1305:                                             ; preds = %1300, %1294
  %1306 = load i32, ptr %29, align 4, !tbaa !10
  %1307 = icmp sgt i32 %1306, 0
  br i1 %1307, label %1311, label %1308

1308:                                             ; preds = %1305
  %1309 = load i32, ptr %31, align 4, !tbaa !10
  %1310 = icmp sgt i32 %1309, 0
  br i1 %1310, label %1311, label %1333

1311:                                             ; preds = %1308, %1305
  %1312 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 30
  %1313 = load i32, ptr %1312, align 8, !tbaa !57
  %1314 = icmp ugt i32 %1313, 0
  br i1 %1314, label %1315, label %1317

1315:                                             ; preds = %1311
  store i32 1, ptr %33, align 4, !tbaa !10
  %1316 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 30
  store i32 0, ptr %1316, align 8, !tbaa !57
  br label %1317

1317:                                             ; preds = %1315, %1311
  %1318 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 35
  %1319 = load i32, ptr %1318, align 4, !tbaa !58
  %1320 = icmp ugt i32 %1319, 0
  br i1 %1320, label %1321, label %1323

1321:                                             ; preds = %1317
  store i32 1, ptr %34, align 4, !tbaa !10
  %1322 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 35
  store i32 0, ptr %1322, align 4, !tbaa !58
  br label %1323

1323:                                             ; preds = %1321, %1317
  %1324 = load ptr, ptr %5, align 8, !tbaa !5
  %1325 = load ptr, ptr %6, align 8, !tbaa !5
  %1326 = load ptr, ptr %7, align 8, !tbaa !5
  %1327 = load ptr, ptr %11, align 8, !tbaa !5
  %1328 = load ptr, ptr %8, align 8, !tbaa !5
  %1329 = load ptr, ptr %8, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1329, i32 0, i32 8
  %1331 = getelementptr inbounds [3 x i8], ptr %1330, i64 0, i64 0
  %1332 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1331)
  call void @libxsmm_generator_gemm_setup_f8_ABC_tensors_to_stack_for_amx(ptr noundef %1324, ptr noundef %1325, ptr noundef %1326, ptr noundef %9, ptr noundef %1327, ptr noundef %1328, i32 noundef %1332)
  br label %1333

1333:                                             ; preds = %1323, %1308
  %1334 = load ptr, ptr %11, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1334, i32 0, i32 6
  %1336 = load i32, ptr %1335, align 1, !tbaa !17
  %1337 = and i32 64, %1336
  %1338 = icmp eq i32 %1337, 0
  br i1 %1338, label %1339, label %1345

1339:                                             ; preds = %1333
  %1340 = load ptr, ptr %11, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1340, i32 0, i32 6
  %1342 = load i32, ptr %1341, align 1, !tbaa !17
  %1343 = and i32 128, %1342
  %1344 = icmp eq i32 %1343, 0
  br i1 %1344, label %1357, label %1345

1345:                                             ; preds = %1339, %1333
  %1346 = load ptr, ptr %11, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1346, i32 0, i32 6
  %1348 = load i32, ptr %1347, align 1, !tbaa !17
  %1349 = and i32 64, %1348
  %1350 = icmp ne i32 %1349, 0
  br i1 %1350, label %1351, label %1383

1351:                                             ; preds = %1345
  %1352 = load ptr, ptr %11, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1352, i32 0, i32 6
  %1354 = load i32, ptr %1353, align 1, !tbaa !17
  %1355 = and i32 128, %1354
  %1356 = icmp ne i32 %1355, 0
  br i1 %1356, label %1357, label %1383

1357:                                             ; preds = %1351, %1339
  %1358 = load ptr, ptr %5, align 8, !tbaa !5
  %1359 = load ptr, ptr %11, align 8, !tbaa !5
  %1360 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_amx_setup_fusion_infra(ptr noundef %1358, ptr noundef %1359, ptr noundef %1360, ptr noundef %9)
  %1361 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_amx_setup_masking_infra(ptr noundef %1361, ptr noundef %9)
  %1362 = load i32, ptr %14, align 4, !tbaa !10
  %1363 = icmp ugt i32 %1362, 0
  br i1 %1363, label %1377, label %1364

1364:                                             ; preds = %1357
  %1365 = load i32, ptr %15, align 4, !tbaa !10
  %1366 = icmp ugt i32 %1365, 0
  br i1 %1366, label %1377, label %1367

1367:                                             ; preds = %1364
  %1368 = load i32, ptr %16, align 4, !tbaa !10
  %1369 = icmp ugt i32 %1368, 0
  br i1 %1369, label %1377, label %1370

1370:                                             ; preds = %1367
  %1371 = load i32, ptr %17, align 4, !tbaa !10
  %1372 = icmp ugt i32 %1371, 0
  br i1 %1372, label %1377, label %1373

1373:                                             ; preds = %1370
  %1374 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 124
  %1375 = load i32, ptr %1374, align 8, !tbaa !34
  %1376 = icmp ugt i32 %1375, 0
  br i1 %1376, label %1377, label %1382

1377:                                             ; preds = %1373, %1370, %1367, %1364, %1357
  %1378 = load ptr, ptr %5, align 8, !tbaa !5
  %1379 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  %1380 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %1379, i32 0, i32 2
  %1381 = load i32, ptr %1380, align 4, !tbaa !59
  call void @libxsmm_generator_gemm_amx_setup_masking_infra_lp_cvt(ptr noundef %1378, ptr noundef %9, i32 noundef %1381)
  br label %1382

1382:                                             ; preds = %1377, %1373
  br label %1383

1383:                                             ; preds = %1382, %1351, %1345
  %1384 = load ptr, ptr %11, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1384, i32 0, i32 6
  %1386 = load i32, ptr %1385, align 1, !tbaa !17
  %1387 = and i32 64, %1386
  %1388 = icmp ne i32 %1387, 0
  br i1 %1388, label %1389, label %1395

1389:                                             ; preds = %1383
  %1390 = load ptr, ptr %11, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1390, i32 0, i32 6
  %1392 = load i32, ptr %1391, align 1, !tbaa !17
  %1393 = and i32 128, %1392
  %1394 = icmp eq i32 %1393, 0
  br i1 %1394, label %1416, label %1395

1395:                                             ; preds = %1389, %1383
  %1396 = load ptr, ptr %11, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1396, i32 0, i32 6
  %1398 = load i32, ptr %1397, align 1, !tbaa !17
  %1399 = and i32 64, %1398
  %1400 = icmp eq i32 %1399, 0
  br i1 %1400, label %1401, label %1407

1401:                                             ; preds = %1395
  %1402 = load ptr, ptr %11, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1402, i32 0, i32 6
  %1404 = load i32, ptr %1403, align 1, !tbaa !17
  %1405 = and i32 128, %1404
  %1406 = icmp eq i32 %1405, 0
  br i1 %1406, label %1416, label %1407

1407:                                             ; preds = %1401, %1395
  %1408 = load i32, ptr %28, align 4, !tbaa !10
  %1409 = icmp ugt i32 %1408, 1
  br i1 %1409, label %1416, label %1410

1410:                                             ; preds = %1407
  %1411 = load i32, ptr %29, align 4, !tbaa !10
  %1412 = icmp sgt i32 %1411, 0
  br i1 %1412, label %1416, label %1413

1413:                                             ; preds = %1410
  %1414 = load i32, ptr %31, align 4, !tbaa !10
  %1415 = icmp sgt i32 %1414, 0
  br i1 %1415, label %1416, label %1420

1416:                                             ; preds = %1413, %1410, %1407, %1401, %1389
  %1417 = load ptr, ptr %5, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 0
  %1419 = load i32, ptr %1418, align 8, !tbaa !60
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %1417, i32 noundef 0, i32 noundef %1419, i32 noundef 50001, i32 noundef 127, i32 noundef 0, ptr noundef %39)
  br label %1420

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

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

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

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

1444:                                             ; preds = %1438, %1426
  %1445 = load ptr, ptr %5, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1447 = load i32, ptr %1446, align 8, !tbaa !47
  %1448 = load ptr, ptr %7, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1448, i32 0, i32 17
  %1450 = load i32, ptr %1449, align 4, !tbaa !61
  %1451 = load ptr, ptr %11, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1451, i32 0, i32 3
  %1453 = load i32, ptr %1452, align 1, !tbaa !27
  %1454 = zext i32 %1453 to i64
  %1455 = mul nsw i64 %1454, 4
  %1456 = sdiv i64 %1455, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1445, i32 noundef %1447, i32 noundef %1450, i64 noundef %1456)
  %1457 = load ptr, ptr %5, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1459 = load i32, ptr %1458, align 8, !tbaa !47
  %1460 = load ptr, ptr %7, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1460, i32 0, i32 18
  %1462 = load i32, ptr %1461, align 4, !tbaa !62
  %1463 = load ptr, ptr %11, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1463, i32 0, i32 4
  %1465 = load i32, ptr %1464, align 1, !tbaa !28
  %1466 = zext i32 %1465 to i64
  %1467 = load i32, ptr %25, align 4, !tbaa !10
  %1468 = sext i32 %1467 to i64
  %1469 = mul nsw i64 %1466, %1468
  %1470 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 4
  %1471 = load i32, ptr %1470, align 8, !tbaa !63
  %1472 = zext i32 %1471 to i64
  %1473 = mul nsw i64 %1469, %1472
  %1474 = sdiv i64 %1473, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1457, i32 noundef %1459, i32 noundef %1462, i64 noundef %1474)
  %1475 = load ptr, ptr %5, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1477 = load i32, ptr %1476, align 8, !tbaa !47
  %1478 = load ptr, ptr %7, align 8, !tbaa !5
  %1479 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1478, i32 0, i32 19
  %1480 = load i32, ptr %1479, align 4, !tbaa !64
  %1481 = load ptr, ptr %11, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1481, i32 0, i32 5
  %1483 = load i32, ptr %1482, align 1, !tbaa !29
  %1484 = zext i32 %1483 to i64
  %1485 = mul nsw i64 %1484, 4
  %1486 = sdiv i64 %1485, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1475, i32 noundef %1477, i32 noundef %1480, i64 noundef %1486)
  %1487 = load ptr, ptr %11, align 8, !tbaa !5
  %1488 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1487, i32 0, i32 6
  %1489 = load i32, ptr %1488, align 1, !tbaa !17
  %1490 = and i32 %1489, 65536
  %1491 = icmp ne i32 %1490, 0
  br i1 %1491, label %1504, label %1492

1492:                                             ; preds = %1444
  %1493 = load ptr, ptr %11, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1493, i32 0, i32 6
  %1495 = load i32, ptr %1494, align 1, !tbaa !17
  %1496 = and i32 %1495, 131072
  %1497 = icmp ne i32 %1496, 0
  br i1 %1497, label %1504, label %1498

1498:                                             ; preds = %1492
  %1499 = load ptr, ptr %11, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1499, i32 0, i32 6
  %1501 = load i32, ptr %1500, align 1, !tbaa !17
  %1502 = and i32 %1501, 262144
  %1503 = icmp ne i32 %1502, 0
  br i1 %1503, label %1504, label %1514

1504:                                             ; preds = %1498, %1492, %1444
  %1505 = load ptr, ptr %5, align 8, !tbaa !5
  %1506 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1507 = load i32, ptr %1506, align 8, !tbaa !47
  %1508 = load ptr, ptr %7, align 8, !tbaa !5
  %1509 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1508, i32 0, i32 13
  %1510 = load i32, ptr %1509, align 4, !tbaa !50
  %1511 = load ptr, ptr %7, align 8, !tbaa !5
  %1512 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1511, i32 0, i32 13
  %1513 = load i32, ptr %1512, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1505, i32 noundef %1507, i32 noundef %1510, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1513, i32 noundef 0)
  br label %1514

1514:                                             ; preds = %1504, %1498
  %1515 = load ptr, ptr %5, align 8, !tbaa !5
  %1516 = load ptr, ptr %6, align 8, !tbaa !5
  %1517 = load ptr, ptr %7, align 8, !tbaa !5
  %1518 = load ptr, ptr %11, align 8, !tbaa !5
  %1519 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %27, i64 0, i64 0
  %1520 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_kernel_nloop(ptr noundef %1515, ptr noundef %1516, ptr noundef %1517, ptr noundef %9, ptr noundef %1518, ptr noundef %1519, ptr noundef %1520)
  br label %1521

1521:                                             ; preds = %1514, %1438, %1432
  %1522 = load i32, ptr %28, align 4, !tbaa !10
  %1523 = icmp ugt i32 %1522, 1
  br i1 %1523, label %1524, label %1687

1524:                                             ; preds = %1521
  %1525 = load i32, ptr %13, align 4, !tbaa !10
  %1526 = load ptr, ptr %11, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1526, i32 0, i32 0
  store i32 %1525, ptr %1527, align 1, !tbaa !22
  %1528 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 109
  store i32 0, ptr %1528, align 8, !tbaa !65
  %1529 = load i32, ptr %29, align 4, !tbaa !10
  %1530 = icmp sgt i32 %1529, 0
  br i1 %1530, label %1534, label %1531

1531:                                             ; preds = %1524
  %1532 = load i32, ptr %31, align 4, !tbaa !10
  %1533 = icmp sgt i32 %1532, 0
  br i1 %1533, label %1534, label %1549

1534:                                             ; preds = %1531, %1524
  %1535 = load ptr, ptr %8, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1535, i32 0, i32 2
  %1537 = load i32, ptr %1536, align 1, !tbaa !19
  %1538 = load ptr, ptr %11, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1538, i32 0, i32 2
  store i32 %1537, ptr %1539, align 1, !tbaa !19
  %1540 = load ptr, ptr %11, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1540, i32 0, i32 2
  %1542 = load i32, ptr %1541, align 1, !tbaa !19
  %1543 = load ptr, ptr %11, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1543, i32 0, i32 4
  store i32 %1542, ptr %1544, align 1, !tbaa !28
  %1545 = load ptr, ptr %11, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1545, i32 0, i32 6
  %1547 = load i32, ptr %1546, align 1, !tbaa !17
  %1548 = or i32 %1547, 2048
  store i32 %1548, ptr %1546, align 1, !tbaa !17
  br label %1549

1549:                                             ; preds = %1534, %1531
  %1550 = load ptr, ptr %11, align 8, !tbaa !5
  %1551 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  %1552 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %27, i64 0, i64 0
  call void @libxsmm_generator_gemm_init_micro_kernel_config_tileblocking(ptr noundef %1550, ptr noundef %9, ptr noundef %1551, ptr noundef %1552, ptr noundef %39)
  %1553 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 98
  %1554 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %1553, i64 0, i64 0
  %1555 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1554, ptr align 16 %1555, i64 28, i1 false), !tbaa.struct !43
  %1556 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 98
  %1557 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %1556, i64 0, i64 1
  %1558 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1557, ptr align 4 %1558, i64 28, i1 false), !tbaa.struct !43
  %1559 = load ptr, ptr %5, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_amx_setup_masking_infra(ptr noundef %1559, ptr noundef %9)
  %1560 = load i32, ptr %14, align 4, !tbaa !10
  %1561 = icmp ugt i32 %1560, 0
  br i1 %1561, label %1575, label %1562

1562:                                             ; preds = %1549
  %1563 = load i32, ptr %15, align 4, !tbaa !10
  %1564 = icmp ugt i32 %1563, 0
  br i1 %1564, label %1575, label %1565

1565:                                             ; preds = %1562
  %1566 = load i32, ptr %16, align 4, !tbaa !10
  %1567 = icmp ugt i32 %1566, 0
  br i1 %1567, label %1575, label %1568

1568:                                             ; preds = %1565
  %1569 = load i32, ptr %17, align 4, !tbaa !10
  %1570 = icmp ugt i32 %1569, 0
  br i1 %1570, label %1575, label %1571

1571:                                             ; preds = %1568
  %1572 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 124
  %1573 = load i32, ptr %1572, align 8, !tbaa !34
  %1574 = icmp ugt i32 %1573, 0
  br i1 %1574, label %1575, label %1580

1575:                                             ; preds = %1571, %1568, %1565, %1562, %1549
  %1576 = load ptr, ptr %5, align 8, !tbaa !5
  %1577 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  %1578 = getelementptr inbounds %struct.libxsmm_blocking_info_t, ptr %1577, i32 0, i32 2
  %1579 = load i32, ptr %1578, align 4, !tbaa !59
  call void @libxsmm_generator_gemm_amx_setup_masking_infra_lp_cvt(ptr noundef %1576, ptr noundef %9, i32 noundef %1579)
  br label %1580

1580:                                             ; preds = %1575, %1571
  %1581 = load ptr, ptr %5, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 0
  %1583 = load i32, ptr %1582, align 8, !tbaa !60
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %1581, i32 noundef 0, i32 noundef %1583, i32 noundef 50001, i32 noundef 127, i32 noundef 0, ptr noundef %39)
  %1584 = load ptr, ptr %11, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1584, i32 0, i32 6
  %1586 = load i32, ptr %1585, align 1, !tbaa !17
  %1587 = and i32 64, %1586
  %1588 = icmp eq i32 %1587, 0
  br i1 %1588, label %1589, label %1595

1589:                                             ; preds = %1580
  %1590 = load ptr, ptr %11, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1590, i32 0, i32 6
  %1592 = load i32, ptr %1591, align 1, !tbaa !17
  %1593 = and i32 128, %1592
  %1594 = icmp eq i32 %1593, 0
  br i1 %1594, label %1607, label %1595

1595:                                             ; preds = %1589, %1580
  %1596 = load ptr, ptr %11, align 8, !tbaa !5
  %1597 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1596, i32 0, i32 6
  %1598 = load i32, ptr %1597, align 1, !tbaa !17
  %1599 = and i32 64, %1598
  %1600 = icmp ne i32 %1599, 0
  br i1 %1600, label %1601, label %1686

1601:                                             ; preds = %1595
  %1602 = load ptr, ptr %11, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1602, i32 0, i32 6
  %1604 = load i32, ptr %1603, align 1, !tbaa !17
  %1605 = and i32 128, %1604
  %1606 = icmp ne i32 %1605, 0
  br i1 %1606, label %1607, label %1686

1607:                                             ; preds = %1601, %1589
  %1608 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 24
  %1609 = load i32, ptr %1608, align 8, !tbaa !66
  %1610 = icmp ugt i32 %1609, 0
  br i1 %1610, label %1611, label %1625

1611:                                             ; preds = %1607
  %1612 = load ptr, ptr %5, align 8, !tbaa !5
  %1613 = load ptr, ptr %6, align 8, !tbaa !5
  %1614 = load ptr, ptr %11, align 8, !tbaa !5
  %1615 = load ptr, ptr %7, align 8, !tbaa !5
  %1616 = load ptr, ptr %11, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1616, i32 0, i32 1
  %1618 = load i32, ptr %1617, align 1, !tbaa !23
  %1619 = mul nsw i32 %1618, -1
  call void @libxsmm_generator_gemm_amx_adjust_n_advancement(ptr noundef %1612, ptr noundef %1613, ptr noundef %1614, ptr noundef %1615, ptr noundef %9, i32 noundef %1619)
  %1620 = load ptr, ptr %5, align 8, !tbaa !5
  %1621 = load ptr, ptr %6, align 8, !tbaa !5
  %1622 = load ptr, ptr %11, align 8, !tbaa !5
  %1623 = load ptr, ptr %7, align 8, !tbaa !5
  %1624 = load i32, ptr %12, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_amx_adjust_m_advancement(ptr noundef %1620, ptr noundef %1621, ptr noundef %1622, ptr noundef %1623, ptr noundef %9, i32 noundef %1624)
  br label %1637

1625:                                             ; preds = %1607
  %1626 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 23
  %1627 = load i32, ptr %1626, align 4, !tbaa !67
  %1628 = icmp eq i32 %1627, 0
  br i1 %1628, label %1629, label %1635

1629:                                             ; preds = %1625
  %1630 = load ptr, ptr %5, align 8, !tbaa !5
  %1631 = load ptr, ptr %6, align 8, !tbaa !5
  %1632 = load ptr, ptr %11, align 8, !tbaa !5
  %1633 = load ptr, ptr %7, align 8, !tbaa !5
  %1634 = load i32, ptr %12, align 4, !tbaa !10
  call void @libxsmm_generator_gemm_amx_adjust_m_advancement(ptr noundef %1630, ptr noundef %1631, ptr noundef %1632, ptr noundef %1633, ptr noundef %9, i32 noundef %1634)
  br label %1636

1635:                                             ; preds = %1625
  br label %1636

1636:                                             ; preds = %1635, %1629
  br label %1637

1637:                                             ; preds = %1636, %1611
  %1638 = load ptr, ptr %5, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1640 = load i32, ptr %1639, align 8, !tbaa !47
  %1641 = load ptr, ptr %7, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1641, i32 0, i32 17
  %1643 = load i32, ptr %1642, align 4, !tbaa !61
  %1644 = load ptr, ptr %11, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1644, i32 0, i32 3
  %1646 = load i32, ptr %1645, align 1, !tbaa !27
  %1647 = zext i32 %1646 to i64
  %1648 = mul nsw i64 %1647, 4
  %1649 = sdiv i64 %1648, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1638, i32 noundef %1640, i32 noundef %1643, i64 noundef %1649)
  %1650 = load ptr, ptr %5, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1652 = load i32, ptr %1651, align 8, !tbaa !47
  %1653 = load ptr, ptr %7, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1653, i32 0, i32 18
  %1655 = load i32, ptr %1654, align 4, !tbaa !62
  %1656 = load ptr, ptr %11, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1656, i32 0, i32 4
  %1658 = load i32, ptr %1657, align 1, !tbaa !28
  %1659 = zext i32 %1658 to i64
  %1660 = load i32, ptr %25, align 4, !tbaa !10
  %1661 = sext i32 %1660 to i64
  %1662 = mul nsw i64 %1659, %1661
  %1663 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 4
  %1664 = load i32, ptr %1663, align 8, !tbaa !63
  %1665 = zext i32 %1664 to i64
  %1666 = mul nsw i64 %1662, %1665
  %1667 = sdiv i64 %1666, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1650, i32 noundef %1652, i32 noundef %1655, i64 noundef %1667)
  %1668 = load ptr, ptr %5, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %9, i32 0, i32 20
  %1670 = load i32, ptr %1669, align 8, !tbaa !47
  %1671 = load ptr, ptr %7, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1671, i32 0, i32 19
  %1673 = load i32, ptr %1672, align 4, !tbaa !64
  %1674 = load ptr, ptr %11, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1674, i32 0, i32 5
  %1676 = load i32, ptr %1675, align 1, !tbaa !29
  %1677 = zext i32 %1676 to i64
  %1678 = mul nsw i64 %1677, 4
  %1679 = sdiv i64 %1678, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1668, i32 noundef %1670, i32 noundef %1673, i64 noundef %1679)
  %1680 = load ptr, ptr %5, align 8, !tbaa !5
  %1681 = load ptr, ptr %6, align 8, !tbaa !5
  %1682 = load ptr, ptr %7, align 8, !tbaa !5
  %1683 = load ptr, ptr %11, align 8, !tbaa !5
  %1684 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %27, i64 0, i64 0
  %1685 = getelementptr inbounds [2 x %struct.libxsmm_blocking_info_t], ptr %26, i64 0, i64 0
  call void @libxsmm_generator_gemm_amx_kernel_nloop(ptr noundef %1680, ptr noundef %1681, ptr noundef %1682, ptr noundef %9, ptr noundef %1683, ptr noundef %1684, ptr noundef %1685)
  br label %1686

1686:                                             ; preds = %1637, %1601, %1595
  br label %1687

1687:                                             ; preds = %1686, %1521
  %1688 = load i32, ptr %29, align 4, !tbaa !10
  %1689 = icmp sgt i32 %1688, 0
  br i1 %1689, label %1693, label %1690

1690:                                             ; preds = %1687
  %1691 = load i32, ptr %31, align 4, !tbaa !10
  %1692 = icmp sgt i32 %1691, 0
  br i1 %1692, label %1693, label %1704

1693:                                             ; preds = %1690, %1687
  %1694 = load ptr, ptr %5, align 8, !tbaa !5
  %1695 = load ptr, ptr %6, align 8, !tbaa !5
  %1696 = load ptr, ptr %11, align 8, !tbaa !5
  %1697 = load ptr, ptr %8, align 8, !tbaa !5
  %1698 = load i32, ptr %34, align 4, !tbaa !10
  %1699 = load i32, ptr %33, align 4, !tbaa !10
  %1700 = load ptr, ptr %8, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1700, i32 0, i32 8
  %1702 = getelementptr inbounds [3 x i8], ptr %1701, i64 0, i64 0
  %1703 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1702)
  call void @libxsmm_generator_gemm_emit_f8_eltwise_fusion(ptr noundef %1694, ptr noundef %1695, ptr noundef %9, ptr noundef %1696, ptr noundef %1697, i32 noundef %1698, i32 noundef %1699, i32 noundef %1703)
  br label %1704

1704:                                             ; preds = %1693, %1690
  %1705 = load ptr, ptr %11, align 8, !tbaa !5
  %1706 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1705, i32 0, i32 6
  %1707 = load i32, ptr %1706, align 1, !tbaa !17
  %1708 = and i32 64, %1707
  %1709 = icmp eq i32 %1708, 0
  br i1 %1709, label %1710, label %1716

1710:                                             ; preds = %1704
  %1711 = load ptr, ptr %11, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1711, i32 0, i32 6
  %1713 = load i32, ptr %1712, align 1, !tbaa !17
  %1714 = and i32 128, %1713
  %1715 = icmp eq i32 %1714, 0
  br i1 %1715, label %1728, label %1716

1716:                                             ; preds = %1710, %1704
  %1717 = load ptr, ptr %11, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1717, i32 0, i32 6
  %1719 = load i32, ptr %1718, align 1, !tbaa !17
  %1720 = and i32 64, %1719
  %1721 = icmp ne i32 %1720, 0
  br i1 %1721, label %1722, label %1732

1722:                                             ; preds = %1716
  %1723 = load ptr, ptr %11, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1723, i32 0, i32 6
  %1725 = load i32, ptr %1724, align 1, !tbaa !17
  %1726 = and i32 128, %1725
  %1727 = icmp ne i32 %1726, 0
  br i1 %1727, label %1728, label %1732

1728:                                             ; preds = %1722, %1710
  %1729 = load ptr, ptr %5, align 8, !tbaa !5
  %1730 = load ptr, ptr %11, align 8, !tbaa !5
  %1731 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_destroy_stack_frame(ptr noundef %1729, ptr noundef %1730, ptr noundef %1731, ptr noundef %9)
  br label %1732

1732:                                             ; preds = %1728, %1722, %1716
  store i32 0, ptr %43, align 4
  br label %1733

1733:                                             ; preds = %1732, %576
  call void @llvm.lifetime.end.p0(i64 34, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 56, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 95, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 688, ptr %9) #4
  %1734 = load i32, ptr %43, align 4
  switch i32 %1734, label %1736 [
    i32 0, label %1735
    i32 1, label %1735
  ]

1735:                                             ; preds = %1733, %1733
  ret void

1736:                                             ; preds = %1733
  unreachable
}

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

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

declare i32 @libxsmm_cpuid_x86_amx_gemm_enforce_mx1_tile_blocking() #0

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

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

declare void @libxsmm_generator_gemm_setup_fusion_microkernel_properties(ptr noundef, ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_amx_kernel_nloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare void @libxsmm_generator_gemm_destroy_stack_frame(ptr 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { nounwind }

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

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


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

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

@.str.1 = external hidden unnamed_addr constant [74 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@__func__.libxsmm_generator_gemm_amx_kernel = external hidden unnamed_addr constant [34 x i8], align 1

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_alu_reg(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) local_unnamed_addr #0

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

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) local_unnamed_addr #0

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_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_amx_setup_masking_infra(ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_amx_setup_fusion_infra(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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_init_micro_kernel_config_tileblocking(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef) local_unnamed_addr #0

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_amx_kernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #3 {
  %5 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %6 = alloca %struct.libxsmm_gemm_descriptor, align 8
  %7 = alloca [2 x %struct.libxsmm_blocking_info_t], align 16
  %8 = alloca [2 x %struct.libxsmm_blocking_info_t], align 16
  %9 = alloca %struct.libxsmm_tile_config, align 2
  call void @llvm.lifetime.start.p0(i64 688, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 95, ptr nonnull %6) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(95) %6, ptr noundef nonnull align 1 dereferenceable(95) %3, i64 95, i1 false), !tbaa.struct !5
  %10 = tail call i32 @libxsmm_x86_is_Abf8_Bbf16_gemm(ptr noundef %3) #5
  %11 = tail call i32 @libxsmm_x86_is_Abf8_Bf16_gemm(ptr noundef %3) #5
  %12 = tail call i32 @libxsmm_x86_is_Ahf8_Bbf16_gemm(ptr noundef %3) #5
  %13 = tail call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %3) #5
  %14 = getelementptr inbounds i8, ptr %6, i64 24
  %15 = load i32, ptr %14, align 8, !tbaa !15
  %16 = and i32 %15, 6147
  %or.cond553 = icmp eq i32 %16, 0
  br i1 %or.cond553, label %17, label %39

17:                                               ; preds = %4
  %18 = getelementptr inbounds i8, ptr %6, i64 8
  %19 = load i32, ptr %18, align 8, !tbaa !17
  %20 = and i32 %19, 1
  %21 = icmp eq i32 %20, 0
  br i1 %21, label %22, label %39

22:                                               ; preds = %17
  %23 = getelementptr inbounds i8, ptr %6, i64 29
  %24 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %23) #5
  %25 = icmp eq i32 %24, 2
  br i1 %25, label %29, label %26

26:                                               ; preds = %22
  %27 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %23) #5
  %28 = icmp eq i32 %27, 3
  br i1 %28, label %29, label %39

29:                                               ; preds = %26, %22
  %30 = getelementptr inbounds i8, ptr %0, i64 28
  %31 = load i32, ptr %30, align 4, !tbaa !18
  %32 = icmp ugt i32 %31, 1004
  br i1 %32, label %33, label %39

33:                                               ; preds = %29
  %34 = icmp ult i32 %31, 1106
  br i1 %34, label %39, label %35

35:                                               ; preds = %33
  %36 = load i32, ptr %6, align 8, !tbaa !21
  %37 = and i32 %36, 1
  %38 = icmp ne i32 %37, 0
  br label %39

39:                                               ; preds = %29, %35, %33, %26, %17, %4
  %40 = phi i1 [ false, %26 ], [ false, %17 ], [ false, %4 ], [ false, %29 ], [ true, %33 ], [ %38, %35 ]
  %41 = load i32, ptr %14, align 8, !tbaa !15
  %42 = and i32 %41, 6147
  %or.cond559 = icmp eq i32 %42, 1
  br i1 %or.cond559, label %43, label %59

43:                                               ; preds = %39
  %44 = getelementptr inbounds i8, ptr %6, i64 8
  %45 = load i32, ptr %44, align 8, !tbaa !17
  %46 = and i32 %45, 1
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %48, label %59

48:                                               ; preds = %43
  %49 = getelementptr inbounds i8, ptr %6, i64 29
  %50 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %49) #5
  %51 = icmp eq i32 %50, 2
  br i1 %51, label %55, label %52

52:                                               ; preds = %48
  %53 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %49) #5
  %54 = icmp eq i32 %53, 3
  br i1 %54, label %55, label %59

55:                                               ; preds = %52, %48
  %56 = getelementptr inbounds i8, ptr %0, i64 28
  %57 = load i32, ptr %56, align 4, !tbaa !18
  %58 = add i32 %57, -1005
  %spec.select = icmp ult i32 %58, 101
  br label %59

59:                                               ; preds = %55, %52, %43, %39
  %60 = phi i1 [ false, %52 ], [ false, %43 ], [ false, %39 ], [ %spec.select, %55 ]
  %61 = load i32, ptr %14, align 8, !tbaa !15
  %62 = and i32 %61, 6147
  %or.cond564 = icmp eq i32 %62, 2
  br i1 %or.cond564, label %63, label %89

63:                                               ; preds = %59
  %64 = getelementptr inbounds i8, ptr %6, i64 8
  %65 = load i32, ptr %64, align 8, !tbaa !17
  %66 = and i32 %65, 1
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %89

68:                                               ; preds = %63
  %69 = getelementptr inbounds i8, ptr %6, i64 29
  %70 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %69) #5
  %71 = icmp eq i32 %70, 2
  br i1 %71, label %75, label %72

72:                                               ; preds = %68
  %73 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %69) #5
  %74 = icmp eq i32 %73, 3
  br i1 %74, label %75, label %89

75:                                               ; preds = %72, %68
  %76 = getelementptr inbounds i8, ptr %0, i64 28
  %77 = load i32, ptr %76, align 4, !tbaa !18
  %78 = icmp ugt i32 %77, 1004
  br i1 %78, label %79, label %89

79:                                               ; preds = %75
  %80 = icmp ult i32 %77, 1106
  br i1 %80, label %89, label %81

81:                                               ; preds = %79
  %82 = load i32, ptr %6, align 8, !tbaa !21
  %83 = and i32 %82, 1
  %.not507 = icmp eq i32 %83, 0
  br i1 %.not507, label %84, label %89

84:                                               ; preds = %81
  %85 = getelementptr inbounds i8, ptr %6, i64 4
  %86 = load i32, ptr %85, align 4, !tbaa !22
  %87 = and i32 %86, 1
  %88 = icmp ne i32 %87, 0
  br label %89

89:                                               ; preds = %75, %84, %81, %79, %72, %63, %59
  %90 = phi i1 [ false, %72 ], [ false, %63 ], [ false, %59 ], [ false, %75 ], [ true, %81 ], [ true, %79 ], [ %88, %84 ]
  %91 = load i32, ptr %14, align 8, !tbaa !15
  %92 = and i32 %91, 6147
  %or.cond569 = icmp eq i32 %92, 3
  br i1 %or.cond569, label %93, label %109

93:                                               ; preds = %89
  %94 = getelementptr inbounds i8, ptr %6, i64 8
  %95 = load i32, ptr %94, align 8, !tbaa !17
  %96 = and i32 %95, 1
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %109

98:                                               ; preds = %93
  %99 = getelementptr inbounds i8, ptr %6, i64 29
  %100 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %99) #5
  %101 = icmp eq i32 %100, 2
  br i1 %101, label %105, label %102

102:                                              ; preds = %98
  %103 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %99) #5
  %104 = icmp eq i32 %103, 3
  br i1 %104, label %105, label %109

105:                                              ; preds = %102, %98
  %106 = getelementptr inbounds i8, ptr %0, i64 28
  %107 = load i32, ptr %106, align 4, !tbaa !18
  %108 = icmp ugt i32 %107, 1004
  br label %109

109:                                              ; preds = %105, %102, %93, %89
  %110 = phi i1 [ false, %102 ], [ false, %93 ], [ false, %89 ], [ %108, %105 ]
  %111 = load i32, ptr %14, align 8, !tbaa !15
  %112 = and i32 %111, 6147
  %or.cond575 = icmp eq i32 %112, 0
  br i1 %or.cond575, label %113, label %133

113:                                              ; preds = %109
  %114 = getelementptr inbounds i8, ptr %6, i64 8
  %115 = load i32, ptr %114, align 8, !tbaa !17
  %116 = and i32 %115, 1
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %133

118:                                              ; preds = %113
  %119 = getelementptr inbounds i8, ptr %6, i64 29
  %120 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %119) #5
  %121 = icmp eq i32 %120, 2
  br i1 %121, label %125, label %122

122:                                              ; preds = %118
  %123 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %119) #5
  %124 = icmp eq i32 %123, 3
  br i1 %124, label %125, label %133

125:                                              ; preds = %122, %118
  %126 = getelementptr inbounds i8, ptr %0, i64 28
  %127 = load i32, ptr %126, align 4, !tbaa !18
  %128 = icmp ugt i32 %127, 1105
  br i1 %128, label %129, label %133

129:                                              ; preds = %125
  %130 = load i32, ptr %6, align 8, !tbaa !21
  %131 = and i32 %130, 1
  %132 = icmp eq i32 %131, 0
  br label %133

133:                                              ; preds = %125, %129, %122, %113, %109
  %134 = phi i1 [ false, %122 ], [ false, %113 ], [ false, %109 ], [ false, %125 ], [ %132, %129 ]
  %135 = load i32, ptr %14, align 8, !tbaa !15
  %136 = and i32 %135, 6147
  %or.cond580 = icmp eq i32 %136, 2
  br i1 %or.cond580, label %137, label %162

137:                                              ; preds = %133
  %138 = getelementptr inbounds i8, ptr %6, i64 8
  %139 = load i32, ptr %138, align 8, !tbaa !17
  %140 = and i32 %139, 1
  %141 = icmp eq i32 %140, 0
  br i1 %141, label %142, label %162

142:                                              ; preds = %137
  %143 = getelementptr inbounds i8, ptr %6, i64 29
  %144 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %143) #5
  %145 = icmp eq i32 %144, 2
  br i1 %145, label %149, label %146

146:                                              ; preds = %142
  %147 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %143) #5
  %148 = icmp eq i32 %147, 3
  br i1 %148, label %149, label %162

149:                                              ; preds = %146, %142
  %150 = getelementptr inbounds i8, ptr %0, i64 28
  %151 = load i32, ptr %150, align 4, !tbaa !18
  %152 = icmp ugt i32 %151, 1105
  br i1 %152, label %153, label %162

153:                                              ; preds = %149
  %154 = load i32, ptr %6, align 8, !tbaa !21
  %155 = and i32 %154, 1
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %157, label %162

157:                                              ; preds = %153
  %158 = getelementptr inbounds i8, ptr %6, i64 4
  %159 = load i32, ptr %158, align 4, !tbaa !22
  %160 = and i32 %159, 1
  %161 = icmp eq i32 %160, 0
  br label %162

162:                                              ; preds = %149, %153, %157, %146, %137, %133
  %163 = phi i1 [ false, %146 ], [ false, %137 ], [ false, %133 ], [ false, %153 ], [ false, %149 ], [ %161, %157 ]
  %164 = call i32 @libxsmm_cpuid_x86_amx_gemm_enforce_mx1_tile_blocking() #5
  %165 = icmp sgt i32 %164, 0
  br i1 %165, label %172, label %166

166:                                              ; preds = %162
  %167 = getelementptr inbounds i8, ptr %3, i64 4
  %168 = load i32, ptr %167, align 1, !tbaa !22
  %169 = icmp ugt i32 %168, 16
  %or.cond.not = select i1 %169, i1 true, i1 %134
  %170 = select i1 %or.cond.not, i1 true, i1 %163
  %spec.select581 = xor i1 %170, true
  %171 = zext i1 %spec.select581 to i32
  br label %172

172:                                              ; preds = %162, %166
  %173 = phi i32 [ %171, %166 ], [ 1, %162 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) #5
  %174 = getelementptr inbounds i8, ptr %6, i64 29
  %175 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %174) #5
  %176 = icmp eq i32 %175, 4
  br i1 %176, label %177, label %185

177:                                              ; preds = %172
  %178 = getelementptr inbounds i8, ptr %0, i64 28
  %179 = load i32, ptr %178, align 4, !tbaa !18
  %180 = icmp ult i32 %179, 1106
  br i1 %180, label %185, label %181

181:                                              ; preds = %177
  %182 = load i32, ptr %14, align 8, !tbaa !15
  %183 = and i32 %182, 2048
  %184 = icmp eq i32 %183, 0
  br label %185

185:                                              ; preds = %177, %181, %172
  %186 = phi i1 [ false, %172 ], [ true, %177 ], [ %184, %181 ]
  %187 = zext i1 %186 to i32
  %188 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %174) #5
  %189 = icmp eq i32 %188, 4
  br i1 %189, label %190, label %198

190:                                              ; preds = %185
  %191 = getelementptr inbounds i8, ptr %0, i64 28
  %192 = load i32, ptr %191, align 4, !tbaa !18
  %193 = icmp ult i32 %192, 1106
  br i1 %193, label %198, label %194

194:                                              ; preds = %190
  %195 = load i32, ptr %14, align 8, !tbaa !15
  %196 = and i32 %195, 2048
  %197 = icmp eq i32 %196, 0
  br label %198

198:                                              ; preds = %190, %194, %185
  %199 = phi i1 [ false, %185 ], [ true, %190 ], [ %197, %194 ]
  %200 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %174) #5
  %201 = icmp eq i32 %200, 5
  br i1 %201, label %202, label %210

202:                                              ; preds = %198
  %203 = getelementptr inbounds i8, ptr %0, i64 28
  %204 = load i32, ptr %203, align 4, !tbaa !18
  %205 = icmp ult i32 %204, 1106
  br i1 %205, label %210, label %206

206:                                              ; preds = %202
  %207 = load i32, ptr %14, align 8, !tbaa !15
  %208 = and i32 %207, 2048
  %209 = icmp eq i32 %208, 0
  br label %210

210:                                              ; preds = %202, %206, %198
  %211 = phi i1 [ false, %198 ], [ true, %202 ], [ %209, %206 ]
  %212 = zext i1 %211 to i32
  %213 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %174) #5
  %214 = icmp eq i32 %213, 5
  br i1 %214, label %215, label %223

215:                                              ; preds = %210
  %216 = getelementptr inbounds i8, ptr %0, i64 28
  %217 = load i32, ptr %216, align 4, !tbaa !18
  %218 = icmp ult i32 %217, 1106
  br i1 %218, label %223, label %219

219:                                              ; preds = %215
  %220 = load i32, ptr %14, align 8, !tbaa !15
  %221 = and i32 %220, 2048
  %222 = icmp eq i32 %221, 0
  br label %223

223:                                              ; preds = %215, %219, %210
  %224 = phi i1 [ false, %210 ], [ true, %215 ], [ %222, %219 ]
  call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %9) #5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(34) %9, i8 0, i64 34, i1 false), !tbaa !10
  %or.cond3 = select i1 %186, i1 true, i1 %211
  br i1 %or.cond3, label %225, label %249

225:                                              ; preds = %223
  %226 = load i32, ptr %14, align 8, !tbaa !15
  %227 = trunc i32 %226 to i8
  %trunc = and i8 %227, -64
  switch i8 %trunc, label %601 [
    i8 -64, label %228
    i8 0, label %228
  ]

228:                                              ; preds = %225, %225
  %229 = getelementptr inbounds i8, ptr %0, i64 28
  %230 = load i32, ptr %229, align 4, !tbaa !18
  %231 = icmp ugt i32 %230, 1104
  %or.cond5 = select i1 %231, i1 %186, i1 false
  %232 = and i32 %226, 2048
  %233 = icmp eq i32 %232, 0
  %or.cond623 = and i1 %233, %or.cond5
  br i1 %or.cond623, label %234, label %235

234:                                              ; preds = %228
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 3, i32 noundef 3, i32 noundef 1, i32 noundef 1, ptr noundef nonnull %174) #5
  br label %236

235:                                              ; preds = %228
  call void @LIBXSMM_GEMM_SET_DESC_DATATYPE(i32 noundef 2, i32 noundef 2, i32 noundef 1, i32 noundef 1, ptr noundef nonnull %174) #5
  br label %236

236:                                              ; preds = %235, %234
  %237 = load i32, ptr %6, align 8, !tbaa !21
  %238 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %237, ptr %238, align 4, !tbaa !23
  %239 = getelementptr inbounds i8, ptr %3, i64 8
  %240 = load i32, ptr %239, align 1, !tbaa !17
  %241 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %240, ptr %241, align 8, !tbaa !17
  %242 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %240, ptr %242, align 8, !tbaa !24
  %or.cond7 = select i1 %199, i1 true, i1 %224
  br i1 %or.cond7, label %243, label %245

243:                                              ; preds = %236
  %244 = getelementptr inbounds i8, ptr %6, i64 20
  store i32 %237, ptr %244, align 4, !tbaa !25
  br label %245

245:                                              ; preds = %236, %243
  %.pre.pre = load i32, ptr %14, align 8, !tbaa !15
  %246 = and i32 %.pre.pre, 2048
  %247 = icmp eq i32 %246, 0
  %or.cond641 = select i1 %186, i1 %247, i1 false
  %.0494 = zext i1 %or.cond641 to i32
  %248 = or i32 %.pre.pre, 2048
  store i32 %248, ptr %14, align 8, !tbaa !15
  br label %249

249:                                              ; preds = %223, %245
  %.1495 = phi i32 [ %.0494, %245 ], [ 0, %223 ]
  %or.cond9 = or i1 %40, %60
  %or.cond11 = select i1 %or.cond9, i1 true, i1 %90
  %or.cond13 = select i1 %or.cond11, i1 true, i1 %110
  br i1 %or.cond13, label %250, label %253

250:                                              ; preds = %249
  %251 = load i32, ptr %14, align 8, !tbaa !15
  %252 = or i32 %251, 2048
  store i32 %252, ptr %14, align 8, !tbaa !15
  br label %253

253:                                              ; preds = %249, %250
  %or.cond15 = select i1 %60, i1 true, i1 %110
  br i1 %or.cond15, label %254, label %257

254:                                              ; preds = %253
  %255 = load i32, ptr %14, align 8, !tbaa !15
  %256 = and i32 %255, -2
  store i32 %256, ptr %14, align 8, !tbaa !15
  br label %257

257:                                              ; preds = %253, %254
  %or.cond17 = select i1 %90, i1 true, i1 %110
  br i1 %or.cond17, label %258, label %261

258:                                              ; preds = %257
  %259 = load i32, ptr %14, align 8, !tbaa !15
  %260 = and i32 %259, -3
  store i32 %260, ptr %14, align 8, !tbaa !15
  br label %261

261:                                              ; preds = %257, %258
  %262 = getelementptr inbounds i8, ptr %0, i64 28
  %263 = load i32, ptr %262, align 4, !tbaa !18
  call void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef nonnull %5, i32 noundef %263, ptr noundef nonnull %6, i32 noundef 0) #5
  %264 = getelementptr inbounds i8, ptr %5, i64 640
  store i32 %173, ptr %264, align 8, !tbaa !26
  %265 = getelementptr inbounds i8, ptr %5, i64 644
  store i32 %.1495, ptr %265, align 4, !tbaa !29
  br i1 %40, label %266, label %268

266:                                              ; preds = %261
  %267 = getelementptr inbounds i8, ptr %5, i64 664
  store i32 1, ptr %267, align 8, !tbaa !30
  br label %268

268:                                              ; preds = %266, %261
  %.pre637.pre.pre = load i32, ptr %6, align 8, !tbaa !21
  br i1 %60, label %269, label %272

269:                                              ; preds = %268
  %270 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %.pre637.pre.pre, ptr %270, align 4, !tbaa !23
  %271 = getelementptr inbounds i8, ptr %5, i64 668
  store i32 1, ptr %271, align 4, !tbaa !31
  br label %272

272:                                              ; preds = %269, %268
  br i1 %90, label %273, label %279

273:                                              ; preds = %272
  %274 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %.pre637.pre.pre, ptr %274, align 4, !tbaa !23
  %275 = getelementptr inbounds i8, ptr %6, i64 8
  %276 = load i32, ptr %275, align 8, !tbaa !17
  %277 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %276, ptr %277, align 8, !tbaa !24
  %278 = getelementptr inbounds i8, ptr %5, i64 672
  store i32 1, ptr %278, align 8, !tbaa !32
  br label %279

279:                                              ; preds = %273, %272
  br i1 %110, label %280, label %286

280:                                              ; preds = %279
  %281 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %.pre637.pre.pre, ptr %281, align 4, !tbaa !23
  %282 = getelementptr inbounds i8, ptr %6, i64 8
  %283 = load i32, ptr %282, align 8, !tbaa !17
  %284 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %283, ptr %284, align 8, !tbaa !24
  %285 = getelementptr inbounds i8, ptr %5, i64 676
  store i32 1, ptr %285, align 4, !tbaa !33
  br label %286

286:                                              ; preds = %280, %279
  %287 = and i32 %.pre637.pre.pre, 15
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %292, label %289

289:                                              ; preds = %286
  %290 = icmp ult i32 %.pre637.pre.pre, 33
  %291 = icmp ne i32 %173, 0
  %or.cond19 = select i1 %290, i1 true, i1 %291
  br i1 %or.cond19, label %292, label %303

292:                                              ; preds = %289, %286
  %.not514 = icmp ne i32 %173, 0
  %293 = icmp ugt i32 %.pre637.pre.pre, 32
  %or.cond624 = and i1 %.not514, %293
  br i1 %or.cond624, label %294, label %306

294:                                              ; preds = %292
  %295 = urem i32 %.pre637.pre.pre, 48
  %296 = icmp eq i32 %295, 0
  %or.cond588 = or i1 %288, %296
  br i1 %or.cond588, label %306, label %297

297:                                              ; preds = %294
  %298 = and i32 %.pre637.pre.pre, 63
  %299 = icmp eq i32 %298, 0
  %300 = icmp ult i32 %.pre637.pre.pre, 65
  %or.cond589 = or i1 %300, %299
  br i1 %or.cond589, label %306, label %301

301:                                              ; preds = %297
  %302 = and i32 %.pre637.pre.pre, -64
  store i32 %302, ptr %6, align 8, !tbaa !21
  br label %306

303:                                              ; preds = %289
  %304 = and i32 %.pre637.pre.pre, 31
  %305 = and i32 %.pre637.pre.pre, -32
  store i32 %305, ptr %6, align 8, !tbaa !21
  br label %306

306:                                              ; preds = %292, %294, %297, %301, %303
  %.0483 = phi i32 [ 2, %301 ], [ 2, %303 ], [ 1, %297 ], [ 1, %294 ], [ 1, %292 ]
  %.0480 = phi i32 [ %298, %301 ], [ %304, %303 ], [ 0, %297 ], [ 0, %294 ], [ 0, %292 ]
  %.0 = phi i32 [ %302, %301 ], [ %305, %303 ], [ 0, %297 ], [ 0, %294 ], [ 0, %292 ]
  %307 = getelementptr inbounds i8, ptr %3, i64 24
  %308 = load i32, ptr %307, align 1, !tbaa !15
  %309 = and i32 %308, 1
  %.not515 = icmp eq i32 %309, 0
  br i1 %.not515, label %342, label %310

310:                                              ; preds = %306
  %311 = load i32, ptr %262, align 4, !tbaa !18
  %312 = icmp ugt i32 %311, 1105
  br i1 %312, label %313, label %342

313:                                              ; preds = %310
  %314 = getelementptr inbounds i8, ptr %3, i64 29
  %315 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %314) #5
  %316 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %315) #5
  %317 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %314) #5
  %318 = icmp eq i32 %317, 2
  br i1 %318, label %325, label %319

319:                                              ; preds = %313
  %320 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %314) #5
  %321 = icmp eq i32 %320, 3
  br i1 %321, label %325, label %322

322:                                              ; preds = %319
  %323 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %314) #5
  %324 = icmp eq i32 %323, 12
  %. = select i1 %324, i32 64, i32 1
  br label %325

325:                                              ; preds = %322, %313, %319
  %.0488 = phi i32 [ 32, %319 ], [ 32, %313 ], [ %., %322 ]
  %326 = getelementptr inbounds i8, ptr %3, i64 8
  %327 = load i32, ptr %326, align 1, !tbaa !17
  br label %328

328:                                              ; preds = %328, %325
  %.1489 = phi i32 [ %.0488, %325 ], [ %330, %328 ]
  %329 = urem i32 %327, %.1489
  %.not516 = icmp eq i32 %329, 0
  %330 = sub i32 %.1489, %316
  br i1 %.not516, label %331, label %328, !llvm.loop !34

331:                                              ; preds = %328
  %332 = load i32, ptr %3, align 1, !tbaa !21
  %333 = and i32 %332, 31
  %334 = icmp eq i32 %333, 0
  %335 = icmp eq i32 %.1489, 32
  %or.cond21 = and i1 %335, %334
  br i1 %or.cond21, label %342, label %336

336:                                              ; preds = %331
  %337 = and i32 %332, 15
  %338 = icmp eq i32 %337, 0
  %339 = icmp ult i32 %332, 17
  %or.cond590 = or i1 %339, %338
  br i1 %or.cond590, label %342, label %340

340:                                              ; preds = %336
  %341 = and i32 %332, -16
  store i32 %341, ptr %6, align 8, !tbaa !21
  br label %342

342:                                              ; preds = %340, %331, %336, %310, %306
  %.2485 = phi i32 [ %.0483, %310 ], [ %.0483, %306 ], [ %.0483, %331 ], [ %.0483, %336 ], [ 2, %340 ]
  %.2482 = phi i32 [ %.0480, %310 ], [ %.0480, %306 ], [ %.0480, %331 ], [ %.0480, %336 ], [ %337, %340 ]
  %.2 = phi i32 [ %.0, %310 ], [ %.0, %306 ], [ %.0, %331 ], [ %.0, %336 ], [ %341, %340 ]
  call void @libxsmm_generator_gemm_init_micro_kernel_config_tileblocking(ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9)
  %343 = load i32, ptr %7, align 16, !tbaa !36
  %344 = getelementptr inbounds i8, ptr %5, i64 356
  store i32 %343, ptr %344, align 4, !tbaa !38
  %345 = load i32, ptr %8, align 16, !tbaa !36
  %346 = getelementptr inbounds i8, ptr %5, i64 360
  store i32 %345, ptr %346, align 8, !tbaa !39
  %347 = getelementptr inbounds i8, ptr %5, i64 464
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %347, ptr noundef nonnull align 16 dereferenceable(28) %7, i64 28, i1 false), !tbaa.struct !40
  %348 = getelementptr inbounds i8, ptr %5, i64 492
  %349 = getelementptr inbounds i8, ptr %7, i64 28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %348, ptr noundef nonnull align 4 dereferenceable(28) %349, i64 28, i1 false), !tbaa.struct !40
  %350 = load i32, ptr %14, align 8, !tbaa !15
  %351 = and i32 %350, 192
  %or.cond592 = icmp ne i32 %351, 0
  %or.cond593 = icmp ne i32 %351, 192
  %or.cond625 = and i1 %or.cond592, %or.cond593
  %352 = and i32 %350, 49152
  %or.cond594 = icmp eq i32 %352, 0
  %or.cond = or i1 %or.cond594, %or.cond625
  br i1 %or.cond, label %409, label %353

353:                                              ; preds = %342
  %354 = load i32, ptr %2, align 4, !tbaa !41
  %355 = getelementptr inbounds i8, ptr %2, i64 92
  %356 = load i32, ptr %355, align 4, !tbaa !43
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef -1568407413, i32 noundef %354, i32 noundef %356) #5
  %357 = getelementptr inbounds i8, ptr %5, i64 80
  %358 = load i32, ptr %357, align 8, !tbaa !44
  %359 = load i32, ptr %355, align 4, !tbaa !43
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %358, i32 noundef %359, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef 7, i32 noundef 0) #5
  %360 = load i32, ptr %307, align 1, !tbaa !15
  %361 = and i32 %360, 8388608
  %.not521 = icmp eq i32 %361, 0
  br i1 %.not521, label %367, label %362

362:                                              ; preds = %353
  %363 = load i32, ptr %357, align 8, !tbaa !44
  %364 = load i32, ptr %355, align 4, !tbaa !43
  %365 = getelementptr inbounds i8, ptr %2, i64 116
  %366 = load i32, ptr %365, align 4, !tbaa !45
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %363, i32 noundef %364, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %366, i32 noundef 0) #5
  br label %367

367:                                              ; preds = %362, %353
  %368 = load i32, ptr %357, align 8, !tbaa !44
  %369 = load i32, ptr %355, align 4, !tbaa !43
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %368, i32 noundef %369, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef 6, i32 noundef 0) #5
  %370 = load i32, ptr %357, align 8, !tbaa !44
  %371 = load i32, ptr %355, align 4, !tbaa !43
  %372 = getelementptr inbounds i8, ptr %2, i64 20
  %373 = load i32, ptr %372, align 4, !tbaa !46
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %370, i32 noundef %371, i32 noundef 127, i32 noundef 0, i32 noundef 128, i32 noundef %373, i32 noundef 0) #5
  %374 = load i32, ptr %14, align 8, !tbaa !15
  %375 = and i32 %374, 458752
  %or.cond596 = icmp eq i32 %375, 0
  br i1 %or.cond596, label %392, label %376

376:                                              ; preds = %367
  %377 = load i32, ptr %357, align 8, !tbaa !44
  %378 = load i32, ptr %355, align 4, !tbaa !43
  %379 = getelementptr inbounds i8, ptr %2, i64 52
  %380 = load i32, ptr %379, align 4, !tbaa !47
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %377, i32 noundef %378, i32 noundef 127, i32 noundef 0, i32 noundef 16, i32 noundef %380, i32 noundef 0) #5
  %381 = load i32, ptr %14, align 8, !tbaa !15
  %382 = and i32 %381, 131072
  %.not525 = icmp eq i32 %382, 0
  br i1 %.not525, label %392, label %383

383:                                              ; preds = %376
  %384 = load i32, ptr %357, align 8, !tbaa !44
  %385 = load i32, ptr %355, align 4, !tbaa !43
  %386 = getelementptr inbounds i8, ptr %2, i64 28
  %387 = load i32, ptr %386, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %384, i32 noundef %385, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %387, i32 noundef 0) #5
  %388 = load i32, ptr %357, align 8, !tbaa !44
  %389 = load i32, ptr %355, align 4, !tbaa !43
  %390 = getelementptr inbounds i8, ptr %2, i64 36
  %391 = load i32, ptr %390, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %388, i32 noundef %389, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %391, i32 noundef 0) #5
  br label %392

392:                                              ; preds = %367, %376, %383
  %393 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %174) #5
  %394 = icmp eq i32 %393, 12
  br i1 %394, label %395, label %403

395:                                              ; preds = %392
  %396 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %174) #5
  %397 = icmp eq i32 %396, 1
  br i1 %397, label %398, label %403

398:                                              ; preds = %395
  %399 = load i32, ptr %357, align 8, !tbaa !44
  %400 = load i32, ptr %355, align 4, !tbaa !43
  %401 = getelementptr inbounds i8, ptr %2, i64 80
  %402 = load i32, ptr %401, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %399, i32 noundef %400, i32 noundef 127, i32 noundef 0, i32 noundef 144, i32 noundef %402, i32 noundef 0) #5
  br label %403

403:                                              ; preds = %398, %395, %392
  %.not526 = icmp eq i32 %13, 0
  br i1 %.not526, label %409, label %404

404:                                              ; preds = %403
  %405 = load i32, ptr %357, align 8, !tbaa !44
  %406 = load i32, ptr %355, align 4, !tbaa !43
  %407 = getelementptr inbounds i8, ptr %2, i64 80
  %408 = load i32, ptr %407, align 4, !tbaa !50
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %405, i32 noundef %406, i32 noundef 127, i32 noundef 0, i32 noundef 48, i32 noundef %408, i32 noundef 0) #5
  br label %409

409:                                              ; preds = %342, %403, %404
  %.pre638 = load i32, ptr %14, align 8, !tbaa !15
  br i1 %or.cond3, label %410, label %417

410:                                              ; preds = %409
  %411 = getelementptr inbounds i8, ptr %3, i64 8
  %412 = load i32, ptr %411, align 1, !tbaa !17
  %413 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %412, ptr %413, align 8, !tbaa !17
  %414 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %412, ptr %414, align 8, !tbaa !24
  %415 = load i32, ptr %3, align 1, !tbaa !21
  store i32 %415, ptr %6, align 8, !tbaa !21
  %416 = or i32 %.pre638, 2048
  store i32 %416, ptr %14, align 8, !tbaa !15
  br label %417

417:                                              ; preds = %409, %410
  %418 = phi i32 [ %.pre638, %409 ], [ %416, %410 ]
  %419 = and i32 %418, 49152
  %or.cond597 = icmp eq i32 %419, 0
  br i1 %or.cond597, label %421, label %420

420:                                              ; preds = %417
  call void @libxsmm_generator_gemm_setup_fusion_microkernel_properties(ptr noundef nonnull %6, ptr noundef nonnull %5) #5
  br label %426

421:                                              ; preds = %417
  %422 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !6
  %423 = icmp ugt i32 %422, 1
  %424 = load i32, ptr @libxsmm_verbosity, align 4
  %425 = select i1 %423, i32 %424, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90046, ptr noundef nonnull @__func__.libxsmm_generator_gemm_amx_kernel, ptr noundef nonnull @.str.1, i32 noundef 3834, i32 noundef %425) #5
  br label %426

426:                                              ; preds = %421, %420
  %427 = getelementptr inbounds i8, ptr %5, i64 648
  store i32 %187, ptr %427, align 8, !tbaa !51
  %428 = getelementptr inbounds i8, ptr %5, i64 652
  store i32 %212, ptr %428, align 4, !tbaa !52
  %or.cond25 = select i1 %60, i1 true, i1 %90
  %or.cond27 = select i1 %or.cond25, i1 true, i1 %110
  br i1 %or.cond27, label %429, label %436

429:                                              ; preds = %426
  %430 = load <2 x i32>, ptr %6, align 8, !tbaa !6
  %431 = getelementptr inbounds i8, ptr %6, i64 8
  %432 = load i32, ptr %431, align 8, !tbaa !17
  %433 = load <2 x i32>, ptr %3, align 1, !tbaa !6
  store <2 x i32> %433, ptr %6, align 8, !tbaa !6
  %434 = getelementptr inbounds i8, ptr %3, i64 8
  %435 = load i32, ptr %434, align 1, !tbaa !17
  store i32 %435, ptr %431, align 8, !tbaa !17
  br label %436

436:                                              ; preds = %426, %429
  %.0497 = phi i32 [ %432, %429 ], [ 0, %426 ]
  %437 = phi <2 x i32> [ %430, %429 ], [ zeroinitializer, %426 ]
  %438 = load i32, ptr %14, align 8, !tbaa !15
  %439 = trunc i32 %438 to i8
  %trunc642 = and i8 %439, -64
  switch i8 %trunc642, label %441 [
    i8 -64, label %440
    i8 0, label %440
  ]

440:                                              ; preds = %436, %436
  call void @libxsmm_generator_gemm_setup_stack_frame(ptr noundef %0, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %5) #5
  br label %441

441:                                              ; preds = %436, %440
  br i1 %or.cond27, label %442, label %.critedge

442:                                              ; preds = %441
  %443 = load i32, ptr %14, align 8, !tbaa !15
  %444 = trunc i32 %443 to i8
  %trunc643 = and i8 %444, -64
  switch i8 %trunc643, label %448 [
    i8 -64, label %445
    i8 0, label %445
  ]

445:                                              ; preds = %442, %442
  %446 = getelementptr inbounds i8, ptr %3, i64 29
  %447 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %446) #5
  call void @libxsmm_generator_gemm_setup_A_vnni_or_trans_B_vnni_or_trans_tensor_to_stack(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %3, i32 noundef %447, i32 noundef 1) #5
  br label %448

448:                                              ; preds = %442, %445
  store <2 x i32> %437, ptr %6, align 8, !tbaa !6
  %449 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %.0497, ptr %449, align 8, !tbaa !17
  br label %.critedge

.critedge:                                        ; preds = %441, %448
  %450 = load i32, ptr %307, align 1, !tbaa !15
  %451 = and i32 %450, 8388608
  %.not533 = icmp eq i32 %451, 0
  br i1 %.not533, label %455, label %452

452:                                              ; preds = %.critedge
  %453 = getelementptr inbounds i8, ptr %2, i64 120
  %454 = load i32, ptr %453, align 4, !tbaa !53
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 6, i32 noundef %454) #5
  br label %455

455:                                              ; preds = %452, %.critedge
  br i1 %or.cond3, label %456, label %467

456:                                              ; preds = %455
  %457 = getelementptr inbounds i8, ptr %5, i64 120
  %458 = load i32, ptr %457, align 8, !tbaa !54
  %.not534 = icmp eq i32 %458, 0
  br i1 %.not534, label %460, label %459

459:                                              ; preds = %456
  store i32 0, ptr %457, align 8, !tbaa !54
  br label %460

460:                                              ; preds = %459, %456
  %.0486 = phi i32 [ 1, %459 ], [ 0, %456 ]
  %461 = getelementptr inbounds i8, ptr %5, i64 140
  %462 = load i32, ptr %461, align 4, !tbaa !55
  %.not535 = icmp eq i32 %462, 0
  br i1 %.not535, label %464, label %463

463:                                              ; preds = %460
  store i32 0, ptr %461, align 4, !tbaa !55
  br label %464

464:                                              ; preds = %463, %460
  %.0491 = phi i32 [ 1, %463 ], [ 0, %460 ]
  %465 = getelementptr inbounds i8, ptr %3, i64 29
  %466 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %465) #5
  call void @libxsmm_generator_gemm_setup_f8_ABC_tensors_to_stack_for_amx(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %3, i32 noundef %466)
  br label %467

467:                                              ; preds = %455, %464
  %.1492 = phi i32 [ %.0491, %464 ], [ 0, %455 ]
  %.1487 = phi i32 [ %.0486, %464 ], [ 0, %455 ]
  %468 = load i32, ptr %14, align 8, !tbaa !15
  %469 = trunc i32 %468 to i8
  %trunc644 = and i8 %469, -64
  switch i8 %trunc644, label %481 [
    i8 -64, label %470
    i8 0, label %470
  ]

470:                                              ; preds = %467, %467
  call void @libxsmm_generator_gemm_amx_setup_fusion_infra(ptr noundef %0, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %5)
  call void @libxsmm_generator_gemm_amx_setup_masking_infra(ptr noundef %0, ptr noundef nonnull %5)
  %471 = icmp ne i32 %10, 0
  %472 = icmp ne i32 %11, 0
  %or.cond39 = select i1 %471, i1 true, i1 %472
  %473 = icmp ne i32 %12, 0
  %or.cond41 = select i1 %or.cond39, i1 true, i1 %473
  %474 = icmp ne i32 %13, 0
  %or.cond43 = select i1 %or.cond41, i1 true, i1 %474
  %475 = getelementptr inbounds i8, ptr %5, i64 664
  %476 = load i32, ptr %475, align 8
  %477 = icmp ne i32 %476, 0
  %or.cond46 = select i1 %or.cond43, i1 true, i1 %477
  br i1 %or.cond46, label %478, label %481

478:                                              ; preds = %470
  %479 = getelementptr inbounds i8, ptr %7, i64 20
  %480 = load i32, ptr %479, align 4, !tbaa !56
  call void @libxsmm_generator_gemm_amx_setup_masking_infra_lp_cvt(ptr noundef %0, ptr noundef nonnull %5, i32 noundef %480)
  br label %481

481:                                              ; preds = %467, %478, %470
  %482 = load i32, ptr %14, align 8, !tbaa !15
  %483 = and i32 %482, 128
  %484 = icmp eq i32 %483, 0
  %485 = and i32 %482, 192
  %or.cond608 = icmp eq i32 %485, 64
  br i1 %or.cond608, label %492, label %486

486:                                              ; preds = %481
  %487 = and i32 %482, 64
  %488 = icmp eq i32 %487, 0
  %489 = icmp ugt i32 %.2485, 1
  br i1 %488, label %490, label %491

490:                                              ; preds = %486
  %or.cond48 = or i1 %489, %484
  %brmerge = or i1 %or.cond3, %or.cond48
  br i1 %brmerge, label %492, label %494

491:                                              ; preds = %486
  %brmerge609 = or i1 %or.cond3, %489
  br i1 %brmerge609, label %492, label %494

492:                                              ; preds = %491, %490, %481
  %493 = load i32, ptr %5, align 8, !tbaa !57
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %0, i32 noundef 0, i32 noundef %493, i32 noundef 50001, i32 noundef 127, i32 noundef 0, ptr noundef nonnull %9) #5
  %.pre639 = load i32, ptr %14, align 8, !tbaa !15
  %.pre = and i32 %.pre639, 192
  br label %494

494:                                              ; preds = %491, %490, %492
  %.pre-phi = phi i32 [ %485, %491 ], [ %485, %490 ], [ %.pre, %492 ]
  %trunc645 = trunc nuw i32 %.pre-phi to i8
  switch i8 %trunc645, label %529 [
    i8 -64, label %495
    i8 0, label %495
  ]

495:                                              ; preds = %494, %494
  %496 = getelementptr inbounds i8, ptr %5, i64 80
  %497 = load i32, ptr %496, align 8, !tbaa !44
  %498 = getelementptr inbounds i8, ptr %2, i64 68
  %499 = load i32, ptr %498, align 4, !tbaa !58
  %500 = getelementptr inbounds i8, ptr %6, i64 12
  %501 = load i32, ptr %500, align 4, !tbaa !23
  %502 = zext i32 %501 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %497, i32 noundef %499, i64 noundef %502) #5
  %503 = load i32, ptr %496, align 8, !tbaa !44
  %504 = getelementptr inbounds i8, ptr %2, i64 72
  %505 = load i32, ptr %504, align 4, !tbaa !59
  %506 = getelementptr inbounds i8, ptr %6, i64 16
  %507 = load i32, ptr %506, align 8, !tbaa !24
  %508 = zext i32 %507 to i64
  %509 = zext i1 %163 to i64
  %510 = shl nuw nsw i64 %508, %509
  %511 = getelementptr inbounds i8, ptr %5, i64 16
  %512 = load i32, ptr %511, align 8, !tbaa !60
  %513 = zext i32 %512 to i64
  %514 = mul nuw nsw i64 %510, %513
  %515 = lshr i64 %514, 2
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %503, i32 noundef %505, i64 noundef %515) #5
  %516 = load i32, ptr %496, align 8, !tbaa !44
  %517 = getelementptr inbounds i8, ptr %2, i64 76
  %518 = load i32, ptr %517, align 4, !tbaa !61
  %519 = getelementptr inbounds i8, ptr %6, i64 20
  %520 = load i32, ptr %519, align 4, !tbaa !25
  %521 = zext i32 %520 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %516, i32 noundef %518, i64 noundef %521) #5
  %522 = load i32, ptr %14, align 8, !tbaa !15
  %523 = and i32 %522, 458752
  %or.cond614 = icmp eq i32 %523, 0
  br i1 %or.cond614, label %528, label %524

524:                                              ; preds = %495
  %525 = load i32, ptr %496, align 8, !tbaa !44
  %526 = getelementptr inbounds i8, ptr %2, i64 52
  %527 = load i32, ptr %526, align 4, !tbaa !47
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %525, i32 noundef %527, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %527, i32 noundef 0) #5
  br label %528

528:                                              ; preds = %495, %524
  call void @libxsmm_generator_gemm_amx_kernel_nloop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %8, ptr noundef nonnull %7)
  br label %529

529:                                              ; preds = %494, %528
  %530 = icmp ugt i32 %.2485, 1
  br i1 %530, label %531, label %593

531:                                              ; preds = %529
  store i32 %.2482, ptr %6, align 8, !tbaa !21
  %532 = getelementptr inbounds i8, ptr %5, i64 600
  store i32 0, ptr %532, align 8, !tbaa !62
  br i1 %or.cond3, label %533, label %540

533:                                              ; preds = %531
  %534 = getelementptr inbounds i8, ptr %3, i64 8
  %535 = load i32, ptr %534, align 1, !tbaa !17
  %536 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %535, ptr %536, align 8, !tbaa !17
  %537 = getelementptr inbounds i8, ptr %6, i64 16
  store i32 %535, ptr %537, align 8, !tbaa !24
  %538 = load i32, ptr %14, align 8, !tbaa !15
  %539 = or i32 %538, 2048
  store i32 %539, ptr %14, align 8, !tbaa !15
  br label %540

540:                                              ; preds = %531, %533
  call void @libxsmm_generator_gemm_init_micro_kernel_config_tileblocking(ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %347, ptr noundef nonnull align 16 dereferenceable(28) %7, i64 28, i1 false), !tbaa.struct !40
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %348, ptr noundef nonnull align 4 dereferenceable(28) %349, i64 28, i1 false), !tbaa.struct !40
  call void @libxsmm_generator_gemm_amx_setup_masking_infra(ptr noundef %0, ptr noundef nonnull %5)
  %541 = icmp ne i32 %10, 0
  %542 = icmp ne i32 %11, 0
  %or.cond57 = select i1 %541, i1 true, i1 %542
  %543 = icmp ne i32 %12, 0
  %or.cond60 = select i1 %or.cond57, i1 true, i1 %543
  %544 = icmp ne i32 %13, 0
  %or.cond63 = select i1 %or.cond60, i1 true, i1 %544
  %545 = getelementptr inbounds i8, ptr %5, i64 664
  %546 = load i32, ptr %545, align 8
  %547 = icmp ne i32 %546, 0
  %or.cond67 = select i1 %or.cond63, i1 true, i1 %547
  br i1 %or.cond67, label %548, label %551

548:                                              ; preds = %540
  %549 = getelementptr inbounds i8, ptr %7, i64 20
  %550 = load i32, ptr %549, align 4, !tbaa !56
  call void @libxsmm_generator_gemm_amx_setup_masking_infra_lp_cvt(ptr noundef %0, ptr noundef nonnull %5, i32 noundef %550)
  br label %551

551:                                              ; preds = %540, %548
  %552 = load i32, ptr %5, align 8, !tbaa !57
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %0, i32 noundef 0, i32 noundef %552, i32 noundef 50001, i32 noundef 127, i32 noundef 0, ptr noundef nonnull %9) #5
  %553 = load i32, ptr %14, align 8, !tbaa !15
  %554 = trunc i32 %553 to i8
  %trunc646 = and i8 %554, -64
  switch i8 %trunc646, label %593 [
    i8 -64, label %555
    i8 0, label %555
  ]

555:                                              ; preds = %551, %551
  %556 = getelementptr inbounds i8, ptr %5, i64 96
  %557 = load i32, ptr %556, align 8, !tbaa !63
  %.not546 = icmp eq i32 %557, 0
  br i1 %.not546, label %562, label %558

558:                                              ; preds = %555
  %559 = getelementptr inbounds i8, ptr %6, i64 4
  %560 = load i32, ptr %559, align 4, !tbaa !22
  %561 = sub nsw i32 0, %560
  call void @libxsmm_generator_gemm_amx_adjust_n_advancement(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %5, i32 noundef %561)
  br label %.sink.split

562:                                              ; preds = %555
  %563 = getelementptr inbounds i8, ptr %5, i64 92
  %564 = load i32, ptr %563, align 4, !tbaa !64
  %565 = icmp eq i32 %564, 0
  br i1 %565, label %.sink.split, label %566

.sink.split:                                      ; preds = %562, %558
  call void @libxsmm_generator_gemm_amx_adjust_m_advancement(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %5, i32 noundef %.2)
  br label %566

566:                                              ; preds = %.sink.split, %562
  %567 = getelementptr inbounds i8, ptr %5, i64 80
  %568 = load i32, ptr %567, align 8, !tbaa !44
  %569 = getelementptr inbounds i8, ptr %2, i64 68
  %570 = load i32, ptr %569, align 4, !tbaa !58
  %571 = getelementptr inbounds i8, ptr %6, i64 12
  %572 = load i32, ptr %571, align 4, !tbaa !23
  %573 = zext i32 %572 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %568, i32 noundef %570, i64 noundef %573) #5
  %574 = load i32, ptr %567, align 8, !tbaa !44
  %575 = getelementptr inbounds i8, ptr %2, i64 72
  %576 = load i32, ptr %575, align 4, !tbaa !59
  %577 = getelementptr inbounds i8, ptr %6, i64 16
  %578 = load i32, ptr %577, align 8, !tbaa !24
  %579 = zext i32 %578 to i64
  %580 = zext i1 %163 to i64
  %581 = shl nuw nsw i64 %579, %580
  %582 = getelementptr inbounds i8, ptr %5, i64 16
  %583 = load i32, ptr %582, align 8, !tbaa !60
  %584 = zext i32 %583 to i64
  %585 = mul nuw nsw i64 %581, %584
  %586 = lshr i64 %585, 2
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %574, i32 noundef %576, i64 noundef %586) #5
  %587 = load i32, ptr %567, align 8, !tbaa !44
  %588 = getelementptr inbounds i8, ptr %2, i64 76
  %589 = load i32, ptr %588, align 4, !tbaa !61
  %590 = getelementptr inbounds i8, ptr %6, i64 20
  %591 = load i32, ptr %590, align 4, !tbaa !25
  %592 = zext i32 %591 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %587, i32 noundef %589, i64 noundef %592) #5
  call void @libxsmm_generator_gemm_amx_kernel_nloop(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %8, ptr noundef nonnull %7)
  br label %593

593:                                              ; preds = %551, %566, %529
  br i1 %or.cond3, label %594, label %597

594:                                              ; preds = %593
  %595 = getelementptr inbounds i8, ptr %3, i64 29
  %596 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %595) #5
  call void @libxsmm_generator_gemm_emit_f8_eltwise_fusion(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %3, i32 noundef %.1492, i32 noundef %.1487, i32 noundef %596)
  br label %597

597:                                              ; preds = %593, %594
  %598 = load i32, ptr %14, align 8, !tbaa !15
  %599 = trunc i32 %598 to i8
  %trunc647 = and i8 %599, -64
  switch i8 %trunc647, label %601 [
    i8 -64, label %600
    i8 0, label %600
  ]

600:                                              ; preds = %597, %597
  call void @libxsmm_generator_gemm_destroy_stack_frame(ptr noundef %0, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %5) #5
  br label %601

601:                                              ; preds = %597, %225, %600
  call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 95, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 688, ptr nonnull %5) #5
  ret void
}

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

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

declare i32 @libxsmm_cpuid_x86_amx_gemm_enforce_mx1_tile_blocking() local_unnamed_addr #0

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

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

declare void @libxsmm_generator_gemm_setup_fusion_microkernel_properties(ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @libxsmm_generator_gemm_setup_stack_frame(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @libxsmm_generator_gemm_setup_A_vnni_or_trans_B_vnni_or_trans_tensor_to_stack(ptr noundef, ptr noundef, ptr noundef, ptr 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_kernel_nloop(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @libxsmm_generator_gemm_destroy_stack_frame(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{i64 0, i64 4, !6, i64 4, i64 4, !6, i64 8, i64 4, !6, i64 12, i64 4, !6, i64 16, i64 4, !6, i64 20, i64 4, !6, i64 24, i64 4, !6, i64 28, i64 1, !10, i64 29, i64 3, !10, i64 32, i64 1, !10, i64 33, i64 8, !11, i64 41, i64 8, !11, i64 49, i64 1, !10, i64 50, i64 4, !6, i64 54, i64 4, !6, i64 58, i64 4, !6, i64 62, i64 2, !13, i64 64, i64 2, !13, i64 66, i64 1, !10, i64 67, i64 1, !10, i64 68, i64 1, !10, i64 69, i64 1, !10, i64 70, i64 2, !13, i64 72, i64 2, !13, i64 74, i64 2, !13, i64 76, i64 2, !13, i64 78, i64 2, !13, i64 80, i64 2, !13, i64 82, i64 4, !6, i64 86, i64 4, !6, i64 90, i64 4, !6, i64 94, i64 1, !10}
!6 = !{!7, !7, i64 0}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!8, !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long long", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"short", !8, i64 0}
!15 = !{!16, !7, i64 24}
!16 = !{!"libxsmm_gemm_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !8, i64 28, !8, i64 29, !8, i64 32, !12, i64 33, !12, i64 41, !8, i64 49, !7, i64 50, !7, i64 54, !7, i64 58, !14, i64 62, !14, i64 64, !8, i64 66, !8, i64 67, !8, i64 68, !8, i64 69, !14, i64 70, !14, i64 72, !14, i64 74, !14, i64 76, !14, i64 78, !14, i64 80, !7, i64 82, !7, i64 86, !7, i64 90, !8, i64 94}
!17 = !{!16, !7, i64 8}
!18 = !{!19, !7, i64 28}
!19 = !{!"libxsmm_generated_code", !20, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!20 = !{!"any pointer", !8, i64 0}
!21 = !{!16, !7, i64 0}
!22 = !{!16, !7, i64 4}
!23 = !{!16, !7, i64 12}
!24 = !{!16, !7, i64 16}
!25 = !{!16, !7, i64 20}
!26 = !{!27, !7, i64 640}
!27 = !{!"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, !28, i64 520, !7, i64 556, !7, i64 560, !7, i64 564, !7, i64 568, !7, i64 572, !7, i64 576, !7, i64 580, !7, i64 584, !20, i64 592, !7, i64 600, !7, i64 604, !7, i64 608, !7, i64 612, !20, i64 616, !7, i64 624, !7, i64 628, !7, i64 632, !7, i64 636, !7, i64 640, !7, i64 644, !7, i64 648, !7, i64 652, !7, i64 656, !7, i64 660, !7, i64 664, !7, i64 668, !7, i64 672, !7, i64 676, !7, i64 680}
!28 = !{!"libxsmm_tile_config", !8, i64 0, !14, i64 2, !8, i64 4, !14, i64 6, !8, i64 8, !14, i64 10, !8, i64 12, !14, i64 14, !8, i64 16, !14, i64 18, !8, i64 20, !14, i64 22, !8, i64 24, !14, i64 26, !8, i64 28, !14, i64 30, !8, i64 32}
!29 = !{!27, !7, i64 644}
!30 = !{!27, !7, i64 664}
!31 = !{!27, !7, i64 668}
!32 = !{!27, !7, i64 672}
!33 = !{!27, !7, i64 676}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !7, i64 0}
!37 = !{!"libxsmm_blocking_info_t", !7, i64 0, !8, i64 4, !7, i64 20, !7, i64 24}
!38 = !{!27, !7, i64 356}
!39 = !{!27, !7, i64 360}
!40 = !{i64 0, i64 4, !6, i64 4, i64 16, !10, i64 20, i64 4, !6, i64 24, i64 4, !6}
!41 = !{!42, !7, i64 0}
!42 = !{!"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}
!43 = !{!42, !7, i64 92}
!44 = !{!27, !7, i64 80}
!45 = !{!42, !7, i64 116}
!46 = !{!42, !7, i64 20}
!47 = !{!42, !7, i64 52}
!48 = !{!42, !7, i64 28}
!49 = !{!42, !7, i64 36}
!50 = !{!42, !7, i64 80}
!51 = !{!27, !7, i64 648}
!52 = !{!27, !7, i64 652}
!53 = !{!42, !7, i64 120}
!54 = !{!27, !7, i64 120}
!55 = !{!27, !7, i64 140}
!56 = !{!37, !7, i64 20}
!57 = !{!27, !7, i64 0}
!58 = !{!42, !7, i64 68}
!59 = !{!42, !7, i64 72}
!60 = !{!27, !7, i64 16}
!61 = !{!42, !7, i64 76}
!62 = !{!27, !7, i64 600}
!63 = !{!27, !7, i64 96}
!64 = !{!27, !7, i64 92}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass