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

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

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

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

declare i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef) #1

declare i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef) #1

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef) #1

declare i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef) #1

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

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) #2 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  store i32 0, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  %14 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %14, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  %15 = load ptr, ptr %6, align 8, !tbaa !5
  %16 = call i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef %15)
  store i32 %16, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  %17 = load ptr, ptr %6, align 8, !tbaa !5
  %18 = call i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef %17)
  store i32 %18, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  %19 = load ptr, ptr %6, align 8, !tbaa !5
  %20 = call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %19)
  store i32 %20, ptr %13, align 4, !tbaa !9
  %21 = load i32, ptr %7, align 4, !tbaa !9
  %22 = icmp ule i32 %21, 1004
  br i1 %22, label %23, label %43

23:                                               ; preds = %4
  %24 = load ptr, ptr %6, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %24, i32 0, i32 8
  %26 = getelementptr inbounds [3 x i8], ptr %25, i64 0, i64 0
  %27 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %26)
  %28 = icmp eq i32 1, %27
  br i1 %28, label %29, label %43

29:                                               ; preds = %23
  %30 = load ptr, ptr %5, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %30, i32 0, i32 30
  %32 = load i32, ptr %31, align 8, !tbaa !11
  %33 = icmp eq i32 %32, 1
  br i1 %33, label %34, label %38

34:                                               ; preds = %29
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %35, i32 0, i32 0
  %37 = load i32, ptr %36, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %37, i32 noundef 8, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %42

38:                                               ; preds = %29
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %39, i32 0, i32 0
  %41 = load i32, ptr %40, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %41, i32 noundef 12, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %42

42:                                               ; preds = %38, %34
  br label %750

43:                                               ; preds = %23, %4
  %44 = load i32, ptr %7, align 4, !tbaa !9
  %45 = icmp ule i32 %44, 1004
  br i1 %45, label %46, label %66

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

52:                                               ; preds = %46
  %53 = load ptr, ptr %5, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %53, i32 0, i32 30
  %55 = load i32, ptr %54, align 8, !tbaa !11
  %56 = icmp eq i32 %55, 1
  br i1 %56, label %57, label %61

57:                                               ; preds = %52
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %58, i32 0, i32 0
  %60 = load i32, ptr %59, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %60, i32 noundef 4, i32 noundef 2, ptr noundef %10, ptr noundef %9)
  br label %65

61:                                               ; preds = %52
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %62, i32 0, i32 0
  %64 = load i32, ptr %63, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %64, i32 noundef 6, i32 noundef 2, ptr noundef %10, ptr noundef %9)
  br label %65

65:                                               ; preds = %61, %57
  br label %749

66:                                               ; preds = %46, %43
  %67 = load i32, ptr %7, align 4, !tbaa !9
  %68 = icmp ule i32 %67, 1004
  br i1 %68, label %69, label %79

69:                                               ; preds = %66
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %70, i32 0, i32 8
  %72 = getelementptr inbounds [3 x i8], ptr %71, i64 0, i64 0
  %73 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %72)
  %74 = icmp eq i32 12, %73
  br i1 %74, label %75, label %79

75:                                               ; preds = %69
  %76 = load ptr, ptr %6, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %76, i32 0, i32 0
  %78 = load i32, ptr %77, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %78, i32 noundef 8, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %748

79:                                               ; preds = %69, %66
  %80 = load i32, ptr %7, align 4, !tbaa !9
  %81 = icmp ule i32 %80, 1004
  br i1 %81, label %82, label %92

82:                                               ; preds = %79
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %83, i32 0, i32 8
  %85 = getelementptr inbounds [3 x i8], ptr %84, i64 0, i64 0
  %86 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %85)
  %87 = icmp eq i32 10, %86
  br i1 %87, label %88, label %92

88:                                               ; preds = %82
  %89 = load ptr, ptr %6, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %89, i32 0, i32 0
  %91 = load i32, ptr %90, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %91, i32 noundef 8, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %747

92:                                               ; preds = %82, %79
  %93 = load i32, ptr %7, align 4, !tbaa !9
  %94 = icmp ule i32 %93, 1004
  br i1 %94, label %95, label %105

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

101:                                              ; preds = %95
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %102, i32 0, i32 0
  %104 = load i32, ptr %103, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %104, i32 noundef 8, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %746

105:                                              ; preds = %95, %92
  %106 = load i32, ptr %7, align 4, !tbaa !9
  %107 = icmp eq i32 %106, 1005
  br i1 %107, label %108, label %118

108:                                              ; preds = %105
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %109, i32 0, i32 8
  %111 = getelementptr inbounds [3 x i8], ptr %110, i64 0, i64 0
  %112 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %111)
  %113 = icmp eq i32 1, %112
  br i1 %113, label %114, label %118

114:                                              ; preds = %108
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %115, i32 0, i32 0
  %117 = load i32, ptr %116, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %117, i32 noundef 24, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %745

118:                                              ; preds = %108, %105
  %119 = load i32, ptr %7, align 4, !tbaa !9
  %120 = icmp eq i32 %119, 1005
  br i1 %120, label %121, label %131

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

127:                                              ; preds = %121
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %128, i32 0, i32 0
  %130 = load i32, ptr %129, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %130, i32 noundef 12, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %744

131:                                              ; preds = %121, %118
  %132 = load i32, ptr %7, align 4, !tbaa !9
  %133 = icmp uge i32 %132, 1006
  br i1 %133, label %134, label %157

134:                                              ; preds = %131
  %135 = load i32, ptr %11, align 4, !tbaa !9
  %136 = icmp ugt i32 %135, 0
  br i1 %136, label %143, label %137

137:                                              ; preds = %134
  %138 = load i32, ptr %13, align 4, !tbaa !9
  %139 = icmp ugt i32 %138, 0
  br i1 %139, label %143, label %140

140:                                              ; preds = %137
  %141 = load i32, ptr %12, align 4, !tbaa !9
  %142 = icmp ugt i32 %141, 0
  br i1 %142, label %143, label %157

143:                                              ; preds = %140, %137, %134
  %144 = load ptr, ptr %6, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %144, i32 0, i32 1
  %146 = load i32, ptr %145, align 1, !tbaa !18
  %147 = icmp eq i32 %146, 1
  br i1 %147, label %148, label %152

148:                                              ; preds = %143
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %149, i32 0, i32 0
  %151 = load i32, ptr %150, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %151, i32 noundef 32, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %156

152:                                              ; preds = %143
  %153 = load ptr, ptr %6, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %153, i32 0, i32 0
  %155 = load i32, ptr %154, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %155, i32 noundef 8, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %156

156:                                              ; preds = %152, %148
  br label %743

157:                                              ; preds = %140, %131
  %158 = load i32, ptr %7, align 4, !tbaa !9
  %159 = icmp eq i32 %158, 1008
  br i1 %159, label %160, label %192

160:                                              ; preds = %157
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %161, i32 0, i32 8
  %163 = getelementptr inbounds [3 x i8], ptr %162, i64 0, i64 0
  %164 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %163)
  %165 = icmp eq i32 1, %164
  br i1 %165, label %178, label %166

166:                                              ; preds = %160
  %167 = load ptr, ptr %6, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %167, i32 0, i32 8
  %169 = getelementptr inbounds [3 x i8], ptr %168, i64 0, i64 0
  %170 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %169)
  %171 = icmp eq i32 2, %170
  br i1 %171, label %178, label %172

172:                                              ; preds = %166
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %173, i32 0, i32 8
  %175 = getelementptr inbounds [3 x i8], ptr %174, i64 0, i64 0
  %176 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %175)
  %177 = icmp eq i32 8, %176
  br i1 %177, label %178, label %192

178:                                              ; preds = %172, %166, %160
  %179 = load ptr, ptr %6, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %179, i32 0, i32 0
  %181 = load i32, ptr %180, align 1, !tbaa !15
  %182 = call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking()
  %183 = icmp ule i32 %182, 3
  br i1 %183, label %184, label %185

184:                                              ; preds = %178
  br label %190

185:                                              ; preds = %178
  %186 = call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking()
  %187 = icmp ule i32 %186, 5
  %188 = zext i1 %187 to i64
  %189 = select i1 %187, i32 16, i32 8
  br label %190

190:                                              ; preds = %185, %184
  %191 = phi i32 [ 32, %184 ], [ %189, %185 ]
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %181, i32 noundef %191, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %742

192:                                              ; preds = %172, %157
  %193 = load i32, ptr %7, align 4, !tbaa !9
  %194 = icmp uge i32 %193, 1006
  br i1 %194, label %195, label %220

195:                                              ; preds = %192
  %196 = load i32, ptr %7, align 4, !tbaa !9
  %197 = icmp ult i32 %196, 1041
  br i1 %197, label %198, label %220

198:                                              ; preds = %195
  %199 = load ptr, ptr %6, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %199, i32 0, i32 8
  %201 = getelementptr inbounds [3 x i8], ptr %200, i64 0, i64 0
  %202 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %201)
  %203 = icmp eq i32 1, %202
  br i1 %203, label %216, label %204

204:                                              ; preds = %198
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %205, i32 0, i32 8
  %207 = getelementptr inbounds [3 x i8], ptr %206, i64 0, i64 0
  %208 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %207)
  %209 = icmp eq i32 2, %208
  br i1 %209, label %216, label %210

210:                                              ; preds = %204
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %211, i32 0, i32 8
  %213 = getelementptr inbounds [3 x i8], ptr %212, i64 0, i64 0
  %214 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %213)
  %215 = icmp eq i32 8, %214
  br i1 %215, label %216, label %220

216:                                              ; preds = %210, %204, %198
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %217, i32 0, i32 0
  %219 = load i32, ptr %218, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %219, i32 noundef 32, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %741

220:                                              ; preds = %210, %195, %192
  %221 = load i32, ptr %7, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 1008
  br i1 %222, label %223, label %243

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

229:                                              ; preds = %223
  %230 = load ptr, ptr %6, 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 !15
  %233 = call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking()
  %234 = icmp ule i32 %233, 3
  br i1 %234, label %235, label %236

235:                                              ; preds = %229
  br label %241

236:                                              ; preds = %229
  %237 = call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking()
  %238 = icmp ule i32 %237, 5
  %239 = zext i1 %238 to i64
  %240 = select i1 %238, i32 8, i32 4
  br label %241

241:                                              ; preds = %236, %235
  %242 = phi i32 [ 16, %235 ], [ %240, %236 ]
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %232, i32 noundef %242, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %740

243:                                              ; preds = %223, %220
  %244 = load i32, ptr %7, align 4, !tbaa !9
  %245 = icmp uge i32 %244, 1006
  br i1 %245, label %246, label %259

246:                                              ; preds = %243
  %247 = load i32, ptr %7, align 4, !tbaa !9
  %248 = icmp ult i32 %247, 1041
  br i1 %248, label %249, label %259

249:                                              ; preds = %246
  %250 = load ptr, ptr %6, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %250, i32 0, i32 8
  %252 = getelementptr inbounds [3 x i8], ptr %251, i64 0, i64 0
  %253 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %252)
  %254 = icmp eq i32 0, %253
  br i1 %254, label %255, label %259

255:                                              ; preds = %249
  %256 = load ptr, ptr %6, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %256, i32 0, i32 0
  %258 = load i32, ptr %257, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %258, i32 noundef 16, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %739

259:                                              ; preds = %249, %246, %243
  %260 = load i32, ptr %7, align 4, !tbaa !9
  %261 = icmp uge i32 %260, 1051
  br i1 %261, label %262, label %281

262:                                              ; preds = %259
  %263 = load i32, ptr %7, align 4, !tbaa !9
  %264 = icmp ult i32 %263, 1101
  br i1 %264, label %265, label %281

265:                                              ; preds = %262
  %266 = load ptr, ptr %6, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %266, i32 0, i32 8
  %268 = getelementptr inbounds [3 x i8], ptr %267, i64 0, i64 0
  %269 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %268)
  %270 = icmp eq i32 2, %269
  br i1 %270, label %271, label %281

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

277:                                              ; preds = %271
  %278 = load ptr, ptr %6, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %278, i32 0, i32 0
  %280 = load i32, ptr %279, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %280, i32 noundef 8, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %738

281:                                              ; preds = %271, %265, %262, %259
  %282 = load i32, ptr %7, align 4, !tbaa !9
  %283 = icmp uge i32 %282, 1101
  br i1 %283, label %284, label %309

284:                                              ; preds = %281
  %285 = load i32, ptr %7, align 4, !tbaa !9
  %286 = icmp ule i32 %285, 1999
  br i1 %286, label %287, label %309

287:                                              ; preds = %284
  %288 = load ptr, ptr %6, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %288, i32 0, i32 8
  %290 = getelementptr inbounds [3 x i8], ptr %289, i64 0, i64 0
  %291 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %290)
  %292 = icmp eq i32 2, %291
  br i1 %292, label %293, label %309

293:                                              ; preds = %287
  %294 = load ptr, ptr %6, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %294, i32 0, i32 6
  %296 = load i32, ptr %295, align 1, !tbaa !19
  %297 = and i32 %296, 2048
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %299, label %309

299:                                              ; preds = %293
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %300, i32 0, i32 6
  %302 = load i32, ptr %301, align 1, !tbaa !19
  %303 = and i32 %302, 8388608
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %305, label %309

305:                                              ; preds = %299
  %306 = load ptr, ptr %6, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %306, i32 0, i32 0
  %308 = load i32, ptr %307, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %308, i32 noundef 16, i32 noundef 16, ptr noundef %10, ptr noundef %9)
  br label %737

309:                                              ; preds = %299, %293, %287, %284, %281
  %310 = load i32, ptr %7, align 4, !tbaa !9
  %311 = icmp eq i32 %310, 1051
  br i1 %311, label %312, label %328

312:                                              ; preds = %309
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %313, i32 0, i32 8
  %315 = getelementptr inbounds [3 x i8], ptr %314, i64 0, i64 0
  %316 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %315)
  %317 = icmp eq i32 12, %316
  br i1 %317, label %324, label %318

318:                                              ; preds = %312
  %319 = load ptr, ptr %6, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %319, i32 0, i32 8
  %321 = getelementptr inbounds [3 x i8], ptr %320, i64 0, i64 0
  %322 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %321)
  %323 = icmp eq i32 10, %322
  br i1 %323, label %324, label %328

324:                                              ; preds = %318, %312
  %325 = load ptr, ptr %6, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %325, i32 0, i32 0
  %327 = load i32, ptr %326, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %327, i32 noundef 8, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %736

328:                                              ; preds = %318, %309
  %329 = load i32, ptr %7, align 4, !tbaa !9
  %330 = icmp uge i32 %329, 1101
  br i1 %330, label %331, label %350

331:                                              ; preds = %328
  %332 = load i32, ptr %7, align 4, !tbaa !9
  %333 = icmp ule i32 %332, 1101
  br i1 %333, label %334, label %350

334:                                              ; preds = %331
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %335, i32 0, i32 8
  %337 = getelementptr inbounds [3 x i8], ptr %336, i64 0, i64 0
  %338 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %337)
  %339 = icmp eq i32 12, %338
  br i1 %339, label %346, label %340

340:                                              ; preds = %334
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %341, i32 0, i32 8
  %343 = getelementptr inbounds [3 x i8], ptr %342, i64 0, i64 0
  %344 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %343)
  %345 = icmp eq i32 10, %344
  br i1 %345, label %346, label %350

346:                                              ; preds = %340, %334
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %347, i32 0, i32 0
  %349 = load i32, ptr %348, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %349, i32 noundef 16, i32 noundef 16, ptr noundef %10, ptr noundef %9)
  br label %735

350:                                              ; preds = %340, %331, %328
  %351 = load ptr, ptr %6, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %351, i32 0, i32 8
  %353 = getelementptr inbounds [3 x i8], ptr %352, i64 0, i64 0
  %354 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %353)
  %355 = icmp eq i32 3, %354
  br i1 %355, label %362, label %356

356:                                              ; preds = %350
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %357, i32 0, i32 8
  %359 = getelementptr inbounds [3 x i8], ptr %358, i64 0, i64 0
  %360 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %359)
  %361 = icmp eq i32 1, %360
  br i1 %361, label %362, label %368

362:                                              ; preds = %356, %350
  %363 = load ptr, ptr %6, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %363, i32 0, i32 8
  %365 = getelementptr inbounds [3 x i8], ptr %364, i64 0, i64 0
  %366 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %365)
  %367 = icmp eq i32 3, %366
  br i1 %367, label %398, label %368

368:                                              ; preds = %362, %356
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %369, i32 0, i32 8
  %371 = getelementptr inbounds [3 x i8], ptr %370, i64 0, i64 0
  %372 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %371)
  %373 = icmp eq i32 3, %372
  br i1 %373, label %380, label %374

374:                                              ; preds = %368
  %375 = load ptr, ptr %6, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %375, i32 0, i32 8
  %377 = getelementptr inbounds [3 x i8], ptr %376, i64 0, i64 0
  %378 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %377)
  %379 = icmp eq i32 1, %378
  br i1 %379, label %380, label %473

380:                                              ; preds = %374, %368
  %381 = load ptr, ptr %6, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %381, i32 0, i32 8
  %383 = getelementptr inbounds [3 x i8], ptr %382, i64 0, i64 0
  %384 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %383)
  %385 = icmp eq i32 3, %384
  br i1 %385, label %386, label %473

386:                                              ; preds = %380
  %387 = load ptr, ptr %6, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %387, i32 0, i32 8
  %389 = getelementptr inbounds [3 x i8], ptr %388, i64 0, i64 0
  %390 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %389)
  %391 = icmp eq i32 12, %390
  br i1 %391, label %398, label %392

392:                                              ; preds = %386
  %393 = load ptr, ptr %6, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %393, i32 0, i32 8
  %395 = getelementptr inbounds [3 x i8], ptr %394, i64 0, i64 0
  %396 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %395)
  %397 = icmp eq i32 4, %396
  br i1 %397, label %398, label %473

398:                                              ; preds = %392, %386, %362
  %399 = load ptr, ptr %6, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %399, i32 0, i32 8
  %401 = getelementptr inbounds [3 x i8], ptr %400, i64 0, i64 0
  %402 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %401)
  %403 = icmp eq i32 3, %402
  br i1 %403, label %404, label %438

404:                                              ; preds = %398
  %405 = load i32, ptr %7, align 4, !tbaa !9
  %406 = icmp ule i32 %405, 1999
  br i1 %406, label %407, label %414

407:                                              ; preds = %404
  %408 = load i32, ptr %7, align 4, !tbaa !9
  %409 = icmp uge i32 %408, 1104
  br i1 %409, label %410, label %414

410:                                              ; preds = %407
  %411 = load ptr, ptr %6, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %411, i32 0, i32 0
  %413 = load i32, ptr %412, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %413, i32 noundef 128, i32 noundef 32, ptr noundef %10, ptr noundef %9)
  br label %437

414:                                              ; preds = %407, %404
  %415 = load i32, ptr %7, align 4, !tbaa !9
  %416 = icmp ule i32 %415, 1999
  br i1 %416, label %417, label %424

417:                                              ; preds = %414
  %418 = load i32, ptr %7, align 4, !tbaa !9
  %419 = icmp uge i32 %418, 1101
  br i1 %419, label %420, label %424

420:                                              ; preds = %417
  %421 = load ptr, ptr %6, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %421, i32 0, i32 0
  %423 = load i32, ptr %422, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %423, i32 noundef 64, i32 noundef 16, ptr noundef %10, ptr noundef %9)
  br label %436

424:                                              ; preds = %417, %414
  %425 = load i32, ptr %7, align 4, !tbaa !9
  %426 = icmp ule i32 %425, 1999
  br i1 %426, label %427, label %434

427:                                              ; preds = %424
  %428 = load i32, ptr %7, align 4, !tbaa !9
  %429 = icmp uge i32 %428, 1051
  br i1 %429, label %430, label %434

430:                                              ; preds = %427
  %431 = load ptr, ptr %6, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %431, i32 0, i32 0
  %433 = load i32, ptr %432, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %433, i32 noundef 32, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %435

434:                                              ; preds = %427, %424
  br label %435

435:                                              ; preds = %434, %430
  br label %436

436:                                              ; preds = %435, %420
  br label %437

437:                                              ; preds = %436, %410
  br label %472

438:                                              ; preds = %398
  %439 = load i32, ptr %7, align 4, !tbaa !9
  %440 = icmp ule i32 %439, 1999
  br i1 %440, label %441, label %448

441:                                              ; preds = %438
  %442 = load i32, ptr %7, align 4, !tbaa !9
  %443 = icmp uge i32 %442, 1104
  br i1 %443, label %444, label %448

444:                                              ; preds = %441
  %445 = load ptr, ptr %6, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %445, i32 0, i32 0
  %447 = load i32, ptr %446, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %447, i32 noundef 64, i32 noundef 16, ptr noundef %10, ptr noundef %9)
  br label %471

448:                                              ; preds = %441, %438
  %449 = load i32, ptr %7, align 4, !tbaa !9
  %450 = icmp ule i32 %449, 1999
  br i1 %450, label %451, label %458

451:                                              ; preds = %448
  %452 = load i32, ptr %7, align 4, !tbaa !9
  %453 = icmp uge i32 %452, 1101
  br i1 %453, label %454, label %458

454:                                              ; preds = %451
  %455 = load ptr, ptr %6, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %455, i32 0, i32 0
  %457 = load i32, ptr %456, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %457, i32 noundef 64, i32 noundef 16, ptr noundef %10, ptr noundef %9)
  br label %470

458:                                              ; preds = %451, %448
  %459 = load i32, ptr %7, align 4, !tbaa !9
  %460 = icmp ule i32 %459, 1999
  br i1 %460, label %461, label %468

461:                                              ; preds = %458
  %462 = load i32, ptr %7, align 4, !tbaa !9
  %463 = icmp uge i32 %462, 1051
  br i1 %463, label %464, label %468

464:                                              ; preds = %461
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %465, i32 0, i32 0
  %467 = load i32, ptr %466, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %467, i32 noundef 32, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %469

468:                                              ; preds = %461, %458
  br label %469

469:                                              ; preds = %468, %464
  br label %470

470:                                              ; preds = %469, %454
  br label %471

471:                                              ; preds = %470, %444
  br label %472

472:                                              ; preds = %471, %437
  br label %734

473:                                              ; preds = %392, %380, %374
  %474 = load i32, ptr %7, align 4, !tbaa !9
  %475 = icmp uge i32 %474, 1051
  br i1 %475, label %476, label %555

476:                                              ; preds = %473
  %477 = load i32, ptr %7, align 4, !tbaa !9
  %478 = icmp ult i32 %477, 1101
  br i1 %478, label %479, label %555

479:                                              ; preds = %476
  %480 = load ptr, ptr %6, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %480, i32 0, i32 8
  %482 = getelementptr inbounds [3 x i8], ptr %481, i64 0, i64 0
  %483 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %482)
  %484 = icmp eq i32 1, %483
  br i1 %484, label %551, label %485

485:                                              ; preds = %479
  %486 = load ptr, ptr %6, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %486, i32 0, i32 8
  %488 = getelementptr inbounds [3 x i8], ptr %487, i64 0, i64 0
  %489 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %488)
  %490 = icmp eq i32 8, %489
  br i1 %490, label %551, label %491

491:                                              ; preds = %485
  %492 = load ptr, ptr %6, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %492, i32 0, i32 8
  %494 = getelementptr inbounds [3 x i8], ptr %493, i64 0, i64 0
  %495 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %494)
  %496 = icmp eq i32 2, %495
  br i1 %496, label %497, label %503

497:                                              ; preds = %491
  %498 = load ptr, ptr %6, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %498, i32 0, i32 6
  %500 = load i32, ptr %499, align 1, !tbaa !19
  %501 = and i32 %500, 2048
  %502 = icmp ugt i32 %501, 0
  br i1 %502, label %551, label %503

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

509:                                              ; preds = %503
  %510 = load ptr, ptr %6, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %510, i32 0, i32 6
  %512 = load i32, ptr %511, align 1, !tbaa !19
  %513 = and i32 %512, 2048
  %514 = icmp ugt i32 %513, 0
  br i1 %514, label %551, label %515

515:                                              ; preds = %509, %503
  %516 = load ptr, ptr %6, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %516, i32 0, i32 8
  %518 = getelementptr inbounds [3 x i8], ptr %517, i64 0, i64 0
  %519 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %518)
  %520 = icmp eq i32 4, %519
  br i1 %520, label %521, label %527

521:                                              ; preds = %515
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %522, i32 0, i32 6
  %524 = load i32, ptr %523, align 1, !tbaa !19
  %525 = and i32 %524, 2048
  %526 = icmp eq i32 %525, 0
  br i1 %526, label %551, label %527

527:                                              ; preds = %521, %515
  %528 = load ptr, ptr %6, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %528, i32 0, i32 8
  %530 = getelementptr inbounds [3 x i8], ptr %529, i64 0, i64 0
  %531 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %530)
  %532 = icmp eq i32 5, %531
  br i1 %532, label %533, label %539

533:                                              ; preds = %527
  %534 = load ptr, ptr %6, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %534, i32 0, i32 6
  %536 = load i32, ptr %535, align 1, !tbaa !19
  %537 = and i32 %536, 2048
  %538 = icmp ugt i32 %537, 0
  br i1 %538, label %551, label %539

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

545:                                              ; preds = %539
  %546 = load ptr, ptr %6, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %546, i32 0, i32 6
  %548 = load i32, ptr %547, align 1, !tbaa !19
  %549 = and i32 %548, 2048
  %550 = icmp eq i32 %549, 0
  br i1 %550, label %551, label %555

551:                                              ; preds = %545, %533, %521, %509, %497, %485, %479
  %552 = load ptr, ptr %6, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %552, i32 0, i32 0
  %554 = load i32, ptr %553, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %554, i32 noundef 64, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %733

555:                                              ; preds = %545, %539, %476, %473
  %556 = load i32, ptr %7, align 4, !tbaa !9
  %557 = icmp uge i32 %556, 1051
  br i1 %557, label %558, label %571

558:                                              ; preds = %555
  %559 = load i32, ptr %7, align 4, !tbaa !9
  %560 = icmp ult i32 %559, 1101
  br i1 %560, label %561, label %571

561:                                              ; preds = %558
  %562 = load ptr, ptr %6, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %562, i32 0, i32 8
  %564 = getelementptr inbounds [3 x i8], ptr %563, i64 0, i64 0
  %565 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %564)
  %566 = icmp eq i32 0, %565
  br i1 %566, label %567, label %571

567:                                              ; preds = %561
  %568 = load ptr, ptr %6, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %568, i32 0, i32 0
  %570 = load i32, ptr %569, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %570, i32 noundef 32, i32 noundef 4, ptr noundef %10, ptr noundef %9)
  br label %732

571:                                              ; preds = %561, %558, %555
  %572 = load ptr, ptr %6, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %572, i32 0, i32 8
  %574 = getelementptr inbounds [3 x i8], ptr %573, i64 0, i64 0
  %575 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %574)
  %576 = icmp eq i32 2, %575
  br i1 %576, label %583, label %577

577:                                              ; preds = %571
  %578 = load ptr, ptr %6, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %578, i32 0, i32 8
  %580 = getelementptr inbounds [3 x i8], ptr %579, i64 0, i64 0
  %581 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %580)
  %582 = icmp eq i32 1, %581
  br i1 %582, label %583, label %618

583:                                              ; preds = %577, %571
  %584 = load ptr, ptr %6, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %584, i32 0, i32 8
  %586 = getelementptr inbounds [3 x i8], ptr %585, i64 0, i64 0
  %587 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %586)
  %588 = icmp eq i32 2, %587
  br i1 %588, label %589, label %618

589:                                              ; preds = %583
  %590 = load ptr, ptr %6, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %590, i32 0, i32 8
  %592 = getelementptr inbounds [3 x i8], ptr %591, i64 0, i64 0
  %593 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %592)
  %594 = icmp eq i32 12, %593
  br i1 %594, label %595, label %618

595:                                              ; preds = %589
  %596 = load i32, ptr %7, align 4, !tbaa !9
  %597 = icmp ule i32 %596, 1999
  br i1 %597, label %598, label %605

598:                                              ; preds = %595
  %599 = load i32, ptr %7, align 4, !tbaa !9
  %600 = icmp uge i32 %599, 1101
  br i1 %600, label %601, label %605

601:                                              ; preds = %598
  %602 = load ptr, ptr %6, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %602, i32 0, i32 0
  %604 = load i32, ptr %603, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %604, i32 noundef 64, i32 noundef 16, ptr noundef %10, ptr noundef %9)
  br label %617

605:                                              ; preds = %598, %595
  %606 = load i32, ptr %7, align 4, !tbaa !9
  %607 = icmp ule i32 %606, 1999
  br i1 %607, label %608, label %615

608:                                              ; preds = %605
  %609 = load i32, ptr %7, align 4, !tbaa !9
  %610 = icmp uge i32 %609, 1051
  br i1 %610, label %611, label %615

611:                                              ; preds = %608
  %612 = load ptr, ptr %6, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %612, i32 0, i32 0
  %614 = load i32, ptr %613, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %614, i32 noundef 32, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %616

615:                                              ; preds = %608, %605
  br label %616

616:                                              ; preds = %615, %611
  br label %617

617:                                              ; preds = %616, %601
  br label %731

618:                                              ; preds = %589, %583, %577
  %619 = load i32, ptr %7, align 4, !tbaa !9
  %620 = icmp ule i32 %619, 1999
  br i1 %620, label %621, label %715

621:                                              ; preds = %618
  %622 = load ptr, ptr %6, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %622, i32 0, i32 8
  %624 = getelementptr inbounds [3 x i8], ptr %623, i64 0, i64 0
  %625 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %624)
  %626 = icmp eq i32 1, %625
  br i1 %626, label %711, label %627

627:                                              ; preds = %621
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %628, i32 0, i32 8
  %630 = getelementptr inbounds [3 x i8], ptr %629, i64 0, i64 0
  %631 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %630)
  %632 = icmp eq i32 8, %631
  br i1 %632, label %711, label %633

633:                                              ; preds = %627
  %634 = load ptr, ptr %6, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %634, i32 0, i32 8
  %636 = getelementptr inbounds [3 x i8], ptr %635, i64 0, i64 0
  %637 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %636)
  %638 = icmp eq i32 2, %637
  br i1 %638, label %639, label %645

639:                                              ; preds = %633
  %640 = load ptr, ptr %6, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %640, i32 0, i32 6
  %642 = load i32, ptr %641, align 1, !tbaa !19
  %643 = and i32 %642, 2048
  %644 = icmp ugt i32 %643, 0
  br i1 %644, label %711, label %645

645:                                              ; preds = %639, %633
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %646, i32 0, i32 8
  %648 = getelementptr inbounds [3 x i8], ptr %647, i64 0, i64 0
  %649 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %648)
  %650 = icmp eq i32 2, %649
  br i1 %650, label %651, label %663

651:                                              ; preds = %645
  %652 = load ptr, ptr %6, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %652, i32 0, i32 6
  %654 = load i32, ptr %653, align 1, !tbaa !19
  %655 = and i32 %654, 2048
  %656 = icmp eq i32 %655, 0
  br i1 %656, label %657, label %663

657:                                              ; preds = %651
  %658 = load ptr, ptr %6, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %658, i32 0, i32 6
  %660 = load i32, ptr %659, align 1, !tbaa !19
  %661 = and i32 %660, 8388608
  %662 = icmp ugt i32 %661, 0
  br i1 %662, label %711, label %663

663:                                              ; preds = %657, %651, %645
  %664 = load ptr, ptr %6, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %664, i32 0, i32 8
  %666 = getelementptr inbounds [3 x i8], ptr %665, i64 0, i64 0
  %667 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %666)
  %668 = icmp eq i32 4, %667
  br i1 %668, label %669, label %675

669:                                              ; preds = %663
  %670 = load ptr, ptr %6, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %670, i32 0, i32 6
  %672 = load i32, ptr %671, align 1, !tbaa !19
  %673 = and i32 %672, 2048
  %674 = icmp ugt i32 %673, 0
  br i1 %674, label %711, label %675

675:                                              ; preds = %669, %663
  %676 = load ptr, ptr %6, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %676, i32 0, i32 8
  %678 = getelementptr inbounds [3 x i8], ptr %677, i64 0, i64 0
  %679 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %678)
  %680 = icmp eq i32 4, %679
  br i1 %680, label %681, label %687

681:                                              ; preds = %675
  %682 = load ptr, ptr %6, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %682, i32 0, i32 6
  %684 = load i32, ptr %683, align 1, !tbaa !19
  %685 = and i32 %684, 2048
  %686 = icmp eq i32 %685, 0
  br i1 %686, label %711, label %687

687:                                              ; preds = %681, %675
  %688 = load ptr, ptr %6, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %688, i32 0, i32 8
  %690 = getelementptr inbounds [3 x i8], ptr %689, i64 0, i64 0
  %691 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %690)
  %692 = icmp eq i32 5, %691
  br i1 %692, label %693, label %699

693:                                              ; preds = %687
  %694 = load ptr, ptr %6, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %694, i32 0, i32 6
  %696 = load i32, ptr %695, align 1, !tbaa !19
  %697 = and i32 %696, 2048
  %698 = icmp ugt i32 %697, 0
  br i1 %698, label %711, label %699

699:                                              ; preds = %693, %687
  %700 = load ptr, ptr %6, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %700, i32 0, i32 8
  %702 = getelementptr inbounds [3 x i8], ptr %701, i64 0, i64 0
  %703 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %702)
  %704 = icmp eq i32 5, %703
  br i1 %704, label %705, label %715

705:                                              ; preds = %699
  %706 = load ptr, ptr %6, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %706, i32 0, i32 6
  %708 = load i32, ptr %707, align 1, !tbaa !19
  %709 = and i32 %708, 2048
  %710 = icmp eq i32 %709, 0
  br i1 %710, label %711, label %715

711:                                              ; preds = %705, %693, %681, %669, %657, %639, %627, %621
  %712 = load ptr, ptr %6, 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 !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %714, i32 noundef 64, i32 noundef 16, ptr noundef %10, ptr noundef %9)
  br label %730

715:                                              ; preds = %705, %699, %618
  %716 = load i32, ptr %7, align 4, !tbaa !9
  %717 = icmp ule i32 %716, 1999
  br i1 %717, label %718, label %728

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

724:                                              ; preds = %718
  %725 = load ptr, ptr %6, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %725, i32 0, i32 0
  %727 = load i32, ptr %726, align 1, !tbaa !15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %727, i32 noundef 32, i32 noundef 8, ptr noundef %10, ptr noundef %9)
  br label %729

728:                                              ; preds = %718, %715
  br label %729

729:                                              ; preds = %728, %724
  br label %730

730:                                              ; preds = %729, %711
  br label %731

731:                                              ; preds = %730, %617
  br label %732

732:                                              ; preds = %731, %567
  br label %733

733:                                              ; preds = %732, %551
  br label %734

734:                                              ; preds = %733, %472
  br label %735

735:                                              ; preds = %734, %346
  br label %736

736:                                              ; preds = %735, %324
  br label %737

737:                                              ; preds = %736, %305
  br label %738

738:                                              ; preds = %737, %277
  br label %739

739:                                              ; preds = %738, %255
  br label %740

740:                                              ; preds = %739, %241
  br label %741

741:                                              ; preds = %740, %216
  br label %742

742:                                              ; preds = %741, %190
  br label %743

743:                                              ; preds = %742, %156
  br label %744

744:                                              ; preds = %743, %127
  br label %745

745:                                              ; preds = %744, %114
  br label %746

746:                                              ; preds = %745, %101
  br label %747

747:                                              ; preds = %746, %88
  br label %748

748:                                              ; preds = %747, %75
  br label %749

749:                                              ; preds = %748, %65
  br label %750

750:                                              ; preds = %749, %42
  %751 = load i32, ptr %9, align 4, !tbaa !9
  %752 = load ptr, ptr %5, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %752, i32 0, i32 11
  store i32 %751, ptr %753, align 4, !tbaa !20
  %754 = load i32, ptr %9, align 4, !tbaa !9
  %755 = icmp ne i32 %754, 0
  br i1 %755, label %756, label %783

756:                                              ; preds = %750
  %757 = load ptr, ptr %5, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %757, i32 0, i32 10
  %759 = load i32, ptr %758, align 8, !tbaa !21
  %760 = icmp eq i32 %759, 537138731
  br i1 %760, label %761, label %762

761:                                              ; preds = %756
  br label %766

762:                                              ; preds = %756
  %763 = load ptr, ptr %5, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %763, i32 0, i32 10
  %765 = load i32, ptr %764, align 8, !tbaa !21
  br label %766

766:                                              ; preds = %762, %761
  %767 = phi i32 [ 537138728, %761 ], [ %765, %762 ]
  %768 = load ptr, ptr %5, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %768, i32 0, i32 10
  store i32 %767, ptr %769, align 8, !tbaa !21
  %770 = load ptr, ptr %5, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %770, i32 0, i32 10
  %772 = load i32, ptr %771, align 8, !tbaa !21
  %773 = icmp eq i32 %772, 545592875
  br i1 %773, label %774, label %775

774:                                              ; preds = %766
  br label %779

775:                                              ; preds = %766
  %776 = load ptr, ptr %5, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %776, i32 0, i32 10
  %778 = load i32, ptr %777, align 8, !tbaa !21
  br label %779

779:                                              ; preds = %775, %774
  %780 = phi i32 [ 545592872, %774 ], [ %778, %775 ]
  %781 = load ptr, ptr %5, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %781, i32 0, i32 10
  store i32 %780, ptr %782, align 8, !tbaa !21
  br label %810

783:                                              ; preds = %750
  %784 = load ptr, ptr %5, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %784, i32 0, i32 10
  %786 = load i32, ptr %785, align 8, !tbaa !21
  %787 = icmp eq i32 %786, 537138728
  br i1 %787, label %788, label %789

788:                                              ; preds = %783
  br label %793

789:                                              ; preds = %783
  %790 = load ptr, ptr %5, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %790, i32 0, i32 10
  %792 = load i32, ptr %791, align 8, !tbaa !21
  br label %793

793:                                              ; preds = %789, %788
  %794 = phi i32 [ 537138731, %788 ], [ %792, %789 ]
  %795 = load ptr, ptr %5, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %795, i32 0, i32 10
  store i32 %794, ptr %796, align 8, !tbaa !21
  %797 = load ptr, ptr %5, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %797, i32 0, i32 10
  %799 = load i32, ptr %798, align 8, !tbaa !21
  %800 = icmp eq i32 %799, 545592872
  br i1 %800, label %801, label %802

801:                                              ; preds = %793
  br label %806

802:                                              ; preds = %793
  %803 = load ptr, ptr %5, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %803, i32 0, i32 10
  %805 = load i32, ptr %804, align 8, !tbaa !21
  br label %806

806:                                              ; preds = %802, %801
  %807 = phi i32 [ 545592875, %801 ], [ %805, %802 ]
  %808 = load ptr, ptr %5, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %808, i32 0, i32 10
  store i32 %807, ptr %809, align 8, !tbaa !21
  br label %810

810:                                              ; preds = %806, %779
  %811 = load i32, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  ret i32 %811
}

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

declare i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking() #1

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

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

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


; 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"

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

declare i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef) local_unnamed_addr #1

declare i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef) local_unnamed_addr #1

declare i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef) local_unnamed_addr #1

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

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local i32 @libxsmm_generator_gemm_sse_avx_avx2_avx512_get_m_blocking(ptr nocapture noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #2 {
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #3
  store i32 0, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #3
  store i32 %3, ptr %6, align 4, !tbaa !5
  %7 = tail call i32 @libxsmm_x86_is_Amxfp4_Bfp32_gemm(ptr noundef %1) #3
  %8 = tail call i32 @libxsmm_x86_is_Amxfp4_Bi8_gemm(ptr noundef %1) #3
  %9 = tail call i32 @libxsmm_x86_is_Amxfp4_Bbf16_gemm(ptr noundef %1) #3
  %10 = icmp ult i32 %2, 1005
  br i1 %10, label %11, label %.critedge207

11:                                               ; preds = %4
  %12 = getelementptr inbounds i8, ptr %1, i64 29
  %13 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %12) #3
  %14 = icmp eq i32 %13, 1
  br i1 %14, label %15, label %22

15:                                               ; preds = %11
  %16 = getelementptr inbounds i8, ptr %0, i64 120
  %17 = load i32, ptr %16, align 8, !tbaa !9
  %18 = icmp eq i32 %17, 1
  %19 = load i32, ptr %1, align 1, !tbaa !14
  br i1 %18, label %20, label %21

20:                                               ; preds = %15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %19, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

21:                                               ; preds = %15
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %19, i32 noundef 12, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

22:                                               ; preds = %11
  %23 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %12) #3
  %24 = icmp eq i32 %23, 0
  br i1 %24, label %25, label %.critedge

25:                                               ; preds = %22
  %26 = getelementptr inbounds i8, ptr %0, i64 120
  %27 = load i32, ptr %26, align 8, !tbaa !9
  %28 = icmp eq i32 %27, 1
  %29 = load i32, ptr %1, align 1, !tbaa !14
  br i1 %28, label %30, label %31

30:                                               ; preds = %25
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %29, i32 noundef 4, i32 noundef 2, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

31:                                               ; preds = %25
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %29, i32 noundef 6, i32 noundef 2, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.critedge:                                        ; preds = %22
  %32 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %12) #3
  %33 = icmp eq i32 %32, 12
  br i1 %33, label %34, label %.critedge205

34:                                               ; preds = %.critedge
  %35 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %35, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.critedge205:                                     ; preds = %.critedge
  %36 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %12) #3
  %37 = icmp eq i32 %36, 10
  br i1 %37, label %38, label %.critedge206

38:                                               ; preds = %.critedge205
  %39 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %39, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.critedge206:                                     ; preds = %.critedge205
  %40 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %12) #3
  %41 = icmp eq i32 %40, 2
  br i1 %41, label %42, label %.thread230

42:                                               ; preds = %.critedge206
  %43 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %43, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.critedge207:                                     ; preds = %4
  %44 = icmp eq i32 %2, 1005
  br i1 %44, label %45, label %.critedge209

45:                                               ; preds = %.critedge207
  %46 = getelementptr inbounds i8, ptr %1, i64 29
  %47 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %46) #3
  %48 = icmp eq i32 %47, 1
  br i1 %48, label %49, label %51

49:                                               ; preds = %45
  %50 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %50, i32 noundef 24, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

51:                                               ; preds = %45
  %52 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %46) #3
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %54, label %.thread230

54:                                               ; preds = %51
  %55 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %55, i32 noundef 12, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.critedge209:                                     ; preds = %.critedge207
  %56 = icmp ne i32 %7, 0
  %57 = icmp ne i32 %9, 0
  %or.cond = select i1 %56, i1 true, i1 %57
  %58 = icmp ne i32 %8, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %58
  br i1 %or.cond3, label %59, label %66

59:                                               ; preds = %.critedge209
  %60 = getelementptr inbounds i8, ptr %1, i64 4
  %61 = load i32, ptr %60, align 1, !tbaa !17
  %62 = icmp eq i32 %61, 1
  %63 = load i32, ptr %1, align 1, !tbaa !14
  br i1 %62, label %64, label %65

64:                                               ; preds = %59
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %63, i32 noundef 32, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

65:                                               ; preds = %59
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %63, i32 noundef 8, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

66:                                               ; preds = %.critedge209
  %67 = icmp eq i32 %2, 1008
  br i1 %67, label %68, label %88

68:                                               ; preds = %66
  %69 = getelementptr inbounds i8, ptr %1, i64 29
  %70 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %69) #3
  %71 = icmp eq i32 %70, 1
  br i1 %71, label %78, label %72

72:                                               ; preds = %68
  %73 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %69) #3
  %74 = icmp eq i32 %73, 2
  br i1 %74, label %78, label %75

75:                                               ; preds = %72
  %76 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %69) #3
  %77 = icmp eq i32 %76, 8
  br i1 %77, label %78, label %.thread218

78:                                               ; preds = %75, %72, %68
  %79 = load i32, ptr %1, align 1, !tbaa !14
  %80 = tail call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking() #3
  %81 = icmp ult i32 %80, 4
  br i1 %81, label %86, label %82

82:                                               ; preds = %78
  %83 = tail call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking() #3
  %84 = icmp ult i32 %83, 6
  %85 = select i1 %84, i32 16, i32 8
  br label %86

86:                                               ; preds = %78, %82
  %87 = phi i32 [ %85, %82 ], [ 32, %78 ]
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %79, i32 noundef %87, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

88:                                               ; preds = %66
  %89 = add i32 %2, -1006
  %or.cond5 = icmp ult i32 %89, 35
  br i1 %or.cond5, label %.thread218, label %121

.thread218:                                       ; preds = %75, %88
  %90 = getelementptr inbounds i8, ptr %1, i64 29
  %91 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %90) #3
  %92 = icmp eq i32 %91, 1
  br i1 %92, label %99, label %93

93:                                               ; preds = %.thread218
  %94 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %90) #3
  %95 = icmp eq i32 %94, 2
  br i1 %95, label %99, label %96

96:                                               ; preds = %93
  %97 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %90) #3
  %98 = icmp eq i32 %97, 8
  br i1 %98, label %99, label %101

99:                                               ; preds = %96, %93, %.thread218
  %100 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %100, i32 noundef 32, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

101:                                              ; preds = %96
  br i1 %67, label %102, label %115

102:                                              ; preds = %101
  %103 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %90) #3
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %105, label %115

105:                                              ; preds = %102
  %106 = load i32, ptr %1, align 1, !tbaa !14
  %107 = tail call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking() #3
  %108 = icmp ult i32 %107, 4
  br i1 %108, label %113, label %109

109:                                              ; preds = %105
  %110 = tail call i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking() #3
  %111 = icmp ult i32 %110, 6
  %112 = select i1 %111, i32 8, i32 4
  br label %113

113:                                              ; preds = %105, %109
  %114 = phi i32 [ %112, %109 ], [ 16, %105 ]
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %106, i32 noundef %114, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

115:                                              ; preds = %101, %102
  %116 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %90) #3
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %.thread230

118:                                              ; preds = %115
  %119 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %119, i32 noundef 16, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.thread230:                                       ; preds = %.critedge206, %51, %115
  %120 = add nuw nsw i32 %2, -1051
  br label %.thread234

121:                                              ; preds = %88
  %122 = add i32 %2, -1051
  %or.cond9 = icmp ult i32 %122, 50
  br i1 %or.cond9, label %123, label %134

123:                                              ; preds = %121
  %124 = getelementptr inbounds i8, ptr %1, i64 29
  %125 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %124) #3
  %126 = icmp eq i32 %125, 2
  br i1 %126, label %127, label %.thread234

127:                                              ; preds = %123
  %128 = getelementptr inbounds i8, ptr %1, i64 24
  %129 = load i32, ptr %128, align 1, !tbaa !18
  %130 = and i32 %129, 2048
  %131 = icmp eq i32 %130, 0
  br i1 %131, label %132, label %.thread234

132:                                              ; preds = %127
  %133 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %133, i32 noundef 8, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

134:                                              ; preds = %121
  %135 = icmp ult i32 %2, 2000
  %136 = add i32 %2, -1101
  %or.cond11 = icmp ult i32 %136, 899
  br i1 %or.cond11, label %137, label %.thread234

137:                                              ; preds = %134
  %138 = getelementptr inbounds i8, ptr %1, i64 29
  %139 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %138) #3
  %140 = icmp eq i32 %139, 2
  br i1 %140, label %141, label %.thread234

141:                                              ; preds = %137
  %142 = getelementptr inbounds i8, ptr %1, i64 24
  %143 = load i32, ptr %142, align 1, !tbaa !18
  %144 = and i32 %143, 8390656
  %or.cond211 = icmp eq i32 %144, 0
  br i1 %or.cond211, label %145, label %.thread234

145:                                              ; preds = %141
  %146 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %146, i32 noundef 16, i32 noundef 16, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.thread234:                                       ; preds = %123, %127, %.thread230, %141, %137, %134
  %or.cond11238 = phi i1 [ true, %141 ], [ true, %137 ], [ false, %134 ], [ false, %.thread230 ], [ false, %127 ], [ false, %123 ]
  %147 = phi i1 [ %135, %141 ], [ %135, %137 ], [ %135, %134 ], [ true, %.thread230 ], [ true, %127 ], [ true, %123 ]
  %148 = phi i32 [ %122, %141 ], [ %122, %137 ], [ %122, %134 ], [ %120, %.thread230 ], [ %122, %127 ], [ %122, %123 ]
  %or.cond9232237 = phi i1 [ false, %141 ], [ false, %137 ], [ false, %134 ], [ false, %.thread230 ], [ true, %127 ], [ true, %123 ]
  switch i32 %2, label %167 [
    i32 1051, label %149
    i32 1101, label %158
  ]

149:                                              ; preds = %.thread234
  %150 = getelementptr inbounds i8, ptr %1, i64 29
  %151 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %150) #3
  %152 = icmp eq i32 %151, 12
  br i1 %152, label %156, label %153

153:                                              ; preds = %149
  %154 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %150) #3
  %155 = icmp eq i32 %154, 10
  br i1 %155, label %156, label %167

156:                                              ; preds = %153, %149
  %157 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %157, i32 noundef 8, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

158:                                              ; preds = %.thread234
  %159 = getelementptr inbounds i8, ptr %1, i64 29
  %160 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %159) #3
  %161 = icmp eq i32 %160, 12
  br i1 %161, label %165, label %162

162:                                              ; preds = %158
  %163 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %159) #3
  %164 = icmp eq i32 %163, 10
  br i1 %164, label %165, label %167

165:                                              ; preds = %162, %158
  %166 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %166, i32 noundef 16, i32 noundef 16, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

167:                                              ; preds = %153, %.thread234, %162
  %168 = getelementptr inbounds i8, ptr %1, i64 29
  %169 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %170 = icmp eq i32 %169, 3
  br i1 %170, label %174, label %171

171:                                              ; preds = %167
  %172 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %173 = icmp eq i32 %172, 1
  br i1 %173, label %174, label %177

174:                                              ; preds = %171, %167
  %175 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %168) #3
  %176 = icmp eq i32 %175, 3
  br i1 %176, label %192, label %177

177:                                              ; preds = %174, %171
  %178 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %179 = icmp eq i32 %178, 3
  br i1 %179, label %183, label %180

180:                                              ; preds = %177
  %181 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %182 = icmp eq i32 %181, 1
  br i1 %182, label %183, label %214

183:                                              ; preds = %180, %177
  %184 = tail call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %168) #3
  %185 = icmp eq i32 %184, 3
  br i1 %185, label %186, label %214

186:                                              ; preds = %183
  %187 = tail call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %168) #3
  %188 = icmp eq i32 %187, 12
  br i1 %188, label %192, label %189

189:                                              ; preds = %186
  %190 = tail call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %168) #3
  %191 = icmp eq i32 %190, 4
  br i1 %191, label %192, label %214

192:                                              ; preds = %189, %186, %174
  %193 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %168) #3
  %194 = icmp eq i32 %193, 3
  %195 = add i32 %2, -1104
  %or.cond15 = icmp ult i32 %195, 896
  br i1 %194, label %196, label %205

196:                                              ; preds = %192
  br i1 %or.cond15, label %197, label %199

197:                                              ; preds = %196
  %198 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %198, i32 noundef 128, i32 noundef 32, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

199:                                              ; preds = %196
  br i1 %or.cond11238, label %200, label %202

200:                                              ; preds = %199
  %201 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %201, i32 noundef 64, i32 noundef 16, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

202:                                              ; preds = %199
  %or.cond19 = icmp ult i32 %148, 949
  br i1 %or.cond19, label %203, label %.critedge216

203:                                              ; preds = %202
  %204 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %204, i32 noundef 32, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

205:                                              ; preds = %192
  br i1 %or.cond15, label %206, label %208

206:                                              ; preds = %205
  %207 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %207, i32 noundef 64, i32 noundef 16, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

208:                                              ; preds = %205
  br i1 %or.cond11238, label %209, label %211

209:                                              ; preds = %208
  %210 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %210, i32 noundef 64, i32 noundef 16, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

211:                                              ; preds = %208
  %or.cond25 = icmp ult i32 %148, 949
  br i1 %or.cond25, label %212, label %.critedge216

212:                                              ; preds = %211
  %213 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %213, i32 noundef 32, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

214:                                              ; preds = %189, %183, %180
  br i1 %or.cond9232237, label %215, label %.critedge213

215:                                              ; preds = %214
  %216 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %217 = icmp eq i32 %216, 1
  br i1 %217, label %258, label %218

218:                                              ; preds = %215
  %219 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %220 = icmp eq i32 %219, 8
  br i1 %220, label %258, label %221

221:                                              ; preds = %218
  %222 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %223 = icmp eq i32 %222, 2
  br i1 %223, label %224, label %228

224:                                              ; preds = %221
  %225 = getelementptr inbounds i8, ptr %1, i64 24
  %226 = load i32, ptr %225, align 1, !tbaa !18
  %227 = and i32 %226, 2048
  %.not = icmp eq i32 %227, 0
  br i1 %.not, label %228, label %258

228:                                              ; preds = %224, %221
  %229 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %230 = icmp eq i32 %229, 4
  br i1 %230, label %231, label %235

231:                                              ; preds = %228
  %232 = getelementptr inbounds i8, ptr %1, i64 24
  %233 = load i32, ptr %232, align 1, !tbaa !18
  %234 = and i32 %233, 2048
  %.not198 = icmp eq i32 %234, 0
  br i1 %.not198, label %235, label %258

235:                                              ; preds = %231, %228
  %236 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %237 = icmp eq i32 %236, 4
  br i1 %237, label %238, label %243

238:                                              ; preds = %235
  %239 = getelementptr inbounds i8, ptr %1, i64 24
  %240 = load i32, ptr %239, align 1, !tbaa !18
  %241 = and i32 %240, 2048
  %242 = icmp eq i32 %241, 0
  br i1 %242, label %258, label %243

243:                                              ; preds = %238, %235
  %244 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %245 = icmp eq i32 %244, 5
  br i1 %245, label %246, label %250

246:                                              ; preds = %243
  %247 = getelementptr inbounds i8, ptr %1, i64 24
  %248 = load i32, ptr %247, align 1, !tbaa !18
  %249 = and i32 %248, 2048
  %.not199 = icmp eq i32 %249, 0
  br i1 %.not199, label %250, label %258

250:                                              ; preds = %246, %243
  %251 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %252 = icmp eq i32 %251, 5
  br i1 %252, label %253, label %260

253:                                              ; preds = %250
  %254 = getelementptr inbounds i8, ptr %1, i64 24
  %255 = load i32, ptr %254, align 1, !tbaa !18
  %256 = and i32 %255, 2048
  %257 = icmp eq i32 %256, 0
  br i1 %257, label %258, label %260

258:                                              ; preds = %253, %246, %238, %231, %224, %218, %215
  %259 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %259, i32 noundef 64, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

260:                                              ; preds = %250, %253
  %261 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %168) #3
  %262 = icmp eq i32 %261, 0
  br i1 %262, label %263, label %.critedge213

263:                                              ; preds = %260
  %264 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %264, i32 noundef 32, i32 noundef 4, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.critedge213:                                     ; preds = %214, %260
  %265 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %266 = icmp eq i32 %265, 2
  br i1 %266, label %270, label %267

267:                                              ; preds = %.critedge213
  %268 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %269 = icmp eq i32 %268, 1
  br i1 %269, label %270, label %282

270:                                              ; preds = %267, %.critedge213
  %271 = tail call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %168) #3
  %272 = icmp eq i32 %271, 2
  br i1 %272, label %273, label %282

273:                                              ; preds = %270
  %274 = tail call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %168) #3
  %275 = icmp eq i32 %274, 12
  br i1 %275, label %276, label %282

276:                                              ; preds = %273
  br i1 %or.cond11238, label %277, label %279

277:                                              ; preds = %276
  %278 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %278, i32 noundef 64, i32 noundef 16, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

279:                                              ; preds = %276
  %or.cond33 = icmp ult i32 %148, 949
  br i1 %or.cond33, label %280, label %.critedge216

280:                                              ; preds = %279
  %281 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %281, i32 noundef 32, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

282:                                              ; preds = %273, %270, %267
  br i1 %147, label %283, label %.critedge216

283:                                              ; preds = %282
  %284 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %285 = icmp eq i32 %284, 1
  br i1 %285, label %333, label %286

286:                                              ; preds = %283
  %287 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %288 = icmp eq i32 %287, 8
  br i1 %288, label %333, label %289

289:                                              ; preds = %286
  %290 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %291 = icmp eq i32 %290, 2
  br i1 %291, label %292, label %296

292:                                              ; preds = %289
  %293 = getelementptr inbounds i8, ptr %1, i64 24
  %294 = load i32, ptr %293, align 1, !tbaa !18
  %295 = and i32 %294, 2048
  %.not200 = icmp eq i32 %295, 0
  br i1 %.not200, label %296, label %333

296:                                              ; preds = %292, %289
  %297 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %298 = icmp eq i32 %297, 2
  br i1 %298, label %299, label %303

299:                                              ; preds = %296
  %300 = getelementptr inbounds i8, ptr %1, i64 24
  %301 = load i32, ptr %300, align 1, !tbaa !18
  %302 = and i32 %301, 8390656
  %or.cond214.not = icmp eq i32 %302, 8388608
  br i1 %or.cond214.not, label %333, label %303

303:                                              ; preds = %299, %296
  %304 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %305 = icmp eq i32 %304, 4
  br i1 %305, label %306, label %310

306:                                              ; preds = %303
  %307 = getelementptr inbounds i8, ptr %1, i64 24
  %308 = load i32, ptr %307, align 1, !tbaa !18
  %309 = and i32 %308, 2048
  %.not202 = icmp eq i32 %309, 0
  br i1 %.not202, label %310, label %333

310:                                              ; preds = %306, %303
  %311 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %312 = icmp eq i32 %311, 4
  br i1 %312, label %313, label %318

313:                                              ; preds = %310
  %314 = getelementptr inbounds i8, ptr %1, i64 24
  %315 = load i32, ptr %314, align 1, !tbaa !18
  %316 = and i32 %315, 2048
  %317 = icmp eq i32 %316, 0
  br i1 %317, label %333, label %318

318:                                              ; preds = %313, %310
  %319 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %320 = icmp eq i32 %319, 5
  br i1 %320, label %321, label %325

321:                                              ; preds = %318
  %322 = getelementptr inbounds i8, ptr %1, i64 24
  %323 = load i32, ptr %322, align 1, !tbaa !18
  %324 = and i32 %323, 2048
  %.not203 = icmp eq i32 %324, 0
  br i1 %.not203, label %325, label %333

325:                                              ; preds = %321, %318
  %326 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %168) #3
  %327 = icmp eq i32 %326, 5
  br i1 %327, label %328, label %335

328:                                              ; preds = %325
  %329 = getelementptr inbounds i8, ptr %1, i64 24
  %330 = load i32, ptr %329, align 1, !tbaa !18
  %331 = and i32 %330, 2048
  %332 = icmp eq i32 %331, 0
  br i1 %332, label %333, label %335

333:                                              ; preds = %299, %328, %321, %313, %306, %292, %286, %283
  %334 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %334, i32 noundef 64, i32 noundef 16, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

335:                                              ; preds = %325, %328
  %336 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %168) #3
  %337 = icmp eq i32 %336, 0
  br i1 %337, label %338, label %.critedge216

338:                                              ; preds = %335
  %339 = load i32, ptr %1, align 1, !tbaa !14
  call void @libxsmm_generator_gemm_get_blocking_and_mask(i32 noundef %339, i32 noundef 32, i32 noundef 8, ptr noundef nonnull %6, ptr noundef nonnull %5) #3
  br label %.critedge216

.critedge216:                                     ; preds = %282, %31, %30, %38, %49, %65, %64, %99, %118, %145, %165, %258, %280, %279, %277, %338, %335, %333, %263, %200, %202, %203, %197, %209, %211, %212, %206, %156, %132, %113, %86, %54, %42, %34, %20, %21
  %340 = load i32, ptr %5, align 4, !tbaa !5
  %341 = getelementptr inbounds i8, ptr %0, i64 44
  store i32 %340, ptr %341, align 4, !tbaa !19
  %.not204 = icmp eq i32 %340, 0
  %342 = getelementptr inbounds i8, ptr %0, i64 40
  %343 = load i32, ptr %342, align 8, !tbaa !20
  %. = select i1 %.not204, i32 537138728, i32 537138731
  %.245 = select i1 %.not204, i32 537138731, i32 537138728
  %.246 = select i1 %.not204, i32 545592872, i32 545592875
  %.247 = select i1 %.not204, i32 545592875, i32 545592872
  %344 = icmp eq i32 %343, %.
  %spec.select217 = select i1 %344, i32 %.245, i32 %343
  %345 = icmp eq i32 %spec.select217, %.246
  %346 = select i1 %345, i32 %.247, i32 %spec.select217
  store i32 %346, ptr %342, align 8, !tbaa !20
  %347 = load i32, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #3
  ret i32 %347
}

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

declare i32 @libxsmm_cpuid_x86_srf_gemm_set_n_max_blocking() local_unnamed_addr #1

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


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