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

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

@__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64 = external hidden unnamed_addr constant [53 x i8], align 1
@.str = external hidden unnamed_addr constant [100 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4

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

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

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

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

51:                                               ; preds = %5
  %52 = load ptr, ptr %7, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %52, i32 0, i32 6
  %54 = load i32, ptr %53, align 1, !tbaa !11
  %55 = and i32 %54, 1
  %56 = icmp ugt i32 %55, 0
  br i1 %56, label %57, label %66

57:                                               ; preds = %51
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %60 = icmp ult i32 1, %59
  br i1 %60, label %61, label %63

61:                                               ; preds = %57
  %62 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %64

63:                                               ; preds = %57
  br label %64

64:                                               ; preds = %63, %61
  %65 = phi i32 [ %62, %61 ], [ 1, %63 ]
  call void @libxsmm_handle_error(ptr noundef %58, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 87, i32 noundef %65)
  store i32 1, ptr %31, align 4
  br label %1443

66:                                               ; preds = %51
  %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 %69, 2
  %71 = icmp ugt i32 %70, 0
  br i1 %71, label %72, label %81

72:                                               ; preds = %66
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %75 = icmp ult i32 1, %74
  br i1 %75, label %76, label %78

76:                                               ; preds = %72
  %77 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %79

78:                                               ; preds = %72
  br label %79

79:                                               ; preds = %78, %76
  %80 = phi i32 [ %77, %76 ], [ 1, %78 ]
  call void @libxsmm_handle_error(ptr noundef %73, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 91, i32 noundef %80)
  store i32 1, ptr %31, align 4
  br label %1443

81:                                               ; preds = %66
  %82 = load ptr, ptr %7, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %82, i32 0, i32 6
  %84 = load i32, ptr %83, align 1, !tbaa !11
  %85 = and i32 %84, 2048
  %86 = icmp ugt i32 %85, 0
  br i1 %86, label %87, label %96

87:                                               ; preds = %81
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %90 = icmp ult i32 1, %89
  br i1 %90, label %91, label %93

91:                                               ; preds = %87
  %92 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %94

93:                                               ; preds = %87
  br label %94

94:                                               ; preds = %93, %91
  %95 = phi i32 [ %92, %91 ], [ 1, %93 ]
  call void @libxsmm_handle_error(ptr noundef %88, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 95, i32 noundef %95)
  store i32 1, ptr %31, align 4
  br label %1443

96:                                               ; preds = %81
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %97, i32 0, i32 6
  %99 = load i32, ptr %98, align 1, !tbaa !11
  %100 = and i32 %99, 4096
  %101 = icmp ugt i32 %100, 0
  br i1 %101, label %102, label %111

102:                                              ; preds = %96
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %105 = icmp ult i32 1, %104
  br i1 %105, label %106, label %108

106:                                              ; preds = %102
  %107 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %109

108:                                              ; preds = %102
  br label %109

109:                                              ; preds = %108, %106
  %110 = phi i32 [ %107, %106 ], [ 1, %108 ]
  call void @libxsmm_handle_error(ptr noundef %103, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 99, i32 noundef %110)
  store i32 1, ptr %31, align 4
  br label %1443

111:                                              ; preds = %96
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %112, i32 0, i32 6
  %114 = load i32, ptr %113, align 4, !tbaa !15
  %115 = icmp uge i32 %114, 2201
  br i1 %115, label %116, label %131

116:                                              ; preds = %111
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %117, i32 0, i32 6
  %119 = load i32, ptr %118, align 4, !tbaa !15
  %120 = icmp ult i32 %119, 2301
  br i1 %120, label %121, label %122

121:                                              ; preds = %116
  store i32 4, ptr %14, align 4, !tbaa !9
  br label %130

122:                                              ; preds = %116
  %123 = load ptr, ptr %6, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %123, i32 0, i32 6
  %125 = load i32, ptr %124, align 4, !tbaa !15
  %126 = icmp ult i32 %125, 2401
  br i1 %126, label %127, label %128

127:                                              ; preds = %122
  store i32 8, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %129

128:                                              ; preds = %122
  store i32 16, ptr %14, align 4, !tbaa !9
  br label %129

129:                                              ; preds = %128, %127
  br label %130

130:                                              ; preds = %129, %121
  br label %140

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

135:                                              ; preds = %131
  %136 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %138

137:                                              ; preds = %131
  br label %138

138:                                              ; preds = %137, %135
  %139 = phi i32 [ %136, %135 ], [ 1, %137 ]
  call void @libxsmm_handle_error(ptr noundef %132, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 112, i32 noundef %139)
  store i32 1, ptr %31, align 4
  br label %1443

140:                                              ; preds = %130
  br label %838

141:                                              ; preds = %5
  %142 = load ptr, ptr %7, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %142, i32 0, i32 8
  %144 = getelementptr inbounds [3 x i8], ptr %143, i64 0, i64 0
  %145 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %144)
  %146 = icmp eq i32 2, %145
  br i1 %146, label %147, label %484

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

152:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #4
  %153 = call i32 @libxsmm_cpuid_arm_use_bfdot()
  %154 = trunc i32 %153 to i8
  store i8 %154, ptr %32, align 1, !tbaa !17
  %155 = load i8, ptr %32, align 1, !tbaa !17
  %156 = sext i8 %155 to i32
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %158, label %232

158:                                              ; preds = %152
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %159, i32 0, i32 6
  %161 = load i32, ptr %160, align 1, !tbaa !11
  %162 = and i32 %161, 1
  %163 = icmp ugt i32 %162, 0
  br i1 %163, label %164, label %173

164:                                              ; preds = %158
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %167 = icmp ult i32 1, %166
  br i1 %167, label %168, label %170

168:                                              ; preds = %164
  %169 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %171

170:                                              ; preds = %164
  br label %171

171:                                              ; preds = %170, %168
  %172 = phi i32 [ %169, %168 ], [ 1, %170 ]
  call void @libxsmm_handle_error(ptr noundef %165, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 120, i32 noundef %172)
  store i32 1, ptr %31, align 4
  br label %307

173:                                              ; preds = %158
  %174 = load ptr, ptr %7, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %174, i32 0, i32 6
  %176 = load i32, ptr %175, align 1, !tbaa !11
  %177 = and i32 %176, 2
  %178 = icmp eq i32 %177, 0
  br i1 %178, label %179, label %188

179:                                              ; preds = %173
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %182 = icmp ult i32 1, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %179
  %184 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %186

185:                                              ; preds = %179
  br label %186

186:                                              ; preds = %185, %183
  %187 = phi i32 [ %184, %183 ], [ 1, %185 ]
  call void @libxsmm_handle_error(ptr noundef %180, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 124, i32 noundef %187)
  store i32 1, ptr %31, align 4
  br label %307

188:                                              ; preds = %173
  %189 = load ptr, ptr %7, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %189, i32 0, i32 6
  %191 = load i32, ptr %190, align 1, !tbaa !11
  %192 = and i32 %191, 2048
  %193 = icmp eq i32 %192, 0
  br i1 %193, label %194, label %203

194:                                              ; preds = %188
  %195 = load ptr, ptr %6, align 8, !tbaa !5
  %196 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %197 = icmp ult i32 1, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %194
  %199 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %201

200:                                              ; preds = %194
  br label %201

201:                                              ; preds = %200, %198
  %202 = phi i32 [ %199, %198 ], [ 1, %200 ]
  call void @libxsmm_handle_error(ptr noundef %195, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 128, i32 noundef %202)
  store i32 1, ptr %31, align 4
  br label %307

203:                                              ; preds = %188
  %204 = load ptr, ptr %7, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %204, i32 0, i32 6
  %206 = load i32, ptr %205, align 1, !tbaa !11
  %207 = and i32 %206, 4096
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %218

209:                                              ; preds = %203
  %210 = load ptr, ptr %6, align 8, !tbaa !5
  %211 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %212 = icmp ult i32 1, %211
  br i1 %212, label %213, label %215

213:                                              ; preds = %209
  %214 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %216

215:                                              ; preds = %209
  br label %216

216:                                              ; preds = %215, %213
  %217 = phi i32 [ %214, %213 ], [ 1, %215 ]
  call void @libxsmm_handle_error(ptr noundef %210, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 132, i32 noundef %217)
  store i32 1, ptr %31, align 4
  br label %307

218:                                              ; preds = %203
  store i32 4, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %219 = load i32, ptr %9, align 4, !tbaa !9
  %220 = urem i32 %219, 4
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %231

222:                                              ; preds = %218
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  %224 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %225 = icmp ult i32 1, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %222
  %227 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %229

228:                                              ; preds = %222
  br label %229

229:                                              ; preds = %228, %226
  %230 = phi i32 [ %227, %226 ], [ 1, %228 ]
  call void @libxsmm_handle_error(ptr noundef %223, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 138, i32 noundef %230)
  store i32 1, ptr %31, align 4
  br label %307

231:                                              ; preds = %218
  br label %306

232:                                              ; preds = %152
  %233 = load ptr, ptr %7, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %233, i32 0, i32 6
  %235 = load i32, ptr %234, align 1, !tbaa !11
  %236 = and i32 %235, 1
  %237 = icmp ugt i32 %236, 0
  br i1 %237, label %238, label %247

238:                                              ; preds = %232
  %239 = load ptr, ptr %6, align 8, !tbaa !5
  %240 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %241 = icmp ult i32 1, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %238
  %243 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %245

244:                                              ; preds = %238
  br label %245

245:                                              ; preds = %244, %242
  %246 = phi i32 [ %243, %242 ], [ 1, %244 ]
  call void @libxsmm_handle_error(ptr noundef %239, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 143, i32 noundef %246)
  store i32 1, ptr %31, align 4
  br label %307

247:                                              ; preds = %232
  %248 = load ptr, ptr %7, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %248, i32 0, i32 6
  %250 = load i32, ptr %249, align 1, !tbaa !11
  %251 = and i32 %250, 2
  %252 = icmp ugt i32 %251, 0
  br i1 %252, label %253, label %262

253:                                              ; preds = %247
  %254 = load ptr, ptr %6, align 8, !tbaa !5
  %255 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %256 = icmp ult i32 1, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %253
  %258 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %260

259:                                              ; preds = %253
  br label %260

260:                                              ; preds = %259, %257
  %261 = phi i32 [ %258, %257 ], [ 1, %259 ]
  call void @libxsmm_handle_error(ptr noundef %254, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 147, i32 noundef %261)
  store i32 1, ptr %31, align 4
  br label %307

262:                                              ; preds = %247
  %263 = load ptr, ptr %7, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %263, i32 0, i32 6
  %265 = load i32, ptr %264, align 1, !tbaa !11
  %266 = and i32 %265, 2048
  %267 = icmp eq i32 %266, 0
  br i1 %267, label %268, label %277

268:                                              ; preds = %262
  %269 = load ptr, ptr %6, align 8, !tbaa !5
  %270 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %271 = icmp ult i32 1, %270
  br i1 %271, label %272, label %274

272:                                              ; preds = %268
  %273 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %275

274:                                              ; preds = %268
  br label %275

275:                                              ; preds = %274, %272
  %276 = phi i32 [ %273, %272 ], [ 1, %274 ]
  call void @libxsmm_handle_error(ptr noundef %269, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 151, i32 noundef %276)
  store i32 1, ptr %31, align 4
  br label %307

277:                                              ; preds = %262
  %278 = load ptr, ptr %7, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %278, i32 0, i32 6
  %280 = load i32, ptr %279, align 1, !tbaa !11
  %281 = and i32 %280, 4096
  %282 = icmp ugt i32 %281, 0
  br i1 %282, label %283, label %292

283:                                              ; preds = %277
  %284 = load ptr, ptr %6, align 8, !tbaa !5
  %285 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %286 = icmp ult i32 1, %285
  br i1 %286, label %287, label %289

287:                                              ; preds = %283
  %288 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %290

289:                                              ; preds = %283
  br label %290

290:                                              ; preds = %289, %287
  %291 = phi i32 [ %288, %287 ], [ 1, %289 ]
  call void @libxsmm_handle_error(ptr noundef %284, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 155, i32 noundef %291)
  store i32 1, ptr %31, align 4
  br label %307

292:                                              ; preds = %277
  store i32 8, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  %293 = load i32, ptr %9, align 4, !tbaa !9
  %294 = urem i32 %293, 2
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %305

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

300:                                              ; preds = %296
  %301 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %303

302:                                              ; preds = %296
  br label %303

303:                                              ; preds = %302, %300
  %304 = phi i32 [ %301, %300 ], [ 1, %302 ]
  call void @libxsmm_handle_error(ptr noundef %297, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 161, i32 noundef %304)
  store i32 1, ptr %31, align 4
  br label %307

305:                                              ; preds = %292
  br label %306

306:                                              ; preds = %305, %231
  store i32 0, ptr %31, align 4
  br label %307

307:                                              ; preds = %306, %303, %290, %275, %260, %245, %229, %216, %201, %186, %171
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #4
  %308 = load i32, ptr %31, align 4
  switch i32 %308, label %1443 [
    i32 0, label %309
  ]

309:                                              ; preds = %307
  br label %483

310:                                              ; preds = %147
  %311 = load ptr, ptr %6, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %311, i32 0, i32 6
  %313 = load i32, ptr %312, align 4, !tbaa !15
  %314 = icmp eq i32 %313, 2202
  br i1 %314, label %315, label %473

315:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #4
  %316 = call i32 @libxsmm_cpuid_arm_use_bfdot()
  %317 = trunc i32 %316 to i8
  store i8 %317, ptr %33, align 1, !tbaa !17
  %318 = load i8, ptr %33, align 1, !tbaa !17
  %319 = sext i8 %318 to i32
  %320 = icmp eq i32 %319, 0
  br i1 %320, label %321, label %395

321:                                              ; preds = %315
  %322 = load ptr, ptr %7, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %322, i32 0, i32 6
  %324 = load i32, ptr %323, align 1, !tbaa !11
  %325 = and i32 %324, 1
  %326 = icmp ugt i32 %325, 0
  br i1 %326, label %327, label %336

327:                                              ; preds = %321
  %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 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 171, i32 noundef %335)
  store i32 1, ptr %31, align 4
  br label %470

336:                                              ; preds = %321
  %337 = load ptr, ptr %7, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %337, i32 0, i32 6
  %339 = load i32, ptr %338, align 1, !tbaa !11
  %340 = and i32 %339, 2
  %341 = icmp eq i32 %340, 0
  br i1 %341, label %342, label %351

342:                                              ; preds = %336
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %345 = icmp ult i32 1, %344
  br i1 %345, label %346, label %348

346:                                              ; preds = %342
  %347 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %349

348:                                              ; preds = %342
  br label %349

349:                                              ; preds = %348, %346
  %350 = phi i32 [ %347, %346 ], [ 1, %348 ]
  call void @libxsmm_handle_error(ptr noundef %343, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 175, i32 noundef %350)
  store i32 1, ptr %31, align 4
  br label %470

351:                                              ; preds = %336
  %352 = load ptr, ptr %7, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %352, i32 0, i32 6
  %354 = load i32, ptr %353, align 1, !tbaa !11
  %355 = and i32 %354, 2048
  %356 = icmp eq i32 %355, 0
  br i1 %356, label %357, label %366

357:                                              ; preds = %351
  %358 = load ptr, ptr %6, align 8, !tbaa !5
  %359 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %360 = icmp ult i32 1, %359
  br i1 %360, label %361, label %363

361:                                              ; preds = %357
  %362 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %364

363:                                              ; preds = %357
  br label %364

364:                                              ; preds = %363, %361
  %365 = phi i32 [ %362, %361 ], [ 1, %363 ]
  call void @libxsmm_handle_error(ptr noundef %358, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 179, i32 noundef %365)
  store i32 1, ptr %31, align 4
  br label %470

366:                                              ; preds = %351
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %367, i32 0, i32 6
  %369 = load i32, ptr %368, align 1, !tbaa !11
  %370 = and i32 %369, 4096
  %371 = icmp eq i32 %370, 0
  br i1 %371, label %372, label %381

372:                                              ; preds = %366
  %373 = load ptr, ptr %6, align 8, !tbaa !5
  %374 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %375 = icmp ult i32 1, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %372
  %377 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %379

378:                                              ; preds = %372
  br label %379

379:                                              ; preds = %378, %376
  %380 = phi i32 [ %377, %376 ], [ 1, %378 ]
  call void @libxsmm_handle_error(ptr noundef %373, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 183, i32 noundef %380)
  store i32 1, ptr %31, align 4
  br label %470

381:                                              ; preds = %366
  store i32 4, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %382 = load i32, ptr %9, align 4, !tbaa !9
  %383 = urem i32 %382, 4
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %394

385:                                              ; preds = %381
  %386 = load ptr, ptr %6, align 8, !tbaa !5
  %387 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %388 = icmp ult i32 1, %387
  br i1 %388, label %389, label %391

389:                                              ; preds = %385
  %390 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %392

391:                                              ; preds = %385
  br label %392

392:                                              ; preds = %391, %389
  %393 = phi i32 [ %390, %389 ], [ 1, %391 ]
  call void @libxsmm_handle_error(ptr noundef %386, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 189, i32 noundef %393)
  store i32 1, ptr %31, align 4
  br label %470

394:                                              ; preds = %381
  br label %469

395:                                              ; preds = %315
  %396 = load ptr, ptr %7, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %396, i32 0, i32 6
  %398 = load i32, ptr %397, align 1, !tbaa !11
  %399 = and i32 %398, 1
  %400 = icmp ugt i32 %399, 0
  br i1 %400, label %401, label %410

401:                                              ; preds = %395
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %403 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %404 = icmp ult i32 1, %403
  br i1 %404, label %405, label %407

405:                                              ; preds = %401
  %406 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %408

407:                                              ; preds = %401
  br label %408

408:                                              ; preds = %407, %405
  %409 = phi i32 [ %406, %405 ], [ 1, %407 ]
  call void @libxsmm_handle_error(ptr noundef %402, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 194, i32 noundef %409)
  store i32 1, ptr %31, align 4
  br label %470

410:                                              ; preds = %395
  %411 = load ptr, ptr %7, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %411, i32 0, i32 6
  %413 = load i32, ptr %412, align 1, !tbaa !11
  %414 = and i32 %413, 2
  %415 = icmp ugt i32 %414, 0
  br i1 %415, label %416, label %425

416:                                              ; preds = %410
  %417 = load ptr, ptr %6, align 8, !tbaa !5
  %418 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %419 = icmp ult i32 1, %418
  br i1 %419, label %420, label %422

420:                                              ; preds = %416
  %421 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %423

422:                                              ; preds = %416
  br label %423

423:                                              ; preds = %422, %420
  %424 = phi i32 [ %421, %420 ], [ 1, %422 ]
  call void @libxsmm_handle_error(ptr noundef %417, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 198, i32 noundef %424)
  store i32 1, ptr %31, align 4
  br label %470

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

431:                                              ; preds = %425
  %432 = load ptr, ptr %6, align 8, !tbaa !5
  %433 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %434 = icmp ult i32 1, %433
  br i1 %434, label %435, label %437

435:                                              ; preds = %431
  %436 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %438

437:                                              ; preds = %431
  br label %438

438:                                              ; preds = %437, %435
  %439 = phi i32 [ %436, %435 ], [ 1, %437 ]
  call void @libxsmm_handle_error(ptr noundef %432, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 202, i32 noundef %439)
  store i32 1, ptr %31, align 4
  br label %470

440:                                              ; preds = %425
  %441 = load ptr, ptr %7, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %441, i32 0, i32 6
  %443 = load i32, ptr %442, align 1, !tbaa !11
  %444 = and i32 %443, 4096
  %445 = icmp ugt i32 %444, 0
  br i1 %445, label %446, label %455

446:                                              ; preds = %440
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %449 = icmp ult i32 1, %448
  br i1 %449, label %450, label %452

450:                                              ; preds = %446
  %451 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %453

452:                                              ; preds = %446
  br label %453

453:                                              ; preds = %452, %450
  %454 = phi i32 [ %451, %450 ], [ 1, %452 ]
  call void @libxsmm_handle_error(ptr noundef %447, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 206, i32 noundef %454)
  store i32 1, ptr %31, align 4
  br label %470

455:                                              ; preds = %440
  store i32 4, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  %456 = load i32, ptr %9, align 4, !tbaa !9
  %457 = urem i32 %456, 2
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %459, label %468

459:                                              ; preds = %455
  %460 = load ptr, ptr %6, align 8, !tbaa !5
  %461 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %462 = icmp ult i32 1, %461
  br i1 %462, label %463, label %465

463:                                              ; preds = %459
  %464 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %466

465:                                              ; preds = %459
  br label %466

466:                                              ; preds = %465, %463
  %467 = phi i32 [ %464, %463 ], [ 1, %465 ]
  call void @libxsmm_handle_error(ptr noundef %460, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 212, i32 noundef %467)
  store i32 1, ptr %31, align 4
  br label %470

468:                                              ; preds = %455
  br label %469

469:                                              ; preds = %468, %394
  store i32 0, ptr %31, align 4
  br label %470

470:                                              ; preds = %469, %466, %453, %438, %423, %408, %392, %379, %364, %349, %334
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #4
  %471 = load i32, ptr %31, align 4
  switch i32 %471, label %1443 [
    i32 0, label %472
  ]

472:                                              ; preds = %470
  br label %482

473:                                              ; preds = %310
  %474 = load ptr, ptr %6, align 8, !tbaa !5
  %475 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %476 = icmp ult i32 1, %475
  br i1 %476, label %477, label %479

477:                                              ; preds = %473
  %478 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %480

479:                                              ; preds = %473
  br label %480

480:                                              ; preds = %479, %477
  %481 = phi i32 [ %478, %477 ], [ 1, %479 ]
  call void @libxsmm_handle_error(ptr noundef %474, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 217, i32 noundef %481)
  store i32 1, ptr %31, align 4
  br label %1443

482:                                              ; preds = %472
  br label %483

483:                                              ; preds = %482, %309
  br label %837

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

490:                                              ; preds = %484
  %491 = load ptr, ptr %6, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %491, i32 0, i32 6
  %493 = load i32, ptr %492, align 4, !tbaa !15
  %494 = icmp eq i32 %493, 2302
  br i1 %494, label %495, label %653

495:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #4
  %496 = call i32 @libxsmm_cpuid_arm_use_bfdot()
  %497 = trunc i32 %496 to i8
  store i8 %497, ptr %34, align 1, !tbaa !17
  %498 = load i8, ptr %34, align 1, !tbaa !17
  %499 = sext i8 %498 to i32
  %500 = icmp eq i32 %499, 0
  br i1 %500, label %501, label %575

501:                                              ; preds = %495
  %502 = load ptr, ptr %7, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %502, i32 0, i32 6
  %504 = load i32, ptr %503, align 1, !tbaa !11
  %505 = and i32 %504, 1
  %506 = icmp ugt i32 %505, 0
  br i1 %506, label %507, label %516

507:                                              ; preds = %501
  %508 = load ptr, ptr %6, align 8, !tbaa !5
  %509 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %510 = icmp ult i32 1, %509
  br i1 %510, label %511, label %513

511:                                              ; preds = %507
  %512 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %514

513:                                              ; preds = %507
  br label %514

514:                                              ; preds = %513, %511
  %515 = phi i32 [ %512, %511 ], [ 1, %513 ]
  call void @libxsmm_handle_error(ptr noundef %508, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 225, i32 noundef %515)
  store i32 1, ptr %31, align 4
  br label %650

516:                                              ; preds = %501
  %517 = load ptr, ptr %7, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %517, i32 0, i32 6
  %519 = load i32, ptr %518, align 1, !tbaa !11
  %520 = and i32 %519, 2
  %521 = icmp eq i32 %520, 0
  br i1 %521, label %522, label %531

522:                                              ; preds = %516
  %523 = load ptr, ptr %6, align 8, !tbaa !5
  %524 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %525 = icmp ult i32 1, %524
  br i1 %525, label %526, label %528

526:                                              ; preds = %522
  %527 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %529

528:                                              ; preds = %522
  br label %529

529:                                              ; preds = %528, %526
  %530 = phi i32 [ %527, %526 ], [ 1, %528 ]
  call void @libxsmm_handle_error(ptr noundef %523, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 229, i32 noundef %530)
  store i32 1, ptr %31, align 4
  br label %650

531:                                              ; preds = %516
  %532 = load ptr, ptr %7, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %532, i32 0, i32 6
  %534 = load i32, ptr %533, align 1, !tbaa !11
  %535 = and i32 %534, 2048
  %536 = icmp eq i32 %535, 0
  br i1 %536, label %537, label %546

537:                                              ; preds = %531
  %538 = load ptr, ptr %6, align 8, !tbaa !5
  %539 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %540 = icmp ult i32 1, %539
  br i1 %540, label %541, label %543

541:                                              ; preds = %537
  %542 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %544

543:                                              ; preds = %537
  br label %544

544:                                              ; preds = %543, %541
  %545 = phi i32 [ %542, %541 ], [ 1, %543 ]
  call void @libxsmm_handle_error(ptr noundef %538, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 233, i32 noundef %545)
  store i32 1, ptr %31, align 4
  br label %650

546:                                              ; preds = %531
  %547 = load ptr, ptr %7, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %547, i32 0, i32 6
  %549 = load i32, ptr %548, align 1, !tbaa !11
  %550 = and i32 %549, 4096
  %551 = icmp eq i32 %550, 0
  br i1 %551, label %552, label %561

552:                                              ; preds = %546
  %553 = load ptr, ptr %6, align 8, !tbaa !5
  %554 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %555 = icmp ult i32 1, %554
  br i1 %555, label %556, label %558

556:                                              ; preds = %552
  %557 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %559

558:                                              ; preds = %552
  br label %559

559:                                              ; preds = %558, %556
  %560 = phi i32 [ %557, %556 ], [ 1, %558 ]
  call void @libxsmm_handle_error(ptr noundef %553, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 237, i32 noundef %560)
  store i32 1, ptr %31, align 4
  br label %650

561:                                              ; preds = %546
  store i32 4, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %562 = load i32, ptr %9, align 4, !tbaa !9
  %563 = urem i32 %562, 8
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %574

565:                                              ; preds = %561
  %566 = load ptr, ptr %6, align 8, !tbaa !5
  %567 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %568 = icmp ult i32 1, %567
  br i1 %568, label %569, label %571

569:                                              ; preds = %565
  %570 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %572

571:                                              ; preds = %565
  br label %572

572:                                              ; preds = %571, %569
  %573 = phi i32 [ %570, %569 ], [ 1, %571 ]
  call void @libxsmm_handle_error(ptr noundef %566, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 243, i32 noundef %573)
  store i32 1, ptr %31, align 4
  br label %650

574:                                              ; preds = %561
  br label %649

575:                                              ; preds = %495
  %576 = load ptr, ptr %7, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %576, i32 0, i32 6
  %578 = load i32, ptr %577, align 1, !tbaa !11
  %579 = and i32 %578, 1
  %580 = icmp ugt i32 %579, 0
  br i1 %580, label %581, label %590

581:                                              ; preds = %575
  %582 = load ptr, ptr %6, align 8, !tbaa !5
  %583 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %584 = icmp ult i32 1, %583
  br i1 %584, label %585, label %587

585:                                              ; preds = %581
  %586 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %588

587:                                              ; preds = %581
  br label %588

588:                                              ; preds = %587, %585
  %589 = phi i32 [ %586, %585 ], [ 1, %587 ]
  call void @libxsmm_handle_error(ptr noundef %582, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 248, i32 noundef %589)
  store i32 1, ptr %31, align 4
  br label %650

590:                                              ; preds = %575
  %591 = load ptr, ptr %7, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %591, i32 0, i32 6
  %593 = load i32, ptr %592, align 1, !tbaa !11
  %594 = and i32 %593, 2
  %595 = icmp ugt i32 %594, 0
  br i1 %595, label %596, label %605

596:                                              ; preds = %590
  %597 = load ptr, ptr %6, align 8, !tbaa !5
  %598 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %599 = icmp ult i32 1, %598
  br i1 %599, label %600, label %602

600:                                              ; preds = %596
  %601 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %603

602:                                              ; preds = %596
  br label %603

603:                                              ; preds = %602, %600
  %604 = phi i32 [ %601, %600 ], [ 1, %602 ]
  call void @libxsmm_handle_error(ptr noundef %597, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 252, i32 noundef %604)
  store i32 1, ptr %31, align 4
  br label %650

605:                                              ; preds = %590
  %606 = load ptr, ptr %7, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %606, i32 0, i32 6
  %608 = load i32, ptr %607, align 1, !tbaa !11
  %609 = and i32 %608, 2048
  %610 = icmp eq i32 %609, 0
  br i1 %610, label %611, label %620

611:                                              ; preds = %605
  %612 = load ptr, ptr %6, align 8, !tbaa !5
  %613 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %614 = icmp ult i32 1, %613
  br i1 %614, label %615, label %617

615:                                              ; preds = %611
  %616 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %618

617:                                              ; preds = %611
  br label %618

618:                                              ; preds = %617, %615
  %619 = phi i32 [ %616, %615 ], [ 1, %617 ]
  call void @libxsmm_handle_error(ptr noundef %612, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 256, i32 noundef %619)
  store i32 1, ptr %31, align 4
  br label %650

620:                                              ; preds = %605
  %621 = load ptr, ptr %7, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %621, i32 0, i32 6
  %623 = load i32, ptr %622, align 1, !tbaa !11
  %624 = and i32 %623, 4096
  %625 = icmp ugt i32 %624, 0
  br i1 %625, label %626, label %635

626:                                              ; preds = %620
  %627 = load ptr, ptr %6, align 8, !tbaa !5
  %628 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %629 = icmp ult i32 1, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %626
  %631 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %633

632:                                              ; preds = %626
  br label %633

633:                                              ; preds = %632, %630
  %634 = phi i32 [ %631, %630 ], [ 1, %632 ]
  call void @libxsmm_handle_error(ptr noundef %627, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 260, i32 noundef %634)
  store i32 1, ptr %31, align 4
  br label %650

635:                                              ; preds = %620
  store i32 8, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  %636 = load i32, ptr %9, align 4, !tbaa !9
  %637 = urem i32 %636, 4
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %648

639:                                              ; preds = %635
  %640 = load ptr, ptr %6, align 8, !tbaa !5
  %641 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %642 = icmp ult i32 1, %641
  br i1 %642, label %643, label %645

643:                                              ; preds = %639
  %644 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %646

645:                                              ; preds = %639
  br label %646

646:                                              ; preds = %645, %643
  %647 = phi i32 [ %644, %643 ], [ 1, %645 ]
  call void @libxsmm_handle_error(ptr noundef %640, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 266, i32 noundef %647)
  store i32 1, ptr %31, align 4
  br label %650

648:                                              ; preds = %635
  br label %649

649:                                              ; preds = %648, %574
  store i32 0, ptr %31, align 4
  br label %650

650:                                              ; preds = %649, %646, %633, %618, %603, %588, %572, %559, %544, %529, %514
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  %651 = load i32, ptr %31, align 4
  switch i32 %651, label %1443 [
    i32 0, label %652
  ]

652:                                              ; preds = %650
  br label %826

653:                                              ; preds = %490
  %654 = load ptr, ptr %6, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %654, i32 0, i32 6
  %656 = load i32, ptr %655, align 4, !tbaa !15
  %657 = icmp eq i32 %656, 2202
  br i1 %657, label %658, label %816

658:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #4
  %659 = call i32 @libxsmm_cpuid_arm_use_bfdot()
  %660 = trunc i32 %659 to i8
  store i8 %660, ptr %35, align 1, !tbaa !17
  %661 = load i8, ptr %35, align 1, !tbaa !17
  %662 = sext i8 %661 to i32
  %663 = icmp eq i32 %662, 0
  br i1 %663, label %664, label %738

664:                                              ; preds = %658
  %665 = load ptr, ptr %7, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %665, i32 0, i32 6
  %667 = load i32, ptr %666, align 1, !tbaa !11
  %668 = and i32 %667, 1
  %669 = icmp ugt i32 %668, 0
  br i1 %669, label %670, label %679

670:                                              ; preds = %664
  %671 = load ptr, ptr %6, align 8, !tbaa !5
  %672 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %673 = icmp ult i32 1, %672
  br i1 %673, label %674, label %676

674:                                              ; preds = %670
  %675 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %677

676:                                              ; preds = %670
  br label %677

677:                                              ; preds = %676, %674
  %678 = phi i32 [ %675, %674 ], [ 1, %676 ]
  call void @libxsmm_handle_error(ptr noundef %671, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 276, i32 noundef %678)
  store i32 1, ptr %31, align 4
  br label %813

679:                                              ; preds = %664
  %680 = load ptr, ptr %7, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %680, i32 0, i32 6
  %682 = load i32, ptr %681, align 1, !tbaa !11
  %683 = and i32 %682, 2
  %684 = icmp eq i32 %683, 0
  br i1 %684, label %685, label %694

685:                                              ; preds = %679
  %686 = load ptr, ptr %6, align 8, !tbaa !5
  %687 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %688 = icmp ult i32 1, %687
  br i1 %688, label %689, label %691

689:                                              ; preds = %685
  %690 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %692

691:                                              ; preds = %685
  br label %692

692:                                              ; preds = %691, %689
  %693 = phi i32 [ %690, %689 ], [ 1, %691 ]
  call void @libxsmm_handle_error(ptr noundef %686, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 280, i32 noundef %693)
  store i32 1, ptr %31, align 4
  br label %813

694:                                              ; preds = %679
  %695 = load ptr, ptr %7, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %695, i32 0, i32 6
  %697 = load i32, ptr %696, align 1, !tbaa !11
  %698 = and i32 %697, 2048
  %699 = icmp eq i32 %698, 0
  br i1 %699, label %700, label %709

700:                                              ; preds = %694
  %701 = load ptr, ptr %6, align 8, !tbaa !5
  %702 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %703 = icmp ult i32 1, %702
  br i1 %703, label %704, label %706

704:                                              ; preds = %700
  %705 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %707

706:                                              ; preds = %700
  br label %707

707:                                              ; preds = %706, %704
  %708 = phi i32 [ %705, %704 ], [ 1, %706 ]
  call void @libxsmm_handle_error(ptr noundef %701, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 284, i32 noundef %708)
  store i32 1, ptr %31, align 4
  br label %813

709:                                              ; preds = %694
  %710 = load ptr, ptr %7, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %710, i32 0, i32 6
  %712 = load i32, ptr %711, align 1, !tbaa !11
  %713 = and i32 %712, 4096
  %714 = icmp eq i32 %713, 0
  br i1 %714, label %715, label %724

715:                                              ; preds = %709
  %716 = load ptr, ptr %6, align 8, !tbaa !5
  %717 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %718 = icmp ult i32 1, %717
  br i1 %718, label %719, label %721

719:                                              ; preds = %715
  %720 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %722

721:                                              ; preds = %715
  br label %722

722:                                              ; preds = %721, %719
  %723 = phi i32 [ %720, %719 ], [ 1, %721 ]
  call void @libxsmm_handle_error(ptr noundef %716, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 288, i32 noundef %723)
  store i32 1, ptr %31, align 4
  br label %813

724:                                              ; preds = %709
  store i32 4, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  %725 = load i32, ptr %9, align 4, !tbaa !9
  %726 = urem i32 %725, 8
  %727 = icmp ne i32 %726, 0
  br i1 %727, label %728, label %737

728:                                              ; preds = %724
  %729 = load ptr, ptr %6, align 8, !tbaa !5
  %730 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %731 = icmp ult i32 1, %730
  br i1 %731, label %732, label %734

732:                                              ; preds = %728
  %733 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %735

734:                                              ; preds = %728
  br label %735

735:                                              ; preds = %734, %732
  %736 = phi i32 [ %733, %732 ], [ 1, %734 ]
  call void @libxsmm_handle_error(ptr noundef %729, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 294, i32 noundef %736)
  store i32 1, ptr %31, align 4
  br label %813

737:                                              ; preds = %724
  br label %812

738:                                              ; preds = %658
  %739 = load ptr, ptr %7, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %739, i32 0, i32 6
  %741 = load i32, ptr %740, align 1, !tbaa !11
  %742 = and i32 %741, 1
  %743 = icmp ugt i32 %742, 0
  br i1 %743, label %744, label %753

744:                                              ; preds = %738
  %745 = load ptr, ptr %6, align 8, !tbaa !5
  %746 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %747 = icmp ult i32 1, %746
  br i1 %747, label %748, label %750

748:                                              ; preds = %744
  %749 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %751

750:                                              ; preds = %744
  br label %751

751:                                              ; preds = %750, %748
  %752 = phi i32 [ %749, %748 ], [ 1, %750 ]
  call void @libxsmm_handle_error(ptr noundef %745, i32 noundef 90049, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 299, i32 noundef %752)
  store i32 1, ptr %31, align 4
  br label %813

753:                                              ; preds = %738
  %754 = load ptr, ptr %7, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %754, i32 0, i32 6
  %756 = load i32, ptr %755, align 1, !tbaa !11
  %757 = and i32 %756, 2
  %758 = icmp ugt i32 %757, 0
  br i1 %758, label %759, label %768

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

763:                                              ; preds = %759
  %764 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %766

765:                                              ; preds = %759
  br label %766

766:                                              ; preds = %765, %763
  %767 = phi i32 [ %764, %763 ], [ 1, %765 ]
  call void @libxsmm_handle_error(ptr noundef %760, i32 noundef 90039, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 303, i32 noundef %767)
  store i32 1, ptr %31, align 4
  br label %813

768:                                              ; preds = %753
  %769 = load ptr, ptr %7, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %769, i32 0, i32 6
  %771 = load i32, ptr %770, align 1, !tbaa !11
  %772 = and i32 %771, 2048
  %773 = icmp eq i32 %772, 0
  br i1 %773, label %774, label %783

774:                                              ; preds = %768
  %775 = load ptr, ptr %6, align 8, !tbaa !5
  %776 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %777 = icmp ult i32 1, %776
  br i1 %777, label %778, label %780

778:                                              ; preds = %774
  %779 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %781

780:                                              ; preds = %774
  br label %781

781:                                              ; preds = %780, %778
  %782 = phi i32 [ %779, %778 ], [ 1, %780 ]
  call void @libxsmm_handle_error(ptr noundef %775, i32 noundef 90041, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 307, i32 noundef %782)
  store i32 1, ptr %31, align 4
  br label %813

783:                                              ; preds = %768
  %784 = load ptr, ptr %7, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %784, i32 0, i32 6
  %786 = load i32, ptr %785, align 1, !tbaa !11
  %787 = and i32 %786, 4096
  %788 = icmp ugt i32 %787, 0
  br i1 %788, label %789, label %798

789:                                              ; preds = %783
  %790 = load ptr, ptr %6, align 8, !tbaa !5
  %791 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %792 = icmp ult i32 1, %791
  br i1 %792, label %793, label %795

793:                                              ; preds = %789
  %794 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %796

795:                                              ; preds = %789
  br label %796

796:                                              ; preds = %795, %793
  %797 = phi i32 [ %794, %793 ], [ 1, %795 ]
  call void @libxsmm_handle_error(ptr noundef %790, i32 noundef 90042, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 311, i32 noundef %797)
  store i32 1, ptr %31, align 4
  br label %813

798:                                              ; preds = %783
  store i32 4, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  %799 = load i32, ptr %9, align 4, !tbaa !9
  %800 = urem i32 %799, 4
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %811

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

806:                                              ; preds = %802
  %807 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %809

808:                                              ; preds = %802
  br label %809

809:                                              ; preds = %808, %806
  %810 = phi i32 [ %807, %806 ], [ 1, %808 ]
  call void @libxsmm_handle_error(ptr noundef %803, i32 noundef 90054, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 317, i32 noundef %810)
  store i32 1, ptr %31, align 4
  br label %813

811:                                              ; preds = %798
  br label %812

812:                                              ; preds = %811, %737
  store i32 0, ptr %31, align 4
  br label %813

813:                                              ; preds = %812, %809, %796, %781, %766, %751, %735, %722, %707, %692, %677
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #4
  %814 = load i32, ptr %31, align 4
  switch i32 %814, label %1443 [
    i32 0, label %815
  ]

815:                                              ; preds = %813
  br label %825

816:                                              ; preds = %653
  %817 = load ptr, ptr %6, align 8, !tbaa !5
  %818 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %819 = icmp ult i32 1, %818
  br i1 %819, label %820, label %822

820:                                              ; preds = %816
  %821 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %823

822:                                              ; preds = %816
  br label %823

823:                                              ; preds = %822, %820
  %824 = phi i32 [ %821, %820 ], [ 1, %822 ]
  call void @libxsmm_handle_error(ptr noundef %817, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 322, i32 noundef %824)
  store i32 1, ptr %31, align 4
  br label %1443

825:                                              ; preds = %815
  br label %826

826:                                              ; preds = %825, %652
  br label %836

827:                                              ; preds = %484
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %830 = icmp ult i32 1, %829
  br i1 %830, label %831, label %833

831:                                              ; preds = %827
  %832 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %834

833:                                              ; preds = %827
  br label %834

834:                                              ; preds = %833, %831
  %835 = phi i32 [ %832, %831 ], [ 1, %833 ]
  call void @libxsmm_handle_error(ptr noundef %828, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 326, i32 noundef %835)
  store i32 1, ptr %31, align 4
  br label %1443

836:                                              ; preds = %826
  br label %837

837:                                              ; preds = %836, %483
  br label %838

838:                                              ; preds = %837, %140
  %839 = load i32, ptr %8, align 4, !tbaa !9
  %840 = load i32, ptr %14, align 4, !tbaa !9
  %841 = urem i32 %839, %840
  store i32 %841, ptr %11, align 4, !tbaa !9
  %842 = load i32, ptr %8, align 4, !tbaa !9
  %843 = load i32, ptr %14, align 4, !tbaa !9
  %844 = udiv i32 %842, %843
  store i32 %844, ptr %13, align 4, !tbaa !9
  %845 = load i32, ptr %11, align 4, !tbaa !9
  %846 = icmp ugt i32 %845, 0
  br i1 %846, label %847, label %850

847:                                              ; preds = %838
  %848 = load i32, ptr %13, align 4, !tbaa !9
  %849 = add i32 %848, 1
  br label %852

850:                                              ; preds = %838
  %851 = load i32, ptr %13, align 4, !tbaa !9
  br label %852

852:                                              ; preds = %850, %847
  %853 = phi i32 [ %849, %847 ], [ %851, %850 ]
  store i32 %853, ptr %12, align 4, !tbaa !9
  call void @libxsmm_reset_aarch64_gp_reg_mapping(ptr noundef %24)
  %854 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 0
  store i32 32, ptr %854, align 4, !tbaa !18
  %855 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 1
  store i32 32, ptr %855, align 4, !tbaa !20
  %856 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 3
  store i32 33, ptr %856, align 4, !tbaa !21
  %857 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  store i32 34, ptr %857, align 4, !tbaa !22
  %858 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 6
  store i32 35, ptr %858, align 4, !tbaa !23
  %859 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 8
  store i32 36, ptr %859, align 4, !tbaa !24
  %860 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 10
  store i32 38, ptr %860, align 4, !tbaa !25
  %861 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 11
  store i32 39, ptr %861, align 4, !tbaa !26
  %862 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 12
  store i32 8, ptr %862, align 4, !tbaa !27
  %863 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  store i32 41, ptr %863, align 4, !tbaa !28
  %864 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  store i32 42, ptr %864, align 4, !tbaa !29
  %865 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  store i32 43, ptr %865, align 4, !tbaa !30
  %866 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 25
  store i32 44, ptr %866, align 4, !tbaa !31
  %867 = load i32, ptr %26, align 4, !tbaa !9
  %868 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 26
  store i32 %867, ptr %868, align 4, !tbaa !32
  %869 = load i32, ptr %27, align 4, !tbaa !9
  %870 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 27
  store i32 %869, ptr %870, align 4, !tbaa !33
  %871 = load i32, ptr %28, align 4, !tbaa !9
  %872 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 28
  store i32 %871, ptr %872, align 4, !tbaa !34
  call void @libxsmm_reset_loop_label_tracker(ptr noundef %23)
  %873 = load ptr, ptr %6, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %873, i32 0, i32 6
  %875 = load i32, ptr %874, align 4, !tbaa !15
  %876 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_init_micro_kernel_config_aarch64(ptr noundef %22, i32 noundef %875, ptr noundef %876)
  %877 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_open_stream(ptr noundef %877, i16 noundef zeroext 15)
  %878 = load ptr, ptr %7, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %878, i32 0, i32 6
  %880 = load i32, ptr %879, align 1, !tbaa !11
  %881 = and i32 64, %880
  %882 = icmp eq i32 %881, 0
  br i1 %882, label %883, label %889

883:                                              ; preds = %852
  %884 = load ptr, ptr %7, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %884, i32 0, i32 6
  %886 = load i32, ptr %885, align 1, !tbaa !11
  %887 = and i32 128, %886
  %888 = icmp eq i32 %887, 0
  br i1 %888, label %903, label %889

889:                                              ; preds = %883, %852
  %890 = load ptr, ptr %7, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %890, i32 0, i32 6
  %892 = load i32, ptr %891, align 1, !tbaa !11
  %893 = and i32 64, %892
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %895, label %901

895:                                              ; preds = %889
  %896 = load ptr, ptr %7, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %896, i32 0, i32 6
  %898 = load i32, ptr %897, align 1, !tbaa !11
  %899 = and i32 128, %898
  %900 = icmp ne i32 %899, 0
  br i1 %900, label %903, label %901

901:                                              ; preds = %895, %889
  %902 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_close_stream(ptr noundef %902, i16 noundef zeroext 15)
  store i32 1, ptr %31, align 4
  br label %1443

903:                                              ; preds = %895, %883
  %904 = load ptr, ptr %7, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %904, i32 0, i32 6
  %906 = load i32, ptr %905, align 1, !tbaa !11
  %907 = and i32 16384, %906
  %908 = icmp eq i32 %907, 16384
  br i1 %908, label %909, label %977

909:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  store i32 32, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  store i32 80, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  store i32 128, ptr %38, align 4, !tbaa !9
  %910 = load ptr, ptr %6, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 0
  %912 = load i32, ptr %911, align 4, !tbaa !18
  %913 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 0
  %914 = load i32, ptr %913, align 4, !tbaa !18
  %915 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %916 = load i32, ptr %915, align 4, !tbaa !29
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %910, i32 noundef 167772167, i32 noundef %912, i32 noundef %914, i32 noundef %916, i32 noundef 0, i32 noundef 0)
  %917 = load ptr, ptr %6, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %919 = load i32, ptr %918, align 4, !tbaa !29
  %920 = load i32, ptr %36, align 4, !tbaa !9
  %921 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 1
  %922 = load i32, ptr %921, align 4, !tbaa !20
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %917, i32 noundef -1186988026, i32 noundef %919, i32 noundef 127, i32 noundef %920, i32 noundef %922)
  %923 = load ptr, ptr %6, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %925 = load i32, ptr %924, align 4, !tbaa !29
  %926 = load i32, ptr %37, align 4, !tbaa !9
  %927 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 3
  %928 = load i32, ptr %927, align 4, !tbaa !21
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %923, i32 noundef -1186988026, i32 noundef %925, i32 noundef 127, i32 noundef %926, i32 noundef %928)
  %929 = load ptr, ptr %6, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %931 = load i32, ptr %930, align 4, !tbaa !29
  %932 = load i32, ptr %37, align 4, !tbaa !9
  %933 = add nsw i32 %932, 8
  %934 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %929, i32 noundef -1186988026, i32 noundef %931, i32 noundef 127, i32 noundef %933, i32 noundef %934)
  %935 = load ptr, ptr %6, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %937 = load i32, ptr %936, align 4, !tbaa !29
  %938 = load i32, ptr %37, align 4, !tbaa !9
  %939 = add nsw i32 %938, 16
  %940 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %935, i32 noundef -1186988026, i32 noundef %937, i32 noundef 127, i32 noundef %939, i32 noundef %940)
  %941 = load ptr, ptr %6, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %943 = load i32, ptr %942, align 4, !tbaa !29
  %944 = load i32, ptr %37, align 4, !tbaa !9
  %945 = add nsw i32 %944, 24
  %946 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %941, i32 noundef -1186988026, i32 noundef %943, i32 noundef 127, i32 noundef %945, i32 noundef %946)
  %947 = load ptr, ptr %6, align 8, !tbaa !5
  %948 = load i32, ptr %29, align 4, !tbaa !9
  %949 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %947, i32 noundef -1186988026, i32 noundef %948, i32 noundef 127, i32 noundef 0, i32 noundef %949)
  %950 = load ptr, ptr %6, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %952 = load i32, ptr %951, align 4, !tbaa !29
  %953 = load i32, ptr %38, align 4, !tbaa !9
  %954 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  %955 = load i32, ptr %954, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %950, i32 noundef -1186988026, i32 noundef %952, i32 noundef 127, i32 noundef %953, i32 noundef %955)
  %956 = load ptr, ptr %7, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %956, i32 0, i32 7
  %958 = load i8, ptr %957, align 1, !tbaa !35
  %959 = zext i8 %958 to i32
  %960 = icmp ne i32 %959, 0
  br i1 %960, label %961, label %976

961:                                              ; preds = %909
  %962 = load ptr, ptr %6, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %964 = load i32, ptr %963, align 4, !tbaa !29
  %965 = load i32, ptr %36, align 4, !tbaa !9
  %966 = add nsw i32 %965, 40
  %967 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 6
  %968 = load i32, ptr %967, align 4, !tbaa !23
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %962, i32 noundef -1186988026, i32 noundef %964, i32 noundef 127, i32 noundef %966, i32 noundef %968)
  %969 = load ptr, ptr %6, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 23
  %971 = load i32, ptr %970, align 4, !tbaa !29
  %972 = load i32, ptr %37, align 4, !tbaa !9
  %973 = add nsw i32 %972, 40
  %974 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 8
  %975 = load i32, ptr %974, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %969, i32 noundef -1186988026, i32 noundef %971, i32 noundef 127, i32 noundef %973, i32 noundef %975)
  br label %976

976:                                              ; preds = %961, %909
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  br label %986

977:                                              ; preds = %903
  %978 = load ptr, ptr %6, align 8, !tbaa !5
  %979 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %980 = icmp ult i32 1, %979
  br i1 %980, label %981, label %983

981:                                              ; preds = %977
  %982 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %984

983:                                              ; preds = %977
  br label %984

984:                                              ; preds = %983, %981
  %985 = phi i32 [ %982, %981 ], [ 1, %983 ]
  call void @libxsmm_handle_error(ptr noundef %978, i32 noundef 90046, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 408, i32 noundef %985)
  store i32 1, ptr %31, align 4
  br label %1443

986:                                              ; preds = %976
  %987 = load ptr, ptr %6, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %987, i32 0, i32 6
  %989 = load i32, ptr %988, align 4, !tbaa !15
  %990 = icmp uge i32 %989, 2201
  br i1 %990, label %991, label %1000

991:                                              ; preds = %986
  %992 = load ptr, ptr %6, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %992, i32 0, i32 6
  %994 = load i32, ptr %993, align 4, !tbaa !15
  %995 = icmp ule i32 %994, 2999
  br i1 %995, label %996, label %1000

996:                                              ; preds = %991
  %997 = load ptr, ptr %6, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %999 = load i32, ptr %998, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %997, i32 noundef 0, i32 noundef -1, i32 noundef %999)
  br label %1000

1000:                                             ; preds = %996, %991, %986
  %1001 = load ptr, ptr %6, align 8, !tbaa !5
  %1002 = load i32, ptr %19, align 4, !tbaa !9
  %1003 = load i32, ptr %10, align 4, !tbaa !9
  call void @libxsmm_spgemm_max_mn_blocking_factors_aarch64(ptr noundef %1001, i32 noundef %1002, i32 noundef %1003, ptr noundef %20, ptr noundef %21)
  %1004 = load i32, ptr %12, align 4, !tbaa !9
  %1005 = load i32, ptr %20, align 4, !tbaa !9
  %1006 = icmp ule i32 %1004, %1005
  br i1 %1006, label %1007, label %1014

1007:                                             ; preds = %1000
  %1008 = load i32, ptr %12, align 4, !tbaa !9
  %1009 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %1008, ptr %1009, align 4, !tbaa !9
  %1010 = load i32, ptr %12, align 4, !tbaa !9
  %1011 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  store i32 %1010, ptr %1011, align 4, !tbaa !9
  %1012 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 0, ptr %1012, align 4, !tbaa !9
  %1013 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 1
  store i32 0, ptr %1013, align 4, !tbaa !9
  br label %1059

1014:                                             ; preds = %1000
  %1015 = load i32, ptr %12, align 4, !tbaa !9
  %1016 = load i32, ptr %12, align 4, !tbaa !9
  %1017 = load i32, ptr %20, align 4, !tbaa !9
  %1018 = urem i32 %1016, %1017
  %1019 = sub i32 %1015, %1018
  %1020 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %1019, ptr %1020, align 4, !tbaa !9
  %1021 = load i32, ptr %20, align 4, !tbaa !9
  %1022 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  store i32 %1021, ptr %1022, align 4, !tbaa !9
  %1023 = load i32, ptr %12, align 4, !tbaa !9
  %1024 = load i32, ptr %20, align 4, !tbaa !9
  %1025 = urem i32 %1023, %1024
  %1026 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %1025, ptr %1026, align 4, !tbaa !9
  %1027 = load i32, ptr %12, align 4, !tbaa !9
  %1028 = load i32, ptr %20, align 4, !tbaa !9
  %1029 = urem i32 %1027, %1028
  %1030 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 1
  store i32 %1029, ptr %1030, align 4, !tbaa !9
  %1031 = load i32, ptr %11, align 4, !tbaa !9
  %1032 = icmp ugt i32 %1031, 0
  br i1 %1032, label %1033, label %1058

1033:                                             ; preds = %1014
  %1034 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = icmp eq i32 %1035, 0
  br i1 %1036, label %1037, label %1057

1037:                                             ; preds = %1033
  %1038 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  %1039 = load i32, ptr %1038, align 4, !tbaa !9
  %1040 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = icmp ne i32 %1039, %1041
  br i1 %1042, label %1043, label %1056

1043:                                             ; preds = %1037
  %1044 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  %1045 = load i32, ptr %1044, align 4, !tbaa !9
  %1046 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = sub i32 %1045, %1047
  %1049 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 0
  store i32 %1048, ptr %1049, align 4, !tbaa !9
  %1050 = load i32, ptr %20, align 4, !tbaa !9
  %1051 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  store i32 %1050, ptr %1051, align 4, !tbaa !9
  %1052 = load i32, ptr %20, align 4, !tbaa !9
  %1053 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 1
  store i32 %1052, ptr %1053, align 4, !tbaa !9
  %1054 = load i32, ptr %20, align 4, !tbaa !9
  %1055 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 1
  store i32 %1054, ptr %1055, align 4, !tbaa !9
  br label %1056

1056:                                             ; preds = %1043, %1037
  br label %1057

1057:                                             ; preds = %1056, %1033
  br label %1058

1058:                                             ; preds = %1057, %1014
  br label %1059

1059:                                             ; preds = %1058, %1007
  %1060 = load ptr, ptr %7, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1060, i32 0, i32 8
  %1062 = getelementptr inbounds [3 x i8], ptr %1061, i64 0, i64 0
  %1063 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1062)
  %1064 = icmp eq i32 2, %1063
  br i1 %1064, label %1071, label %1065

1065:                                             ; preds = %1059
  %1066 = load ptr, ptr %7, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1066, i32 0, i32 8
  %1068 = getelementptr inbounds [3 x i8], ptr %1067, i64 0, i64 0
  %1069 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1068)
  %1070 = icmp eq i32 12, %1069
  br i1 %1070, label %1071, label %1177

1071:                                             ; preds = %1065, %1059
  %1072 = load ptr, ptr %6, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1072, i32 0, i32 6
  %1074 = load i32, ptr %1073, align 4, !tbaa !15
  %1075 = icmp eq i32 %1074, 2302
  br i1 %1075, label %1081, label %1076

1076:                                             ; preds = %1071
  %1077 = load ptr, ptr %6, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1077, i32 0, i32 6
  %1079 = load i32, ptr %1078, align 4, !tbaa !15
  %1080 = icmp eq i32 %1079, 2202
  br i1 %1080, label %1081, label %1177

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

1087:                                             ; preds = %1081
  %1088 = load ptr, ptr %7, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1088, i32 0, i32 8
  %1090 = getelementptr inbounds [3 x i8], ptr %1089, i64 0, i64 0
  %1091 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %1090)
  %1092 = icmp eq i32 8, %1091
  br i1 %1092, label %1093, label %1167

1093:                                             ; preds = %1087, %1081
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  store i32 16, ptr %39, align 4, !tbaa !9
  %1094 = load i32, ptr %19, align 4, !tbaa !9
  %1095 = icmp ugt i32 %1094, 0
  br i1 %1095, label %1096, label %1117

1096:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %1097 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %22, i32 0, i32 5
  %1098 = load i32, ptr %1097, align 4, !tbaa !36
  %1099 = mul i32 4, %1098
  store i32 %1099, ptr %40, align 4, !tbaa !9
  %1100 = load ptr, ptr %6, align 8, !tbaa !5
  %1101 = load i32, ptr %40, align 4, !tbaa !9
  %1102 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1103 = load i32, ptr %1102, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1100, i32 noundef 1, i32 noundef %1101, i32 noundef %1103)
  %1104 = load i32, ptr %11, align 4, !tbaa !9
  %1105 = icmp ne i32 %1104, 0
  br i1 %1105, label %1106, label %1116

1106:                                             ; preds = %1096
  %1107 = load i32, ptr %11, align 4, !tbaa !9
  %1108 = urem i32 %1107, 4
  %1109 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %22, i32 0, i32 5
  %1110 = load i32, ptr %1109, align 4, !tbaa !36
  %1111 = mul i32 %1108, %1110
  store i32 %1111, ptr %40, align 4, !tbaa !9
  %1112 = load ptr, ptr %6, align 8, !tbaa !5
  %1113 = load i32, ptr %40, align 4, !tbaa !9
  %1114 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1115 = load i32, ptr %1114, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1112, i32 noundef 2, i32 noundef %1113, i32 noundef %1115)
  br label %1116

1116:                                             ; preds = %1106, %1096
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  br label %1122

1117:                                             ; preds = %1093
  %1118 = load ptr, ptr %6, align 8, !tbaa !5
  %1119 = load i32, ptr %39, align 4, !tbaa !9
  %1120 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1121 = load i32, ptr %1120, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1118, i32 noundef 2, i32 noundef %1119, i32 noundef %1121)
  br label %1122

1122:                                             ; preds = %1117, %1116
  %1123 = load i32, ptr %11, align 4, !tbaa !9
  %1124 = icmp ne i32 %1123, 0
  br i1 %1124, label %1125, label %1166

1125:                                             ; preds = %1122
  %1126 = load i32, ptr %19, align 4, !tbaa !9
  %1127 = icmp ugt i32 %1126, 0
  br i1 %1127, label %1128, label %1146

1128:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  %1129 = load i32, ptr %11, align 4, !tbaa !9
  %1130 = urem i32 %1129, 2
  %1131 = mul i32 %1130, 8
  store i32 %1131, ptr %41, align 4, !tbaa !9
  %1132 = load i32, ptr %41, align 4, !tbaa !9
  %1133 = icmp sgt i32 %1132, 0
  br i1 %1133, label %1134, label %1139

1134:                                             ; preds = %1128
  %1135 = load ptr, ptr %6, align 8, !tbaa !5
  %1136 = load i32, ptr %41, align 4, !tbaa !9
  %1137 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1138 = load i32, ptr %1137, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1135, i32 noundef 4, i32 noundef %1136, i32 noundef %1138)
  br label %1139

1139:                                             ; preds = %1134, %1128
  %1140 = load i32, ptr %11, align 4, !tbaa !9
  %1141 = mul i32 %1140, 8
  store i32 %1141, ptr %41, align 4, !tbaa !9
  %1142 = load ptr, ptr %6, align 8, !tbaa !5
  %1143 = load i32, ptr %41, align 4, !tbaa !9
  %1144 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1145 = load i32, ptr %1144, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1142, i32 noundef 5, i32 noundef %1143, i32 noundef %1145)
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  br label %1165

1146:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  %1147 = load i32, ptr %11, align 4, !tbaa !9
  %1148 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %22, i32 0, i32 5
  %1149 = load i32, ptr %1148, align 4, !tbaa !36
  %1150 = mul i32 %1147, %1149
  store i32 %1150, ptr %42, align 4, !tbaa !9
  %1151 = load i32, ptr %42, align 4, !tbaa !9
  %1152 = icmp sgt i32 %1151, 0
  br i1 %1152, label %1153, label %1158

1153:                                             ; preds = %1146
  %1154 = load ptr, ptr %6, align 8, !tbaa !5
  %1155 = load i32, ptr %42, align 4, !tbaa !9
  %1156 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1157 = load i32, ptr %1156, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1154, i32 noundef 4, i32 noundef %1155, i32 noundef %1157)
  br label %1158

1158:                                             ; preds = %1153, %1146
  %1159 = load i32, ptr %11, align 4, !tbaa !9
  %1160 = mul i32 %1159, 4
  store i32 %1160, ptr %42, align 4, !tbaa !9
  %1161 = load ptr, ptr %6, align 8, !tbaa !5
  %1162 = load i32, ptr %42, align 4, !tbaa !9
  %1163 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1164 = load i32, ptr %1163, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1161, i32 noundef 5, i32 noundef %1162, i32 noundef %1164)
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  br label %1165

1165:                                             ; preds = %1158, %1139
  br label %1166

1166:                                             ; preds = %1165, %1122
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  br label %1176

1167:                                             ; preds = %1087
  %1168 = load ptr, ptr %6, align 8, !tbaa !5
  %1169 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1170 = icmp ult i32 1, %1169
  br i1 %1170, label %1171, label %1173

1171:                                             ; preds = %1167
  %1172 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1174

1173:                                             ; preds = %1167
  br label %1174

1174:                                             ; preds = %1173, %1171
  %1175 = phi i32 [ %1172, %1171 ], [ 1, %1173 ]
  call void @libxsmm_handle_error(ptr noundef %1168, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 497, i32 noundef %1175)
  store i32 1, ptr %31, align 4
  br label %1443

1176:                                             ; preds = %1166
  br label %1224

1177:                                             ; preds = %1076, %1065
  %1178 = load ptr, ptr %7, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1178, i32 0, i32 8
  %1180 = getelementptr inbounds [3 x i8], ptr %1179, i64 0, i64 0
  %1181 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %1180)
  %1182 = icmp eq i32 1, %1181
  br i1 %1182, label %1183, label %1214

1183:                                             ; preds = %1177
  %1184 = load ptr, ptr %6, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1184, i32 0, i32 6
  %1186 = load i32, ptr %1185, align 4, !tbaa !15
  %1187 = icmp eq i32 %1186, 2302
  br i1 %1187, label %1193, label %1188

1188:                                             ; preds = %1183
  %1189 = load ptr, ptr %6, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1189, i32 0, i32 6
  %1191 = load i32, ptr %1190, align 4, !tbaa !15
  %1192 = icmp eq i32 %1191, 2202
  br i1 %1192, label %1193, label %1214

1193:                                             ; preds = %1188, %1183
  %1194 = load i32, ptr %11, align 4, !tbaa !9
  %1195 = icmp ne i32 %1194, 0
  br i1 %1195, label %1196, label %1213

1196:                                             ; preds = %1193
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %1197 = load i32, ptr %11, align 4, !tbaa !9
  %1198 = mul i32 %1197, 4
  store i32 %1198, ptr %43, align 4, !tbaa !9
  %1199 = load i32, ptr %43, align 4, !tbaa !9
  %1200 = icmp sgt i32 %1199, 0
  br i1 %1200, label %1201, label %1206

1201:                                             ; preds = %1196
  %1202 = load ptr, ptr %6, align 8, !tbaa !5
  %1203 = load i32, ptr %43, align 4, !tbaa !9
  %1204 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1205 = load i32, ptr %1204, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1202, i32 noundef 4, i32 noundef %1203, i32 noundef %1205)
  br label %1206

1206:                                             ; preds = %1201, %1196
  %1207 = load i32, ptr %11, align 4, !tbaa !9
  %1208 = mul i32 %1207, 4
  store i32 %1208, ptr %43, align 4, !tbaa !9
  %1209 = load ptr, ptr %6, align 8, !tbaa !5
  %1210 = load i32, ptr %43, align 4, !tbaa !9
  %1211 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1212 = load i32, ptr %1211, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %1209, i32 noundef 5, i32 noundef %1210, i32 noundef %1212)
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  br label %1213

1213:                                             ; preds = %1206, %1193
  br label %1223

1214:                                             ; preds = %1188, %1177
  %1215 = load ptr, ptr %6, align 8, !tbaa !5
  %1216 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1217 = icmp ult i32 1, %1216
  br i1 %1217, label %1218, label %1220

1218:                                             ; preds = %1214
  %1219 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1221

1220:                                             ; preds = %1214
  br label %1221

1221:                                             ; preds = %1220, %1218
  %1222 = phi i32 [ %1219, %1218 ], [ 1, %1220 ]
  call void @libxsmm_handle_error(ptr noundef %1215, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 518, i32 noundef %1222)
  store i32 1, ptr %31, align 4
  br label %1443

1223:                                             ; preds = %1213
  br label %1224

1224:                                             ; preds = %1223, %1176
  %1225 = load ptr, ptr %6, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 10
  %1227 = load i32, ptr %1226, align 4, !tbaa !25
  %1228 = load ptr, ptr %7, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1228, i32 0, i32 0
  %1230 = load i32, ptr %1229, align 1, !tbaa !39
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %1225, ptr noundef %23, i32 noundef %1227, i32 noundef %1230)
  br label %1231

1231:                                             ; preds = %1401, %1224
  %1232 = load i32, ptr %15, align 4, !tbaa !9
  %1233 = load i32, ptr %12, align 4, !tbaa !9
  %1234 = icmp ne i32 %1232, %1233
  br i1 %1234, label %1235, label %1402

1235:                                             ; preds = %1231
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  store i32 0, ptr %45, align 4, !tbaa !9
  %1236 = load i32, ptr %16, align 4, !tbaa !9
  %1237 = icmp ugt i32 %1236, 1
  br i1 %1237, label %1238, label %1247

1238:                                             ; preds = %1235
  %1239 = load ptr, ptr %6, align 8, !tbaa !5
  %1240 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1241 = icmp ult i32 1, %1240
  br i1 %1241, label %1242, label %1244

1242:                                             ; preds = %1238
  %1243 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1245

1244:                                             ; preds = %1238
  br label %1245

1245:                                             ; preds = %1244, %1242
  %1246 = phi i32 [ %1243, %1242 ], [ 1, %1244 ]
  call void @libxsmm_handle_error(ptr noundef %1239, i32 noundef 90017, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 530, i32 noundef %1246)
  store i32 1, ptr %31, align 4
  br label %1399

1247:                                             ; preds = %1235
  %1248 = load i32, ptr %16, align 4, !tbaa !9
  %1249 = zext i32 %1248 to i64
  %1250 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 %1249
  %1251 = load i32, ptr %1250, align 4, !tbaa !9
  store i32 %1251, ptr %44, align 4, !tbaa !9
  %1252 = load i32, ptr %11, align 4, !tbaa !9
  %1253 = icmp ne i32 %1252, 0
  br i1 %1253, label %1254, label %1265

1254:                                             ; preds = %1247
  %1255 = load i32, ptr %16, align 4, !tbaa !9
  %1256 = icmp eq i32 %1255, 0
  br i1 %1256, label %1257, label %1265

1257:                                             ; preds = %1254
  %1258 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 1
  %1259 = load i32, ptr %1258, align 4, !tbaa !9
  %1260 = icmp ugt i32 %1259, 0
  br i1 %1260, label %1261, label %1262

1261:                                             ; preds = %1257
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %1264

1262:                                             ; preds = %1257
  %1263 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1263, ptr %45, align 4, !tbaa !9
  br label %1264

1264:                                             ; preds = %1262, %1261
  br label %1271

1265:                                             ; preds = %1254, %1247
  %1266 = load i32, ptr %11, align 4, !tbaa !9
  %1267 = icmp ne i32 %1266, 0
  br i1 %1267, label %1268, label %1270

1268:                                             ; preds = %1265
  %1269 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1269, ptr %45, align 4, !tbaa !9
  br label %1270

1270:                                             ; preds = %1268, %1265
  br label %1271

1271:                                             ; preds = %1270, %1264
  %1272 = load ptr, ptr %6, align 8, !tbaa !5
  %1273 = load i32, ptr %29, align 4, !tbaa !9
  %1274 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 11
  %1275 = load i32, ptr %1274, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %1272, i32 noundef 285212678, i32 noundef %1273, i32 noundef %1275, i32 noundef 0, i8 noundef zeroext 0)
  %1276 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_register_jump_back_label(ptr noundef %1276, ptr noundef %23)
  %1277 = load ptr, ptr %6, align 8, !tbaa !5
  %1278 = load i32, ptr %25, align 4, !tbaa !9
  %1279 = load i32, ptr %27, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %1277, i32 noundef -1186988026, i32 noundef %1278, i32 noundef 127, i32 noundef 0, i32 noundef %1279)
  %1280 = load ptr, ptr %6, align 8, !tbaa !5
  %1281 = load i32, ptr %25, align 4, !tbaa !9
  %1282 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %1280, i32 noundef -1186988026, i32 noundef %1281, i32 noundef 127, i32 noundef 4, i32 noundef %1282)
  %1283 = load i32, ptr %19, align 4, !tbaa !9
  %1284 = icmp ugt i32 %1283, 0
  br i1 %1284, label %1285, label %1299

1285:                                             ; preds = %1271
  %1286 = load ptr, ptr %6, align 8, !tbaa !5
  %1287 = load ptr, ptr %7, align 8, !tbaa !5
  %1288 = load i32, ptr %15, align 4, !tbaa !9
  %1289 = load i32, ptr %16, align 4, !tbaa !9
  %1290 = zext i32 %1289 to i64
  %1291 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 %1290
  %1292 = load i32, ptr %1291, align 4, !tbaa !9
  %1293 = load i32, ptr %44, align 4, !tbaa !9
  %1294 = load i32, ptr %45, align 4, !tbaa !9
  %1295 = load i32, ptr %8, align 4, !tbaa !9
  %1296 = load i32, ptr %14, align 4, !tbaa !9
  %1297 = load i32, ptr %9, align 4, !tbaa !9
  %1298 = load i32, ptr %10, align 4, !tbaa !9
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_mmla_sve(ptr noundef %1286, ptr noundef %23, ptr noundef %30, ptr noundef %24, ptr noundef %22, ptr noundef %1287, i32 noundef %1288, i32 noundef %1292, i32 noundef %1293, i32 noundef %1294, i32 noundef %1295, i32 noundef %1296, i32 noundef %1297, i32 noundef %1298)
  br label %1326

1299:                                             ; preds = %1271
  %1300 = load i32, ptr %19, align 4, !tbaa !9
  %1301 = icmp eq i32 %1300, 0
  br i1 %1301, label %1302, label %1316

1302:                                             ; preds = %1299
  %1303 = load ptr, ptr %6, align 8, !tbaa !5
  %1304 = load ptr, ptr %7, align 8, !tbaa !5
  %1305 = load i32, ptr %15, align 4, !tbaa !9
  %1306 = load i32, ptr %16, align 4, !tbaa !9
  %1307 = zext i32 %1306 to i64
  %1308 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 %1307
  %1309 = load i32, ptr %1308, align 4, !tbaa !9
  %1310 = load i32, ptr %44, align 4, !tbaa !9
  %1311 = load i32, ptr %45, align 4, !tbaa !9
  %1312 = load i32, ptr %8, align 4, !tbaa !9
  %1313 = load i32, ptr %14, align 4, !tbaa !9
  %1314 = load i32, ptr %9, align 4, !tbaa !9
  %1315 = load i32, ptr %10, align 4, !tbaa !9
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_bfdot_sve(ptr noundef %1303, ptr noundef %23, ptr noundef %30, ptr noundef %24, ptr noundef %22, ptr noundef %1304, i32 noundef %1305, i32 noundef %1309, i32 noundef %1310, i32 noundef %1311, i32 noundef %1312, i32 noundef %1313, i32 noundef %1314, i32 noundef %1315)
  br label %1325

1316:                                             ; preds = %1299
  %1317 = load ptr, ptr %6, align 8, !tbaa !5
  %1318 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1319 = icmp ult i32 1, %1318
  br i1 %1319, label %1320, label %1322

1320:                                             ; preds = %1316
  %1321 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1323

1322:                                             ; preds = %1316
  br label %1323

1323:                                             ; preds = %1322, %1320
  %1324 = phi i32 [ %1321, %1320 ], [ 1, %1322 ]
  call void @libxsmm_handle_error(ptr noundef %1317, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef @.str, i32 noundef 585, i32 noundef %1324)
  store i32 1, ptr %31, align 4
  br label %1399

1325:                                             ; preds = %1302
  br label %1326

1326:                                             ; preds = %1325, %1285
  %1327 = load ptr, ptr %6, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  %1329 = load i32, ptr %1328, align 4, !tbaa !22
  %1330 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1331 = load i32, ptr %1330, align 4, !tbaa !30
  %1332 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  %1333 = load i32, ptr %1332, align 4, !tbaa !22
  %1334 = load i32, ptr %10, align 4, !tbaa !9
  %1335 = zext i32 %1334 to i64
  %1336 = load i32, ptr %8, align 4, !tbaa !9
  %1337 = zext i32 %1336 to i64
  %1338 = mul nsw i64 %1335, %1337
  %1339 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %22, i32 0, i32 5
  %1340 = load i32, ptr %1339, align 4, !tbaa !36
  %1341 = zext i32 %1340 to i64
  %1342 = mul nsw i64 %1338, %1341
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1327, i32 noundef 4096, i32 noundef %1329, i32 noundef %1331, i32 noundef %1333, i64 noundef %1342)
  %1343 = load ptr, ptr %6, align 8, !tbaa !5
  %1344 = load i32, ptr %25, align 4, !tbaa !9
  %1345 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %1343, i32 noundef 285212678, i32 noundef %1344, i32 noundef %1345, i32 noundef 4, i8 noundef zeroext 0)
  %1346 = load ptr, ptr %6, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 11
  %1348 = load i32, ptr %1347, align 4, !tbaa !26
  %1349 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 11
  %1350 = load i32, ptr %1349, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %1346, i32 noundef 1358954502, i32 noundef %1348, i32 noundef %1350, i32 noundef 1, i8 noundef zeroext 0)
  %1351 = load ptr, ptr %6, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 11
  %1353 = load i32, ptr %1352, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_cond_jump_back_to_label(ptr noundef %1351, i32 noundef 889192448, i32 noundef %1353, ptr noundef %23)
  %1354 = load ptr, ptr %6, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1356 = load i32, ptr %1355, align 4, !tbaa !30
  %1357 = load i32, ptr %10, align 4, !tbaa !9
  %1358 = load i32, ptr %8, align 4, !tbaa !9
  %1359 = mul i32 %1357, %1358
  %1360 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %22, i32 0, i32 5
  %1361 = load i32, ptr %1360, align 4, !tbaa !36
  %1362 = mul i32 %1359, %1361
  %1363 = zext i32 %1362 to i64
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %1354, i32 noundef %1356, i64 noundef %1363)
  %1364 = load ptr, ptr %6, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1366 = load i32, ptr %1365, align 4, !tbaa !30
  %1367 = load i32, ptr %29, align 4, !tbaa !9
  %1368 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1369 = load i32, ptr %1368, align 4, !tbaa !30
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1364, i32 noundef 453016595, i32 noundef %1366, i32 noundef %1367, i32 noundef %1369, i32 noundef 0, i32 noundef 0)
  %1370 = load ptr, ptr %6, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  %1372 = load i32, ptr %1371, align 4, !tbaa !22
  %1373 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1374 = load i32, ptr %1373, align 4, !tbaa !30
  %1375 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  %1376 = load i32, ptr %1375, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1370, i32 noundef 1258291207, i32 noundef %1372, i32 noundef %1374, i32 noundef %1376, i32 noundef 0, i32 noundef 0)
  %1377 = load ptr, ptr %6, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1379 = load i32, ptr %1378, align 4, !tbaa !30
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %1377, i32 noundef %1379, i64 noundef 4)
  %1380 = load ptr, ptr %6, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1382 = load i32, ptr %1381, align 4, !tbaa !30
  %1383 = load i32, ptr %29, align 4, !tbaa !9
  %1384 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1385 = load i32, ptr %1384, align 4, !tbaa !30
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1380, i32 noundef 453016595, i32 noundef %1382, i32 noundef %1383, i32 noundef %1385, i32 noundef 0, i32 noundef 0)
  %1386 = load ptr, ptr %6, align 8, !tbaa !5
  %1387 = load i32, ptr %25, align 4, !tbaa !9
  %1388 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1389 = load i32, ptr %1388, align 4, !tbaa !30
  %1390 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1386, i32 noundef 1258291207, i32 noundef %1387, i32 noundef %1389, i32 noundef %1390, i32 noundef 0, i32 noundef 0)
  %1391 = load i32, ptr %16, align 4, !tbaa !9
  %1392 = zext i32 %1391 to i64
  %1393 = getelementptr inbounds [2 x i32], ptr %18, i64 0, i64 %1392
  %1394 = load i32, ptr %1393, align 4, !tbaa !9
  %1395 = load i32, ptr %15, align 4, !tbaa !9
  %1396 = add i32 %1395, %1394
  store i32 %1396, ptr %15, align 4, !tbaa !9
  %1397 = load i32, ptr %16, align 4, !tbaa !9
  %1398 = add i32 %1397, 1
  store i32 %1398, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %31, align 4
  br label %1399

1399:                                             ; preds = %1326, %1323, %1245
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  %1400 = load i32, ptr %31, align 4
  switch i32 %1400, label %1443 [
    i32 0, label %1401
  ]

1401:                                             ; preds = %1399
  br label %1231, !llvm.loop !40

1402:                                             ; preds = %1231
  %1403 = load ptr, ptr %6, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  %1405 = load i32, ptr %1404, align 4, !tbaa !22
  %1406 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 24
  %1407 = load i32, ptr %1406, align 4, !tbaa !30
  %1408 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 5
  %1409 = load i32, ptr %1408, align 4, !tbaa !22
  %1410 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %22, i32 0, i32 5
  %1411 = load i32, ptr %1410, align 4, !tbaa !36
  %1412 = zext i32 %1411 to i64
  %1413 = load i32, ptr %8, align 4, !tbaa !9
  %1414 = zext i32 %1413 to i64
  %1415 = mul nsw i64 %1412, %1414
  %1416 = load ptr, ptr %7, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1416, i32 0, i32 5
  %1418 = load i32, ptr %1417, align 1, !tbaa !42
  %1419 = zext i32 %1418 to i64
  %1420 = mul nsw i64 %1415, %1419
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1403, i32 noundef 4096, i32 noundef %1405, i32 noundef %1407, i32 noundef %1409, i64 noundef %1420)
  %1421 = load ptr, ptr %6, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 1
  %1423 = load i32, ptr %1422, align 4, !tbaa !20
  %1424 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 22
  %1425 = load i32, ptr %1424, align 4, !tbaa !28
  %1426 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 1
  %1427 = load i32, ptr %1426, align 4, !tbaa !20
  %1428 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %22, i32 0, i32 3
  %1429 = load i32, ptr %1428, align 4, !tbaa !43
  %1430 = zext i32 %1429 to i64
  %1431 = load i32, ptr %8, align 4, !tbaa !9
  %1432 = zext i32 %1431 to i64
  %1433 = mul nsw i64 %1430, %1432
  %1434 = load ptr, ptr %7, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1434, i32 0, i32 3
  %1436 = load i32, ptr %1435, align 1, !tbaa !44
  %1437 = zext i32 %1436 to i64
  %1438 = mul nsw i64 %1433, %1437
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1421, i32 noundef 4096, i32 noundef %1423, i32 noundef %1425, i32 noundef %1427, i64 noundef %1438)
  %1439 = load ptr, ptr %6, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %24, i32 0, i32 10
  %1441 = load i32, ptr %1440, align 4, !tbaa !25
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1439, ptr noundef %23, i32 noundef %1441, i32 noundef 1)
  %1442 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_close_stream(ptr noundef %1442, i16 noundef zeroext 15)
  store i32 0, ptr %31, align 4
  br label %1443

1443:                                             ; preds = %1402, %1399, %1221, %1174, %984, %901, %834, %823, %813, %650, %480, %470, %307, %138, %109, %94, %79, %64
  call void @llvm.lifetime.end.p0(i64 2101248, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 132, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 2052, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 688, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 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
  %1444 = load i32, ptr %31, align 4
  switch i32 %1444, label %1446 [
    i32 0, label %1445
    i32 1, label %1445
  ]

1445:                                             ; preds = %1443, %1443
  ret void

1446:                                             ; preds = %1443
  unreachable
}

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

declare void @libxsmm_reset_jump_label_tracker(ptr noundef) #3

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #3

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

declare i32 @libxsmm_cpuid_arm_use_bfdot() #3

declare void @libxsmm_reset_aarch64_gp_reg_mapping(ptr noundef) #3

declare void @libxsmm_reset_loop_label_tracker(ptr noundef) #3

declare void @libxsmm_generator_gemm_init_micro_kernel_config_aarch64(ptr noundef, i32 noundef, ptr noundef) #3

declare void @libxsmm_aarch64_instruction_open_stream(ptr noundef, i16 noundef zeroext) #3

declare void @libxsmm_aarch64_instruction_close_stream(ptr noundef, i16 noundef zeroext) #3

declare void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #3

declare void @libxsmm_aarch64_instruction_alu_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #3

declare void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #3

declare void @libxsmm_generator_loop_header_aarch64(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

declare void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #3

declare void @libxsmm_aarch64_instruction_register_jump_back_label(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_mmla_sve(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) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_bfdot_sve(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) #0

declare void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef) #3

declare void @libxsmm_aarch64_instruction_cond_jump_back_to_label(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #3

declare void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef, i32 noundef, i64 noundef) #3

declare void @libxsmm_generator_loop_footer_aarch64(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!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 = !{!7, !7, i64 0}
!18 = !{!19, !10, i64 0}
!19 = !{!"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}
!20 = !{!19, !10, i64 4}
!21 = !{!19, !10, i64 12}
!22 = !{!19, !10, i64 20}
!23 = !{!19, !10, i64 24}
!24 = !{!19, !10, i64 32}
!25 = !{!19, !10, i64 40}
!26 = !{!19, !10, i64 44}
!27 = !{!19, !10, i64 48}
!28 = !{!19, !10, i64 88}
!29 = !{!19, !10, i64 92}
!30 = !{!19, !10, i64 96}
!31 = !{!19, !10, i64 100}
!32 = !{!19, !10, i64 104}
!33 = !{!19, !10, i64 108}
!34 = !{!19, !10, i64 112}
!35 = !{!12, !7, i64 28}
!36 = !{!37, !10, i64 20}
!37 = !{!"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, !38, 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}
!38 = !{!"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}
!39 = !{!12, !10, i64 0}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!12, !10, i64 20}
!43 = !{!37, !10, i64 12}
!44 = !{!12, !10, i64 12}


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

@__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64 = external hidden unnamed_addr constant [53 x i8], align 1
@.str = external hidden unnamed_addr constant [100 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: nounwind uwtable
declare dso_local void @libxsmm_spgemm_max_mn_blocking_factors_aarch64(ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #0 {
  %6 = alloca [2 x i32], align 8
  %7 = alloca [2 x i32], align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %11 = alloca %struct.libxsmm_loop_label_tracker_struct, align 4
  %12 = alloca %struct.libxsmm_gp_reg_mapping_struct, align 4
  %13 = 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 4, ptr nonnull %8) #3
  store i32 4, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #3
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 688, ptr nonnull %10) #3
  call void @llvm.lifetime.start.p0(i64 2052, ptr nonnull %11) #3
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %12) #3
  call void @llvm.lifetime.start.p0(i64 2101248, ptr nonnull %13) #3
  call void @libxsmm_reset_jump_label_tracker(ptr noundef nonnull %13) #3
  %14 = getelementptr inbounds i8, ptr %1, i64 29
  %15 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %14) #3
  %16 = icmp eq i32 %15, 1
  br i1 %16, label %17, label %60

17:                                               ; preds = %5
  %18 = getelementptr inbounds i8, ptr %1, i64 24
  %19 = load i32, ptr %18, align 1, !tbaa !9
  %20 = and i32 %19, 1
  %.not357 = icmp eq i32 %20, 0
  br i1 %.not357, label %26, label %21

21:                                               ; preds = %17
  %22 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %23 = icmp ugt i32 %22, 1
  %24 = load i32, ptr @libxsmm_verbosity, align 4
  %25 = select i1 %23, i32 %24, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 87, i32 noundef %25) #3
  br label %.thread

26:                                               ; preds = %17
  %27 = and i32 %19, 2
  %.not358 = icmp eq i32 %27, 0
  br i1 %.not358, label %33, label %28

28:                                               ; preds = %26
  %29 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %30 = icmp ugt i32 %29, 1
  %31 = load i32, ptr @libxsmm_verbosity, align 4
  %32 = select i1 %30, i32 %31, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 91, i32 noundef %32) #3
  br label %.thread

33:                                               ; preds = %26
  %34 = and i32 %19, 2048
  %.not359 = icmp eq i32 %34, 0
  br i1 %.not359, label %40, label %35

35:                                               ; preds = %33
  %36 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %37 = icmp ugt i32 %36, 1
  %38 = load i32, ptr @libxsmm_verbosity, align 4
  %39 = select i1 %37, i32 %38, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 95, i32 noundef %39) #3
  br label %.thread

40:                                               ; preds = %33
  %41 = and i32 %19, 4096
  %.not360 = icmp eq i32 %41, 0
  br i1 %.not360, label %47, label %42

42:                                               ; preds = %40
  %43 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %44 = icmp ugt i32 %43, 1
  %45 = load i32, ptr @libxsmm_verbosity, align 4
  %46 = select i1 %44, i32 %45, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 99, i32 noundef %46) #3
  br label %.thread

47:                                               ; preds = %40
  %48 = getelementptr inbounds i8, ptr %0, i64 28
  %49 = load i32, ptr %48, align 4, !tbaa !13
  %50 = icmp ugt i32 %49, 2200
  br i1 %50, label %51, label %55

51:                                               ; preds = %47
  %52 = icmp ult i32 %49, 2301
  br i1 %52, label %399, label %53

53:                                               ; preds = %51
  %54 = icmp ult i32 %49, 2401
  %. = select i1 %54, i32 8, i32 16
  br label %399

55:                                               ; preds = %47
  %56 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %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 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 112, i32 noundef %59) #3
  br label %.thread

60:                                               ; preds = %5
  %61 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %14) #3
  %62 = icmp eq i32 %61, 2
  br i1 %62, label %63, label %227

63:                                               ; preds = %60
  %64 = getelementptr inbounds i8, ptr %0, i64 28
  %65 = load i32, ptr %64, align 4, !tbaa !13
  switch i32 %65, label %222 [
    i32 2302, label %66
    i32 2202, label %144
  ]

66:                                               ; preds = %63
  %67 = call i32 @libxsmm_cpuid_arm_use_bfdot() #3
  %sext.mask350 = and i32 %67, 255
  %68 = icmp eq i32 %sext.mask350, 0
  %69 = getelementptr inbounds i8, ptr %1, i64 24
  %70 = load i32, ptr %69, align 1, !tbaa !9
  %71 = and i32 %70, 1
  %.not355 = icmp eq i32 %71, 0
  br i1 %68, label %72, label %109

72:                                               ; preds = %66
  br i1 %.not355, label %78, label %73

73:                                               ; preds = %72
  %74 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %75 = icmp ugt i32 %74, 1
  %76 = load i32, ptr @libxsmm_verbosity, align 4
  %77 = select i1 %75, i32 %76, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 120, i32 noundef %77) #3
  br label %.thread

78:                                               ; preds = %72
  %79 = and i32 %70, 2
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %81, label %86

81:                                               ; preds = %78
  %82 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %83 = icmp ugt i32 %82, 1
  %84 = load i32, ptr @libxsmm_verbosity, align 4
  %85 = select i1 %83, i32 %84, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 124, i32 noundef %85) #3
  br label %.thread

86:                                               ; preds = %78
  %87 = and i32 %70, 2048
  %88 = icmp eq i32 %87, 0
  br i1 %88, label %89, label %94

89:                                               ; preds = %86
  %90 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %91 = icmp ugt i32 %90, 1
  %92 = load i32, ptr @libxsmm_verbosity, align 4
  %93 = select i1 %91, i32 %92, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 128, i32 noundef %93) #3
  br label %.thread

94:                                               ; preds = %86
  %95 = and i32 %70, 4096
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %102

97:                                               ; preds = %94
  %98 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %99 = icmp ugt i32 %98, 1
  %100 = load i32, ptr @libxsmm_verbosity, align 4
  %101 = select i1 %99, i32 %100, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 132, i32 noundef %101) #3
  br label %.thread

102:                                              ; preds = %94
  %103 = and i32 %3, 3
  %.not356 = icmp eq i32 %103, 0
  br i1 %.not356, label %399, label %104

104:                                              ; preds = %102
  %105 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %106 = icmp ugt i32 %105, 1
  %107 = load i32, ptr @libxsmm_verbosity, align 4
  %108 = select i1 %106, i32 %107, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 138, i32 noundef %108) #3
  br label %.thread

109:                                              ; preds = %66
  br i1 %.not355, label %115, label %110

110:                                              ; preds = %109
  %111 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %112 = icmp ugt i32 %111, 1
  %113 = load i32, ptr @libxsmm_verbosity, align 4
  %114 = select i1 %112, i32 %113, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 143, i32 noundef %114) #3
  br label %.thread

115:                                              ; preds = %109
  %116 = and i32 %70, 2
  %.not352 = icmp eq i32 %116, 0
  br i1 %.not352, label %122, label %117

117:                                              ; preds = %115
  %118 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %119 = icmp ugt i32 %118, 1
  %120 = load i32, ptr @libxsmm_verbosity, align 4
  %121 = select i1 %119, i32 %120, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 147, i32 noundef %121) #3
  br label %.thread

122:                                              ; preds = %115
  %123 = and i32 %70, 2048
  %124 = icmp eq i32 %123, 0
  br i1 %124, label %125, label %130

125:                                              ; preds = %122
  %126 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %127 = icmp ugt i32 %126, 1
  %128 = load i32, ptr @libxsmm_verbosity, align 4
  %129 = select i1 %127, i32 %128, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 151, i32 noundef %129) #3
  br label %.thread

130:                                              ; preds = %122
  %131 = and i32 %70, 4096
  %.not353 = icmp eq i32 %131, 0
  br i1 %.not353, label %137, label %132

132:                                              ; preds = %130
  %133 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %134 = icmp ugt i32 %133, 1
  %135 = load i32, ptr @libxsmm_verbosity, align 4
  %136 = select i1 %134, i32 %135, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 155, i32 noundef %136) #3
  br label %.thread

137:                                              ; preds = %130
  %138 = and i32 %3, 1
  %.not354 = icmp eq i32 %138, 0
  br i1 %.not354, label %399, label %139

139:                                              ; preds = %137
  %140 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %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 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 161, i32 noundef %143) #3
  br label %.thread

144:                                              ; preds = %63
  %145 = call i32 @libxsmm_cpuid_arm_use_bfdot() #3
  %sext.mask343 = and i32 %145, 255
  %146 = icmp eq i32 %sext.mask343, 0
  %147 = getelementptr inbounds i8, ptr %1, i64 24
  %148 = load i32, ptr %147, align 1, !tbaa !9
  %149 = and i32 %148, 1
  %.not348 = icmp eq i32 %149, 0
  br i1 %146, label %150, label %187

150:                                              ; preds = %144
  br i1 %.not348, label %156, label %151

151:                                              ; preds = %150
  %152 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %153 = icmp ugt i32 %152, 1
  %154 = load i32, ptr @libxsmm_verbosity, align 4
  %155 = select i1 %153, i32 %154, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 171, i32 noundef %155) #3
  br label %.thread

156:                                              ; preds = %150
  %157 = and i32 %148, 2
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %164

159:                                              ; preds = %156
  %160 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %161 = icmp ugt i32 %160, 1
  %162 = load i32, ptr @libxsmm_verbosity, align 4
  %163 = select i1 %161, i32 %162, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 175, i32 noundef %163) #3
  br label %.thread

164:                                              ; preds = %156
  %165 = and i32 %148, 2048
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %172

167:                                              ; preds = %164
  %168 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %169 = icmp ugt i32 %168, 1
  %170 = load i32, ptr @libxsmm_verbosity, align 4
  %171 = select i1 %169, i32 %170, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 179, i32 noundef %171) #3
  br label %.thread

172:                                              ; preds = %164
  %173 = and i32 %148, 4096
  %174 = icmp eq i32 %173, 0
  br i1 %174, label %175, label %180

175:                                              ; preds = %172
  %176 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %177 = icmp ugt i32 %176, 1
  %178 = load i32, ptr @libxsmm_verbosity, align 4
  %179 = select i1 %177, i32 %178, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 183, i32 noundef %179) #3
  br label %.thread

180:                                              ; preds = %172
  %181 = and i32 %3, 3
  %.not349 = icmp eq i32 %181, 0
  br i1 %.not349, label %399, label %182

182:                                              ; preds = %180
  %183 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %184 = icmp ugt i32 %183, 1
  %185 = load i32, ptr @libxsmm_verbosity, align 4
  %186 = select i1 %184, i32 %185, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 189, i32 noundef %186) #3
  br label %.thread

187:                                              ; preds = %144
  br i1 %.not348, label %193, label %188

188:                                              ; preds = %187
  %189 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %190 = icmp ugt i32 %189, 1
  %191 = load i32, ptr @libxsmm_verbosity, align 4
  %192 = select i1 %190, i32 %191, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 194, i32 noundef %192) #3
  br label %.thread

193:                                              ; preds = %187
  %194 = and i32 %148, 2
  %.not345 = icmp eq i32 %194, 0
  br i1 %.not345, label %200, label %195

195:                                              ; preds = %193
  %196 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %197 = icmp ugt i32 %196, 1
  %198 = load i32, ptr @libxsmm_verbosity, align 4
  %199 = select i1 %197, i32 %198, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 198, i32 noundef %199) #3
  br label %.thread

200:                                              ; preds = %193
  %201 = and i32 %148, 2048
  %202 = icmp eq i32 %201, 0
  br i1 %202, label %203, label %208

203:                                              ; preds = %200
  %204 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %205 = icmp ugt i32 %204, 1
  %206 = load i32, ptr @libxsmm_verbosity, align 4
  %207 = select i1 %205, i32 %206, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 202, i32 noundef %207) #3
  br label %.thread

208:                                              ; preds = %200
  %209 = and i32 %148, 4096
  %.not346 = icmp eq i32 %209, 0
  br i1 %.not346, label %215, label %210

210:                                              ; preds = %208
  %211 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %212 = icmp ugt i32 %211, 1
  %213 = load i32, ptr @libxsmm_verbosity, align 4
  %214 = select i1 %212, i32 %213, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 206, i32 noundef %214) #3
  br label %.thread

215:                                              ; preds = %208
  %216 = and i32 %3, 1
  %.not347 = icmp eq i32 %216, 0
  br i1 %.not347, label %399, label %217

217:                                              ; preds = %215
  %218 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %219 = icmp ugt i32 %218, 1
  %220 = load i32, ptr @libxsmm_verbosity, align 4
  %221 = select i1 %219, i32 %220, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 212, i32 noundef %221) #3
  br label %.thread

222:                                              ; preds = %63
  %223 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %224 = icmp ugt i32 %223, 1
  %225 = load i32, ptr @libxsmm_verbosity, align 4
  %226 = select i1 %224, i32 %225, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 217, i32 noundef %226) #3
  br label %.thread

227:                                              ; preds = %60
  %228 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %14) #3
  %229 = icmp eq i32 %228, 12
  br i1 %229, label %230, label %394

230:                                              ; preds = %227
  %231 = getelementptr inbounds i8, ptr %0, i64 28
  %232 = load i32, ptr %231, align 4, !tbaa !13
  switch i32 %232, label %389 [
    i32 2302, label %233
    i32 2202, label %311
  ]

233:                                              ; preds = %230
  %234 = call i32 @libxsmm_cpuid_arm_use_bfdot() #3
  %sext.mask336 = and i32 %234, 255
  %235 = icmp eq i32 %sext.mask336, 0
  %236 = getelementptr inbounds i8, ptr %1, i64 24
  %237 = load i32, ptr %236, align 1, !tbaa !9
  %238 = and i32 %237, 1
  %.not341 = icmp eq i32 %238, 0
  br i1 %235, label %239, label %276

239:                                              ; preds = %233
  br i1 %.not341, label %245, label %240

240:                                              ; preds = %239
  %241 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %242 = icmp ugt i32 %241, 1
  %243 = load i32, ptr @libxsmm_verbosity, align 4
  %244 = select i1 %242, i32 %243, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 225, i32 noundef %244) #3
  br label %.thread

245:                                              ; preds = %239
  %246 = and i32 %237, 2
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %253

248:                                              ; preds = %245
  %249 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %250 = icmp ugt i32 %249, 1
  %251 = load i32, ptr @libxsmm_verbosity, align 4
  %252 = select i1 %250, i32 %251, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 229, i32 noundef %252) #3
  br label %.thread

253:                                              ; preds = %245
  %254 = and i32 %237, 2048
  %255 = icmp eq i32 %254, 0
  br i1 %255, label %256, label %261

256:                                              ; preds = %253
  %257 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %258 = icmp ugt i32 %257, 1
  %259 = load i32, ptr @libxsmm_verbosity, align 4
  %260 = select i1 %258, i32 %259, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 233, i32 noundef %260) #3
  br label %.thread

261:                                              ; preds = %253
  %262 = and i32 %237, 4096
  %263 = icmp eq i32 %262, 0
  br i1 %263, label %264, label %269

264:                                              ; preds = %261
  %265 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %266 = icmp ugt i32 %265, 1
  %267 = load i32, ptr @libxsmm_verbosity, align 4
  %268 = select i1 %266, i32 %267, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 237, i32 noundef %268) #3
  br label %.thread

269:                                              ; preds = %261
  %270 = and i32 %3, 7
  %.not342 = icmp eq i32 %270, 0
  br i1 %.not342, label %399, label %271

271:                                              ; preds = %269
  %272 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %273 = icmp ugt i32 %272, 1
  %274 = load i32, ptr @libxsmm_verbosity, align 4
  %275 = select i1 %273, i32 %274, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 243, i32 noundef %275) #3
  br label %.thread

276:                                              ; preds = %233
  br i1 %.not341, label %282, label %277

277:                                              ; preds = %276
  %278 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %279 = icmp ugt i32 %278, 1
  %280 = load i32, ptr @libxsmm_verbosity, align 4
  %281 = select i1 %279, i32 %280, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 248, i32 noundef %281) #3
  br label %.thread

282:                                              ; preds = %276
  %283 = and i32 %237, 2
  %.not338 = icmp eq i32 %283, 0
  br i1 %.not338, label %289, label %284

284:                                              ; preds = %282
  %285 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %286 = icmp ugt i32 %285, 1
  %287 = load i32, ptr @libxsmm_verbosity, align 4
  %288 = select i1 %286, i32 %287, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 252, i32 noundef %288) #3
  br label %.thread

289:                                              ; preds = %282
  %290 = and i32 %237, 2048
  %291 = icmp eq i32 %290, 0
  br i1 %291, label %292, label %297

292:                                              ; preds = %289
  %293 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %294 = icmp ugt i32 %293, 1
  %295 = load i32, ptr @libxsmm_verbosity, align 4
  %296 = select i1 %294, i32 %295, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 256, i32 noundef %296) #3
  br label %.thread

297:                                              ; preds = %289
  %298 = and i32 %237, 4096
  %.not339 = icmp eq i32 %298, 0
  br i1 %.not339, label %304, label %299

299:                                              ; preds = %297
  %300 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %301 = icmp ugt i32 %300, 1
  %302 = load i32, ptr @libxsmm_verbosity, align 4
  %303 = select i1 %301, i32 %302, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 260, i32 noundef %303) #3
  br label %.thread

304:                                              ; preds = %297
  %305 = and i32 %3, 3
  %.not340 = icmp eq i32 %305, 0
  br i1 %.not340, label %399, label %306

306:                                              ; preds = %304
  %307 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %308 = icmp ugt i32 %307, 1
  %309 = load i32, ptr @libxsmm_verbosity, align 4
  %310 = select i1 %308, i32 %309, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 266, i32 noundef %310) #3
  br label %.thread

311:                                              ; preds = %230
  %312 = call i32 @libxsmm_cpuid_arm_use_bfdot() #3
  %sext.mask = and i32 %312, 255
  %313 = icmp eq i32 %sext.mask, 0
  %314 = getelementptr inbounds i8, ptr %1, i64 24
  %315 = load i32, ptr %314, align 1, !tbaa !9
  %316 = and i32 %315, 1
  %.not334 = icmp eq i32 %316, 0
  br i1 %313, label %317, label %354

317:                                              ; preds = %311
  br i1 %.not334, label %323, label %318

318:                                              ; preds = %317
  %319 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %320 = icmp ugt i32 %319, 1
  %321 = load i32, ptr @libxsmm_verbosity, align 4
  %322 = select i1 %320, i32 %321, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 276, i32 noundef %322) #3
  br label %.thread

323:                                              ; preds = %317
  %324 = and i32 %315, 2
  %325 = icmp eq i32 %324, 0
  br i1 %325, label %326, label %331

326:                                              ; preds = %323
  %327 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %328 = icmp ugt i32 %327, 1
  %329 = load i32, ptr @libxsmm_verbosity, align 4
  %330 = select i1 %328, i32 %329, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 280, i32 noundef %330) #3
  br label %.thread

331:                                              ; preds = %323
  %332 = and i32 %315, 2048
  %333 = icmp eq i32 %332, 0
  br i1 %333, label %334, label %339

334:                                              ; preds = %331
  %335 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %336 = icmp ugt i32 %335, 1
  %337 = load i32, ptr @libxsmm_verbosity, align 4
  %338 = select i1 %336, i32 %337, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 284, i32 noundef %338) #3
  br label %.thread

339:                                              ; preds = %331
  %340 = and i32 %315, 4096
  %341 = icmp eq i32 %340, 0
  br i1 %341, label %342, label %347

342:                                              ; preds = %339
  %343 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %344 = icmp ugt i32 %343, 1
  %345 = load i32, ptr @libxsmm_verbosity, align 4
  %346 = select i1 %344, i32 %345, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 288, i32 noundef %346) #3
  br label %.thread

347:                                              ; preds = %339
  %348 = and i32 %3, 7
  %.not335 = icmp eq i32 %348, 0
  br i1 %.not335, label %399, label %349

349:                                              ; preds = %347
  %350 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %351 = icmp ugt i32 %350, 1
  %352 = load i32, ptr @libxsmm_verbosity, align 4
  %353 = select i1 %351, i32 %352, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 294, i32 noundef %353) #3
  br label %.thread

354:                                              ; preds = %311
  br i1 %.not334, label %360, label %355

355:                                              ; preds = %354
  %356 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %357 = icmp ugt i32 %356, 1
  %358 = load i32, ptr @libxsmm_verbosity, align 4
  %359 = select i1 %357, i32 %358, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90049, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 299, i32 noundef %359) #3
  br label %.thread

360:                                              ; preds = %354
  %361 = and i32 %315, 2
  %.not331 = icmp eq i32 %361, 0
  br i1 %.not331, label %367, label %362

362:                                              ; preds = %360
  %363 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %364 = icmp ugt i32 %363, 1
  %365 = load i32, ptr @libxsmm_verbosity, align 4
  %366 = select i1 %364, i32 %365, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90039, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 303, i32 noundef %366) #3
  br label %.thread

367:                                              ; preds = %360
  %368 = and i32 %315, 2048
  %369 = icmp eq i32 %368, 0
  br i1 %369, label %370, label %375

370:                                              ; preds = %367
  %371 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %372 = icmp ugt i32 %371, 1
  %373 = load i32, ptr @libxsmm_verbosity, align 4
  %374 = select i1 %372, i32 %373, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90041, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 307, i32 noundef %374) #3
  br label %.thread

375:                                              ; preds = %367
  %376 = and i32 %315, 4096
  %.not332 = icmp eq i32 %376, 0
  br i1 %.not332, label %382, label %377

377:                                              ; preds = %375
  %378 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %379 = icmp ugt i32 %378, 1
  %380 = load i32, ptr @libxsmm_verbosity, align 4
  %381 = select i1 %379, i32 %380, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90042, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 311, i32 noundef %381) #3
  br label %.thread

382:                                              ; preds = %375
  %383 = and i32 %3, 3
  %.not333 = icmp eq i32 %383, 0
  br i1 %.not333, label %399, label %384

384:                                              ; preds = %382
  %385 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %386 = icmp ugt i32 %385, 1
  %387 = load i32, ptr @libxsmm_verbosity, align 4
  %388 = select i1 %386, i32 %387, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90054, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 317, i32 noundef %388) #3
  br label %.thread

389:                                              ; preds = %230
  %390 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %391 = icmp ugt i32 %390, 1
  %392 = load i32, ptr @libxsmm_verbosity, align 4
  %393 = select i1 %391, i32 %392, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 322, i32 noundef %393) #3
  br label %.thread

394:                                              ; preds = %227
  %395 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %396 = icmp ugt i32 %395, 1
  %397 = load i32, ptr @libxsmm_verbosity, align 4
  %398 = select i1 %396, i32 %397, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 326, i32 noundef %398) #3
  br label %.thread

399:                                              ; preds = %382, %347, %304, %269, %215, %180, %137, %102, %53, %51
  %.not368 = phi i1 [ true, %51 ], [ true, %53 ], [ false, %102 ], [ true, %137 ], [ false, %180 ], [ true, %215 ], [ false, %269 ], [ true, %304 ], [ false, %347 ], [ true, %382 ]
  %.8308 = phi i32 [ 0, %51 ], [ 0, %53 ], [ 1, %102 ], [ 0, %137 ], [ 1, %180 ], [ 0, %215 ], [ 1, %269 ], [ 0, %304 ], [ 1, %347 ], [ 0, %382 ]
  %.8 = phi i32 [ 4, %51 ], [ %., %53 ], [ 4, %102 ], [ 8, %137 ], [ 4, %180 ], [ 4, %215 ], [ 4, %269 ], [ 8, %304 ], [ 4, %347 ], [ 4, %382 ]
  %400 = add nsw i32 %.8, -1
  %401 = and i32 %400, %2
  %402 = udiv i32 %2, %.8
  %403 = icmp ne i32 %401, 0
  %404 = zext i1 %403 to i32
  %405 = add nuw nsw i32 %402, %404
  call void @libxsmm_reset_aarch64_gp_reg_mapping(ptr noundef nonnull %12) #3
  store i32 32, ptr %12, align 4, !tbaa !16
  %406 = getelementptr inbounds i8, ptr %12, i64 4
  store i32 32, ptr %406, align 4, !tbaa !18
  %407 = getelementptr inbounds i8, ptr %12, i64 12
  store i32 33, ptr %407, align 4, !tbaa !19
  %408 = getelementptr inbounds i8, ptr %12, i64 20
  store i32 34, ptr %408, align 4, !tbaa !20
  %409 = getelementptr inbounds i8, ptr %12, i64 24
  store i32 35, ptr %409, align 4, !tbaa !21
  %410 = getelementptr inbounds i8, ptr %12, i64 32
  store i32 36, ptr %410, align 4, !tbaa !22
  %411 = getelementptr inbounds i8, ptr %12, i64 40
  store i32 38, ptr %411, align 4, !tbaa !23
  %412 = getelementptr inbounds i8, ptr %12, i64 44
  store i32 39, ptr %412, align 4, !tbaa !24
  %413 = getelementptr inbounds i8, ptr %12, i64 48
  store i32 8, ptr %413, align 4, !tbaa !25
  %414 = getelementptr inbounds i8, ptr %12, i64 88
  %415 = getelementptr inbounds i8, ptr %12, i64 92
  %416 = getelementptr inbounds i8, ptr %12, i64 96
  store <4 x i32> <i32 41, i32 42, i32 43, i32 44>, ptr %414, align 4, !tbaa !5
  %417 = getelementptr inbounds i8, ptr %12, i64 104
  store i32 36, ptr %417, align 4, !tbaa !26
  %418 = getelementptr inbounds i8, ptr %12, i64 108
  store i32 13, ptr %418, align 4, !tbaa !27
  %419 = getelementptr inbounds i8, ptr %12, i64 112
  store i32 14, ptr %419, align 4, !tbaa !28
  call void @libxsmm_reset_loop_label_tracker(ptr noundef nonnull %11) #3
  %420 = getelementptr inbounds i8, ptr %0, i64 28
  %421 = load i32, ptr %420, align 4, !tbaa !13
  call void @libxsmm_generator_gemm_init_micro_kernel_config_aarch64(ptr noundef nonnull %10, i32 noundef %421, ptr noundef nonnull %1) #3
  call void @libxsmm_aarch64_instruction_open_stream(ptr noundef nonnull %0, i16 noundef zeroext 15) #3
  %422 = getelementptr inbounds i8, ptr %1, i64 24
  %423 = load i32, ptr %422, align 1, !tbaa !9
  %424 = trunc i32 %423 to i8
  %trunc = and i8 %424, -64
  switch i8 %trunc, label %425 [
    i8 -64, label %426
    i8 0, label %426
  ]

425:                                              ; preds = %399
  call void @libxsmm_aarch64_instruction_close_stream(ptr noundef nonnull %0, i16 noundef zeroext 15) #3
  br label %.thread

426:                                              ; preds = %399, %399
  %427 = and i32 %423, 16384
  %.not363 = icmp eq i32 %427, 0
  br i1 %.not363, label %450, label %428

428:                                              ; preds = %426
  %429 = load i32, ptr %12, align 4, !tbaa !16
  %430 = load i32, ptr %415, align 4, !tbaa !29
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 167772167, i32 noundef %429, i32 noundef %429, i32 noundef %430, i32 noundef 0, i32 noundef 0) #3
  %431 = load i32, ptr %415, align 4, !tbaa !29
  %432 = load i32, ptr %406, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %431, i32 noundef 127, i32 noundef 32, i32 noundef %432) #3
  %433 = load i32, ptr %415, align 4, !tbaa !29
  %434 = load i32, ptr %407, align 4, !tbaa !19
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %433, i32 noundef 127, i32 noundef 80, i32 noundef %434) #3
  %435 = load i32, ptr %415, align 4, !tbaa !29
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %435, i32 noundef 127, i32 noundef 88, i32 noundef 35) #3
  %436 = load i32, ptr %415, align 4, !tbaa !29
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %436, i32 noundef 127, i32 noundef 96, i32 noundef 36) #3
  %437 = load i32, ptr %415, align 4, !tbaa !29
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %437, i32 noundef 127, i32 noundef 104, i32 noundef 47) #3
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef 47, i32 noundef 127, i32 noundef 0, i32 noundef 47) #3
  %438 = load i32, ptr %415, align 4, !tbaa !29
  %439 = load i32, ptr %408, align 4, !tbaa !20
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %438, i32 noundef 127, i32 noundef 128, i32 noundef %439) #3
  %440 = getelementptr inbounds i8, ptr %1, i64 28
  %441 = load i8, ptr %440, align 1, !tbaa !30
  %.not364 = icmp eq i8 %441, 0
  br i1 %.not364, label %447, label %442

442:                                              ; preds = %428
  %443 = load i32, ptr %415, align 4, !tbaa !29
  %444 = load i32, ptr %409, align 4, !tbaa !21
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %443, i32 noundef 127, i32 noundef 72, i32 noundef %444) #3
  %445 = load i32, ptr %415, align 4, !tbaa !29
  %446 = load i32, ptr %410, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %445, i32 noundef 127, i32 noundef 120, i32 noundef %446) #3
  br label %447

447:                                              ; preds = %442, %428
  %448 = load i32, ptr %420, align 4, !tbaa !13
  %449 = add i32 %448, -2201
  %or.cond378 = icmp ult i32 %449, 799
  br i1 %or.cond378, label %455, label %457

450:                                              ; preds = %426
  %451 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %452 = icmp ugt i32 %451, 1
  %453 = load i32, ptr @libxsmm_verbosity, align 4
  %454 = select i1 %452, i32 %453, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90046, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 408, i32 noundef %454) #3
  br label %.thread

455:                                              ; preds = %447
  %456 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 0, i32 noundef -1, i32 noundef %456) #3
  br label %457

457:                                              ; preds = %455, %447
  call void @libxsmm_spgemm_max_mn_blocking_factors_aarch64(ptr noundef nonnull %0, i32 noundef %.8308, i32 noundef %4, ptr noundef nonnull %8, ptr noundef nonnull %9)
  %458 = load i32, ptr %8, align 4, !tbaa !5
  %.not365 = icmp ugt i32 %405, %458
  br i1 %.not365, label %462, label %459

459:                                              ; preds = %457
  store i32 %405, ptr %7, align 8, !tbaa !5
  store i32 %405, ptr %6, align 8, !tbaa !5
  %460 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 0, ptr %460, align 4, !tbaa !5
  %461 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 0, ptr %461, align 4, !tbaa !5
  br label %470

462:                                              ; preds = %457
  %463 = urem i32 %405, %458
  %464 = sub nsw i32 %405, %463
  store i32 %464, ptr %7, align 8, !tbaa !5
  store i32 %458, ptr %6, align 8, !tbaa !5
  %465 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 %463, ptr %465, align 4, !tbaa !5
  %466 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %463, ptr %466, align 4, !tbaa !5
  %467 = icmp ne i32 %463, 0
  %not. = xor i1 %403, true
  %or.cond8 = select i1 %not., i1 true, i1 %467
  %.not366 = icmp eq i32 %464, %458
  %or.cond404 = select i1 %or.cond8, i1 true, i1 %.not366
  br i1 %or.cond404, label %470, label %468

468:                                              ; preds = %462
  %469 = sub nsw i32 %464, %458
  store i32 %469, ptr %7, align 8, !tbaa !5
  store i32 %458, ptr %465, align 4, !tbaa !5
  store i32 %458, ptr %466, align 4, !tbaa !5
  br label %470

470:                                              ; preds = %462, %468, %459
  %471 = phi i32 [ %463, %462 ], [ 1, %468 ], [ 0, %459 ]
  %472 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %14) #3
  %473 = icmp eq i32 %472, 2
  br i1 %473, label %477, label %474

474:                                              ; preds = %470
  %475 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %14) #3
  %476 = icmp eq i32 %475, 12
  br i1 %476, label %477, label %516

477:                                              ; preds = %474, %470
  %478 = load i32, ptr %420, align 4, !tbaa !13
  switch i32 %478, label %516 [
    i32 2302, label %479
    i32 2202, label %479
  ]

479:                                              ; preds = %477, %477
  %480 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %14) #3
  %481 = icmp eq i32 %480, 2
  br i1 %481, label %485, label %482

482:                                              ; preds = %479
  %483 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %14) #3
  %484 = icmp eq i32 %483, 8
  br i1 %484, label %485, label %511

485:                                              ; preds = %482, %479
  br i1 %.not368, label %491, label %486

486:                                              ; preds = %485
  %487 = getelementptr inbounds i8, ptr %10, i64 20
  %488 = load i32, ptr %487, align 4, !tbaa !32
  %489 = shl i32 %488, 2
  %490 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %489, i32 noundef %490) #3
  %cond380 = icmp eq i32 %401, 0
  br i1 %cond380, label %531, label %493

491:                                              ; preds = %485
  %492 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef 16, i32 noundef %492) #3
  %.not370 = icmp eq i32 %401, 0
  br i1 %.not370, label %531, label %502

493:                                              ; preds = %486
  %494 = and i32 %2, 3
  %495 = load i32, ptr %487, align 4, !tbaa !32
  %496 = mul i32 %495, %494
  %497 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %496, i32 noundef %497) #3
  %498 = shl nuw nsw i32 %401, 3
  %499 = and i32 %498, 8
  %.not371 = icmp eq i32 %499, 0
  br i1 %.not371, label %.sink.split, label %500

500:                                              ; preds = %493
  %501 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 4, i32 noundef %499, i32 noundef %501) #3
  br label %.sink.split

502:                                              ; preds = %491
  %503 = getelementptr inbounds i8, ptr %10, i64 20
  %504 = load i32, ptr %503, align 4, !tbaa !32
  %505 = mul i32 %504, %401
  %506 = icmp sgt i32 %505, 0
  br i1 %506, label %507, label %509

507:                                              ; preds = %502
  %508 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 4, i32 noundef %505, i32 noundef %508) #3
  br label %509

509:                                              ; preds = %507, %502
  %510 = shl nuw nsw i32 %401, 2
  br label %.sink.split

511:                                              ; preds = %482
  %512 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %513 = icmp ugt i32 %512, 1
  %514 = load i32, ptr @libxsmm_verbosity, align 4
  %515 = select i1 %513, i32 %514, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 497, i32 noundef %515) #3
  br label %.thread

516:                                              ; preds = %477, %474
  %517 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %14) #3
  %518 = icmp eq i32 %517, 1
  br i1 %518, label %519, label %525

519:                                              ; preds = %516
  %520 = load i32, ptr %420, align 4, !tbaa !13
  switch i32 %520, label %525 [
    i32 2302, label %521
    i32 2202, label %521
  ]

521:                                              ; preds = %519, %519
  %.not367 = icmp eq i32 %401, 0
  br i1 %.not367, label %531, label %522

522:                                              ; preds = %521
  %523 = shl nuw nsw i32 %401, 2
  %524 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 4, i32 noundef %523, i32 noundef %524) #3
  br label %.sink.split

525:                                              ; preds = %519, %516
  %526 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %527 = icmp ugt i32 %526, 1
  %528 = load i32, ptr @libxsmm_verbosity, align 4
  %529 = select i1 %527, i32 %528, i32 1
  call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 518, i32 noundef %529) #3
  br label %.thread

.sink.split:                                      ; preds = %493, %500, %522, %509
  %.sink = phi i32 [ %510, %509 ], [ %523, %522 ], [ %498, %500 ], [ %498, %493 ]
  %530 = load i32, ptr %414, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 5, i32 noundef %.sink, i32 noundef %530) #3
  br label %531

531:                                              ; preds = %.sink.split, %486, %491, %521
  %532 = load i32, ptr %411, align 4, !tbaa !23
  %533 = load i32, ptr %1, align 1, !tbaa !35
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %11, i32 noundef %532, i32 noundef %533) #3
  %.not372405 = icmp eq i32 %405, 0
  br i1 %.not372405, label %.._crit_edge_crit_edge, label %.lr.ph

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

.lr.ph:                                           ; preds = %531
  %.not373 = icmp eq i32 %471, 0
  %534 = zext i32 %4 to i64
  %535 = zext i32 %2 to i64
  %536 = mul nuw nsw i64 %534, %535
  %537 = getelementptr inbounds i8, ptr %10, i64 20
  %538 = mul i32 %4, %2
  %539 = load i32, ptr %6, align 8, !tbaa !5
  %540 = select i1 %403, i1 %.not373, i1 false
  %.0.peel = select i1 %540, i32 %401, i32 0
  %541 = load i32, ptr %412, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef 47, i32 noundef %541, i32 noundef 0, i8 noundef zeroext 0) #3
  call void @libxsmm_aarch64_instruction_register_jump_back_label(ptr noundef %0, ptr noundef nonnull %11) #3
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef 35, i32 noundef 127, i32 noundef 0, i32 noundef 13) #3
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef 35, i32 noundef 127, i32 noundef 4, i32 noundef 14) #3
  %542 = load i32, ptr %7, align 8, !tbaa !5
  br i1 %.not368, label %544, label %543

543:                                              ; preds = %.lr.ph
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_mmla_sve(ptr noundef %0, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef nonnull %1, i32 noundef 0, i32 noundef %542, i32 noundef %539, i32 noundef %.0.peel, i32 noundef %2, i32 noundef %.8, i32 noundef %3, i32 noundef %4)
  br label %545

544:                                              ; preds = %.lr.ph
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_bfdot_sve(ptr noundef %0, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef nonnull %1, i32 noundef 0, i32 noundef %542, i32 noundef %539, i32 noundef %.0.peel, i32 noundef %2, i32 noundef %.8, i32 noundef %3, i32 noundef %4)
  br label %545

545:                                              ; preds = %544, %543
  %546 = load i32, ptr %408, align 4, !tbaa !20
  %547 = load i32, ptr %416, align 4, !tbaa !36
  %548 = load i32, ptr %537, align 4, !tbaa !32
  %549 = zext i32 %548 to i64
  %550 = mul nuw nsw i64 %536, %549
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %546, i32 noundef %547, i32 noundef %546, i64 noundef %550) #3
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef 35, i32 noundef 35, i32 noundef 4, i8 noundef zeroext 0) #3
  %551 = load i32, ptr %412, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 1358954502, i32 noundef %551, i32 noundef %551, i32 noundef 1, i8 noundef zeroext 0) #3
  %552 = load i32, ptr %412, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_cond_jump_back_to_label(ptr noundef %0, i32 noundef 889192448, i32 noundef %552, ptr noundef nonnull %11) #3
  %553 = load i32, ptr %416, align 4, !tbaa !36
  %554 = load i32, ptr %537, align 4, !tbaa !32
  %555 = mul i32 %538, %554
  %556 = zext i32 %555 to i64
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %0, i32 noundef %553, i64 noundef %556) #3
  %557 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 453016595, i32 noundef %557, i32 noundef 47, i32 noundef %557, i32 noundef 0, i32 noundef 0) #3
  %558 = load i32, ptr %408, align 4, !tbaa !20
  %559 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 1258291207, i32 noundef %558, i32 noundef %559, i32 noundef %558, i32 noundef 0, i32 noundef 0) #3
  %560 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %0, i32 noundef %560, i64 noundef 4) #3
  %561 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 453016595, i32 noundef %561, i32 noundef 47, i32 noundef %561, i32 noundef 0, i32 noundef 0) #3
  %562 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 1258291207, i32 noundef 35, i32 noundef %562, i32 noundef 35, i32 noundef 0, i32 noundef 0) #3
  %.not372.peel = icmp eq i32 %542, %405
  br i1 %.not372.peel, label %._crit_edge, label %.lr.ph.peel.newph

.lr.ph.peel.newph:                                ; preds = %545, %575
  %indvars.iv = phi i64 [ %indvars.iv.next, %575 ], [ 1, %545 ]
  %.0296407 = phi i32 [ %593, %575 ], [ %542, %545 ]
  %exitcond.not = icmp eq i64 %indvars.iv, 2
  br i1 %exitcond.not, label %.thread400, label %567

.thread400:                                       ; preds = %.lr.ph.peel.newph
  %563 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %564 = icmp ugt i32 %563, 1
  %565 = load i32, ptr @libxsmm_verbosity, align 4
  %566 = select i1 %564, i32 %565, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90017, ptr noundef nonnull @__func__.libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64, ptr noundef nonnull @.str, i32 noundef 530, i32 noundef %566) #3
  br label %.thread

567:                                              ; preds = %.lr.ph.peel.newph
  %568 = getelementptr inbounds [2 x i32], ptr %6, i64 0, i64 %indvars.iv
  %569 = load i32, ptr %568, align 4, !tbaa !5
  %570 = load i32, ptr %412, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef 47, i32 noundef %570, i32 noundef 0, i8 noundef zeroext 0) #3
  call void @libxsmm_aarch64_instruction_register_jump_back_label(ptr noundef %0, ptr noundef nonnull %11) #3
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef 35, i32 noundef 127, i32 noundef 0, i32 noundef 13) #3
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef 35, i32 noundef 127, i32 noundef 4, i32 noundef 14) #3
  %571 = getelementptr inbounds [2 x i32], ptr %7, i64 0, i64 %indvars.iv
  %572 = load i32, ptr %571, align 4, !tbaa !5
  br i1 %.not368, label %574, label %573

573:                                              ; preds = %567
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_mmla_sve(ptr noundef %0, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef nonnull %1, i32 noundef %.0296407, i32 noundef %572, i32 noundef %569, i32 noundef %401, i32 noundef %2, i32 noundef %.8, i32 noundef %3, i32 noundef %4)
  br label %575

574:                                              ; preds = %567
  call void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_bfdot_sve(ptr noundef %0, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef nonnull %1, i32 noundef %.0296407, i32 noundef %572, i32 noundef %569, i32 noundef %401, i32 noundef %2, i32 noundef %.8, i32 noundef %3, i32 noundef %4)
  br label %575

575:                                              ; preds = %573, %574
  %576 = load i32, ptr %408, align 4, !tbaa !20
  %577 = load i32, ptr %416, align 4, !tbaa !36
  %578 = load i32, ptr %537, align 4, !tbaa !32
  %579 = zext i32 %578 to i64
  %580 = mul nuw nsw i64 %536, %579
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %576, i32 noundef %577, i32 noundef %576, i64 noundef %580) #3
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef 35, i32 noundef 35, i32 noundef 4, i8 noundef zeroext 0) #3
  %581 = load i32, ptr %412, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 1358954502, i32 noundef %581, i32 noundef %581, i32 noundef 1, i8 noundef zeroext 0) #3
  %582 = load i32, ptr %412, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_cond_jump_back_to_label(ptr noundef %0, i32 noundef 889192448, i32 noundef %582, ptr noundef nonnull %11) #3
  %583 = load i32, ptr %416, align 4, !tbaa !36
  %584 = load i32, ptr %537, align 4, !tbaa !32
  %585 = mul i32 %538, %584
  %586 = zext i32 %585 to i64
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %0, i32 noundef %583, i64 noundef %586) #3
  %587 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 453016595, i32 noundef %587, i32 noundef 47, i32 noundef %587, i32 noundef 0, i32 noundef 0) #3
  %588 = load i32, ptr %408, align 4, !tbaa !20
  %589 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 1258291207, i32 noundef %588, i32 noundef %589, i32 noundef %588, i32 noundef 0, i32 noundef 0) #3
  %590 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %0, i32 noundef %590, i64 noundef 4) #3
  %591 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 453016595, i32 noundef %591, i32 noundef 47, i32 noundef %591, i32 noundef 0, i32 noundef 0) #3
  %592 = load i32, ptr %416, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 1258291207, i32 noundef 35, i32 noundef %592, i32 noundef 35, i32 noundef 0, i32 noundef 0) #3
  %593 = add i32 %572, %.0296407
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not372 = icmp eq i32 %593, %405
  br i1 %.not372, label %._crit_edge, label %.lr.ph.peel.newph, !llvm.loop !37

._crit_edge:                                      ; preds = %545, %575, %.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre, %.._crit_edge_crit_edge ], [ %535, %575 ], [ %535, %545 ]
  %594 = load i32, ptr %408, align 4, !tbaa !20
  %595 = load i32, ptr %416, align 4, !tbaa !36
  %596 = getelementptr inbounds i8, ptr %10, i64 20
  %597 = load i32, ptr %596, align 4, !tbaa !32
  %598 = zext i32 %597 to i64
  %599 = mul nuw nsw i64 %.pre-phi, %598
  %600 = getelementptr inbounds i8, ptr %1, i64 20
  %601 = load i32, ptr %600, align 1, !tbaa !40
  %602 = zext i32 %601 to i64
  %603 = mul nuw nsw i64 %599, %602
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %594, i32 noundef %595, i32 noundef %594, i64 noundef %603) #3
  %604 = load i32, ptr %406, align 4, !tbaa !18
  %605 = load i32, ptr %414, align 4, !tbaa !31
  %606 = getelementptr inbounds i8, ptr %10, i64 12
  %607 = load i32, ptr %606, align 4, !tbaa !41
  %608 = zext i32 %607 to i64
  %609 = mul nuw nsw i64 %.pre-phi, %608
  %610 = getelementptr inbounds i8, ptr %1, i64 12
  %611 = load i32, ptr %610, align 1, !tbaa !42
  %612 = zext i32 %611 to i64
  %613 = mul nuw nsw i64 %609, %612
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %604, i32 noundef %605, i32 noundef %604, i64 noundef %613) #3
  %614 = load i32, ptr %411, align 4, !tbaa !23
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %0, ptr noundef nonnull %11, i32 noundef %614, i32 noundef 1) #3
  call void @libxsmm_aarch64_instruction_close_stream(ptr noundef %0, i16 noundef zeroext 15) #3
  br label %.thread

.thread:                                          ; preds = %384, %377, %370, %362, %355, %349, %342, %334, %326, %318, %306, %299, %292, %284, %277, %271, %264, %256, %248, %240, %217, %210, %203, %195, %188, %182, %175, %167, %159, %151, %139, %132, %125, %117, %110, %104, %97, %89, %81, %73, %.thread400, %._crit_edge, %525, %511, %450, %425, %394, %389, %222, %55, %42, %35, %28, %21
  call void @llvm.lifetime.end.p0(i64 2101248, ptr nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 2052, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 688, ptr nonnull %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(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 i32 @libxsmm_cpuid_arm_use_bfdot() local_unnamed_addr #2

declare void @libxsmm_reset_aarch64_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_aarch64(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_aarch64_instruction_open_stream(ptr noundef, i16 noundef zeroext) local_unnamed_addr #2

declare void @libxsmm_aarch64_instruction_close_stream(ptr noundef, i16 noundef zeroext) local_unnamed_addr #2

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

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

declare void @libxsmm_generator_set_p_register_aarch64_sve(ptr 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_loop_header_aarch64(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #2

declare void @libxsmm_aarch64_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_aarch64_kloop_mmla_sve(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 #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_packed_spgemm_bcsc_bsparse_aarch64_kloop_bfdot_sve(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 #0

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

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

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

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

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


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