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

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

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

@.str.2 = external hidden unnamed_addr constant [112 x i8], align 1
@__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx = external hidden unnamed_addr constant [65 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #2

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) #1 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %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
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca [2 x i32], align 4
  %18 = alloca [2 x i32], align 4
  %19 = alloca [2 x i32], align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %28 = alloca %struct.libxsmm_loop_label_tracker_struct, align 4
  %29 = alloca %struct.libxsmm_gp_reg_mapping_struct, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  %37 = alloca i32, align 4
  %38 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  store i32 0, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 4, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.memset.p0.i64(ptr align 4 %17, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.memset.p0.i64(ptr align 4 %18, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.memset.p0.i64(ptr align 4 %19, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  store i32 0, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  store i32 1, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store i32 2, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  store i32 3, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  store i32 1, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %49 = load ptr, ptr %7, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %49, i32 0, i32 6
  %51 = load i32, ptr %50, align 1, !tbaa !11
  %52 = and i32 64, %51
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %54, label %60

54:                                               ; preds = %5
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %55, i32 0, i32 6
  %57 = load i32, ptr %56, align 1, !tbaa !11
  %58 = and i32 128, %57
  %59 = icmp eq i32 %58, 0
  br i1 %59, label %74, label %60

60:                                               ; preds = %54, %5
  %61 = load ptr, ptr %7, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %61, i32 0, i32 6
  %63 = load i32, ptr %62, align 1, !tbaa !11
  %64 = and i32 64, %63
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %72

66:                                               ; preds = %60
  %67 = load ptr, ptr %7, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %67, i32 0, i32 6
  %69 = load i32, ptr %68, align 1, !tbaa !11
  %70 = and i32 128, %69
  %71 = icmp ne i32 %70, 0
  br label %72

72:                                               ; preds = %66, %60
  %73 = phi i1 [ false, %60 ], [ %71, %66 ]
  br label %74

74:                                               ; preds = %72, %54
  %75 = phi i1 [ true, %54 ], [ %73, %72 ]
  %76 = zext i1 %75 to i64
  %77 = select i1 %75, i32 1, i32 0
  store i32 %77, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 688, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 2052, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 132, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  store i32 9, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  store i32 10, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 3, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  store i32 14, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2101248, ptr %36) #4
  call void @libxsmm_reset_jump_label_tracker(ptr noundef %36)
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %78, i32 0, i32 6
  %80 = load i32, ptr %79, align 1, !tbaa !11
  %81 = and i32 %80, 1
  %82 = icmp ugt i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %74
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %83, %74
  %85 = load ptr, ptr %7, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %85, i32 0, i32 6
  %87 = load i32, ptr %86, align 1, !tbaa !11
  %88 = and i32 %87, 2
  %89 = icmp ugt i32 %88, 0
  br i1 %89, label %90, label %99

90:                                               ; preds = %84
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  %92 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %93 = icmp ult i32 1, %92
  br i1 %93, label %94, label %96

94:                                               ; preds = %90
  %95 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %97

96:                                               ; preds = %90
  br label %97

97:                                               ; preds = %96, %94
  %98 = phi i32 [ %95, %94 ], [ 1, %96 ]
  call void @libxsmm_handle_error(ptr noundef %91, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 269, i32 noundef %98)
  store i32 1, ptr %37, align 4
  br label %1394

99:                                               ; preds = %84
  %100 = load ptr, ptr %7, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %100, i32 0, i32 8
  %102 = getelementptr inbounds [3 x i8], ptr %101, i64 0, i64 0
  %103 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %102)
  %104 = icmp eq i32 12, %103
  br i1 %104, label %105, label %195

105:                                              ; preds = %99
  store i32 4, ptr %25, align 4, !tbaa !9
  %106 = load ptr, ptr %7, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %106, i32 0, i32 6
  %108 = load i32, ptr %107, align 1, !tbaa !11
  %109 = and i32 %108, 2048
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %126

111:                                              ; preds = %105
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %112, i32 0, i32 6
  %114 = load i32, ptr %113, align 1, !tbaa !11
  %115 = and i32 %114, 1
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %117, label %126

117:                                              ; preds = %111
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %120 = icmp ult i32 1, %119
  br i1 %120, label %121, label %123

121:                                              ; preds = %117
  %122 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %124

123:                                              ; preds = %117
  br label %124

124:                                              ; preds = %123, %121
  %125 = phi i32 [ %122, %121 ], [ 1, %123 ]
  call void @libxsmm_handle_error(ptr noundef %118, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 276, i32 noundef %125)
  store i32 1, ptr %37, align 4
  br label %1394

126:                                              ; preds = %111, %105
  %127 = load ptr, ptr %7, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %127, i32 0, i32 6
  %129 = load i32, ptr %128, align 1, !tbaa !11
  %130 = and i32 %129, 4096
  %131 = icmp ugt i32 %130, 0
  br i1 %131, label %132, label %141

132:                                              ; preds = %126
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %135 = icmp ult i32 1, %134
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %139

138:                                              ; preds = %132
  br label %139

139:                                              ; preds = %138, %136
  %140 = phi i32 [ %137, %136 ], [ 1, %138 ]
  call void @libxsmm_handle_error(ptr noundef %133, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 280, i32 noundef %140)
  store i32 1, ptr %37, align 4
  br label %1394

141:                                              ; preds = %126
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %142, i32 0, i32 6
  %144 = load i32, ptr %143, align 4, !tbaa !15
  %145 = icmp uge i32 %144, 1102
  br i1 %145, label %146, label %165

146:                                              ; preds = %141
  %147 = load ptr, ptr %6, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %147, i32 0, i32 6
  %149 = load i32, ptr %148, align 4, !tbaa !15
  %150 = icmp ult i32 %149, 1104
  br i1 %150, label %151, label %165

151:                                              ; preds = %146
  store i32 16, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  %152 = load i32, ptr %9, align 4, !tbaa !9
  %153 = urem i32 %152, 4
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %155, label %164

155:                                              ; preds = %151
  %156 = load ptr, ptr %6, align 8, !tbaa !5
  %157 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %158 = icmp ult i32 1, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %155
  %160 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %162

161:                                              ; preds = %155
  br label %162

162:                                              ; preds = %161, %159
  %163 = phi i32 [ %160, %159 ], [ 1, %161 ]
  call void @libxsmm_handle_error(ptr noundef %156, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 287, i32 noundef %163)
  store i32 1, ptr %37, align 4
  br label %1394

164:                                              ; preds = %151
  br label %194

165:                                              ; preds = %146, %141
  %166 = load ptr, ptr %6, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %166, i32 0, i32 6
  %168 = load i32, ptr %167, align 4, !tbaa !15
  %169 = icmp uge i32 %168, 1104
  br i1 %169, label %170, label %184

170:                                              ; preds = %165
  store i32 16, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  %171 = load i32, ptr %9, align 4, !tbaa !9
  %172 = urem i32 %171, 4
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %183

174:                                              ; preds = %170
  %175 = load ptr, ptr %6, align 8, !tbaa !5
  %176 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %177 = icmp ult i32 1, %176
  br i1 %177, label %178, label %180

178:                                              ; preds = %174
  %179 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %181

180:                                              ; preds = %174
  br label %181

181:                                              ; preds = %180, %178
  %182 = phi i32 [ %179, %178 ], [ 1, %180 ]
  call void @libxsmm_handle_error(ptr noundef %175, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 294, i32 noundef %182)
  store i32 1, ptr %37, align 4
  br label %1394

183:                                              ; preds = %170
  br label %193

184:                                              ; preds = %165
  %185 = load ptr, ptr %6, align 8, !tbaa !5
  %186 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %187 = icmp ult i32 1, %186
  br i1 %187, label %188, label %190

188:                                              ; preds = %184
  %189 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %191

190:                                              ; preds = %184
  br label %191

191:                                              ; preds = %190, %188
  %192 = phi i32 [ %189, %188 ], [ 1, %190 ]
  call void @libxsmm_handle_error(ptr noundef %185, i32 noundef 90006, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 298, i32 noundef %192)
  store i32 1, ptr %37, align 4
  br label %1394

193:                                              ; preds = %183
  br label %194

194:                                              ; preds = %193, %164
  br label %356

195:                                              ; preds = %99
  %196 = load ptr, ptr %7, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %196, i32 0, i32 8
  %198 = getelementptr inbounds [3 x i8], ptr %197, i64 0, i64 0
  %199 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %198)
  %200 = icmp eq i32 2, %199
  br i1 %200, label %201, label %286

201:                                              ; preds = %195
  store i32 2, ptr %25, align 4, !tbaa !9
  %202 = load ptr, ptr %7, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %202, i32 0, i32 6
  %204 = load i32, ptr %203, align 1, !tbaa !11
  %205 = and i32 %204, 2048
  %206 = icmp eq i32 %205, 0
  br i1 %206, label %207, label %222

207:                                              ; preds = %201
  %208 = load ptr, ptr %7, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %208, i32 0, i32 6
  %210 = load i32, ptr %209, align 1, !tbaa !11
  %211 = and i32 %210, 1
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %222

213:                                              ; preds = %207
  %214 = load ptr, ptr %6, align 8, !tbaa !5
  %215 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %216 = icmp ult i32 1, %215
  br i1 %216, label %217, label %219

217:                                              ; preds = %213
  %218 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %220

219:                                              ; preds = %213
  br label %220

220:                                              ; preds = %219, %217
  %221 = phi i32 [ %218, %217 ], [ 1, %219 ]
  call void @libxsmm_handle_error(ptr noundef %214, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 304, i32 noundef %221)
  store i32 1, ptr %37, align 4
  br label %1394

222:                                              ; preds = %207, %201
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %223, i32 0, i32 6
  %225 = load i32, ptr %224, align 1, !tbaa !11
  %226 = and i32 %225, 4096
  %227 = icmp ugt i32 %226, 0
  br i1 %227, label %228, label %237

228:                                              ; preds = %222
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %231 = icmp ult i32 1, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %228
  %233 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %235

234:                                              ; preds = %228
  br label %235

235:                                              ; preds = %234, %232
  %236 = phi i32 [ %233, %232 ], [ 1, %234 ]
  call void @libxsmm_handle_error(ptr noundef %229, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 308, i32 noundef %236)
  store i32 1, ptr %37, align 4
  br label %1394

237:                                              ; preds = %222
  %238 = load ptr, ptr %6, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %238, i32 0, i32 6
  %240 = load i32, ptr %239, align 4, !tbaa !15
  %241 = icmp eq i32 %240, 1103
  br i1 %241, label %242, label %256

242:                                              ; preds = %237
  store i32 16, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  %243 = load i32, ptr %9, align 4, !tbaa !9
  %244 = urem i32 %243, 2
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %255

246:                                              ; preds = %242
  %247 = load ptr, ptr %6, align 8, !tbaa !5
  %248 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %249 = icmp ult i32 1, %248
  br i1 %249, label %250, label %252

250:                                              ; preds = %246
  %251 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %253

252:                                              ; preds = %246
  br label %253

253:                                              ; preds = %252, %250
  %254 = phi i32 [ %251, %250 ], [ 1, %252 ]
  call void @libxsmm_handle_error(ptr noundef %247, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 315, i32 noundef %254)
  store i32 1, ptr %37, align 4
  br label %1394

255:                                              ; preds = %242
  br label %285

256:                                              ; preds = %237
  %257 = load ptr, ptr %6, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %257, i32 0, i32 6
  %259 = load i32, ptr %258, align 4, !tbaa !15
  %260 = icmp uge i32 %259, 1104
  br i1 %260, label %261, label %275

261:                                              ; preds = %256
  store i32 16, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  %262 = load i32, ptr %9, align 4, !tbaa !9
  %263 = urem i32 %262, 2
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %274

265:                                              ; preds = %261
  %266 = load ptr, ptr %6, align 8, !tbaa !5
  %267 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %268 = icmp ult i32 1, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %265
  %270 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %272

271:                                              ; preds = %265
  br label %272

272:                                              ; preds = %271, %269
  %273 = phi i32 [ %270, %269 ], [ 1, %271 ]
  call void @libxsmm_handle_error(ptr noundef %266, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 322, i32 noundef %273)
  store i32 1, ptr %37, align 4
  br label %1394

274:                                              ; preds = %261
  br label %284

275:                                              ; preds = %256
  %276 = load ptr, ptr %6, align 8, !tbaa !5
  %277 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %278 = icmp ult i32 1, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %275
  %280 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %282

281:                                              ; preds = %275
  br label %282

282:                                              ; preds = %281, %279
  %283 = phi i32 [ %280, %279 ], [ 1, %281 ]
  call void @libxsmm_handle_error(ptr noundef %276, i32 noundef 90006, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 326, i32 noundef %283)
  store i32 1, ptr %37, align 4
  br label %1394

284:                                              ; preds = %274
  br label %285

285:                                              ; preds = %284, %255
  br label %355

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

292:                                              ; preds = %286
  store i32 1, ptr %25, align 4, !tbaa !9
  %293 = load ptr, ptr %7, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %293, i32 0, i32 6
  %295 = load i32, ptr %294, align 1, !tbaa !11
  %296 = and i32 %295, 2048
  %297 = icmp ugt i32 %296, 0
  br i1 %297, label %298, label %307

298:                                              ; preds = %292
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %301 = icmp ult i32 1, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %298
  %303 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %305

304:                                              ; preds = %298
  br label %305

305:                                              ; preds = %304, %302
  %306 = phi i32 [ %303, %302 ], [ 1, %304 ]
  call void @libxsmm_handle_error(ptr noundef %299, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 332, i32 noundef %306)
  store i32 1, ptr %37, align 4
  br label %1394

307:                                              ; preds = %292
  %308 = load ptr, ptr %7, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %308, i32 0, i32 6
  %310 = load i32, ptr %309, align 1, !tbaa !11
  %311 = and i32 %310, 4096
  %312 = icmp ugt i32 %311, 0
  br i1 %312, label %313, label %322

313:                                              ; preds = %307
  %314 = load ptr, ptr %6, align 8, !tbaa !5
  %315 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %316 = icmp ult i32 1, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %313
  %318 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %320

319:                                              ; preds = %313
  br label %320

320:                                              ; preds = %319, %317
  %321 = phi i32 [ %318, %317 ], [ 1, %319 ]
  call void @libxsmm_handle_error(ptr noundef %314, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 336, i32 noundef %321)
  store i32 1, ptr %37, align 4
  br label %1394

322:                                              ; preds = %307
  store i32 16, ptr %14, align 4, !tbaa !9
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %323, i32 0, i32 6
  %325 = load i32, ptr %324, align 4, !tbaa !15
  %326 = icmp ult i32 %325, 1006
  br i1 %326, label %327, label %336

327:                                              ; preds = %322
  %328 = load ptr, ptr %6, align 8, !tbaa !5
  %329 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %330 = icmp ult i32 1, %329
  br i1 %330, label %331, label %333

331:                                              ; preds = %327
  %332 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %334

333:                                              ; preds = %327
  br label %334

334:                                              ; preds = %333, %331
  %335 = phi i32 [ %332, %331 ], [ 1, %333 ]
  call void @libxsmm_handle_error(ptr noundef %328, i32 noundef 90006, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 341, i32 noundef %335)
  store i32 1, ptr %37, align 4
  br label %1394

336:                                              ; preds = %322
  %337 = load ptr, ptr %6, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %337, i32 0, i32 6
  %339 = load i32, ptr %338, align 4, !tbaa !15
  %340 = icmp ult i32 %339, 1101
  br i1 %340, label %341, label %344

341:                                              ; preds = %336
  %342 = load ptr, ptr %6, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %342, i32 0, i32 6
  store i32 1006, ptr %343, align 4, !tbaa !15
  store i32 8, ptr %14, align 4, !tbaa !9
  br label %344

344:                                              ; preds = %341, %336
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %354

345:                                              ; preds = %286
  %346 = load ptr, ptr %6, align 8, !tbaa !5
  %347 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %348 = icmp ult i32 1, %347
  br i1 %348, label %349, label %351

349:                                              ; preds = %345
  %350 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %352

351:                                              ; preds = %345
  br label %352

352:                                              ; preds = %351, %349
  %353 = phi i32 [ %350, %349 ], [ 1, %351 ]
  call void @libxsmm_handle_error(ptr noundef %346, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 350, i32 noundef %353)
  store i32 1, ptr %37, align 4
  br label %1394

354:                                              ; preds = %344
  br label %355

355:                                              ; preds = %354, %285
  br label %356

356:                                              ; preds = %355, %194
  %357 = load i32, ptr %35, align 4, !tbaa !9
  %358 = icmp eq i32 %357, 0
  br i1 %358, label %359, label %375

359:                                              ; preds = %356
  %360 = load i32, ptr %8, align 4, !tbaa !9
  %361 = load i32, ptr %14, align 4, !tbaa !9
  %362 = urem i32 %360, %361
  store i32 %362, ptr %11, align 4, !tbaa !9
  %363 = load i32, ptr %8, align 4, !tbaa !9
  %364 = load i32, ptr %14, align 4, !tbaa !9
  %365 = udiv i32 %363, %364
  store i32 %365, ptr %13, align 4, !tbaa !9
  %366 = load i32, ptr %11, align 4, !tbaa !9
  %367 = icmp ugt i32 %366, 0
  br i1 %367, label %368, label %371

368:                                              ; preds = %359
  %369 = load i32, ptr %13, align 4, !tbaa !9
  %370 = add i32 %369, 1
  br label %373

371:                                              ; preds = %359
  %372 = load i32, ptr %13, align 4, !tbaa !9
  br label %373

373:                                              ; preds = %371, %368
  %374 = phi i32 [ %370, %368 ], [ %372, %371 ]
  store i32 %374, ptr %12, align 4, !tbaa !9
  br label %383

375:                                              ; preds = %356
  %376 = load i32, ptr %9, align 4, !tbaa !9
  %377 = load i32, ptr %25, align 4, !tbaa !9
  %378 = udiv i32 %376, %377
  %379 = load i32, ptr %14, align 4, !tbaa !9
  %380 = urem i32 %378, %379
  store i32 %380, ptr %11, align 4, !tbaa !9
  %381 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %381, ptr %13, align 4, !tbaa !9
  %382 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %382, ptr %12, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %375, %373
  call void @libxsmm_reset_x86_gp_reg_mapping(ptr noundef %29)
  %384 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 0
  store i32 7, ptr %384, align 4, !tbaa !17
  %385 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 0
  %386 = load i32, ptr %385, align 4, !tbaa !17
  %387 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 1
  store i32 %386, ptr %387, align 4, !tbaa !19
  %388 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 3
  store i32 6, ptr %388, align 4, !tbaa !20
  %389 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 5
  store i32 2, ptr %389, align 4, !tbaa !21
  %390 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 6
  store i32 1, ptr %390, align 4, !tbaa !22
  %391 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 8
  store i32 8, ptr %391, align 4, !tbaa !23
  %392 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 10
  store i32 12, ptr %392, align 4, !tbaa !24
  %393 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  store i32 13, ptr %393, align 4, !tbaa !25
  %394 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 12
  store i32 14, ptr %394, align 4, !tbaa !26
  %395 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 22
  store i32 15, ptr %395, align 4, !tbaa !27
  %396 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  store i32 11, ptr %396, align 4, !tbaa !28
  %397 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 24
  store i32 1, ptr %397, align 4, !tbaa !29
  %398 = load i32, ptr %31, align 4, !tbaa !9
  %399 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 25
  store i32 %398, ptr %399, align 4, !tbaa !30
  %400 = load i32, ptr %32, align 4, !tbaa !9
  %401 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 26
  store i32 %400, ptr %401, align 4, !tbaa !31
  %402 = load i32, ptr %33, align 4, !tbaa !9
  %403 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 27
  store i32 %402, ptr %403, align 4, !tbaa !32
  %404 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 17
  store i32 11, ptr %404, align 4, !tbaa !33
  %405 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 18
  store i32 1, ptr %405, align 4, !tbaa !34
  %406 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 19
  store i32 8, ptr %406, align 4, !tbaa !35
  call void @libxsmm_reset_loop_label_tracker(ptr noundef %28)
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %407, i32 0, i32 6
  %409 = load i32, ptr %408, align 4, !tbaa !15
  %410 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef %27, i32 noundef %409, ptr noundef %410, i32 noundef 0)
  %411 = load ptr, ptr %6, align 8, !tbaa !5
  %412 = load ptr, ptr %7, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %412, i32 0, i32 7
  %414 = load i8, ptr %413, align 1, !tbaa !36
  %415 = zext i8 %414 to i32
  call void @libxsmm_x86_instruction_open_stream_gemm(ptr noundef %411, ptr noundef %29, i32 noundef 0, i32 noundef %415)
  %416 = load i32, ptr %20, align 4, !tbaa !9
  %417 = icmp ugt i32 %416, 0
  br i1 %417, label %418, label %462

418:                                              ; preds = %383
  %419 = load ptr, ptr %7, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %419, i32 0, i32 6
  %421 = load i32, ptr %420, align 1, !tbaa !11
  %422 = and i32 64, %421
  %423 = icmp eq i32 %422, 0
  br i1 %423, label %424, label %436

424:                                              ; preds = %418
  %425 = load ptr, ptr %7, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %425, i32 0, i32 6
  %427 = load i32, ptr %426, align 1, !tbaa !11
  %428 = and i32 128, %427
  %429 = icmp eq i32 %428, 0
  br i1 %429, label %430, label %436

430:                                              ; preds = %424
  %431 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %431, i32 noundef 30008, i32 noundef 4, i64 noundef 64)
  %432 = load ptr, ptr %6, align 8, !tbaa !5
  %433 = load ptr, ptr %6, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %433, i32 0, i32 6
  %435 = load i32, ptr %434, align 4, !tbaa !15
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %432, i32 noundef 1000, i32 noundef %435, i32 noundef 50002, i32 noundef 4, i32 noundef 0, ptr noundef null)
  br label %461

436:                                              ; preds = %424, %418
  %437 = load ptr, ptr %7, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %437, i32 0, i32 6
  %439 = load i32, ptr %438, align 1, !tbaa !11
  %440 = and i32 64, %439
  %441 = icmp ne i32 %440, 0
  br i1 %441, label %442, label %460

442:                                              ; preds = %436
  %443 = load ptr, ptr %7, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %443, i32 0, i32 6
  %445 = load i32, ptr %444, align 1, !tbaa !11
  %446 = and i32 128, %445
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %460

448:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 2101248, ptr %38) #4
  call void @libxsmm_reset_jump_label_tracker(ptr noundef %38)
  %449 = load ptr, ptr %6, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 0
  %451 = load i32, ptr %450, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %449, i32 noundef 30002, i32 noundef %451, i64 noundef 0)
  %452 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %452, i32 noundef 30101, i32 noundef 0, ptr noundef %38)
  %453 = load ptr, ptr %6, align 8, !tbaa !5
  %454 = load ptr, ptr %6, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %454, i32 0, i32 6
  %456 = load i32, ptr %455, align 4, !tbaa !15
  %457 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 0
  %458 = load i32, ptr %457, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %453, i32 noundef 1000, i32 noundef %456, i32 noundef 50002, i32 noundef %458, i32 noundef 0, ptr noundef null)
  %459 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %459, i32 noundef 0, ptr noundef %38)
  call void @llvm.lifetime.end.p0(i64 2101248, ptr %38) #4
  br label %460

460:                                              ; preds = %448, %442, %436
  br label %461

461:                                              ; preds = %460, %430
  br label %462

462:                                              ; preds = %461, %383
  %463 = load i32, ptr %26, align 4, !tbaa !9
  %464 = icmp ugt i32 %463, 0
  br i1 %464, label %465, label %532

465:                                              ; preds = %462
  %466 = load ptr, ptr %7, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %466, i32 0, i32 6
  %468 = load i32, ptr %467, align 1, !tbaa !11
  %469 = and i32 16384, %468
  %470 = icmp eq i32 %469, 16384
  br i1 %470, label %471, label %530

471:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  store i32 32, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  store i32 80, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  store i32 128, ptr %41, align 4, !tbaa !9
  %472 = load ptr, ptr %6, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 0
  %474 = load i32, ptr %473, align 4, !tbaa !17
  %475 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %476 = load i32, ptr %475, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %472, i32 noundef -1568407413, i32 noundef %474, i32 noundef %476)
  %477 = load ptr, ptr %6, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %479 = load i32, ptr %478, align 8, !tbaa !37
  %480 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %481 = load i32, ptr %480, align 4, !tbaa !28
  %482 = load i32, ptr %39, align 4, !tbaa !9
  %483 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 1
  %484 = load i32, ptr %483, align 4, !tbaa !19
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %477, i32 noundef %479, i32 noundef %481, i32 noundef 127, i32 noundef 0, i32 noundef %482, i32 noundef %484, i32 noundef 0)
  %485 = load ptr, ptr %6, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %487 = load i32, ptr %486, align 8, !tbaa !37
  %488 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %489 = load i32, ptr %488, align 4, !tbaa !28
  %490 = load i32, ptr %40, align 4, !tbaa !9
  %491 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 3
  %492 = load i32, ptr %491, align 4, !tbaa !20
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %485, i32 noundef %487, i32 noundef %489, i32 noundef 127, i32 noundef 0, i32 noundef %490, i32 noundef %492, i32 noundef 0)
  %493 = load ptr, ptr %6, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %495 = load i32, ptr %494, align 8, !tbaa !37
  %496 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %497 = load i32, ptr %496, align 4, !tbaa !28
  %498 = load i32, ptr %40, align 4, !tbaa !9
  %499 = add nsw i32 %498, 8
  %500 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %493, i32 noundef %495, i32 noundef %497, i32 noundef 127, i32 noundef 0, i32 noundef %499, i32 noundef %500, i32 noundef 0)
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %503 = load i32, ptr %502, align 8, !tbaa !37
  %504 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %505 = load i32, ptr %504, align 4, !tbaa !28
  %506 = load i32, ptr %40, align 4, !tbaa !9
  %507 = add nsw i32 %506, 16
  %508 = load i32, ptr %31, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %501, i32 noundef %503, i32 noundef %505, i32 noundef 127, i32 noundef 0, i32 noundef %507, i32 noundef %508, i32 noundef 0)
  %509 = load ptr, ptr %6, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %511 = load i32, ptr %510, align 8, !tbaa !37
  %512 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %513 = load i32, ptr %512, align 4, !tbaa !28
  %514 = load i32, ptr %40, align 4, !tbaa !9
  %515 = add nsw i32 %514, 24
  %516 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %509, i32 noundef %511, i32 noundef %513, i32 noundef 127, i32 noundef 0, i32 noundef %515, i32 noundef %516, i32 noundef 0)
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %519 = load i32, ptr %518, align 8, !tbaa !37
  %520 = load i32, ptr %34, align 4, !tbaa !9
  %521 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %517, i32 noundef %519, i32 noundef %520, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %521, i32 noundef 0)
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %524 = load i32, ptr %523, align 8, !tbaa !37
  %525 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %526 = load i32, ptr %525, align 4, !tbaa !28
  %527 = load i32, ptr %41, align 4, !tbaa !9
  %528 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 5
  %529 = load i32, ptr %528, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %522, i32 noundef %524, i32 noundef %526, i32 noundef 127, i32 noundef 0, i32 noundef %527, i32 noundef %529, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  br label %531

530:                                              ; preds = %465
  br label %531

531:                                              ; preds = %530, %471
  br label %532

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

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

544:                                              ; preds = %538, %532
  %545 = load ptr, ptr %6, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %545, i32 0, i32 6
  %547 = load i32, ptr %546, align 4, !tbaa !15
  %548 = icmp ule i32 %547, 1103
  br i1 %548, label %554, label %549

549:                                              ; preds = %544
  %550 = load ptr, ptr %6, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %550, i32 0, i32 6
  %552 = load i32, ptr %551, align 4, !tbaa !15
  %553 = icmp uge i32 %552, 1104
  br i1 %553, label %554, label %884

554:                                              ; preds = %549, %544
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %555 = load ptr, ptr %6, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %555, i32 0, i32 6
  %557 = load i32, ptr %556, align 4, !tbaa !15
  %558 = icmp ule i32 %557, 1103
  br i1 %558, label %562, label %559

559:                                              ; preds = %554
  %560 = load i32, ptr %35, align 4, !tbaa !9
  %561 = icmp ugt i32 %560, 0
  br i1 %561, label %562, label %660

562:                                              ; preds = %559, %554
  store i32 0, ptr %20, align 4, !tbaa !9
  %563 = load ptr, ptr %6, align 8, !tbaa !5
  %564 = load i32, ptr %10, align 4, !tbaa !9
  call void @libxsmm_spgemm_max_mn_blocking_factors_x86(ptr noundef %563, i32 noundef %564, ptr noundef %42, ptr noundef %43)
  %565 = load i32, ptr %35, align 4, !tbaa !9
  %566 = icmp ugt i32 %565, 0
  br i1 %566, label %567, label %602

567:                                              ; preds = %562
  %568 = load ptr, ptr %6, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %570 = load i32, ptr %569, align 4, !tbaa !28
  %571 = load i32, ptr %23, align 4, !tbaa !9
  %572 = load i32, ptr %14, align 4, !tbaa !9
  %573 = sub i32 %572, 1
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %568, i32 noundef %570, i32 noundef %571, i32 noundef %573, i32 noundef 1)
  %574 = load i32, ptr %12, align 4, !tbaa !9
  %575 = load i32, ptr %42, align 4, !tbaa !9
  %576 = icmp ule i32 %574, %575
  br i1 %576, label %577, label %584

577:                                              ; preds = %567
  %578 = load i32, ptr %12, align 4, !tbaa !9
  %579 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %578, ptr %579, align 4, !tbaa !9
  %580 = load i32, ptr %12, align 4, !tbaa !9
  %581 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %580, ptr %581, align 4, !tbaa !9
  %582 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 0, ptr %582, align 4, !tbaa !9
  %583 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 0, ptr %583, align 4, !tbaa !9
  br label %601

584:                                              ; preds = %567
  %585 = load i32, ptr %12, align 4, !tbaa !9
  %586 = load i32, ptr %12, align 4, !tbaa !9
  %587 = load i32, ptr %42, align 4, !tbaa !9
  %588 = urem i32 %586, %587
  %589 = sub i32 %585, %588
  %590 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %589, ptr %590, align 4, !tbaa !9
  %591 = load i32, ptr %42, align 4, !tbaa !9
  %592 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %591, ptr %592, align 4, !tbaa !9
  %593 = load i32, ptr %12, align 4, !tbaa !9
  %594 = load i32, ptr %42, align 4, !tbaa !9
  %595 = urem i32 %593, %594
  %596 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 %595, ptr %596, align 4, !tbaa !9
  %597 = load i32, ptr %12, align 4, !tbaa !9
  %598 = load i32, ptr %42, align 4, !tbaa !9
  %599 = urem i32 %597, %598
  %600 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %599, ptr %600, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %584, %577
  br label %659

602:                                              ; preds = %562
  %603 = load i32, ptr %12, align 4, !tbaa !9
  %604 = load i32, ptr %42, align 4, !tbaa !9
  %605 = icmp ule i32 %603, %604
  br i1 %605, label %606, label %613

606:                                              ; preds = %602
  %607 = load i32, ptr %12, align 4, !tbaa !9
  %608 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %607, ptr %608, align 4, !tbaa !9
  %609 = load i32, ptr %12, align 4, !tbaa !9
  %610 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %609, ptr %610, align 4, !tbaa !9
  %611 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 0, ptr %611, align 4, !tbaa !9
  %612 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 0, ptr %612, align 4, !tbaa !9
  br label %658

613:                                              ; preds = %602
  %614 = load i32, ptr %12, align 4, !tbaa !9
  %615 = load i32, ptr %12, align 4, !tbaa !9
  %616 = load i32, ptr %42, align 4, !tbaa !9
  %617 = urem i32 %615, %616
  %618 = sub i32 %614, %617
  %619 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %618, ptr %619, align 4, !tbaa !9
  %620 = load i32, ptr %42, align 4, !tbaa !9
  %621 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %620, ptr %621, align 4, !tbaa !9
  %622 = load i32, ptr %12, align 4, !tbaa !9
  %623 = load i32, ptr %42, align 4, !tbaa !9
  %624 = urem i32 %622, %623
  %625 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 %624, ptr %625, align 4, !tbaa !9
  %626 = load i32, ptr %12, align 4, !tbaa !9
  %627 = load i32, ptr %42, align 4, !tbaa !9
  %628 = urem i32 %626, %627
  %629 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %628, ptr %629, align 4, !tbaa !9
  %630 = load i32, ptr %11, align 4, !tbaa !9
  %631 = icmp ugt i32 %630, 0
  br i1 %631, label %632, label %657

632:                                              ; preds = %613
  %633 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  %634 = load i32, ptr %633, align 4, !tbaa !9
  %635 = icmp eq i32 %634, 0
  br i1 %635, label %636, label %656

636:                                              ; preds = %632
  %637 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  %638 = load i32, ptr %637, align 4, !tbaa !9
  %639 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  %640 = load i32, ptr %639, align 4, !tbaa !9
  %641 = icmp ne i32 %638, %640
  br i1 %641, label %642, label %655

642:                                              ; preds = %636
  %643 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  %644 = load i32, ptr %643, align 4, !tbaa !9
  %645 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  %646 = load i32, ptr %645, align 4, !tbaa !9
  %647 = sub i32 %644, %646
  %648 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %647, ptr %648, align 4, !tbaa !9
  %649 = load i32, ptr %42, align 4, !tbaa !9
  %650 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %649, ptr %650, align 4, !tbaa !9
  %651 = load i32, ptr %42, align 4, !tbaa !9
  %652 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 %651, ptr %652, align 4, !tbaa !9
  %653 = load i32, ptr %42, align 4, !tbaa !9
  %654 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %653, ptr %654, align 4, !tbaa !9
  br label %655

655:                                              ; preds = %642, %636
  br label %656

656:                                              ; preds = %655, %632
  br label %657

657:                                              ; preds = %656, %613
  br label %658

658:                                              ; preds = %657, %606
  br label %659

659:                                              ; preds = %658, %601
  br label %719

660:                                              ; preds = %559
  %661 = load ptr, ptr %6, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %661, i32 0, i32 6
  %663 = load i32, ptr %662, align 4, !tbaa !15
  %664 = icmp uge i32 %663, 1104
  br i1 %664, label %665, label %717

665:                                              ; preds = %660
  store i32 2, ptr %42, align 4, !tbaa !9
  %666 = load i32, ptr %11, align 4, !tbaa !9
  %667 = icmp eq i32 %666, 0
  br i1 %667, label %668, label %689

668:                                              ; preds = %665
  %669 = load i32, ptr %12, align 4, !tbaa !9
  %670 = icmp eq i32 %669, 1
  br i1 %670, label %671, label %672

671:                                              ; preds = %668
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %672

672:                                              ; preds = %671, %668
  %673 = load i32, ptr %12, align 4, !tbaa !9
  %674 = load i32, ptr %12, align 4, !tbaa !9
  %675 = load i32, ptr %42, align 4, !tbaa !9
  %676 = urem i32 %674, %675
  %677 = sub i32 %673, %676
  %678 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %677, ptr %678, align 4, !tbaa !9
  %679 = load i32, ptr %42, align 4, !tbaa !9
  %680 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %679, ptr %680, align 4, !tbaa !9
  %681 = load i32, ptr %12, align 4, !tbaa !9
  %682 = load i32, ptr %42, align 4, !tbaa !9
  %683 = urem i32 %681, %682
  %684 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 %683, ptr %684, align 4, !tbaa !9
  %685 = load i32, ptr %12, align 4, !tbaa !9
  %686 = load i32, ptr %42, align 4, !tbaa !9
  %687 = urem i32 %685, %686
  %688 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %687, ptr %688, align 4, !tbaa !9
  br label %716

689:                                              ; preds = %665
  %690 = load i32, ptr %12, align 4, !tbaa !9
  %691 = icmp eq i32 %690, 2
  br i1 %691, label %692, label %699

692:                                              ; preds = %689
  %693 = load i32, ptr %12, align 4, !tbaa !9
  %694 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %693, ptr %694, align 4, !tbaa !9
  %695 = load i32, ptr %42, align 4, !tbaa !9
  %696 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %695, ptr %696, align 4, !tbaa !9
  %697 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 0, ptr %697, align 4, !tbaa !9
  %698 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 0, ptr %698, align 4, !tbaa !9
  br label %715

699:                                              ; preds = %689
  %700 = load i32, ptr %12, align 4, !tbaa !9
  %701 = icmp ugt i32 %700, 2
  br i1 %701, label %702, label %709

702:                                              ; preds = %699
  store i32 1, ptr %24, align 4, !tbaa !9
  %703 = load i32, ptr %12, align 4, !tbaa !9
  %704 = sub i32 %703, 1
  %705 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %704, ptr %705, align 4, !tbaa !9
  %706 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 1, ptr %706, align 4, !tbaa !9
  %707 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 1, ptr %707, align 4, !tbaa !9
  %708 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 1, ptr %708, align 4, !tbaa !9
  br label %714

709:                                              ; preds = %699
  %710 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 1, ptr %710, align 4, !tbaa !9
  %711 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 1, ptr %711, align 4, !tbaa !9
  %712 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 0, ptr %712, align 4, !tbaa !9
  %713 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 0, ptr %713, align 4, !tbaa !9
  br label %714

714:                                              ; preds = %709, %702
  br label %715

715:                                              ; preds = %714, %692
  br label %716

716:                                              ; preds = %715, %672
  br label %718

717:                                              ; preds = %660
  br label %718

718:                                              ; preds = %717, %716
  br label %719

719:                                              ; preds = %718, %659
  %720 = load i32, ptr %26, align 4, !tbaa !9
  %721 = icmp ugt i32 %720, 0
  br i1 %721, label %722, label %811

722:                                              ; preds = %719
  %723 = load ptr, ptr %6, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %723, i32 0, i32 6
  %725 = load i32, ptr %724, align 4, !tbaa !15
  %726 = icmp ule i32 %725, 1103
  br i1 %726, label %730, label %727

727:                                              ; preds = %722
  %728 = load i32, ptr %35, align 4, !tbaa !9
  %729 = icmp ugt i32 %728, 0
  br i1 %729, label %730, label %771

730:                                              ; preds = %727, %722
  %731 = load ptr, ptr %7, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %731, i32 0, i32 8
  %733 = getelementptr inbounds [3 x i8], ptr %732, i64 0, i64 0
  %734 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %733)
  %735 = icmp eq i32 2, %734
  br i1 %735, label %742, label %736

736:                                              ; preds = %730
  %737 = load ptr, ptr %7, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %737, i32 0, i32 8
  %739 = getelementptr inbounds [3 x i8], ptr %738, i64 0, i64 0
  %740 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %739)
  %741 = icmp eq i32 8, %740
  br i1 %741, label %742, label %761

742:                                              ; preds = %736, %730
  %743 = load i32, ptr %11, align 4, !tbaa !9
  %744 = icmp ne i32 %743, 0
  br i1 %744, label %745, label %760

745:                                              ; preds = %742
  %746 = load ptr, ptr %6, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %748 = load i32, ptr %747, align 4, !tbaa !28
  %749 = load i32, ptr %21, align 4, !tbaa !9
  %750 = load i32, ptr %14, align 4, !tbaa !9
  %751 = load i32, ptr %11, align 4, !tbaa !9
  %752 = sub i32 %750, %751
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %746, i32 noundef %748, i32 noundef %749, i32 noundef %752, i32 noundef 1)
  %753 = load ptr, ptr %6, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %755 = load i32, ptr %754, align 4, !tbaa !28
  %756 = load i32, ptr %22, align 4, !tbaa !9
  %757 = load i32, ptr %14, align 4, !tbaa !9
  %758 = load i32, ptr %11, align 4, !tbaa !9
  %759 = sub i32 %757, %758
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %753, i32 noundef %755, i32 noundef %756, i32 noundef %759, i32 noundef 1)
  br label %760

760:                                              ; preds = %745, %742
  br label %770

761:                                              ; preds = %736
  %762 = load ptr, ptr %6, align 8, !tbaa !5
  %763 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %764 = icmp ult i32 1, %763
  br i1 %764, label %765, label %767

765:                                              ; preds = %761
  %766 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %768

767:                                              ; preds = %761
  br label %768

768:                                              ; preds = %767, %765
  %769 = phi i32 [ %766, %765 ], [ 1, %767 ]
  call void @libxsmm_handle_error(ptr noundef %762, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 540, i32 noundef %769)
  store i32 1, ptr %37, align 4
  br label %881

770:                                              ; preds = %760
  br label %771

771:                                              ; preds = %770, %727
  %772 = load ptr, ptr %6, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %772, i32 0, i32 6
  %774 = load i32, ptr %773, align 4, !tbaa !15
  %775 = icmp uge i32 %774, 1104
  br i1 %775, label %776, label %810

776:                                              ; preds = %771
  %777 = load ptr, ptr %7, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %777, i32 0, i32 8
  %779 = getelementptr inbounds [3 x i8], ptr %778, i64 0, i64 0
  %780 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %779)
  %781 = icmp eq i32 2, %780
  br i1 %781, label %788, label %782

782:                                              ; preds = %776
  %783 = load ptr, ptr %7, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %783, i32 0, i32 8
  %785 = getelementptr inbounds [3 x i8], ptr %784, i64 0, i64 0
  %786 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %785)
  %787 = icmp eq i32 8, %786
  br i1 %787, label %788, label %800

788:                                              ; preds = %782, %776
  %789 = load i32, ptr %11, align 4, !tbaa !9
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %791, label %799

791:                                              ; preds = %788
  %792 = load ptr, ptr %6, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %794 = load i32, ptr %793, align 4, !tbaa !28
  %795 = load i32, ptr %21, align 4, !tbaa !9
  %796 = load i32, ptr %14, align 4, !tbaa !9
  %797 = load i32, ptr %11, align 4, !tbaa !9
  %798 = sub i32 %796, %797
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %792, i32 noundef %794, i32 noundef %795, i32 noundef %798, i32 noundef 1)
  br label %799

799:                                              ; preds = %791, %788
  br label %809

800:                                              ; preds = %782
  %801 = load ptr, ptr %6, align 8, !tbaa !5
  %802 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %803 = icmp ult i32 1, %802
  br i1 %803, label %804, label %806

804:                                              ; preds = %800
  %805 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %807

806:                                              ; preds = %800
  br label %807

807:                                              ; preds = %806, %804
  %808 = phi i32 [ %805, %804 ], [ 1, %806 ]
  call void @libxsmm_handle_error(ptr noundef %801, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 553, i32 noundef %808)
  store i32 1, ptr %37, align 4
  br label %881

809:                                              ; preds = %799
  br label %810

810:                                              ; preds = %809, %771
  br label %811

811:                                              ; preds = %810, %719
  %812 = load i32, ptr %20, align 4, !tbaa !9
  %813 = icmp ugt i32 %812, 0
  br i1 %813, label %814, label %880

814:                                              ; preds = %811
  %815 = load ptr, ptr %6, align 8, !tbaa !5
  %816 = load ptr, ptr %7, align 8, !tbaa !5
  %817 = load i32, ptr %11, align 4, !tbaa !9
  %818 = load i32, ptr %12, align 4, !tbaa !9
  %819 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  %820 = load i32, ptr %9, align 4, !tbaa !9
  %821 = load i32, ptr %10, align 4, !tbaa !9
  %822 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_config_tiles_amx(ptr noundef %815, ptr noundef %816, i32 noundef %817, i32 noundef %818, ptr noundef %819, i32 noundef %820, i32 noundef %821, ptr noundef %822)
  %823 = load i32, ptr %26, align 4, !tbaa !9
  %824 = icmp ugt i32 %823, 0
  br i1 %824, label %825, label %879

825:                                              ; preds = %814
  %826 = load ptr, ptr %6, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %828 = load i32, ptr %827, align 8, !tbaa !37
  %829 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 17
  %830 = load i32, ptr %829, align 4, !tbaa !33
  %831 = load i32, ptr %8, align 4, !tbaa !9
  %832 = zext i32 %831 to i64
  %833 = mul nsw i64 %832, 4
  %834 = sdiv i64 %833, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %826, i32 noundef %828, i32 noundef %830, i64 noundef %834)
  %835 = load ptr, ptr %6, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %837 = load i32, ptr %836, align 8, !tbaa !37
  %838 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 18
  %839 = load i32, ptr %838, align 4, !tbaa !34
  %840 = load i32, ptr %9, align 4, !tbaa !9
  %841 = zext i32 %840 to i64
  %842 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 3
  %843 = load i32, ptr %842, align 4, !tbaa !40
  %844 = zext i32 %843 to i64
  %845 = mul nsw i64 %841, %844
  %846 = sdiv i64 %845, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %835, i32 noundef %837, i32 noundef %839, i64 noundef %846)
  %847 = load ptr, ptr %7, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %847, i32 0, i32 8
  %849 = getelementptr inbounds [3 x i8], ptr %848, i64 0, i64 0
  %850 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %849)
  %851 = icmp eq i32 2, %850
  br i1 %851, label %852, label %859

852:                                              ; preds = %825
  %853 = load ptr, ptr %6, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %855 = load i32, ptr %854, align 8, !tbaa !37
  %856 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 19
  %857 = load i32, ptr %856, align 4, !tbaa !35
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %853, i32 noundef %855, i32 noundef %857, i64 noundef 16)
  %858 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %858, i32 noundef 30008, i32 noundef 4, i64 noundef 8320)
  br label %878

859:                                              ; preds = %825
  %860 = load ptr, ptr %7, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %860, i32 0, i32 8
  %862 = getelementptr inbounds [3 x i8], ptr %861, i64 0, i64 0
  %863 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %862)
  %864 = icmp eq i32 8, %863
  br i1 %864, label %865, label %876

865:                                              ; preds = %859
  %866 = load ptr, ptr %6, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %868 = load i32, ptr %867, align 8, !tbaa !37
  %869 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 19
  %870 = load i32, ptr %869, align 4, !tbaa !35
  %871 = load i32, ptr %8, align 4, !tbaa !9
  %872 = zext i32 %871 to i64
  %873 = mul nsw i64 %872, 4
  %874 = sdiv i64 %873, 4
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %866, i32 noundef %868, i32 noundef %870, i64 noundef %874)
  %875 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %875, i32 noundef 30008, i32 noundef 4, i64 noundef 128)
  br label %877

876:                                              ; preds = %859
  br label %877

877:                                              ; preds = %876, %865
  br label %878

878:                                              ; preds = %877, %852
  br label %879

879:                                              ; preds = %878, %814
  br label %880

880:                                              ; preds = %879, %811
  store i32 0, ptr %37, align 4
  br label %881

881:                                              ; preds = %880, %807, %768
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  %882 = load i32, ptr %37, align 4
  switch i32 %882, label %1394 [
    i32 0, label %883
  ]

883:                                              ; preds = %881
  br label %1035

884:                                              ; preds = %549, %538
  %885 = load ptr, ptr %7, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %885, i32 0, i32 8
  %887 = getelementptr inbounds [3 x i8], ptr %886, i64 0, i64 0
  %888 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %887)
  %889 = icmp eq i32 1, %888
  br i1 %889, label %890, label %1025

890:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  %891 = load ptr, ptr %6, align 8, !tbaa !5
  %892 = load i32, ptr %10, align 4, !tbaa !9
  call void @libxsmm_spgemm_max_mn_blocking_factors_x86(ptr noundef %891, i32 noundef %892, ptr noundef %44, ptr noundef %45)
  %893 = load i32, ptr %11, align 4, !tbaa !9
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %895, label %920

895:                                              ; preds = %890
  %896 = load ptr, ptr %6, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %896, i32 0, i32 6
  %898 = load i32, ptr %897, align 4, !tbaa !15
  %899 = icmp ult i32 %898, 1101
  br i1 %899, label %900, label %904

900:                                              ; preds = %895
  store i32 15, ptr %21, align 4, !tbaa !9
  store i32 15, ptr %22, align 4, !tbaa !9
  %901 = load ptr, ptr %6, align 8, !tbaa !5
  %902 = load i32, ptr %22, align 4, !tbaa !9
  %903 = load i32, ptr %11, align 4, !tbaa !9
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef %901, i32 noundef %902, i32 noundef %903, i32 noundef 1)
  br label %919

904:                                              ; preds = %895
  %905 = load ptr, ptr %6, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %907 = load i32, ptr %906, align 4, !tbaa !28
  %908 = load i32, ptr %21, align 4, !tbaa !9
  %909 = load i32, ptr %14, align 4, !tbaa !9
  %910 = load i32, ptr %11, align 4, !tbaa !9
  %911 = sub i32 %909, %910
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %905, i32 noundef %907, i32 noundef %908, i32 noundef %911, i32 noundef 1)
  %912 = load ptr, ptr %6, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %914 = load i32, ptr %913, align 4, !tbaa !28
  %915 = load i32, ptr %22, align 4, !tbaa !9
  %916 = load i32, ptr %14, align 4, !tbaa !9
  %917 = load i32, ptr %11, align 4, !tbaa !9
  %918 = sub i32 %916, %917
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %912, i32 noundef %914, i32 noundef %915, i32 noundef %918, i32 noundef 1)
  br label %919

919:                                              ; preds = %904, %900
  br label %920

920:                                              ; preds = %919, %890
  %921 = load i32, ptr %35, align 4, !tbaa !9
  %922 = icmp ugt i32 %921, 0
  br i1 %922, label %923, label %967

923:                                              ; preds = %920
  %924 = load ptr, ptr %6, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %924, i32 0, i32 6
  %926 = load i32, ptr %925, align 4, !tbaa !15
  %927 = icmp ult i32 %926, 1101
  br i1 %927, label %928, label %931

928:                                              ; preds = %923
  store i32 14, ptr %23, align 4, !tbaa !9
  %929 = load ptr, ptr %6, align 8, !tbaa !5
  %930 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef %929, i32 noundef %930, i32 noundef 1, i32 noundef 1)
  br label %938

931:                                              ; preds = %923
  %932 = load ptr, ptr %6, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 23
  %934 = load i32, ptr %933, align 4, !tbaa !28
  %935 = load i32, ptr %23, align 4, !tbaa !9
  %936 = load i32, ptr %14, align 4, !tbaa !9
  %937 = sub i32 %936, 1
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %932, i32 noundef %934, i32 noundef %935, i32 noundef %937, i32 noundef 1)
  br label %938

938:                                              ; preds = %931, %928
  %939 = load i32, ptr %12, align 4, !tbaa !9
  %940 = load i32, ptr %44, align 4, !tbaa !9
  %941 = icmp ule i32 %939, %940
  br i1 %941, label %942, label %949

942:                                              ; preds = %938
  %943 = load i32, ptr %12, align 4, !tbaa !9
  %944 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %943, ptr %944, align 4, !tbaa !9
  %945 = load i32, ptr %12, align 4, !tbaa !9
  %946 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %945, ptr %946, align 4, !tbaa !9
  %947 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 0, ptr %947, align 4, !tbaa !9
  %948 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 0, ptr %948, align 4, !tbaa !9
  br label %966

949:                                              ; preds = %938
  %950 = load i32, ptr %12, align 4, !tbaa !9
  %951 = load i32, ptr %12, align 4, !tbaa !9
  %952 = load i32, ptr %44, align 4, !tbaa !9
  %953 = urem i32 %951, %952
  %954 = sub i32 %950, %953
  %955 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %954, ptr %955, align 4, !tbaa !9
  %956 = load i32, ptr %44, align 4, !tbaa !9
  %957 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %956, ptr %957, align 4, !tbaa !9
  %958 = load i32, ptr %12, align 4, !tbaa !9
  %959 = load i32, ptr %44, align 4, !tbaa !9
  %960 = urem i32 %958, %959
  %961 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 %960, ptr %961, align 4, !tbaa !9
  %962 = load i32, ptr %12, align 4, !tbaa !9
  %963 = load i32, ptr %44, align 4, !tbaa !9
  %964 = urem i32 %962, %963
  %965 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %964, ptr %965, align 4, !tbaa !9
  br label %966

966:                                              ; preds = %949, %942
  br label %1024

967:                                              ; preds = %920
  %968 = load i32, ptr %12, align 4, !tbaa !9
  %969 = load i32, ptr %44, align 4, !tbaa !9
  %970 = icmp ule i32 %968, %969
  br i1 %970, label %971, label %978

971:                                              ; preds = %967
  %972 = load i32, ptr %12, align 4, !tbaa !9
  %973 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %972, ptr %973, align 4, !tbaa !9
  %974 = load i32, ptr %12, align 4, !tbaa !9
  %975 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %974, ptr %975, align 4, !tbaa !9
  %976 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 0, ptr %976, align 4, !tbaa !9
  %977 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 0, ptr %977, align 4, !tbaa !9
  br label %1023

978:                                              ; preds = %967
  %979 = load i32, ptr %12, align 4, !tbaa !9
  %980 = load i32, ptr %12, align 4, !tbaa !9
  %981 = load i32, ptr %44, align 4, !tbaa !9
  %982 = urem i32 %980, %981
  %983 = sub i32 %979, %982
  %984 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %983, ptr %984, align 4, !tbaa !9
  %985 = load i32, ptr %44, align 4, !tbaa !9
  %986 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %985, ptr %986, align 4, !tbaa !9
  %987 = load i32, ptr %12, align 4, !tbaa !9
  %988 = load i32, ptr %44, align 4, !tbaa !9
  %989 = urem i32 %987, %988
  %990 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 %989, ptr %990, align 4, !tbaa !9
  %991 = load i32, ptr %12, align 4, !tbaa !9
  %992 = load i32, ptr %44, align 4, !tbaa !9
  %993 = urem i32 %991, %992
  %994 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %993, ptr %994, align 4, !tbaa !9
  %995 = load i32, ptr %11, align 4, !tbaa !9
  %996 = icmp ugt i32 %995, 0
  br i1 %996, label %997, label %1022

997:                                              ; preds = %978
  %998 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  %999 = load i32, ptr %998, align 4, !tbaa !9
  %1000 = icmp eq i32 %999, 0
  br i1 %1000, label %1001, label %1021

1001:                                             ; preds = %997
  %1002 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  %1003 = load i32, ptr %1002, align 4, !tbaa !9
  %1004 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  %1005 = load i32, ptr %1004, align 4, !tbaa !9
  %1006 = icmp ne i32 %1003, %1005
  br i1 %1006, label %1007, label %1020

1007:                                             ; preds = %1001
  %1008 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = sub i32 %1009, %1011
  %1013 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 0
  store i32 %1012, ptr %1013, align 4, !tbaa !9
  %1014 = load i32, ptr %44, align 4, !tbaa !9
  %1015 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %1014, ptr %1015, align 4, !tbaa !9
  %1016 = load i32, ptr %44, align 4, !tbaa !9
  %1017 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 1
  store i32 %1016, ptr %1017, align 4, !tbaa !9
  %1018 = load i32, ptr %44, align 4, !tbaa !9
  %1019 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %1018, ptr %1019, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1007, %1001
  br label %1021

1021:                                             ; preds = %1020, %997
  br label %1022

1022:                                             ; preds = %1021, %978
  br label %1023

1023:                                             ; preds = %1022, %971
  br label %1024

1024:                                             ; preds = %1023, %966
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  br label %1034

1025:                                             ; preds = %884
  %1026 = load ptr, ptr %6, align 8, !tbaa !5
  %1027 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1028 = icmp ult i32 1, %1027
  br i1 %1028, label %1029, label %1031

1029:                                             ; preds = %1025
  %1030 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1032

1031:                                             ; preds = %1025
  br label %1032

1032:                                             ; preds = %1031, %1029
  %1033 = phi i32 [ %1030, %1029 ], [ 1, %1031 ]
  call void @libxsmm_handle_error(ptr noundef %1026, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 642, i32 noundef %1033)
  store i32 1, ptr %37, align 4
  br label %1394

1034:                                             ; preds = %1024
  br label %1035

1035:                                             ; preds = %1034, %883
  %1036 = load i32, ptr %26, align 4, !tbaa !9
  %1037 = icmp ugt i32 %1036, 0
  br i1 %1037, label %1038, label %1313

1038:                                             ; preds = %1035
  %1039 = load ptr, ptr %6, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %1041 = load i32, ptr %1040, align 8, !tbaa !37
  %1042 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 10
  %1043 = load i32, ptr %1042, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1039, i32 noundef %1041, i32 noundef %1043, i64 noundef 0)
  %1044 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_register_jump_back_label(ptr noundef %1044, ptr noundef %28)
  %1045 = load ptr, ptr %6, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 16
  %1047 = load i32, ptr %1046, align 8, !tbaa !41
  %1048 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 10
  %1049 = load i32, ptr %1048, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1045, i32 noundef %1047, i32 noundef %1049, i64 noundef 1)
  br label %1050

1050:                                             ; preds = %1267, %1038
  %1051 = load i32, ptr %15, align 4, !tbaa !9
  %1052 = load i32, ptr %12, align 4, !tbaa !9
  %1053 = icmp ne i32 %1051, %1052
  br i1 %1053, label %1054, label %1268

1054:                                             ; preds = %1050
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  store i32 0, ptr %47, align 4, !tbaa !9
  %1055 = load i32, ptr %16, align 4, !tbaa !9
  %1056 = icmp ugt i32 %1055, 1
  br i1 %1056, label %1057, label %1066

1057:                                             ; preds = %1054
  %1058 = load ptr, ptr %6, align 8, !tbaa !5
  %1059 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1060 = icmp ult i32 1, %1059
  br i1 %1060, label %1061, label %1063

1061:                                             ; preds = %1057
  %1062 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1064

1063:                                             ; preds = %1057
  br label %1064

1064:                                             ; preds = %1063, %1061
  %1065 = phi i32 [ %1062, %1061 ], [ 1, %1063 ]
  call void @libxsmm_handle_error(ptr noundef %1058, i32 noundef 90017, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 657, i32 noundef %1065)
  store i32 1, ptr %37, align 4
  br label %1265

1066:                                             ; preds = %1054
  %1067 = load i32, ptr %16, align 4, !tbaa !9
  %1068 = zext i32 %1067 to i64
  %1069 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 %1068
  %1070 = load i32, ptr %1069, align 4, !tbaa !9
  store i32 %1070, ptr %46, align 4, !tbaa !9
  %1071 = load i32, ptr %35, align 4, !tbaa !9
  %1072 = icmp ugt i32 %1071, 0
  br i1 %1072, label %1073, label %1074

1073:                                             ; preds = %1066
  store i32 0, ptr %47, align 4, !tbaa !9
  br label %1095

1074:                                             ; preds = %1066
  %1075 = load i32, ptr %11, align 4, !tbaa !9
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1088

1077:                                             ; preds = %1074
  %1078 = load i32, ptr %16, align 4, !tbaa !9
  %1079 = icmp eq i32 %1078, 0
  br i1 %1079, label %1080, label %1088

1080:                                             ; preds = %1077
  %1081 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  %1083 = icmp ugt i32 %1082, 0
  br i1 %1083, label %1084, label %1085

1084:                                             ; preds = %1080
  store i32 0, ptr %47, align 4, !tbaa !9
  br label %1087

1085:                                             ; preds = %1080
  %1086 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1086, ptr %47, align 4, !tbaa !9
  br label %1087

1087:                                             ; preds = %1085, %1084
  br label %1094

1088:                                             ; preds = %1077, %1074
  %1089 = load i32, ptr %11, align 4, !tbaa !9
  %1090 = icmp ne i32 %1089, 0
  br i1 %1090, label %1091, label %1093

1091:                                             ; preds = %1088
  %1092 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1092, ptr %47, align 4, !tbaa !9
  br label %1093

1093:                                             ; preds = %1091, %1088
  br label %1094

1094:                                             ; preds = %1093, %1087
  br label %1095

1095:                                             ; preds = %1094, %1073
  %1096 = load ptr, ptr %6, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %1098 = load i32, ptr %1097, align 8, !tbaa !37
  %1099 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  %1100 = load i32, ptr %1099, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1096, i32 noundef %1098, i32 noundef %1100, i64 noundef 0)
  %1101 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_register_jump_back_label(ptr noundef %1101, ptr noundef %28)
  %1102 = load ptr, ptr %6, align 8, !tbaa !5
  %1103 = load i32, ptr %30, align 4, !tbaa !9
  %1104 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  %1105 = load i32, ptr %1104, align 4, !tbaa !25
  %1106 = load i32, ptr %32, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1102, i32 noundef -1610350453, i32 noundef %1103, i32 noundef %1105, i32 noundef 4, i32 noundef 0, i32 noundef %1106, i32 noundef 0)
  %1107 = load ptr, ptr %6, align 8, !tbaa !5
  %1108 = load i32, ptr %30, align 4, !tbaa !9
  %1109 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  %1110 = load i32, ptr %1109, align 4, !tbaa !25
  %1111 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1107, i32 noundef -1610350453, i32 noundef %1108, i32 noundef %1110, i32 noundef 4, i32 noundef 4, i32 noundef %1111, i32 noundef 0)
  %1112 = load i32, ptr %20, align 4, !tbaa !9
  %1113 = icmp ugt i32 %1112, 0
  br i1 %1113, label %1114, label %1130

1114:                                             ; preds = %1095
  %1115 = load ptr, ptr %6, align 8, !tbaa !5
  %1116 = load ptr, ptr %7, align 8, !tbaa !5
  %1117 = load i32, ptr %15, align 4, !tbaa !9
  %1118 = load i32, ptr %16, align 4, !tbaa !9
  %1119 = zext i32 %1118 to i64
  %1120 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 %1119
  %1121 = load i32, ptr %1120, align 4, !tbaa !9
  %1122 = load i32, ptr %46, align 4, !tbaa !9
  %1123 = load i32, ptr %47, align 4, !tbaa !9
  %1124 = load i32, ptr %8, align 4, !tbaa !9
  %1125 = load i32, ptr %14, align 4, !tbaa !9
  %1126 = load i32, ptr %9, align 4, !tbaa !9
  %1127 = load i32, ptr %10, align 4, !tbaa !9
  %1128 = load i32, ptr %24, align 4, !tbaa !9
  %1129 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_kloop_amx(ptr noundef %1115, ptr noundef %28, ptr noundef %36, ptr noundef %29, ptr noundef %27, ptr noundef %1116, i32 noundef %1117, i32 noundef %1121, i32 noundef %1122, i32 noundef %1123, i32 noundef %1124, i32 noundef %1125, i32 noundef %1126, i32 noundef %1127, i32 noundef %1128, ptr noundef %1129)
  br label %1157

1130:                                             ; preds = %1095
  %1131 = load i32, ptr %20, align 4, !tbaa !9
  %1132 = icmp eq i32 %1131, 0
  br i1 %1132, label %1133, label %1147

1133:                                             ; preds = %1130
  %1134 = load ptr, ptr %6, align 8, !tbaa !5
  %1135 = load ptr, ptr %7, align 8, !tbaa !5
  %1136 = load i32, ptr %15, align 4, !tbaa !9
  %1137 = load i32, ptr %16, align 4, !tbaa !9
  %1138 = zext i32 %1137 to i64
  %1139 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 %1138
  %1140 = load i32, ptr %1139, align 4, !tbaa !9
  %1141 = load i32, ptr %46, align 4, !tbaa !9
  %1142 = load i32, ptr %47, align 4, !tbaa !9
  %1143 = load i32, ptr %8, align 4, !tbaa !9
  %1144 = load i32, ptr %14, align 4, !tbaa !9
  %1145 = load i32, ptr %9, align 4, !tbaa !9
  %1146 = load i32, ptr %10, align 4, !tbaa !9
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_kloop_bfdot_avx512(ptr noundef %1134, ptr noundef %28, ptr noundef %36, ptr noundef %29, ptr noundef %27, ptr noundef %1135, i32 noundef %1136, i32 noundef %1140, i32 noundef %1141, i32 noundef %1142, i32 noundef %1143, i32 noundef %1144, i32 noundef %1145, i32 noundef %1146)
  br label %1156

1147:                                             ; preds = %1130
  %1148 = load ptr, ptr %6, align 8, !tbaa !5
  %1149 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1150 = icmp ult i32 1, %1149
  br i1 %1150, label %1151, label %1153

1151:                                             ; preds = %1147
  %1152 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1154

1153:                                             ; preds = %1147
  br label %1154

1154:                                             ; preds = %1153, %1151
  %1155 = phi i32 [ %1152, %1151 ], [ 1, %1153 ]
  call void @libxsmm_handle_error(ptr noundef %1148, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef @.str.2, i32 noundef 717, i32 noundef %1155)
  store i32 1, ptr %37, align 4
  br label %1265

1156:                                             ; preds = %1133
  br label %1157

1157:                                             ; preds = %1156, %1114
  %1158 = load i32, ptr %35, align 4, !tbaa !9
  %1159 = icmp ugt i32 %1158, 0
  br i1 %1159, label %1160, label %1205

1160:                                             ; preds = %1157
  %1161 = load ptr, ptr %6, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 16
  %1163 = load i32, ptr %1162, align 8, !tbaa !41
  %1164 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 5
  %1165 = load i32, ptr %1164, align 4, !tbaa !21
  %1166 = load i32, ptr %10, align 4, !tbaa !9
  %1167 = zext i32 %1166 to i64
  %1168 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 5
  %1169 = load i32, ptr %1168, align 4, !tbaa !42
  %1170 = zext i32 %1169 to i64
  %1171 = mul nsw i64 %1167, %1170
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1161, i32 noundef %1163, i32 noundef %1165, i64 noundef %1171)
  %1172 = load ptr, ptr %6, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 16
  %1174 = load i32, ptr %1173, align 8, !tbaa !41
  %1175 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  %1176 = load i32, ptr %1175, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1172, i32 noundef %1174, i32 noundef %1176, i64 noundef 1)
  %1177 = load ptr, ptr %6, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 18
  %1179 = load i32, ptr %1178, align 8, !tbaa !43
  %1180 = load i32, ptr %34, align 4, !tbaa !9
  %1181 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  %1182 = load i32, ptr %1181, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1177, i32 noundef %1179, i32 noundef %1180, i32 noundef %1182)
  %1183 = load ptr, ptr %6, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 19
  %1185 = load i32, ptr %1184, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_jump_back_to_label(ptr noundef %1183, i32 noundef %1185, ptr noundef %28)
  %1186 = load ptr, ptr %6, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %1188 = load i32, ptr %1187, align 8, !tbaa !37
  %1189 = load i32, ptr %34, align 4, !tbaa !9
  %1190 = load i32, ptr %32, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1186, i32 noundef %1188, i32 noundef %1189, i32 noundef %1190)
  %1191 = load ptr, ptr %6, align 8, !tbaa !5
  %1192 = load i32, ptr %32, align 4, !tbaa !9
  %1193 = load i32, ptr %10, align 4, !tbaa !9
  %1194 = zext i32 %1193 to i64
  %1195 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 5
  %1196 = load i32, ptr %1195, align 4, !tbaa !42
  %1197 = zext i32 %1196 to i64
  %1198 = mul nsw i64 %1194, %1197
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1191, i32 noundef 30003, i32 noundef %1192, i64 noundef %1198)
  %1199 = load ptr, ptr %6, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 17
  %1201 = load i32, ptr %1200, align 4, !tbaa !45
  %1202 = load i32, ptr %32, align 4, !tbaa !9
  %1203 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 5
  %1204 = load i32, ptr %1203, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1199, i32 noundef %1201, i32 noundef %1202, i32 noundef %1204)
  br label %1256

1205:                                             ; preds = %1157
  %1206 = load ptr, ptr %6, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 16
  %1208 = load i32, ptr %1207, align 8, !tbaa !41
  %1209 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 5
  %1210 = load i32, ptr %1209, align 4, !tbaa !21
  %1211 = load i32, ptr %10, align 4, !tbaa !9
  %1212 = zext i32 %1211 to i64
  %1213 = load i32, ptr %8, align 4, !tbaa !9
  %1214 = zext i32 %1213 to i64
  %1215 = mul nsw i64 %1212, %1214
  %1216 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 5
  %1217 = load i32, ptr %1216, align 4, !tbaa !42
  %1218 = zext i32 %1217 to i64
  %1219 = mul nsw i64 %1215, %1218
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1206, i32 noundef %1208, i32 noundef %1210, i64 noundef %1219)
  %1220 = load ptr, ptr %6, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 16
  %1222 = load i32, ptr %1221, align 8, !tbaa !41
  %1223 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  %1224 = load i32, ptr %1223, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1220, i32 noundef %1222, i32 noundef %1224, i64 noundef 1)
  %1225 = load ptr, ptr %6, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 18
  %1227 = load i32, ptr %1226, align 8, !tbaa !43
  %1228 = load i32, ptr %34, align 4, !tbaa !9
  %1229 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 11
  %1230 = load i32, ptr %1229, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1225, i32 noundef %1227, i32 noundef %1228, i32 noundef %1230)
  %1231 = load ptr, ptr %6, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 19
  %1233 = load i32, ptr %1232, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_jump_back_to_label(ptr noundef %1231, i32 noundef %1233, ptr noundef %28)
  %1234 = load ptr, ptr %6, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 20
  %1236 = load i32, ptr %1235, align 8, !tbaa !37
  %1237 = load i32, ptr %34, align 4, !tbaa !9
  %1238 = load i32, ptr %32, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1234, i32 noundef %1236, i32 noundef %1237, i32 noundef %1238)
  %1239 = load ptr, ptr %6, align 8, !tbaa !5
  %1240 = load i32, ptr %32, align 4, !tbaa !9
  %1241 = load i32, ptr %10, align 4, !tbaa !9
  %1242 = zext i32 %1241 to i64
  %1243 = load i32, ptr %8, align 4, !tbaa !9
  %1244 = zext i32 %1243 to i64
  %1245 = mul nsw i64 %1242, %1244
  %1246 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 5
  %1247 = load i32, ptr %1246, align 4, !tbaa !42
  %1248 = zext i32 %1247 to i64
  %1249 = mul nsw i64 %1245, %1248
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1239, i32 noundef 30003, i32 noundef %1240, i64 noundef %1249)
  %1250 = load ptr, ptr %6, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 17
  %1252 = load i32, ptr %1251, align 4, !tbaa !45
  %1253 = load i32, ptr %32, align 4, !tbaa !9
  %1254 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 5
  %1255 = load i32, ptr %1254, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1250, i32 noundef %1252, i32 noundef %1253, i32 noundef %1255)
  br label %1256

1256:                                             ; preds = %1205, %1160
  %1257 = load i32, ptr %16, align 4, !tbaa !9
  %1258 = zext i32 %1257 to i64
  %1259 = getelementptr inbounds [2 x i32], ptr %19, i64 0, i64 %1258
  %1260 = load i32, ptr %1259, align 4, !tbaa !9
  %1261 = load i32, ptr %15, align 4, !tbaa !9
  %1262 = add i32 %1261, %1260
  store i32 %1262, ptr %15, align 4, !tbaa !9
  %1263 = load i32, ptr %16, align 4, !tbaa !9
  %1264 = add i32 %1263, 1
  store i32 %1264, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %37, align 4
  br label %1265

1265:                                             ; preds = %1256, %1154, %1064
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  %1266 = load i32, ptr %37, align 4
  switch i32 %1266, label %1394 [
    i32 0, label %1267
  ]

1267:                                             ; preds = %1265
  br label %1050, !llvm.loop !46

1268:                                             ; preds = %1050
  %1269 = load ptr, ptr %6, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 16
  %1271 = load i32, ptr %1270, align 8, !tbaa !41
  %1272 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 5
  %1273 = load i32, ptr %1272, align 4, !tbaa !21
  %1274 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 5
  %1275 = load i32, ptr %1274, align 4, !tbaa !42
  %1276 = zext i32 %1275 to i64
  %1277 = load i32, ptr %8, align 4, !tbaa !9
  %1278 = zext i32 %1277 to i64
  %1279 = mul nsw i64 %1276, %1278
  %1280 = load ptr, ptr %7, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1280, i32 0, i32 5
  %1282 = load i32, ptr %1281, align 1, !tbaa !48
  %1283 = zext i32 %1282 to i64
  %1284 = mul nsw i64 %1279, %1283
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1269, i32 noundef %1271, i32 noundef %1273, i64 noundef %1284)
  %1285 = load ptr, ptr %6, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 16
  %1287 = load i32, ptr %1286, align 8, !tbaa !41
  %1288 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 1
  %1289 = load i32, ptr %1288, align 4, !tbaa !19
  %1290 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 3
  %1291 = load i32, ptr %1290, align 4, !tbaa !40
  %1292 = zext i32 %1291 to i64
  %1293 = load i32, ptr %8, align 4, !tbaa !9
  %1294 = zext i32 %1293 to i64
  %1295 = mul nsw i64 %1292, %1294
  %1296 = load ptr, ptr %7, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1296, i32 0, i32 3
  %1298 = load i32, ptr %1297, align 1, !tbaa !49
  %1299 = zext i32 %1298 to i64
  %1300 = mul nsw i64 %1295, %1299
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1285, i32 noundef %1287, i32 noundef %1289, i64 noundef %1300)
  %1301 = load ptr, ptr %6, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 18
  %1303 = load i32, ptr %1302, align 8, !tbaa !43
  %1304 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 10
  %1305 = load i32, ptr %1304, align 4, !tbaa !24
  %1306 = load ptr, ptr %7, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1306, i32 0, i32 0
  %1308 = load i32, ptr %1307, align 1, !tbaa !50
  %1309 = zext i32 %1308 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1301, i32 noundef %1303, i32 noundef %1305, i64 noundef %1309)
  %1310 = load ptr, ptr %6, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %27, i32 0, i32 19
  %1312 = load i32, ptr %1311, align 4, !tbaa !44
  call void @libxsmm_x86_instruction_jump_back_to_label(ptr noundef %1310, i32 noundef %1312, ptr noundef %28)
  br label %1313

1313:                                             ; preds = %1268, %1035
  %1314 = load i32, ptr %20, align 4, !tbaa !9
  %1315 = icmp ugt i32 %1314, 0
  br i1 %1315, label %1316, label %1388

1316:                                             ; preds = %1313
  %1317 = load i32, ptr %26, align 4, !tbaa !9
  %1318 = icmp ugt i32 %1317, 0
  br i1 %1318, label %1319, label %1338

1319:                                             ; preds = %1316
  %1320 = load ptr, ptr %7, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1320, i32 0, i32 8
  %1322 = getelementptr inbounds [3 x i8], ptr %1321, i64 0, i64 0
  %1323 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1322)
  %1324 = icmp eq i32 2, %1323
  br i1 %1324, label %1325, label %1327

1325:                                             ; preds = %1319
  %1326 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1326, i32 noundef 30000, i32 noundef 4, i64 noundef 8320)
  br label %1337

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

1333:                                             ; preds = %1327
  %1334 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1334, i32 noundef 30000, i32 noundef 4, i64 noundef 128)
  br label %1336

1335:                                             ; preds = %1327
  br label %1336

1336:                                             ; preds = %1335, %1333
  br label %1337

1337:                                             ; preds = %1336, %1325
  br label %1338

1338:                                             ; preds = %1337, %1316
  %1339 = load ptr, ptr %7, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1339, i32 0, i32 6
  %1341 = load i32, ptr %1340, align 1, !tbaa !11
  %1342 = and i32 64, %1341
  %1343 = icmp eq i32 %1342, 0
  br i1 %1343, label %1344, label %1356

1344:                                             ; preds = %1338
  %1345 = load ptr, ptr %7, align 8, !tbaa !5
  %1346 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1345, i32 0, i32 6
  %1347 = load i32, ptr %1346, align 1, !tbaa !11
  %1348 = and i32 128, %1347
  %1349 = icmp eq i32 %1348, 0
  br i1 %1349, label %1350, label %1356

1350:                                             ; preds = %1344
  %1351 = load ptr, ptr %6, align 8, !tbaa !5
  %1352 = load ptr, ptr %6, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1352, i32 0, i32 6
  %1354 = load i32, ptr %1353, align 4, !tbaa !15
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %1351, i32 noundef 1001, i32 noundef %1354, i32 noundef 50001, i32 noundef 4, i32 noundef 0, ptr noundef null)
  %1355 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1355, i32 noundef 30000, i32 noundef 4, i64 noundef 64)
  br label %1387

1356:                                             ; preds = %1344, %1338
  %1357 = load ptr, ptr %7, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1357, i32 0, i32 6
  %1359 = load i32, ptr %1358, align 1, !tbaa !11
  %1360 = and i32 64, %1359
  %1361 = icmp eq i32 %1360, 0
  br i1 %1361, label %1362, label %1386

1362:                                             ; preds = %1356
  %1363 = load ptr, ptr %7, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1363, i32 0, i32 6
  %1365 = load i32, ptr %1364, align 1, !tbaa !11
  %1366 = and i32 128, %1365
  %1367 = icmp ne i32 %1366, 0
  br i1 %1367, label %1368, label %1386

1368:                                             ; preds = %1362
  call void @llvm.lifetime.start.p0(i64 2101248, ptr %48) #4
  call void @libxsmm_reset_jump_label_tracker(ptr noundef %48)
  %1369 = load ptr, ptr %6, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 0
  %1371 = load i32, ptr %1370, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1369, i32 noundef 30002, i32 noundef %1371, i64 noundef 0)
  %1372 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %1372, i32 noundef 30101, i32 noundef 0, ptr noundef %48)
  %1373 = load ptr, ptr %6, align 8, !tbaa !5
  %1374 = load ptr, ptr %6, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1374, i32 0, i32 6
  %1376 = load i32, ptr %1375, align 4, !tbaa !15
  %1377 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %29, i32 0, i32 0
  %1378 = load i32, ptr %1377, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %1373, i32 noundef 1001, i32 noundef %1376, i32 noundef 50001, i32 noundef %1378, i32 noundef 0, ptr noundef null)
  %1379 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %1379, i32 noundef 30108, i32 noundef 1, ptr noundef %48)
  %1380 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %1380, i32 noundef 0, ptr noundef %48)
  %1381 = load ptr, ptr %6, align 8, !tbaa !5
  %1382 = load ptr, ptr %6, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1382, i32 0, i32 6
  %1384 = load i32, ptr %1383, align 4, !tbaa !15
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %1381, i32 noundef 1002, i32 noundef %1384, i32 noundef 50003, i32 noundef 127, i32 noundef 0, ptr noundef null)
  %1385 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %1385, i32 noundef 1, ptr noundef %48)
  call void @llvm.lifetime.end.p0(i64 2101248, ptr %48) #4
  br label %1386

1386:                                             ; preds = %1368, %1362, %1356
  br label %1387

1387:                                             ; preds = %1386, %1350
  br label %1388

1388:                                             ; preds = %1387, %1313
  %1389 = load ptr, ptr %6, align 8, !tbaa !5
  %1390 = load ptr, ptr %7, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1390, i32 0, i32 7
  %1392 = load i8, ptr %1391, align 1, !tbaa !36
  %1393 = zext i8 %1392 to i32
  call void @libxsmm_x86_instruction_close_stream_gemm(ptr noundef %1389, ptr noundef %29, i32 noundef 0, i32 noundef %1393)
  store i32 0, ptr %37, align 4
  br label %1394

1394:                                             ; preds = %1388, %1265, %1032, %881, %352, %334, %320, %305, %282, %272, %253, %235, %220, %191, %181, %162, %139, %124, %97
  call void @llvm.lifetime.end.p0(i64 2101248, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 132, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 2052, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 688, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  %1395 = load i32, ptr %37, align 4
  switch i32 %1395, label %1397 [
    i32 0, label %1396
    i32 1, label %1396
  ]

1396:                                             ; preds = %1394, %1394
  ret void

1397:                                             ; preds = %1394
  unreachable
}

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

declare void @libxsmm_reset_jump_label_tracker(ptr noundef) #2

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

declare void @libxsmm_reset_x86_gp_reg_mapping(ptr noundef) #2

declare void @libxsmm_reset_loop_label_tracker(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #2

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

declare void @libxsmm_x86_instruction_register_jump_back_label(ptr noundef, ptr noundef) #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 24}
!12 = !{!"libxsmm_gemm_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 28, !7, i64 29, !7, i64 32, !13, i64 33, !13, i64 41, !7, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !14, i64 62, !14, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !14, i64 70, !14, i64 72, !14, i64 74, !14, i64 76, !14, i64 78, !14, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !7, i64 94}
!13 = !{!"long long", !7, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!16, !10, i64 28}
!16 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!17 = !{!18, !10, i64 0}
!18 = !{!"libxsmm_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128}
!19 = !{!18, !10, i64 4}
!20 = !{!18, !10, i64 12}
!21 = !{!18, !10, i64 20}
!22 = !{!18, !10, i64 24}
!23 = !{!18, !10, i64 32}
!24 = !{!18, !10, i64 40}
!25 = !{!18, !10, i64 44}
!26 = !{!18, !10, i64 48}
!27 = !{!18, !10, i64 88}
!28 = !{!18, !10, i64 92}
!29 = !{!18, !10, i64 96}
!30 = !{!18, !10, i64 100}
!31 = !{!18, !10, i64 104}
!32 = !{!18, !10, i64 108}
!33 = !{!18, !10, i64 68}
!34 = !{!18, !10, i64 72}
!35 = !{!18, !10, i64 76}
!36 = !{!12, !7, i64 28}
!37 = !{!38, !10, i64 80}
!38 = !{!"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, !39, 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}
!39 = !{!"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}
!40 = !{!38, !10, i64 12}
!41 = !{!38, !10, i64 64}
!42 = !{!38, !10, i64 20}
!43 = !{!38, !10, i64 72}
!44 = !{!38, !10, i64 76}
!45 = !{!38, !10, i64 68}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!12, !10, i64 20}
!49 = !{!12, !10, i64 12}
!50 = !{!12, !10, i64 0}


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

%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_loop_label_tracker_struct = type { [512 x i32], i32 }
%struct.libxsmm_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_jump_label_tracker_struct = type { [512 x i32], [512 x %struct.libxsmm_jump_source_struct] }
%struct.libxsmm_jump_source_struct = type { [512 x i32], [512 x i32], i32 }

@.str.2 = external hidden unnamed_addr constant [112 x i8], align 1
@__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx = external hidden unnamed_addr constant [65 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #1 {
  %6 = alloca [2 x i32], align 8
  %7 = alloca [2 x i32], align 8
  %8 = alloca [2 x i32], align 8
  %9 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %10 = alloca %struct.libxsmm_loop_label_tracker_struct, align 4
  %11 = alloca %struct.libxsmm_gp_reg_mapping_struct, align 4
  %12 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  %13 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #3
  store i64 0, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #3
  store i64 0, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #3
  store i64 0, ptr %8, align 8
  %19 = getelementptr inbounds i8, ptr %1, i64 24
  %20 = load i32, ptr %19, align 1, !tbaa !5
  %21 = and i32 %20, 192
  call void @llvm.lifetime.start.p0(i64 688, ptr nonnull %9) #3
  call void @llvm.lifetime.start.p0(i64 2052, ptr nonnull %10) #3
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %11) #3
  call void @llvm.lifetime.start.p0(i64 2101248, ptr nonnull %12) #3
  call void @libxsmm_reset_jump_label_tracker(ptr noundef nonnull %12) #3
  %22 = load i32, ptr %19, align 1, !tbaa !5
  %23 = and i32 %22, 1
  %.not371.not = icmp ne i32 %23, 0
  %24 = and i32 %22, 2
  %.not372 = icmp eq i32 %24, 0
  br i1 %.not372, label %30, label %25

25:                                               ; preds = %5
  %26 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %27 = icmp ugt i32 %26, 1
  %28 = load i32, ptr @libxsmm_verbosity, align 4
  %29 = select i1 %27, i32 %28, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 269, i32 noundef %29) #3
  br label %499

30:                                               ; preds = %5
  %31 = getelementptr inbounds i8, ptr %1, i64 29
  %32 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %31) #3
  %33 = icmp eq i32 %32, 12
  br i1 %33, label %34, label %74

34:                                               ; preds = %30
  %35 = load i32, ptr %19, align 1, !tbaa !5
  %36 = and i32 %35, 2049
  %or.cond402 = icmp eq i32 %36, 0
  br i1 %or.cond402, label %37, label %42

37:                                               ; preds = %34
  %38 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %39 = icmp ugt i32 %38, 1
  %40 = load i32, ptr @libxsmm_verbosity, align 4
  %41 = select i1 %39, i32 %40, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 276, i32 noundef %41) #3
  br label %499

42:                                               ; preds = %34
  %43 = and i32 %35, 4096
  %.not378 = icmp eq i32 %43, 0
  br i1 %.not378, label %49, label %44

44:                                               ; preds = %42
  %45 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %46 = icmp ugt i32 %45, 1
  %47 = load i32, ptr @libxsmm_verbosity, align 4
  %48 = select i1 %46, i32 %47, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 280, i32 noundef %48) #3
  br label %499

49:                                               ; preds = %42
  %50 = getelementptr inbounds i8, ptr %0, i64 28
  %51 = load i32, ptr %50, align 4, !tbaa !13
  %52 = and i32 %51, -2
  %or.cond403 = icmp eq i32 %52, 1102
  br i1 %or.cond403, label %53, label %60

53:                                               ; preds = %49
  %54 = and i32 %3, 3
  %.not380 = icmp eq i32 %54, 0
  br i1 %.not380, label %152, label %55

55:                                               ; preds = %53
  %56 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %57 = icmp ugt i32 %56, 1
  %58 = load i32, ptr @libxsmm_verbosity, align 4
  %59 = select i1 %57, i32 %58, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 287, i32 noundef %59) #3
  br label %499

60:                                               ; preds = %49
  %61 = icmp ugt i32 %51, 1103
  br i1 %61, label %62, label %69

62:                                               ; preds = %60
  %63 = and i32 %3, 3
  %.not379 = icmp eq i32 %63, 0
  br i1 %.not379, label %152, label %64

64:                                               ; preds = %62
  %65 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %66 = icmp ugt i32 %65, 1
  %67 = load i32, ptr @libxsmm_verbosity, align 4
  %68 = select i1 %66, i32 %67, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 294, i32 noundef %68) #3
  br label %499

69:                                               ; preds = %60
  %70 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %71 = icmp ugt i32 %70, 1
  %72 = load i32, ptr @libxsmm_verbosity, align 4
  %73 = select i1 %71, i32 %72, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90006, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 298, i32 noundef %73) #3
  br label %499

74:                                               ; preds = %30
  %75 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %31) #3
  %76 = icmp eq i32 %75, 2
  br i1 %76, label %77, label %117

77:                                               ; preds = %74
  %78 = load i32, ptr %19, align 1, !tbaa !5
  %79 = and i32 %78, 2049
  %or.cond405 = icmp eq i32 %79, 0
  br i1 %or.cond405, label %80, label %85

80:                                               ; preds = %77
  %81 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %82 = icmp ugt i32 %81, 1
  %83 = load i32, ptr @libxsmm_verbosity, align 4
  %84 = select i1 %82, i32 %83, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 304, i32 noundef %84) #3
  br label %499

85:                                               ; preds = %77
  %86 = and i32 %78, 4096
  %.not375 = icmp eq i32 %86, 0
  br i1 %.not375, label %92, label %87

87:                                               ; preds = %85
  %88 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %89 = icmp ugt i32 %88, 1
  %90 = load i32, ptr @libxsmm_verbosity, align 4
  %91 = select i1 %89, i32 %90, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 308, i32 noundef %91) #3
  br label %499

92:                                               ; preds = %85
  %93 = getelementptr inbounds i8, ptr %0, i64 28
  %94 = load i32, ptr %93, align 4, !tbaa !13
  %95 = icmp eq i32 %94, 1103
  br i1 %95, label %96, label %103

96:                                               ; preds = %92
  %97 = and i32 %3, 1
  %.not377 = icmp eq i32 %97, 0
  br i1 %.not377, label %152, label %98

98:                                               ; preds = %96
  %99 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %100 = icmp ugt i32 %99, 1
  %101 = load i32, ptr @libxsmm_verbosity, align 4
  %102 = select i1 %100, i32 %101, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 315, i32 noundef %102) #3
  br label %499

103:                                              ; preds = %92
  %104 = icmp ugt i32 %94, 1103
  br i1 %104, label %105, label %112

105:                                              ; preds = %103
  %106 = and i32 %3, 1
  %.not376 = icmp eq i32 %106, 0
  br i1 %.not376, label %152, label %107

107:                                              ; preds = %105
  %108 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %109 = icmp ugt i32 %108, 1
  %110 = load i32, ptr @libxsmm_verbosity, align 4
  %111 = select i1 %109, i32 %110, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 322, i32 noundef %111) #3
  br label %499

112:                                              ; preds = %103
  %113 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %114 = icmp ugt i32 %113, 1
  %115 = load i32, ptr @libxsmm_verbosity, align 4
  %116 = select i1 %114, i32 %115, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90006, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 326, i32 noundef %116) #3
  br label %499

117:                                              ; preds = %74
  %118 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %31) #3
  %119 = icmp eq i32 %118, 1
  br i1 %119, label %120, label %147

120:                                              ; preds = %117
  %121 = load i32, ptr %19, align 1, !tbaa !5
  %122 = and i32 %121, 2048
  %.not373 = icmp eq i32 %122, 0
  br i1 %.not373, label %128, label %123

123:                                              ; preds = %120
  %124 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %125 = icmp ugt i32 %124, 1
  %126 = load i32, ptr @libxsmm_verbosity, align 4
  %127 = select i1 %125, i32 %126, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 332, i32 noundef %127) #3
  br label %499

128:                                              ; preds = %120
  %129 = and i32 %121, 4096
  %.not374 = icmp eq i32 %129, 0
  br i1 %.not374, label %135, label %130

130:                                              ; preds = %128
  %131 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %132 = icmp ugt i32 %131, 1
  %133 = load i32, ptr @libxsmm_verbosity, align 4
  %134 = select i1 %132, i32 %133, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 336, i32 noundef %134) #3
  br label %499

135:                                              ; preds = %128
  %136 = getelementptr inbounds i8, ptr %0, i64 28
  %137 = load i32, ptr %136, align 4, !tbaa !13
  %138 = icmp ult i32 %137, 1006
  br i1 %138, label %139, label %144

139:                                              ; preds = %135
  %140 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %141 = icmp ugt i32 %140, 1
  %142 = load i32, ptr @libxsmm_verbosity, align 4
  %143 = select i1 %141, i32 %142, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90006, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 341, i32 noundef %143) #3
  br label %499

144:                                              ; preds = %135
  %145 = icmp ult i32 %137, 1101
  br i1 %145, label %146, label %152

146:                                              ; preds = %144
  store i32 1006, ptr %136, align 4, !tbaa !13
  br label %152

147:                                              ; preds = %117
  %148 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %149 = icmp ugt i32 %148, 1
  %150 = load i32, ptr @libxsmm_verbosity, align 4
  %151 = select i1 %149, i32 %150, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 350, i32 noundef %151) #3
  br label %499

152:                                              ; preds = %144, %146, %105, %96, %53, %62
  %.0357 = phi i32 [ 4, %53 ], [ 4, %62 ], [ 2, %96 ], [ 2, %105 ], [ 1, %146 ], [ 1, %144 ]
  %153 = phi i1 [ false, %53 ], [ true, %62 ], [ false, %96 ], [ true, %105 ], [ false, %146 ], [ false, %144 ]
  %.0355 = phi i32 [ 0, %53 ], [ 1, %62 ], [ 0, %96 ], [ 1, %105 ], [ 0, %146 ], [ 0, %144 ]
  %.1 = phi i32 [ 16, %53 ], [ 16, %62 ], [ 16, %96 ], [ 16, %105 ], [ 8, %146 ], [ 16, %144 ]
  br i1 %.not371.not, label %160, label %154

154:                                              ; preds = %152
  %155 = add nsw i32 %.1, -1
  %156 = and i32 %155, %2
  %157 = udiv i32 %2, %.1
  %.not381 = icmp ne i32 %156, 0
  %158 = zext i1 %.not381 to i32
  %159 = add nuw nsw i32 %157, %158
  br label %164

160:                                              ; preds = %152
  %161 = udiv i32 %3, %.0357
  %162 = add nsw i32 %.1, -1
  %163 = and i32 %161, %162
  br label %164

164:                                              ; preds = %160, %154
  %.0346 = phi i32 [ %159, %154 ], [ %2, %160 ]
  %.0345 = phi i32 [ %156, %154 ], [ %163, %160 ]
  call void @libxsmm_reset_x86_gp_reg_mapping(ptr noundef nonnull %11) #3
  store i32 7, ptr %11, align 4, !tbaa !16
  %165 = getelementptr inbounds i8, ptr %11, i64 4
  store i32 7, ptr %165, align 4, !tbaa !18
  %166 = getelementptr inbounds i8, ptr %11, i64 12
  store i32 6, ptr %166, align 4, !tbaa !19
  %167 = getelementptr inbounds i8, ptr %11, i64 20
  store i32 2, ptr %167, align 4, !tbaa !20
  %168 = getelementptr inbounds i8, ptr %11, i64 24
  store i32 1, ptr %168, align 4, !tbaa !21
  %169 = getelementptr inbounds i8, ptr %11, i64 32
  store i32 8, ptr %169, align 4, !tbaa !22
  %170 = getelementptr inbounds i8, ptr %11, i64 40
  store i32 12, ptr %170, align 4, !tbaa !23
  %171 = getelementptr inbounds i8, ptr %11, i64 44
  store i32 13, ptr %171, align 4, !tbaa !24
  %172 = getelementptr inbounds i8, ptr %11, i64 48
  store i32 14, ptr %172, align 4, !tbaa !25
  %173 = getelementptr inbounds i8, ptr %11, i64 88
  %174 = getelementptr inbounds i8, ptr %11, i64 92
  store <4 x i32> <i32 15, i32 11, i32 1, i32 10>, ptr %173, align 4, !tbaa !12
  %175 = getelementptr inbounds i8, ptr %11, i64 104
  store i32 0, ptr %175, align 4, !tbaa !26
  %176 = getelementptr inbounds i8, ptr %11, i64 108
  store i32 3, ptr %176, align 4, !tbaa !27
  %177 = getelementptr inbounds i8, ptr %11, i64 68
  store i32 11, ptr %177, align 4, !tbaa !28
  %178 = getelementptr inbounds i8, ptr %11, i64 72
  store i32 1, ptr %178, align 4, !tbaa !29
  %179 = getelementptr inbounds i8, ptr %11, i64 76
  store i32 8, ptr %179, align 4, !tbaa !30
  call void @libxsmm_reset_loop_label_tracker(ptr noundef nonnull %10) #3
  %180 = getelementptr inbounds i8, ptr %0, i64 28
  %181 = load i32, ptr %180, align 4, !tbaa !13
  call void @libxsmm_generator_gemm_init_micro_kernel_config(ptr noundef nonnull %9, i32 noundef %181, ptr noundef nonnull %1, i32 noundef 0) #3
  %182 = getelementptr inbounds i8, ptr %1, i64 28
  %183 = load i8, ptr %182, align 1, !tbaa !31
  %184 = zext i8 %183 to i32
  call void @libxsmm_x86_instruction_open_stream_gemm(ptr noundef nonnull %0, ptr noundef nonnull %11, i32 noundef 0, i32 noundef %184) #3
  br i1 %153, label %185, label %194

185:                                              ; preds = %164
  %186 = load i32, ptr %19, align 1, !tbaa !5
  %187 = trunc i32 %186 to i8
  %trunc = and i8 %187, -64
  switch i8 %trunc, label %194 [
    i8 0, label %188
    i8 64, label %190
  ]

188:                                              ; preds = %185
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 4, i64 noundef 64) #3
  %189 = load i32, ptr %180, align 4, !tbaa !13
  call void @libxsmm_x86_instruction_tile_control(ptr noundef nonnull %0, i32 noundef 1000, i32 noundef %189, i32 noundef 50002, i32 noundef 4, i32 noundef 0, ptr noundef null) #3
  br label %194

190:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 2101248, ptr nonnull %13) #3
  call void @libxsmm_reset_jump_label_tracker(ptr noundef nonnull %13) #3
  %191 = load i32, ptr %11, align 4, !tbaa !16
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30002, i32 noundef %191, i64 noundef 0) #3
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef nonnull %0, i32 noundef 30101, i32 noundef 0, ptr noundef nonnull %13) #3
  %192 = load i32, ptr %180, align 4, !tbaa !13
  %193 = load i32, ptr %11, align 4, !tbaa !16
  call void @libxsmm_x86_instruction_tile_control(ptr noundef nonnull %0, i32 noundef 1000, i32 noundef %192, i32 noundef 50002, i32 noundef %193, i32 noundef 0, ptr noundef null) #3
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef nonnull %0, i32 noundef 0, ptr noundef nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 2101248, ptr nonnull %13) #3
  br label %194

194:                                              ; preds = %185, %188, %190, %164
  %trunc440 = trunc nuw i32 %21 to i8
  switch i8 %trunc440, label %218 [
    i8 -64, label %195
    i8 0, label %195
  ]

195:                                              ; preds = %194, %194
  %196 = load i32, ptr %19, align 1, !tbaa !5
  %197 = and i32 %196, 16384
  %.not383 = icmp eq i32 %197, 0
  br i1 %.not383, label %218, label %198

198:                                              ; preds = %195
  %199 = load i32, ptr %11, align 4, !tbaa !16
  %200 = load i32, ptr %174, align 4, !tbaa !32
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef %199, i32 noundef %200) #3
  %201 = getelementptr inbounds i8, ptr %9, i64 80
  %202 = load i32, ptr %201, align 8, !tbaa !33
  %203 = load i32, ptr %174, align 4, !tbaa !32
  %204 = load i32, ptr %165, align 4, !tbaa !18
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %202, i32 noundef %203, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef %204, i32 noundef 0) #3
  %205 = load i32, ptr %201, align 8, !tbaa !33
  %206 = load i32, ptr %174, align 4, !tbaa !32
  %207 = load i32, ptr %166, align 4, !tbaa !19
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %205, i32 noundef %206, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %207, i32 noundef 0) #3
  %208 = load i32, ptr %201, align 8, !tbaa !33
  %209 = load i32, ptr %174, align 4, !tbaa !32
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %208, i32 noundef %209, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef 9, i32 noundef 0) #3
  %210 = load i32, ptr %201, align 8, !tbaa !33
  %211 = load i32, ptr %174, align 4, !tbaa !32
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %210, i32 noundef %211, i32 noundef 127, i32 noundef 0, i32 noundef 96, i32 noundef 10, i32 noundef 0) #3
  %212 = load i32, ptr %201, align 8, !tbaa !33
  %213 = load i32, ptr %174, align 4, !tbaa !32
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %212, i32 noundef %213, i32 noundef 127, i32 noundef 0, i32 noundef 104, i32 noundef 14, i32 noundef 0) #3
  %214 = load i32, ptr %201, align 8, !tbaa !33
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %214, i32 noundef 14, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef 14, i32 noundef 0) #3
  %215 = load i32, ptr %201, align 8, !tbaa !33
  %216 = load i32, ptr %174, align 4, !tbaa !32
  %217 = load i32, ptr %167, align 4, !tbaa !20
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %215, i32 noundef %216, i32 noundef 127, i32 noundef 0, i32 noundef 128, i32 noundef %217, i32 noundef 0) #3
  br label %218

218:                                              ; preds = %194, %198, %195
  %219 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %31) #3
  %220 = icmp eq i32 %219, 2
  br i1 %220, label %224, label %221

221:                                              ; preds = %218
  %222 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %31) #3
  %223 = icmp eq i32 %222, 12
  br i1 %223, label %224, label %332

224:                                              ; preds = %221, %218
  %225 = load i32, ptr %180, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #3
  %226 = icmp ult i32 %225, 1104
  %or.cond = or i1 %.not371.not, %226
  br i1 %or.cond, label %227, label %254

227:                                              ; preds = %224
  call void @libxsmm_spgemm_max_mn_blocking_factors_x86(ptr noundef nonnull %0, i32 noundef %4, ptr noundef nonnull %14, ptr noundef nonnull %15)
  br i1 %.not371.not, label %228, label %240

228:                                              ; preds = %227
  %229 = load i32, ptr %174, align 4, !tbaa !32
  %230 = add nsw i32 %.1, -1
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %229, i32 noundef 3, i32 noundef %230, i32 noundef 1) #3
  %231 = load i32, ptr %14, align 4, !tbaa !12
  %.not390 = icmp ugt i32 %.0346, %231
  br i1 %.not390, label %235, label %232

232:                                              ; preds = %228
  store i32 %.0346, ptr %8, align 8, !tbaa !12
  store i32 %.0346, ptr %7, align 8, !tbaa !12
  %233 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 0, ptr %233, align 4, !tbaa !12
  %234 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 0, ptr %234, align 4, !tbaa !12
  br label %280

235:                                              ; preds = %228
  %236 = urem i32 %.0346, %231
  %237 = sub i32 %.0346, %236
  store i32 %237, ptr %8, align 8, !tbaa !12
  store i32 %231, ptr %7, align 8, !tbaa !12
  %238 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 %236, ptr %238, align 4, !tbaa !12
  %239 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 %236, ptr %239, align 4, !tbaa !12
  br label %280

240:                                              ; preds = %227
  %241 = load i32, ptr %14, align 4, !tbaa !12
  %.not388 = icmp ugt i32 %.0346, %241
  br i1 %.not388, label %245, label %242

242:                                              ; preds = %240
  store i32 %.0346, ptr %8, align 8, !tbaa !12
  store i32 %.0346, ptr %7, align 8, !tbaa !12
  %243 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 0, ptr %243, align 4, !tbaa !12
  %244 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 0, ptr %244, align 4, !tbaa !12
  br label %280

245:                                              ; preds = %240
  %246 = urem i32 %.0346, %241
  %247 = sub i32 %.0346, %246
  store i32 %247, ptr %8, align 8, !tbaa !12
  store i32 %241, ptr %7, align 8, !tbaa !12
  %248 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 %246, ptr %248, align 4, !tbaa !12
  %249 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 %246, ptr %249, align 4, !tbaa !12
  %250 = icmp eq i32 %.0345, 0
  %251 = icmp ne i32 %246, 0
  %or.cond422 = select i1 %250, i1 true, i1 %251
  br i1 %or.cond422, label %280, label %252

252:                                              ; preds = %245
  %253 = sub i32 %247, %241
  store i32 %253, ptr %8, align 8, !tbaa !12
  store i32 %241, ptr %248, align 4, !tbaa !12
  store i32 %241, ptr %249, align 4, !tbaa !12
  br label %280

254:                                              ; preds = %224
  store i32 2, ptr %14, align 4, !tbaa !12
  %255 = icmp eq i32 %.0345, 0
  br i1 %255, label %256, label %266

256:                                              ; preds = %254
  %257 = icmp eq i32 %.0346, 1
  br i1 %257, label %258, label %259

258:                                              ; preds = %256
  store i32 1, ptr %14, align 4, !tbaa !12
  br label %259

259:                                              ; preds = %258, %256
  %260 = phi i32 [ 1, %258 ], [ 2, %256 ]
  %261 = add nsw i32 %260, -1
  %262 = and i32 %.0346, %261
  %263 = sub i32 %.0346, %262
  store i32 %263, ptr %8, align 8, !tbaa !12
  store i32 %260, ptr %7, align 8, !tbaa !12
  %264 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 %262, ptr %264, align 4, !tbaa !12
  %265 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 %262, ptr %265, align 4, !tbaa !12
  br label %280

266:                                              ; preds = %254
  %267 = icmp eq i32 %.0346, 2
  br i1 %267, label %268, label %271

268:                                              ; preds = %266
  store i32 2, ptr %8, align 8, !tbaa !12
  store i32 2, ptr %7, align 8, !tbaa !12
  %269 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 0, ptr %269, align 4, !tbaa !12
  %270 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 0, ptr %270, align 4, !tbaa !12
  br label %280

271:                                              ; preds = %266
  %272 = icmp ugt i32 %.0346, 2
  br i1 %272, label %273, label %277

273:                                              ; preds = %271
  %274 = add i32 %.0346, -1
  store i32 %274, ptr %8, align 8, !tbaa !12
  store i32 1, ptr %7, align 8, !tbaa !12
  %275 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 1, ptr %275, align 4, !tbaa !12
  %276 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 1, ptr %276, align 4, !tbaa !12
  br label %280

277:                                              ; preds = %271
  store i32 1, ptr %8, align 8, !tbaa !12
  store i32 1, ptr %7, align 8, !tbaa !12
  %278 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 0, ptr %278, align 4, !tbaa !12
  %279 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 0, ptr %279, align 4, !tbaa !12
  br label %280

280:                                              ; preds = %268, %277, %273, %259, %235, %232, %245, %252, %242
  %.0358 = phi i32 [ 0, %232 ], [ 0, %235 ], [ 0, %242 ], [ 0, %252 ], [ 0, %245 ], [ 0, %259 ], [ 0, %268 ], [ 1, %273 ], [ 0, %277 ]
  %.1356 = phi i32 [ 0, %232 ], [ 0, %235 ], [ 0, %242 ], [ 0, %252 ], [ 0, %245 ], [ %.0355, %259 ], [ %.0355, %268 ], [ %.0355, %273 ], [ %.0355, %277 ]
  %trunc441 = trunc nuw i32 %21 to i8
  switch i8 %trunc441, label %.thread413 [
    i8 -64, label %281
    i8 0, label %281
  ]

281:                                              ; preds = %280, %280
  %282 = load i32, ptr %180, align 4, !tbaa !13
  %283 = icmp ult i32 %282, 1104
  %or.cond4 = or i1 %.not371.not, %283
  br i1 %or.cond4, label %284, label %.thread

284:                                              ; preds = %281
  %285 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %286 = icmp eq i32 %285, 2
  br i1 %286, label %290, label %287

287:                                              ; preds = %284
  %288 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %289 = icmp eq i32 %288, 8
  br i1 %289, label %290, label %.critedge

290:                                              ; preds = %287, %284
  %.not391 = icmp eq i32 %.0345, 0
  br i1 %.not391, label %295, label %291

291:                                              ; preds = %290
  %292 = load i32, ptr %174, align 4, !tbaa !32
  %293 = sub nsw i32 %.1, %.0345
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %292, i32 noundef 1, i32 noundef %293, i32 noundef 1) #3
  %294 = load i32, ptr %174, align 4, !tbaa !32
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %294, i32 noundef 2, i32 noundef %293, i32 noundef 1) #3
  br label %295

295:                                              ; preds = %291, %290
  %.pr = load i32, ptr %180, align 4, !tbaa !13
  %296 = icmp ugt i32 %.pr, 1103
  br i1 %296, label %.thread, label %306

.thread:                                          ; preds = %281, %295
  %297 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %298 = icmp eq i32 %297, 2
  br i1 %298, label %302, label %299

299:                                              ; preds = %.thread
  %300 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %301 = icmp eq i32 %300, 8
  br i1 %301, label %302, label %.critedge

302:                                              ; preds = %299, %.thread
  %.not392 = icmp eq i32 %.0345, 0
  br i1 %.not392, label %306, label %303

303:                                              ; preds = %302
  %304 = load i32, ptr %174, align 4, !tbaa !32
  %305 = sub nsw i32 %.1, %.0345
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %304, i32 noundef 1, i32 noundef %305, i32 noundef 1) #3
  br label %306

306:                                              ; preds = %295, %302, %303
  %.not393 = icmp eq i32 %.1356, 0
  br i1 %.not393, label %331, label %307

.thread413:                                       ; preds = %280
  %.not393414 = icmp eq i32 %.1356, 0
  br i1 %.not393414, label %331, label %.thread415

.thread415:                                       ; preds = %.thread413
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_config_tiles_amx(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %.0345, i32 noundef %.0346, ptr noundef nonnull %7, i32 noundef %3, i32 noundef %4, ptr noundef nonnull %6)
  br label %331

307:                                              ; preds = %306
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_config_tiles_amx(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %.0345, i32 noundef %.0346, ptr noundef nonnull %7, i32 noundef %3, i32 noundef %4, ptr noundef nonnull %6)
  %308 = getelementptr inbounds i8, ptr %9, i64 80
  %309 = load i32, ptr %308, align 8, !tbaa !33
  %310 = load i32, ptr %177, align 4, !tbaa !28
  %311 = zext i32 %2 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %309, i32 noundef %310, i64 noundef %311) #3
  %312 = load i32, ptr %308, align 8, !tbaa !33
  %313 = load i32, ptr %178, align 4, !tbaa !29
  %314 = zext i32 %3 to i64
  %315 = getelementptr inbounds i8, ptr %9, i64 12
  %316 = load i32, ptr %315, align 4, !tbaa !36
  %317 = zext i32 %316 to i64
  %318 = mul nuw nsw i64 %317, %314
  %319 = lshr i64 %318, 2
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %312, i32 noundef %313, i64 noundef %319) #3
  %320 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %321 = icmp eq i32 %320, 2
  br i1 %321, label %322, label %325

322:                                              ; preds = %307
  %323 = load i32, ptr %308, align 8, !tbaa !33
  %324 = load i32, ptr %179, align 4, !tbaa !30
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %323, i32 noundef %324, i64 noundef 16) #3
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 4, i64 noundef 8320) #3
  br label %331

325:                                              ; preds = %307
  %326 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %327 = icmp eq i32 %326, 8
  br i1 %327, label %328, label %331

328:                                              ; preds = %325
  %329 = load i32, ptr %308, align 8, !tbaa !33
  %330 = load i32, ptr %179, align 4, !tbaa !30
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %329, i32 noundef %330, i64 noundef %311) #3
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30008, i32 noundef 4, i64 noundef 128) #3
  br label %331

331:                                              ; preds = %.thread415, %.thread413, %306, %322, %325, %328
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #3
  br label %381

332:                                              ; preds = %221
  %333 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %31) #3
  %334 = icmp eq i32 %333, 1
  br i1 %334, label %335, label %376

335:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #3
  call void @libxsmm_spgemm_max_mn_blocking_factors_x86(ptr noundef nonnull %0, i32 noundef %4, ptr noundef nonnull %16, ptr noundef nonnull %17)
  %.not384 = icmp eq i32 %.0345, 0
  br i1 %.not384, label %344, label %336

336:                                              ; preds = %335
  %337 = load i32, ptr %180, align 4, !tbaa !13
  %338 = icmp ult i32 %337, 1101
  br i1 %338, label %339, label %340

339:                                              ; preds = %336
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef nonnull %0, i32 noundef 15, i32 noundef %.0345, i32 noundef 1) #3
  br label %344

340:                                              ; preds = %336
  %341 = load i32, ptr %174, align 4, !tbaa !32
  %342 = sub nsw i32 %.1, %.0345
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %341, i32 noundef 1, i32 noundef %342, i32 noundef 1) #3
  %343 = load i32, ptr %174, align 4, !tbaa !32
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %343, i32 noundef 2, i32 noundef %342, i32 noundef 1) #3
  br label %344

344:                                              ; preds = %339, %340, %335
  br i1 %.not371.not, label %345, label %362

345:                                              ; preds = %344
  %346 = load i32, ptr %180, align 4, !tbaa !13
  %347 = icmp ult i32 %346, 1101
  br i1 %347, label %348, label %349

348:                                              ; preds = %345
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef nonnull %0, i32 noundef 14, i32 noundef 1, i32 noundef 1) #3
  br label %352

349:                                              ; preds = %345
  %350 = load i32, ptr %174, align 4, !tbaa !32
  %351 = add nsw i32 %.1, -1
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %350, i32 noundef 3, i32 noundef %351, i32 noundef 1) #3
  br label %352

352:                                              ; preds = %349, %348
  %353 = load i32, ptr %16, align 4, !tbaa !12
  %.not387 = icmp ugt i32 %.0346, %353
  br i1 %.not387, label %357, label %354

354:                                              ; preds = %352
  store i32 %.0346, ptr %8, align 8, !tbaa !12
  store i32 %.0346, ptr %7, align 8, !tbaa !12
  %355 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 0, ptr %355, align 4, !tbaa !12
  %356 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 0, ptr %356, align 4, !tbaa !12
  br label %375

357:                                              ; preds = %352
  %358 = urem i32 %.0346, %353
  %359 = sub i32 %.0346, %358
  store i32 %359, ptr %8, align 8, !tbaa !12
  store i32 %353, ptr %7, align 8, !tbaa !12
  %360 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 %358, ptr %360, align 4, !tbaa !12
  %361 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 %358, ptr %361, align 4, !tbaa !12
  br label %375

362:                                              ; preds = %344
  %363 = load i32, ptr %16, align 4, !tbaa !12
  %.not385 = icmp ugt i32 %.0346, %363
  br i1 %.not385, label %367, label %364

364:                                              ; preds = %362
  store i32 %.0346, ptr %8, align 8, !tbaa !12
  store i32 %.0346, ptr %7, align 8, !tbaa !12
  %365 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 0, ptr %365, align 4, !tbaa !12
  %366 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 0, ptr %366, align 4, !tbaa !12
  br label %375

367:                                              ; preds = %362
  %368 = urem i32 %.0346, %363
  %369 = sub i32 %.0346, %368
  store i32 %369, ptr %8, align 8, !tbaa !12
  store i32 %363, ptr %7, align 8, !tbaa !12
  %370 = getelementptr inbounds i8, ptr %8, i64 4
  store i32 %368, ptr %370, align 4, !tbaa !12
  %371 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 %368, ptr %371, align 4, !tbaa !12
  %372 = icmp ne i32 %368, 0
  %or.cond423 = select i1 %.not384, i1 true, i1 %372
  br i1 %or.cond423, label %375, label %373

373:                                              ; preds = %367
  %374 = sub i32 %369, %363
  store i32 %374, ptr %8, align 8, !tbaa !12
  store i32 %363, ptr %370, align 4, !tbaa !12
  store i32 %363, ptr %371, align 4, !tbaa !12
  br label %375

375:                                              ; preds = %364, %373, %367, %354, %357
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #3
  br label %381

376:                                              ; preds = %332
  %377 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %378 = icmp ugt i32 %377, 1
  %379 = load i32, ptr @libxsmm_verbosity, align 4
  %380 = select i1 %378, i32 %379, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 642, i32 noundef %380) #3
  br label %499

381:                                              ; preds = %331, %375
  %.1359 = phi i32 [ %.0358, %331 ], [ 0, %375 ]
  %.2 = phi i32 [ %.1356, %331 ], [ %.0355, %375 ]
  %trunc442 = trunc nuw i32 %21 to i8
  switch i8 %trunc442, label %.thread419 [
    i8 -64, label %382
    i8 0, label %382
  ]

382:                                              ; preds = %381, %381
  %383 = getelementptr inbounds i8, ptr %9, i64 80
  %384 = load i32, ptr %383, align 8, !tbaa !33
  %385 = load i32, ptr %170, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %384, i32 noundef %385, i64 noundef 0) #3
  call void @libxsmm_x86_instruction_register_jump_back_label(ptr noundef nonnull %0, ptr noundef nonnull %10) #3
  %386 = getelementptr inbounds i8, ptr %9, i64 64
  %387 = load i32, ptr %386, align 8, !tbaa !37
  %388 = load i32, ptr %170, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %387, i32 noundef %388, i64 noundef 1) #3
  %.not394428 = icmp eq i32 %.0346, 0
  br i1 %.not394428, label %.._crit_edge_crit_edge, label %.lr.ph

.._crit_edge_crit_edge:                           ; preds = %382
  %.pre = zext i32 %2 to i64
  br label %._crit_edge

.lr.ph:                                           ; preds = %382
  %389 = icmp ne i32 %.0345, 0
  %390 = getelementptr inbounds i8, ptr %7, i64 4
  %.not398 = icmp eq i32 %.2, 0
  %391 = zext i32 %4 to i64
  %392 = zext i32 %2 to i64
  %393 = mul nuw nsw i64 %391, %392
  %394 = getelementptr inbounds i8, ptr %9, i64 20
  %395 = getelementptr inbounds i8, ptr %9, i64 72
  %396 = getelementptr inbounds i8, ptr %9, i64 76
  %397 = getelementptr inbounds i8, ptr %9, i64 68
  br label %398

398:                                              ; preds = %.lr.ph, %446
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %446 ]
  %.0351430 = phi i32 [ 0, %.lr.ph ], [ %449, %446 ]
  %exitcond.not = icmp eq i64 %indvars.iv, 2
  br i1 %exitcond.not, label %.thread416, label %403

.thread416:                                       ; preds = %398
  %399 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %400 = icmp ugt i32 %399, 1
  %401 = load i32, ptr @libxsmm_verbosity, align 4
  %402 = select i1 %400, i32 %401, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90017, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef 657, i32 noundef %402) #3
  br label %499

403:                                              ; preds = %398
  %404 = getelementptr inbounds [2 x i32], ptr %7, i64 0, i64 %indvars.iv
  %405 = load i32, ptr %404, align 4, !tbaa !12
  br i1 %.not371.not, label %410, label %406

406:                                              ; preds = %403
  %407 = icmp eq i64 %indvars.iv, 0
  %or.cond6 = and i1 %389, %407
  br i1 %or.cond6, label %408, label %410

408:                                              ; preds = %406
  %409 = load i32, ptr %390, align 4, !tbaa !12
  %.not397 = icmp eq i32 %409, 0
  %.0345. = select i1 %.not397, i32 %.0345, i32 0
  br label %410

410:                                              ; preds = %406, %408, %403
  %.0 = phi i32 [ 0, %403 ], [ %.0345., %408 ], [ %.0345, %406 ]
  %411 = load i32, ptr %383, align 8, !tbaa !33
  %412 = load i32, ptr %171, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %411, i32 noundef %412, i64 noundef 0) #3
  call void @libxsmm_x86_instruction_register_jump_back_label(ptr noundef %0, ptr noundef nonnull %10) #3
  %413 = load i32, ptr %171, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1610350453, i32 noundef 9, i32 noundef %413, i32 noundef 4, i32 noundef 0, i32 noundef 0, i32 noundef 0) #3
  %414 = load i32, ptr %171, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef -1610350453, i32 noundef 9, i32 noundef %414, i32 noundef 4, i32 noundef 4, i32 noundef 3, i32 noundef 0) #3
  %415 = getelementptr inbounds [2 x i32], ptr %8, i64 0, i64 %indvars.iv
  %416 = load i32, ptr %415, align 4, !tbaa !12
  br i1 %.not398, label %418, label %417

417:                                              ; preds = %410
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_kloop_amx(ptr noundef %0, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %9, ptr noundef %1, i32 noundef %.0351430, i32 noundef %416, i32 noundef %405, i32 noundef %.0, i32 noundef %2, i32 noundef %.1, i32 noundef %3, i32 noundef %4, i32 noundef %.1359, ptr noundef nonnull %6)
  br label %419

418:                                              ; preds = %410
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_kloop_bfdot_avx512(ptr noundef %0, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %9, ptr noundef %1, i32 noundef %.0351430, i32 noundef %416, i32 noundef %405, i32 noundef %.0, i32 noundef %2, i32 noundef %.1, i32 noundef %3, i32 noundef %4)
  br label %419

419:                                              ; preds = %418, %417
  %420 = load i32, ptr %386, align 8, !tbaa !37
  %421 = load i32, ptr %167, align 4, !tbaa !20
  %422 = load i32, ptr %394, align 4, !tbaa !38
  %423 = zext i32 %422 to i64
  br i1 %.not371.not, label %424, label %435

424:                                              ; preds = %419
  %425 = mul nuw nsw i64 %423, %391
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %420, i32 noundef %421, i64 noundef %425) #3
  %426 = load i32, ptr %386, align 8, !tbaa !37
  %427 = load i32, ptr %171, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %426, i32 noundef %427, i64 noundef 1) #3
  %428 = load i32, ptr %395, align 8, !tbaa !39
  %429 = load i32, ptr %171, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %428, i32 noundef 14, i32 noundef %429) #3
  %430 = load i32, ptr %396, align 4, !tbaa !40
  call void @libxsmm_x86_instruction_jump_back_to_label(ptr noundef %0, i32 noundef %430, ptr noundef nonnull %10) #3
  %431 = load i32, ptr %383, align 8, !tbaa !33
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %431, i32 noundef 14, i32 noundef 0) #3
  %432 = load i32, ptr %394, align 4, !tbaa !38
  %433 = zext i32 %432 to i64
  %434 = mul nuw nsw i64 %433, %391
  br label %446

435:                                              ; preds = %419
  %436 = mul nuw nsw i64 %393, %423
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %420, i32 noundef %421, i64 noundef %436) #3
  %437 = load i32, ptr %386, align 8, !tbaa !37
  %438 = load i32, ptr %171, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %437, i32 noundef %438, i64 noundef 1) #3
  %439 = load i32, ptr %395, align 8, !tbaa !39
  %440 = load i32, ptr %171, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %439, i32 noundef 14, i32 noundef %440) #3
  %441 = load i32, ptr %396, align 4, !tbaa !40
  call void @libxsmm_x86_instruction_jump_back_to_label(ptr noundef %0, i32 noundef %441, ptr noundef nonnull %10) #3
  %442 = load i32, ptr %383, align 8, !tbaa !33
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %442, i32 noundef 14, i32 noundef 0) #3
  %443 = load i32, ptr %394, align 4, !tbaa !38
  %444 = zext i32 %443 to i64
  %445 = mul nuw nsw i64 %393, %444
  br label %446

446:                                              ; preds = %424, %435
  %.sink = phi i64 [ %434, %424 ], [ %445, %435 ]
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef 0, i64 noundef %.sink) #3
  %447 = load i32, ptr %397, align 4, !tbaa !41
  %448 = load i32, ptr %167, align 4, !tbaa !20
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %447, i32 noundef 0, i32 noundef %448) #3
  %449 = add i32 %416, %.0351430
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not394 = icmp eq i32 %449, %.0346
  br i1 %.not394, label %._crit_edge, label %398, !llvm.loop !42

._crit_edge:                                      ; preds = %446, %.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre, %.._crit_edge_crit_edge ], [ %392, %446 ]
  %450 = load i32, ptr %386, align 8, !tbaa !37
  %451 = load i32, ptr %167, align 4, !tbaa !20
  %452 = getelementptr inbounds i8, ptr %9, i64 20
  %453 = load i32, ptr %452, align 4, !tbaa !38
  %454 = zext i32 %453 to i64
  %455 = mul nuw nsw i64 %.pre-phi, %454
  %456 = getelementptr inbounds i8, ptr %1, i64 20
  %457 = load i32, ptr %456, align 1, !tbaa !44
  %458 = zext i32 %457 to i64
  %459 = mul nuw nsw i64 %455, %458
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %450, i32 noundef %451, i64 noundef %459) #3
  %460 = load i32, ptr %386, align 8, !tbaa !37
  %461 = load i32, ptr %165, align 4, !tbaa !18
  %462 = getelementptr inbounds i8, ptr %9, i64 12
  %463 = load i32, ptr %462, align 4, !tbaa !36
  %464 = zext i32 %463 to i64
  %465 = mul nuw nsw i64 %.pre-phi, %464
  %466 = getelementptr inbounds i8, ptr %1, i64 12
  %467 = load i32, ptr %466, align 1, !tbaa !45
  %468 = zext i32 %467 to i64
  %469 = mul nuw nsw i64 %465, %468
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %460, i32 noundef %461, i64 noundef %469) #3
  %470 = getelementptr inbounds i8, ptr %9, i64 72
  %471 = load i32, ptr %470, align 8, !tbaa !39
  %472 = load i32, ptr %170, align 4, !tbaa !23
  %473 = load i32, ptr %1, align 1, !tbaa !46
  %474 = zext i32 %473 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %471, i32 noundef %472, i64 noundef %474) #3
  %475 = getelementptr inbounds i8, ptr %9, i64 76
  %476 = load i32, ptr %475, align 4, !tbaa !40
  call void @libxsmm_x86_instruction_jump_back_to_label(ptr noundef %0, i32 noundef %476, ptr noundef nonnull %10) #3
  %.not395 = icmp eq i32 %.2, 0
  br i1 %.not395, label %492, label %477

.thread419:                                       ; preds = %381
  %.not395420 = icmp eq i32 %.2, 0
  br i1 %.not395420, label %492, label %.thread421

477:                                              ; preds = %._crit_edge
  %478 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %479 = icmp eq i32 %478, 2
  br i1 %479, label %.thread421.sink.split, label %480

480:                                              ; preds = %477
  %481 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %31) #3
  %482 = icmp eq i32 %481, 8
  br i1 %482, label %.thread421.sink.split, label %.thread421

.thread421.sink.split:                            ; preds = %480, %477
  %.sink434 = phi i64 [ 8320, %477 ], [ 128, %480 ]
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30000, i32 noundef 4, i64 noundef %.sink434) #3
  br label %.thread421

.thread421:                                       ; preds = %.thread421.sink.split, %.thread419, %480
  %483 = load i32, ptr %19, align 1, !tbaa !5
  %484 = trunc i32 %483 to i8
  %trunc443 = and i8 %484, -64
  switch i8 %trunc443, label %492 [
    i8 0, label %485
    i8 -128, label %487
  ]

485:                                              ; preds = %.thread421
  %486 = load i32, ptr %180, align 4, !tbaa !13
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %0, i32 noundef 1001, i32 noundef %486, i32 noundef 50001, i32 noundef 4, i32 noundef 0, ptr noundef null) #3
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30000, i32 noundef 4, i64 noundef 64) #3
  br label %492

487:                                              ; preds = %.thread421
  call void @llvm.lifetime.start.p0(i64 2101248, ptr nonnull %18) #3
  call void @libxsmm_reset_jump_label_tracker(ptr noundef nonnull %18) #3
  %488 = load i32, ptr %11, align 4, !tbaa !16
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30002, i32 noundef %488, i64 noundef 0) #3
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %0, i32 noundef 30101, i32 noundef 0, ptr noundef nonnull %18) #3
  %489 = load i32, ptr %180, align 4, !tbaa !13
  %490 = load i32, ptr %11, align 4, !tbaa !16
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %0, i32 noundef 1001, i32 noundef %489, i32 noundef 50001, i32 noundef %490, i32 noundef 0, ptr noundef null) #3
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %0, i32 noundef 30108, i32 noundef 1, ptr noundef nonnull %18) #3
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %0, i32 noundef 0, ptr noundef nonnull %18) #3
  %491 = load i32, ptr %180, align 4, !tbaa !13
  call void @libxsmm_x86_instruction_tile_control(ptr noundef %0, i32 noundef 1002, i32 noundef %491, i32 noundef 50003, i32 noundef 127, i32 noundef 0, ptr noundef null) #3
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %0, i32 noundef 1, ptr noundef nonnull %18) #3
  call void @llvm.lifetime.end.p0(i64 2101248, ptr nonnull %18) #3
  br label %492

492:                                              ; preds = %.thread421, %.thread419, %485, %487, %._crit_edge
  %493 = load i8, ptr %182, align 1, !tbaa !31
  %494 = zext i8 %493 to i32
  call void @libxsmm_x86_instruction_close_stream_gemm(ptr noundef %0, ptr noundef nonnull %11, i32 noundef 0, i32 noundef %494) #3
  br label %499

.critedge:                                        ; preds = %299, %287
  %.sink435 = phi i32 [ 540, %287 ], [ 553, %299 ]
  %495 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %496 = icmp ugt i32 %495, 1
  %497 = load i32, ptr @libxsmm_verbosity, align 4
  %498 = select i1 %496, i32 %497, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_avx_avx2_avx512_amx, ptr noundef nonnull @.str.2, i32 noundef %.sink435, i32 noundef %498) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #3
  br label %499

499:                                              ; preds = %.thread416, %.critedge, %492, %376, %147, %139, %130, %123, %112, %107, %98, %87, %80, %69, %64, %55, %44, %37, %25
  call void @llvm.lifetime.end.p0(i64 2101248, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 2052, ptr nonnull %10) #3
  call void @llvm.lifetime.end.p0(i64 688, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #3
  ret void
}

declare void @libxsmm_reset_jump_label_tracker(ptr noundef) local_unnamed_addr #2

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

declare void @libxsmm_reset_x86_gp_reg_mapping(ptr noundef) local_unnamed_addr #2

declare void @libxsmm_reset_loop_label_tracker(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #2

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

declare void @libxsmm_x86_instruction_register_jump_back_label(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass