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

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

%struct.libxsmm_gemm_def = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, ptr, ptr }
%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_gemm_param = type { %struct.libxsmm_matrix_op_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg }
%struct.libxsmm_matrix_op_arg = type { ptr, ptr, ptr, ptr }
%struct.libxsmm_matrix_arg = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.libxsmm_gemm_ext_param = type { %struct.libxsmm_matrix_op_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg }

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [85 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_setup_gemm_def = external hidden unnamed_addr constant [89 x i8], align 1

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #3

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #4

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_setup_gemm_def(ptr noundef %0, ptr noundef %1, ptr noundef %2) #5 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.libxsmm_gemm_def, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %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 i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 360, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  %34 = load ptr, ptr %6, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %34, i32 0, i32 6
  %36 = load i32, ptr %35, align 1, !tbaa !9
  %37 = and i32 %36, 32768
  %38 = icmp ugt i32 %37, 0
  br i1 %38, label %39, label %41

39:                                               ; preds = %3
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  br label %42

41:                                               ; preds = %3
  br label %42

42:                                               ; preds = %41, %39
  %43 = phi ptr [ %40, %39 ], [ null, %41 ]
  store ptr %43, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %44 = load ptr, ptr %6, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %44, i32 0, i32 6
  %46 = load i32, ptr %45, align 1, !tbaa !9
  %47 = and i32 %46, 32768
  %48 = icmp ugt i32 %47, 0
  br i1 %48, label %49, label %50

49:                                               ; preds = %42
  br label %52

50:                                               ; preds = %42
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  br label %52

52:                                               ; preds = %50, %49
  %53 = phi ptr [ null, %49 ], [ %51, %50 ]
  store ptr %53, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %54, i32 0, i32 8
  %56 = getelementptr inbounds [3 x i8], ptr %55, i64 0, i64 0
  %57 = call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef %56)
  store i32 %57, ptr %10, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %58, i32 0, i32 8
  %60 = getelementptr inbounds [3 x i8], ptr %59, i64 0, i64 0
  %61 = call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef %60)
  store i32 %61, ptr %11, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %62, i32 0, i32 8
  %64 = getelementptr inbounds [3 x i8], ptr %63, i64 0, i64 0
  %65 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %64)
  store i32 %65, ptr %12, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %66 = load ptr, ptr %6, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %66, i32 0, i32 8
  %68 = getelementptr inbounds [3 x i8], ptr %67, i64 0, i64 0
  %69 = call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef %68)
  store i32 %69, ptr %13, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %70, i32 0, i32 3
  %72 = load i32, ptr %71, align 1, !tbaa !15
  store i32 %72, ptr %14, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %73, i32 0, i32 4
  %75 = load i32, ptr %74, align 1, !tbaa !16
  store i32 %75, ptr %15, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %76 = load ptr, ptr %6, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %76, i32 0, i32 5
  %78 = load i32, ptr %77, align 1, !tbaa !17
  store i32 %78, ptr %16, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %79 = load ptr, ptr %6, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %79, i32 0, i32 0
  %81 = load i32, ptr %80, align 1, !tbaa !18
  store i32 %81, ptr %17, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %82, i32 0, i32 1
  %84 = load i32, ptr %83, align 1, !tbaa !19
  store i32 %84, ptr %18, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %85, i32 0, i32 2
  %87 = load i32, ptr %86, align 1, !tbaa !20
  store i32 %87, ptr %19, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store i32 1, ptr %20, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  store i32 1, ptr %21, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %88, i32 0, i32 6
  %90 = load i32, ptr %89, align 1, !tbaa !9
  %91 = and i32 %90, 1
  %92 = icmp ugt i32 %91, 0
  %93 = zext i1 %92 to i64
  %94 = select i1 %92, i32 1, i32 0
  store i32 %94, ptr %22, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %95 = load ptr, ptr %6, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %95, i32 0, i32 6
  %97 = load i32, ptr %96, align 1, !tbaa !9
  %98 = and i32 %97, 2
  %99 = icmp ugt i32 %98, 0
  %100 = zext i1 %99 to i64
  %101 = select i1 %99, i32 1, i32 0
  store i32 %101, ptr %23, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %102, i32 0, i32 6
  %104 = load i32, ptr %103, align 1, !tbaa !9
  %105 = and i32 %104, 2048
  %106 = icmp ugt i32 %105, 0
  %107 = zext i1 %106 to i64
  %108 = select i1 %106, i32 1, i32 0
  store i32 %108, ptr %24, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %109, i32 0, i32 6
  %111 = load i32, ptr %110, align 1, !tbaa !9
  %112 = and i32 %111, 4096
  %113 = icmp ugt i32 %112, 0
  %114 = zext i1 %113 to i64
  %115 = select i1 %113, i32 1, i32 0
  store i32 %115, ptr %25, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %116, i32 0, i32 6
  %118 = load i32, ptr %117, align 1, !tbaa !9
  %119 = and i32 %118, 8192
  %120 = icmp ugt i32 %119, 0
  %121 = zext i1 %120 to i64
  %122 = select i1 %120, i32 1, i32 0
  store i32 %122, ptr %26, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  store double 1.000000e+00, ptr %27, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  %123 = load ptr, ptr %6, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %123, i32 0, i32 6
  %125 = load i32, ptr %124, align 1, !tbaa !9
  %126 = and i32 %125, 4
  %127 = icmp ugt i32 %126, 0
  %128 = zext i1 %127 to i64
  %129 = select i1 %127, double 0.000000e+00, double 1.000000e+00
  store double %129, ptr %28, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !14
  %130 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 61
  store i32 0, ptr %130, align 4, !tbaa !23
  %131 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 62
  store i32 0, ptr %131, align 8, !tbaa !26
  %132 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 63
  store i32 0, ptr %132, align 4, !tbaa !27
  %133 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 64
  store i32 0, ptr %133, align 8, !tbaa !28
  %134 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 60
  store i32 0, ptr %134, align 8, !tbaa !29
  %135 = load ptr, ptr %6, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %135, i32 0, i32 21
  %137 = load i8, ptr %136, align 1, !tbaa !30
  %138 = zext i8 %137 to i32
  %139 = icmp eq i32 %138, 1
  br i1 %139, label %140, label %168

140:                                              ; preds = %52
  %141 = load ptr, ptr %6, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %141, i32 0, i32 27
  %143 = load i16, ptr %142, align 1, !tbaa !31
  %144 = zext i16 %143 to i32
  %145 = icmp eq i32 %144, 5
  br i1 %145, label %146, label %159

146:                                              ; preds = %140
  %147 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 61
  store i32 1, ptr %147, align 4, !tbaa !23
  %148 = load ptr, ptr %6, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %148, i32 0, i32 24
  %150 = load i16, ptr %149, align 1, !tbaa !32
  %151 = zext i16 %150 to i32
  %152 = and i32 %151, 1
  %153 = icmp sgt i32 %152, 0
  br i1 %153, label %154, label %156

154:                                              ; preds = %146
  %155 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 62
  store i32 1, ptr %155, align 8, !tbaa !26
  br label %158

156:                                              ; preds = %146
  %157 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 62
  store i32 0, ptr %157, align 8, !tbaa !26
  br label %158

158:                                              ; preds = %156, %154
  br label %159

159:                                              ; preds = %158, %140
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %160, i32 0, i32 27
  %162 = load i16, ptr %161, align 1, !tbaa !31
  %163 = zext i16 %162 to i32
  %164 = icmp eq i32 %163, 9
  br i1 %164, label %165, label %167

165:                                              ; preds = %159
  %166 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 63
  store i32 1, ptr %166, align 4, !tbaa !27
  br label %167

167:                                              ; preds = %165, %159
  br label %168

168:                                              ; preds = %167, %52
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %169, i32 0, i32 18
  %171 = load i8, ptr %170, align 1, !tbaa !33
  %172 = zext i8 %171 to i32
  %173 = icmp eq i32 %172, 2
  br i1 %173, label %174, label %198

174:                                              ; preds = %168
  %175 = load ptr, ptr %6, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %175, i32 0, i32 16
  %177 = load i16, ptr %176, align 1, !tbaa !34
  %178 = zext i16 %177 to i32
  %179 = icmp eq i32 %178, 1
  br i1 %179, label %180, label %197

180:                                              ; preds = %174
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %181, i32 0, i32 17
  %183 = load i16, ptr %182, align 1, !tbaa !35
  %184 = zext i16 %183 to i32
  %185 = and i32 %184, 4
  %186 = icmp sgt i32 %185, 0
  br i1 %186, label %194, label %187

187:                                              ; preds = %180
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %188, i32 0, i32 17
  %190 = load i16, ptr %189, align 1, !tbaa !35
  %191 = zext i16 %190 to i32
  %192 = and i32 %191, 8
  %193 = icmp sgt i32 %192, 0
  br i1 %193, label %194, label %196

194:                                              ; preds = %187, %180
  %195 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 60
  store i32 1, ptr %195, align 8, !tbaa !29
  br label %196

196:                                              ; preds = %194, %187
  br label %197

197:                                              ; preds = %196, %174
  br label %198

198:                                              ; preds = %197, %168
  %199 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 52
  store i32 0, ptr %199, align 8, !tbaa !36
  %200 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 43
  store i32 0, ptr %200, align 4, !tbaa !37
  %201 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  store i32 0, ptr %201, align 4, !tbaa !38
  %202 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 44
  store i32 0, ptr %202, align 8, !tbaa !39
  %203 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 45
  store i32 0, ptr %203, align 4, !tbaa !40
  %204 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 48
  store i32 0, ptr %204, align 8, !tbaa !41
  %205 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 49
  store i32 0, ptr %205, align 4, !tbaa !42
  %206 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 50
  store i32 0, ptr %206, align 8, !tbaa !43
  %207 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  store i32 0, ptr %207, align 4, !tbaa !38
  %208 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 44
  store i32 0, ptr %208, align 8, !tbaa !39
  %209 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 45
  store i32 0, ptr %209, align 4, !tbaa !40
  %210 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 46
  store i32 0, ptr %210, align 8, !tbaa !44
  %211 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 19
  store i32 0, ptr %211, align 4, !tbaa !45
  %212 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 20
  store i32 0, ptr %212, align 8, !tbaa !46
  %213 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 51
  store i32 0, ptr %213, align 4, !tbaa !47
  %214 = load ptr, ptr %6, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %214, i32 0, i32 6
  %216 = load i32, ptr %215, align 1, !tbaa !9
  %217 = and i32 %216, 256
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %221

219:                                              ; preds = %198
  %220 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 19
  store i32 1, ptr %220, align 4, !tbaa !45
  br label %221

221:                                              ; preds = %219, %198
  %222 = load ptr, ptr %6, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %222, i32 0, i32 6
  %224 = load i32, ptr %223, align 1, !tbaa !9
  %225 = and i32 %224, 512
  %226 = icmp ne i32 %225, 0
  br i1 %226, label %227, label %229

227:                                              ; preds = %221
  %228 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 20
  store i32 1, ptr %228, align 8, !tbaa !46
  br label %229

229:                                              ; preds = %227, %221
  %230 = load i32, ptr %10, align 4, !tbaa !14
  %231 = icmp eq i32 %230, 12
  br i1 %231, label %232, label %250

232:                                              ; preds = %229
  %233 = load ptr, ptr %6, 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 !9
  %236 = and i32 %235, 16777216
  %237 = icmp ugt i32 %236, 0
  br i1 %237, label %238, label %250

238:                                              ; preds = %232
  %239 = load i32, ptr %11, align 4, !tbaa !14
  %240 = icmp eq i32 %239, 2
  br i1 %240, label %241, label %243

241:                                              ; preds = %238
  %242 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 44
  store i32 1, ptr %242, align 8, !tbaa !39
  br label %243

243:                                              ; preds = %241, %238
  %244 = load i32, ptr %11, align 4, !tbaa !14
  %245 = icmp eq i32 %244, 1
  br i1 %245, label %246, label %248

246:                                              ; preds = %243
  %247 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 45
  store i32 1, ptr %247, align 4, !tbaa !40
  br label %248

248:                                              ; preds = %246, %243
  %249 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 42
  store i32 32, ptr %249, align 8, !tbaa !48
  br label %250

250:                                              ; preds = %248, %232, %229
  %251 = load i32, ptr %10, align 4, !tbaa !14
  %252 = icmp eq i32 %251, 12
  br i1 %252, label %253, label %265

253:                                              ; preds = %250
  %254 = load i32, ptr %11, align 4, !tbaa !14
  %255 = icmp eq i32 %254, 12
  br i1 %255, label %256, label %265

256:                                              ; preds = %253
  %257 = load ptr, ptr %6, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %257, i32 0, i32 6
  %259 = load i32, ptr %258, align 1, !tbaa !9
  %260 = and i32 %259, 134217728
  %261 = icmp ugt i32 %260, 0
  br i1 %261, label %262, label %265

262:                                              ; preds = %256
  %263 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 46
  store i32 1, ptr %263, align 8, !tbaa !44
  %264 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 42
  store i32 32, ptr %264, align 8, !tbaa !48
  br label %265

265:                                              ; preds = %262, %256, %253, %250
  %266 = load i32, ptr %10, align 4, !tbaa !14
  %267 = icmp eq i32 %266, 12
  br i1 %267, label %271, label %268

268:                                              ; preds = %265
  %269 = load i32, ptr %10, align 4, !tbaa !14
  %270 = icmp eq i32 %269, 13
  br i1 %270, label %271, label %283

271:                                              ; preds = %268, %265
  %272 = load ptr, ptr %6, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %272, i32 0, i32 6
  %274 = load i32, ptr %273, align 1, !tbaa !9
  %275 = and i32 %274, 2097152
  %276 = icmp ugt i32 %275, 0
  br i1 %276, label %277, label %283

277:                                              ; preds = %271
  %278 = load i32, ptr %11, align 4, !tbaa !14
  %279 = icmp eq i32 %278, 3
  br i1 %279, label %280, label %283

280:                                              ; preds = %277
  %281 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 43
  store i32 1, ptr %281, align 4, !tbaa !37
  %282 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 52
  store i32 1, ptr %282, align 8, !tbaa !36
  br label %283

283:                                              ; preds = %280, %277, %271, %268
  %284 = load i32, ptr %10, align 4, !tbaa !14
  %285 = icmp eq i32 %284, 12
  br i1 %285, label %289, label %286

286:                                              ; preds = %283
  %287 = load i32, ptr %10, align 4, !tbaa !14
  %288 = icmp eq i32 %287, 13
  br i1 %288, label %289, label %301

289:                                              ; preds = %286, %283
  %290 = load ptr, ptr %6, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %290, i32 0, i32 6
  %292 = load i32, ptr %291, align 1, !tbaa !9
  %293 = and i32 %292, 4194304
  %294 = icmp ugt i32 %293, 0
  br i1 %294, label %295, label %301

295:                                              ; preds = %289
  %296 = load i32, ptr %11, align 4, !tbaa !14
  %297 = icmp eq i32 %296, 12
  br i1 %297, label %298, label %301

298:                                              ; preds = %295
  %299 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  store i32 1, ptr %299, align 4, !tbaa !38
  %300 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 52
  store i32 1, ptr %300, align 8, !tbaa !36
  br label %301

301:                                              ; preds = %298, %295, %289, %286
  %302 = load ptr, ptr %6, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %302, i32 0, i32 6
  %304 = load i32, ptr %303, align 1, !tbaa !9
  %305 = and i32 %304, 65536
  %306 = icmp ugt i32 %305, 0
  br i1 %306, label %319, label %307

307:                                              ; preds = %301
  %308 = load ptr, ptr %6, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %308, i32 0, i32 6
  %310 = load i32, ptr %309, align 1, !tbaa !9
  %311 = and i32 %310, 131072
  %312 = icmp ugt i32 %311, 0
  br i1 %312, label %319, label %313

313:                                              ; preds = %307
  %314 = load ptr, ptr %6, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %314, i32 0, i32 6
  %316 = load i32, ptr %315, align 1, !tbaa !9
  %317 = and i32 %316, 262144
  %318 = icmp ugt i32 %317, 0
  br i1 %318, label %319, label %337

319:                                              ; preds = %313, %307, %301
  %320 = load ptr, ptr %8, align 8, !tbaa !5
  %321 = icmp eq ptr %320, null
  br i1 %321, label %322, label %328

322:                                              ; preds = %319
  %323 = load ptr, ptr %9, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %323, i32 0, i32 0
  %325 = getelementptr inbounds %struct.libxsmm_matrix_op_arg, ptr %324, i32 0, i32 2
  %326 = load ptr, ptr %325, align 8, !tbaa !49
  %327 = load i64, ptr %326, align 8, !tbaa !53
  br label %334

328:                                              ; preds = %319
  %329 = load ptr, ptr %8, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %329, i32 0, i32 0
  %331 = getelementptr inbounds %struct.libxsmm_matrix_op_arg, ptr %330, i32 0, i32 2
  %332 = load ptr, ptr %331, align 8, !tbaa !54
  %333 = load i64, ptr %332, align 8, !tbaa !53
  br label %334

334:                                              ; preds = %328, %322
  %335 = phi i64 [ %327, %322 ], [ %333, %328 ]
  %336 = trunc i64 %335 to i32
  store i32 %336, ptr %29, align 4, !tbaa !14
  br label %337

337:                                              ; preds = %334, %313
  %338 = load ptr, ptr %6, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %338, i32 0, i32 6
  %340 = load i32, ptr %339, align 1, !tbaa !9
  %341 = and i32 %340, 65536
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %343, label %389

343:                                              ; preds = %337
  store i32 1, ptr %30, align 4, !tbaa !14
  %344 = load ptr, ptr %8, align 8, !tbaa !5
  %345 = icmp eq ptr %344, null
  br i1 %345, label %346, label %367

346:                                              ; preds = %343
  %347 = load ptr, ptr %9, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %347, i32 0, i32 1
  %349 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %348, i32 0, i32 0
  %350 = load ptr, ptr %349, align 8, !tbaa !56
  %351 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 57
  store ptr %350, ptr %351, align 8, !tbaa !57
  %352 = load ptr, ptr %9, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %352, i32 0, i32 2
  %354 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %353, i32 0, i32 0
  %355 = load ptr, ptr %354, align 8, !tbaa !58
  %356 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 58
  store ptr %355, ptr %356, align 8, !tbaa !59
  %357 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  %358 = load i32, ptr %357, align 4, !tbaa !38
  %359 = icmp ugt i32 %358, 0
  br i1 %359, label %360, label %366

360:                                              ; preds = %346
  %361 = load ptr, ptr %9, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %361, i32 0, i32 1
  %363 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %362, i32 0, i32 3
  %364 = load ptr, ptr %363, align 8, !tbaa !60
  %365 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 35
  store ptr %364, ptr %365, align 8, !tbaa !61
  br label %366

366:                                              ; preds = %360, %346
  br label %388

367:                                              ; preds = %343
  %368 = load ptr, ptr %8, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %368, i32 0, i32 1
  %370 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %369, i32 0, i32 0
  %371 = load ptr, ptr %370, align 8, !tbaa !62
  %372 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 57
  store ptr %371, ptr %372, align 8, !tbaa !57
  %373 = load ptr, ptr %8, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %373, i32 0, i32 2
  %375 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %374, i32 0, i32 0
  %376 = load ptr, ptr %375, align 8, !tbaa !63
  %377 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 58
  store ptr %376, ptr %377, align 8, !tbaa !59
  %378 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  %379 = load i32, ptr %378, align 4, !tbaa !38
  %380 = icmp ugt i32 %379, 0
  br i1 %380, label %381, label %387

381:                                              ; preds = %367
  %382 = load ptr, ptr %8, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %382, i32 0, i32 1
  %384 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %383, i32 0, i32 3
  %385 = load ptr, ptr %384, align 8, !tbaa !64
  %386 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 35
  store ptr %385, ptr %386, align 8, !tbaa !61
  br label %387

387:                                              ; preds = %381, %367
  br label %388

388:                                              ; preds = %387, %366
  br label %682

389:                                              ; preds = %337
  %390 = load ptr, ptr %6, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %390, i32 0, i32 6
  %392 = load i32, ptr %391, align 1, !tbaa !9
  %393 = and i32 %392, 131072
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %395, label %441

395:                                              ; preds = %389
  store i32 2, ptr %30, align 4, !tbaa !14
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  %397 = icmp eq ptr %396, null
  br i1 %397, label %398, label %419

398:                                              ; preds = %395
  %399 = load ptr, ptr %9, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %399, i32 0, i32 1
  %401 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %400, i32 0, i32 1
  %402 = load ptr, ptr %401, align 8, !tbaa !65
  %403 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 55
  store ptr %402, ptr %403, align 8, !tbaa !66
  %404 = load ptr, ptr %9, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %404, i32 0, i32 2
  %406 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %405, i32 0, i32 1
  %407 = load ptr, ptr %406, align 8, !tbaa !67
  %408 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 56
  store ptr %407, ptr %408, align 8, !tbaa !68
  %409 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  %410 = load i32, ptr %409, align 4, !tbaa !38
  %411 = icmp ugt i32 %410, 0
  br i1 %411, label %412, label %418

412:                                              ; preds = %398
  %413 = load ptr, ptr %9, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %413, i32 0, i32 1
  %415 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %414, i32 0, i32 3
  %416 = load ptr, ptr %415, align 8, !tbaa !60
  %417 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 36
  store ptr %416, ptr %417, align 8, !tbaa !69
  br label %418

418:                                              ; preds = %412, %398
  br label %440

419:                                              ; preds = %395
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %420, i32 0, i32 1
  %422 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %421, i32 0, i32 1
  %423 = load ptr, ptr %422, align 8, !tbaa !70
  %424 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 55
  store ptr %423, ptr %424, align 8, !tbaa !66
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %425, i32 0, i32 2
  %427 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %426, i32 0, i32 1
  %428 = load ptr, ptr %427, align 8, !tbaa !71
  %429 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 56
  store ptr %428, ptr %429, align 8, !tbaa !68
  %430 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  %431 = load i32, ptr %430, align 4, !tbaa !38
  %432 = icmp ugt i32 %431, 0
  br i1 %432, label %433, label %439

433:                                              ; preds = %419
  %434 = load ptr, ptr %8, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %434, i32 0, i32 1
  %436 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %435, i32 0, i32 3
  %437 = load ptr, ptr %436, align 8, !tbaa !64
  %438 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 36
  store ptr %437, ptr %438, align 8, !tbaa !69
  br label %439

439:                                              ; preds = %433, %419
  br label %440

440:                                              ; preds = %439, %418
  br label %681

441:                                              ; preds = %389
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %442, i32 0, i32 6
  %444 = load i32, ptr %443, align 1, !tbaa !9
  %445 = and i32 %444, 262144
  %446 = icmp ne i32 %445, 0
  br i1 %446, label %447, label %650

447:                                              ; preds = %441
  store i32 3, ptr %30, align 4, !tbaa !14
  %448 = load ptr, ptr %6, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %448, i32 0, i32 10
  %450 = load i64, ptr %449, align 1, !tbaa !72
  %451 = load i32, ptr %10, align 4, !tbaa !14
  %452 = icmp eq i32 0, %451
  br i1 %452, label %453, label %454

453:                                              ; preds = %447
  br label %534

454:                                              ; preds = %447
  %455 = load i32, ptr %10, align 4, !tbaa !14
  %456 = icmp eq i32 1, %455
  br i1 %456, label %457, label %458

457:                                              ; preds = %454
  br label %532

458:                                              ; preds = %454
  %459 = load i32, ptr %10, align 4, !tbaa !14
  %460 = icmp eq i32 2, %459
  br i1 %460, label %461, label %462

461:                                              ; preds = %458
  br label %530

462:                                              ; preds = %458
  %463 = load i32, ptr %10, align 4, !tbaa !14
  %464 = icmp eq i32 3, %463
  br i1 %464, label %465, label %466

465:                                              ; preds = %462
  br label %528

466:                                              ; preds = %462
  %467 = load i32, ptr %10, align 4, !tbaa !14
  %468 = icmp eq i32 4, %467
  br i1 %468, label %469, label %470

469:                                              ; preds = %466
  br label %526

470:                                              ; preds = %466
  %471 = load i32, ptr %10, align 4, !tbaa !14
  %472 = icmp eq i32 5, %471
  br i1 %472, label %473, label %474

473:                                              ; preds = %470
  br label %524

474:                                              ; preds = %470
  %475 = load i32, ptr %10, align 4, !tbaa !14
  %476 = icmp eq i32 6, %475
  br i1 %476, label %477, label %478

477:                                              ; preds = %474
  br label %522

478:                                              ; preds = %474
  %479 = load i32, ptr %10, align 4, !tbaa !14
  %480 = icmp eq i32 7, %479
  br i1 %480, label %481, label %482

481:                                              ; preds = %478
  br label %520

482:                                              ; preds = %478
  %483 = load i32, ptr %10, align 4, !tbaa !14
  %484 = icmp eq i32 8, %483
  br i1 %484, label %485, label %486

485:                                              ; preds = %482
  br label %518

486:                                              ; preds = %482
  %487 = load i32, ptr %10, align 4, !tbaa !14
  %488 = icmp eq i32 9, %487
  br i1 %488, label %489, label %490

489:                                              ; preds = %486
  br label %516

490:                                              ; preds = %486
  %491 = load i32, ptr %10, align 4, !tbaa !14
  %492 = icmp eq i32 10, %491
  br i1 %492, label %493, label %494

493:                                              ; preds = %490
  br label %514

494:                                              ; preds = %490
  %495 = load i32, ptr %10, align 4, !tbaa !14
  %496 = icmp eq i32 11, %495
  br i1 %496, label %497, label %498

497:                                              ; preds = %494
  br label %512

498:                                              ; preds = %494
  %499 = load i32, ptr %10, align 4, !tbaa !14
  %500 = icmp eq i32 12, %499
  br i1 %500, label %501, label %502

501:                                              ; preds = %498
  br label %510

502:                                              ; preds = %498
  %503 = load i32, ptr %10, align 4, !tbaa !14
  %504 = icmp eq i32 13, %503
  br i1 %504, label %505, label %506

505:                                              ; preds = %502
  br label %508

506:                                              ; preds = %502
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 450, ptr noundef @__PRETTY_FUNCTION__.libxsmm_setup_gemm_def) #7
  unreachable

507:                                              ; No predecessors!
  br label %508

508:                                              ; preds = %507, %505
  %509 = phi i32 [ 1, %505 ], [ 0, %507 ]
  br label %510

510:                                              ; preds = %508, %501
  %511 = phi i32 [ 1, %501 ], [ %509, %508 ]
  br label %512

512:                                              ; preds = %510, %497
  %513 = phi i32 [ 2, %497 ], [ %511, %510 ]
  br label %514

514:                                              ; preds = %512, %493
  %515 = phi i32 [ 2, %493 ], [ %513, %512 ]
  br label %516

516:                                              ; preds = %514, %489
  %517 = phi i32 [ 4, %489 ], [ %515, %514 ]
  br label %518

518:                                              ; preds = %516, %485
  %519 = phi i32 [ 4, %485 ], [ %517, %516 ]
  br label %520

520:                                              ; preds = %518, %481
  %521 = phi i32 [ 8, %481 ], [ %519, %518 ]
  br label %522

522:                                              ; preds = %520, %477
  %523 = phi i32 [ 8, %477 ], [ %521, %520 ]
  br label %524

524:                                              ; preds = %522, %473
  %525 = phi i32 [ 1, %473 ], [ %523, %522 ]
  br label %526

526:                                              ; preds = %524, %469
  %527 = phi i32 [ 1, %469 ], [ %525, %524 ]
  br label %528

528:                                              ; preds = %526, %465
  %529 = phi i32 [ 2, %465 ], [ %527, %526 ]
  br label %530

530:                                              ; preds = %528, %461
  %531 = phi i32 [ 2, %461 ], [ %529, %528 ]
  br label %532

532:                                              ; preds = %530, %457
  %533 = phi i32 [ 4, %457 ], [ %531, %530 ]
  br label %534

534:                                              ; preds = %532, %453
  %535 = phi i32 [ 8, %453 ], [ %533, %532 ]
  %536 = sext i32 %535 to i64
  %537 = sdiv i64 %450, %536
  %538 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 53
  store i64 %537, ptr %538, align 8, !tbaa !73
  %539 = load ptr, ptr %6, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %539, i32 0, i32 11
  %541 = load i64, ptr %540, align 1, !tbaa !74
  %542 = load i32, ptr %11, align 4, !tbaa !14
  %543 = icmp eq i32 0, %542
  br i1 %543, label %544, label %545

544:                                              ; preds = %534
  br label %625

545:                                              ; preds = %534
  %546 = load i32, ptr %11, align 4, !tbaa !14
  %547 = icmp eq i32 1, %546
  br i1 %547, label %548, label %549

548:                                              ; preds = %545
  br label %623

549:                                              ; preds = %545
  %550 = load i32, ptr %11, align 4, !tbaa !14
  %551 = icmp eq i32 2, %550
  br i1 %551, label %552, label %553

552:                                              ; preds = %549
  br label %621

553:                                              ; preds = %549
  %554 = load i32, ptr %11, align 4, !tbaa !14
  %555 = icmp eq i32 3, %554
  br i1 %555, label %556, label %557

556:                                              ; preds = %553
  br label %619

557:                                              ; preds = %553
  %558 = load i32, ptr %11, align 4, !tbaa !14
  %559 = icmp eq i32 4, %558
  br i1 %559, label %560, label %561

560:                                              ; preds = %557
  br label %617

561:                                              ; preds = %557
  %562 = load i32, ptr %11, align 4, !tbaa !14
  %563 = icmp eq i32 5, %562
  br i1 %563, label %564, label %565

564:                                              ; preds = %561
  br label %615

565:                                              ; preds = %561
  %566 = load i32, ptr %11, align 4, !tbaa !14
  %567 = icmp eq i32 6, %566
  br i1 %567, label %568, label %569

568:                                              ; preds = %565
  br label %613

569:                                              ; preds = %565
  %570 = load i32, ptr %11, align 4, !tbaa !14
  %571 = icmp eq i32 7, %570
  br i1 %571, label %572, label %573

572:                                              ; preds = %569
  br label %611

573:                                              ; preds = %569
  %574 = load i32, ptr %11, align 4, !tbaa !14
  %575 = icmp eq i32 8, %574
  br i1 %575, label %576, label %577

576:                                              ; preds = %573
  br label %609

577:                                              ; preds = %573
  %578 = load i32, ptr %11, align 4, !tbaa !14
  %579 = icmp eq i32 9, %578
  br i1 %579, label %580, label %581

580:                                              ; preds = %577
  br label %607

581:                                              ; preds = %577
  %582 = load i32, ptr %11, align 4, !tbaa !14
  %583 = icmp eq i32 10, %582
  br i1 %583, label %584, label %585

584:                                              ; preds = %581
  br label %605

585:                                              ; preds = %581
  %586 = load i32, ptr %11, align 4, !tbaa !14
  %587 = icmp eq i32 11, %586
  br i1 %587, label %588, label %589

588:                                              ; preds = %585
  br label %603

589:                                              ; preds = %585
  %590 = load i32, ptr %11, align 4, !tbaa !14
  %591 = icmp eq i32 12, %590
  br i1 %591, label %592, label %593

592:                                              ; preds = %589
  br label %601

593:                                              ; preds = %589
  %594 = load i32, ptr %11, align 4, !tbaa !14
  %595 = icmp eq i32 13, %594
  br i1 %595, label %596, label %597

596:                                              ; preds = %593
  br label %599

597:                                              ; preds = %593
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 451, ptr noundef @__PRETTY_FUNCTION__.libxsmm_setup_gemm_def) #7
  unreachable

598:                                              ; No predecessors!
  br label %599

599:                                              ; preds = %598, %596
  %600 = phi i32 [ 1, %596 ], [ 0, %598 ]
  br label %601

601:                                              ; preds = %599, %592
  %602 = phi i32 [ 1, %592 ], [ %600, %599 ]
  br label %603

603:                                              ; preds = %601, %588
  %604 = phi i32 [ 2, %588 ], [ %602, %601 ]
  br label %605

605:                                              ; preds = %603, %584
  %606 = phi i32 [ 2, %584 ], [ %604, %603 ]
  br label %607

607:                                              ; preds = %605, %580
  %608 = phi i32 [ 4, %580 ], [ %606, %605 ]
  br label %609

609:                                              ; preds = %607, %576
  %610 = phi i32 [ 4, %576 ], [ %608, %607 ]
  br label %611

611:                                              ; preds = %609, %572
  %612 = phi i32 [ 8, %572 ], [ %610, %609 ]
  br label %613

613:                                              ; preds = %611, %568
  %614 = phi i32 [ 8, %568 ], [ %612, %611 ]
  br label %615

615:                                              ; preds = %613, %564
  %616 = phi i32 [ 1, %564 ], [ %614, %613 ]
  br label %617

617:                                              ; preds = %615, %560
  %618 = phi i32 [ 1, %560 ], [ %616, %615 ]
  br label %619

619:                                              ; preds = %617, %556
  %620 = phi i32 [ 2, %556 ], [ %618, %617 ]
  br label %621

621:                                              ; preds = %619, %552
  %622 = phi i32 [ 2, %552 ], [ %620, %619 ]
  br label %623

623:                                              ; preds = %621, %548
  %624 = phi i32 [ 4, %548 ], [ %622, %621 ]
  br label %625

625:                                              ; preds = %623, %544
  %626 = phi i32 [ 8, %544 ], [ %624, %623 ]
  %627 = sext i32 %626 to i64
  %628 = sdiv i64 %541, %627
  %629 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 54
  store i64 %628, ptr %629, align 8, !tbaa !75
  %630 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  %631 = load i32, ptr %630, align 4, !tbaa !38
  %632 = icmp ugt i32 %631, 0
  br i1 %632, label %633, label %649

633:                                              ; preds = %625
  %634 = load ptr, ptr %8, align 8, !tbaa !5
  %635 = icmp eq ptr %634, null
  br i1 %635, label %636, label %642

636:                                              ; preds = %633
  %637 = load ptr, ptr %9, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %637, i32 0, i32 1
  %639 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %638, i32 0, i32 3
  %640 = load ptr, ptr %639, align 8, !tbaa !60
  %641 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 36
  store ptr %640, ptr %641, align 8, !tbaa !69
  br label %648

642:                                              ; preds = %633
  %643 = load ptr, ptr %8, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %643, i32 0, i32 1
  %645 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %644, i32 0, i32 3
  %646 = load ptr, ptr %645, align 8, !tbaa !64
  %647 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 36
  store ptr %646, ptr %647, align 8, !tbaa !69
  br label %648

648:                                              ; preds = %642, %636
  br label %649

649:                                              ; preds = %648, %625
  br label %680

650:                                              ; preds = %441
  %651 = load ptr, ptr %6, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %651, i32 0, i32 6
  %653 = load i32, ptr %652, align 1, !tbaa !9
  %654 = and i32 %653, 8388608
  %655 = icmp ne i32 %654, 0
  br i1 %655, label %656, label %658

656:                                              ; preds = %650
  store i32 0, ptr %30, align 4, !tbaa !14
  store i32 1, ptr %29, align 4, !tbaa !14
  %657 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 51
  store i32 1, ptr %657, align 4, !tbaa !47
  br label %679

658:                                              ; preds = %650
  store i32 0, ptr %30, align 4, !tbaa !14
  store i32 1, ptr %29, align 4, !tbaa !14
  %659 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 47
  %660 = load i32, ptr %659, align 4, !tbaa !38
  %661 = icmp ugt i32 %660, 0
  br i1 %661, label %662, label %678

662:                                              ; preds = %658
  %663 = load ptr, ptr %8, align 8, !tbaa !5
  %664 = icmp eq ptr %663, null
  br i1 %664, label %665, label %671

665:                                              ; preds = %662
  %666 = load ptr, ptr %9, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %666, i32 0, i32 1
  %668 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %667, i32 0, i32 3
  %669 = load ptr, ptr %668, align 8, !tbaa !60
  %670 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 36
  store ptr %669, ptr %670, align 8, !tbaa !69
  br label %677

671:                                              ; preds = %662
  %672 = load ptr, ptr %8, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %672, i32 0, i32 1
  %674 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %673, i32 0, i32 3
  %675 = load ptr, ptr %674, align 8, !tbaa !64
  %676 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 36
  store ptr %675, ptr %676, align 8, !tbaa !69
  br label %677

677:                                              ; preds = %671, %665
  br label %678

678:                                              ; preds = %677, %658
  br label %679

679:                                              ; preds = %678, %656
  br label %680

680:                                              ; preds = %679, %649
  br label %681

681:                                              ; preds = %680, %440
  br label %682

682:                                              ; preds = %681, %388
  %683 = load ptr, ptr %8, align 8, !tbaa !5
  %684 = icmp eq ptr %683, null
  br i1 %684, label %685, label %823

685:                                              ; preds = %682
  %686 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 51
  %687 = load i32, ptr %686, align 4, !tbaa !47
  %688 = icmp ugt i32 %687, 0
  br i1 %688, label %689, label %709

689:                                              ; preds = %685
  %690 = load ptr, ptr %9, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %690, i32 0, i32 1
  %692 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %691, i32 0, i32 1
  %693 = load ptr, ptr %692, align 8, !tbaa !65
  %694 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 59
  store ptr %693, ptr %694, align 8, !tbaa !76
  %695 = load i32, ptr %12, align 4, !tbaa !14
  %696 = icmp ne i32 %695, 1
  br i1 %696, label %697, label %706

697:                                              ; preds = %689
  %698 = load i32, ptr %17, align 4, !tbaa !14
  %699 = sext i32 %698 to i64
  %700 = load i32, ptr %18, align 4, !tbaa !14
  %701 = sext i32 %700 to i64
  %702 = mul i64 %699, %701
  %703 = mul i64 %702, 4
  %704 = call noalias ptr @malloc(i64 noundef %703) #8
  %705 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 66
  store ptr %704, ptr %705, align 8, !tbaa !77
  br label %708

706:                                              ; preds = %689
  %707 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 66
  store ptr null, ptr %707, align 8, !tbaa !77
  br label %708

708:                                              ; preds = %706, %697
  br label %822

709:                                              ; preds = %685
  %710 = load i32, ptr %10, align 4, !tbaa !14
  %711 = icmp eq i32 %710, 12
  br i1 %711, label %712, label %741

712:                                              ; preds = %709
  %713 = load i32, ptr %11, align 4, !tbaa !14
  %714 = icmp eq i32 %713, 3
  br i1 %714, label %715, label %741

715:                                              ; preds = %712
  %716 = load i32, ptr %13, align 4, !tbaa !14
  %717 = icmp eq i32 %716, 3
  br i1 %717, label %724, label %718

718:                                              ; preds = %715
  %719 = load i32, ptr %13, align 4, !tbaa !14
  %720 = icmp eq i32 %719, 1
  br i1 %720, label %724, label %721

721:                                              ; preds = %718
  %722 = load i32, ptr %13, align 4, !tbaa !14
  %723 = icmp eq i32 %722, 14
  br i1 %723, label %724, label %741

724:                                              ; preds = %721, %718, %715
  %725 = load i32, ptr %12, align 4, !tbaa !14
  %726 = icmp eq i32 %725, 3
  br i1 %726, label %730, label %727

727:                                              ; preds = %724
  %728 = load i32, ptr %12, align 4, !tbaa !14
  %729 = icmp eq i32 %728, 1
  br i1 %729, label %730, label %741

730:                                              ; preds = %727, %724
  %731 = load ptr, ptr %9, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %731, i32 0, i32 1
  %733 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %732, i32 0, i32 3
  %734 = load ptr, ptr %733, align 8, !tbaa !60
  %735 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 34
  store ptr %734, ptr %735, align 8, !tbaa !78
  %736 = load ptr, ptr %9, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %736, i32 0, i32 1
  %738 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %737, i32 0, i32 2
  %739 = load ptr, ptr %738, align 8, !tbaa !79
  %740 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 39
  store ptr %739, ptr %740, align 8, !tbaa !80
  br label %741

741:                                              ; preds = %730, %727, %721, %712, %709
  %742 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 44
  %743 = load i32, ptr %742, align 8, !tbaa !39
  %744 = icmp ugt i32 %743, 0
  br i1 %744, label %753, label %745

745:                                              ; preds = %741
  %746 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 45
  %747 = load i32, ptr %746, align 4, !tbaa !40
  %748 = icmp ugt i32 %747, 0
  br i1 %748, label %753, label %749

749:                                              ; preds = %745
  %750 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 46
  %751 = load i32, ptr %750, align 8, !tbaa !44
  %752 = icmp ugt i32 %751, 0
  br i1 %752, label %753, label %787

753:                                              ; preds = %749, %745, %741
  %754 = load ptr, ptr %9, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %754, i32 0, i32 1
  %756 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %755, i32 0, i32 2
  %757 = load ptr, ptr %756, align 8, !tbaa !79
  %758 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 38
  store ptr %757, ptr %758, align 8, !tbaa !81
  %759 = load i32, ptr %30, align 4, !tbaa !14
  %760 = icmp eq i32 %759, 1
  br i1 %760, label %761, label %767

761:                                              ; preds = %753
  %762 = load ptr, ptr %9, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %762, i32 0, i32 1
  %764 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %763, i32 0, i32 2
  %765 = load ptr, ptr %764, align 8, !tbaa !79
  %766 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 37
  store ptr %765, ptr %766, align 8, !tbaa !82
  br label %767

767:                                              ; preds = %761, %753
  %768 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 46
  %769 = load i32, ptr %768, align 8, !tbaa !44
  %770 = icmp ugt i32 %769, 0
  br i1 %770, label %771, label %786

771:                                              ; preds = %767
  %772 = load ptr, ptr %9, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %772, i32 0, i32 2
  %774 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %773, i32 0, i32 2
  %775 = load ptr, ptr %774, align 8, !tbaa !83
  %776 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 32
  store ptr %775, ptr %776, align 8, !tbaa !84
  %777 = load i32, ptr %30, align 4, !tbaa !14
  %778 = icmp eq i32 %777, 1
  br i1 %778, label %779, label %785

779:                                              ; preds = %771
  %780 = load ptr, ptr %9, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %780, i32 0, i32 2
  %782 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %781, i32 0, i32 2
  %783 = load ptr, ptr %782, align 8, !tbaa !83
  %784 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 31
  store ptr %783, ptr %784, align 8, !tbaa !85
  br label %785

785:                                              ; preds = %779, %771
  br label %786

786:                                              ; preds = %785, %767
  br label %787

787:                                              ; preds = %786, %749
  %788 = load i32, ptr %10, align 4, !tbaa !14
  %789 = icmp eq i32 %788, 12
  br i1 %789, label %790, label %805

790:                                              ; preds = %787
  %791 = load i32, ptr %11, align 4, !tbaa !14
  %792 = icmp eq i32 %791, 2
  br i1 %792, label %793, label %805

793:                                              ; preds = %790
  %794 = load i32, ptr %12, align 4, !tbaa !14
  %795 = icmp eq i32 %794, 2
  br i1 %795, label %799, label %796

796:                                              ; preds = %793
  %797 = load i32, ptr %12, align 4, !tbaa !14
  %798 = icmp eq i32 %797, 1
  br i1 %798, label %799, label %805

799:                                              ; preds = %796, %793
  %800 = load ptr, ptr %9, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %800, i32 0, i32 1
  %802 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %801, i32 0, i32 2
  %803 = load ptr, ptr %802, align 8, !tbaa !79
  %804 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 30
  store ptr %803, ptr %804, align 8, !tbaa !86
  br label %805

805:                                              ; preds = %799, %796, %790, %787
  %806 = load i32, ptr %10, align 4, !tbaa !14
  %807 = icmp eq i32 %806, 12
  br i1 %807, label %808, label %821

808:                                              ; preds = %805
  %809 = load i32, ptr %11, align 4, !tbaa !14
  %810 = icmp eq i32 %809, 12
  br i1 %810, label %811, label %821

811:                                              ; preds = %808
  %812 = load i32, ptr %12, align 4, !tbaa !14
  %813 = icmp eq i32 %812, 1
  br i1 %813, label %814, label %821

814:                                              ; preds = %811
  %815 = load ptr, ptr %9, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.libxsmm_gemm_param, ptr %815, i32 0, i32 3
  %817 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %816, i32 0, i32 2
  %818 = load ptr, ptr %817, align 8, !tbaa !87
  %819 = load float, ptr %818, align 4, !tbaa !88
  %820 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 29
  store float %819, ptr %820, align 4, !tbaa !89
  br label %821

821:                                              ; preds = %814, %811, %808, %805
  br label %822

822:                                              ; preds = %821, %708
  br label %936

823:                                              ; preds = %682
  %824 = load i32, ptr %10, align 4, !tbaa !14
  %825 = icmp eq i32 %824, 12
  br i1 %825, label %826, label %855

826:                                              ; preds = %823
  %827 = load i32, ptr %11, align 4, !tbaa !14
  %828 = icmp eq i32 %827, 3
  br i1 %828, label %829, label %855

829:                                              ; preds = %826
  %830 = load i32, ptr %13, align 4, !tbaa !14
  %831 = icmp eq i32 %830, 3
  br i1 %831, label %838, label %832

832:                                              ; preds = %829
  %833 = load i32, ptr %13, align 4, !tbaa !14
  %834 = icmp eq i32 %833, 1
  br i1 %834, label %838, label %835

835:                                              ; preds = %832
  %836 = load i32, ptr %13, align 4, !tbaa !14
  %837 = icmp eq i32 %836, 14
  br i1 %837, label %838, label %855

838:                                              ; preds = %835, %832, %829
  %839 = load i32, ptr %12, align 4, !tbaa !14
  %840 = icmp eq i32 %839, 3
  br i1 %840, label %844, label %841

841:                                              ; preds = %838
  %842 = load i32, ptr %12, align 4, !tbaa !14
  %843 = icmp eq i32 %842, 1
  br i1 %843, label %844, label %855

844:                                              ; preds = %841, %838
  %845 = load ptr, ptr %8, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %845, i32 0, i32 1
  %847 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %846, i32 0, i32 3
  %848 = load ptr, ptr %847, align 8, !tbaa !64
  %849 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 34
  store ptr %848, ptr %849, align 8, !tbaa !78
  %850 = load ptr, ptr %8, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %850, i32 0, i32 1
  %852 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %851, i32 0, i32 2
  %853 = load ptr, ptr %852, align 8, !tbaa !90
  %854 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 39
  store ptr %853, ptr %854, align 8, !tbaa !80
  br label %855

855:                                              ; preds = %844, %841, %835, %826, %823
  %856 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 44
  %857 = load i32, ptr %856, align 8, !tbaa !39
  %858 = icmp ugt i32 %857, 0
  br i1 %858, label %867, label %859

859:                                              ; preds = %855
  %860 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 45
  %861 = load i32, ptr %860, align 4, !tbaa !40
  %862 = icmp ugt i32 %861, 0
  br i1 %862, label %867, label %863

863:                                              ; preds = %859
  %864 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 46
  %865 = load i32, ptr %864, align 8, !tbaa !44
  %866 = icmp ugt i32 %865, 0
  br i1 %866, label %867, label %901

867:                                              ; preds = %863, %859, %855
  %868 = load ptr, ptr %8, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %868, i32 0, i32 1
  %870 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %869, i32 0, i32 2
  %871 = load ptr, ptr %870, align 8, !tbaa !90
  %872 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 38
  store ptr %871, ptr %872, align 8, !tbaa !81
  %873 = load i32, ptr %30, align 4, !tbaa !14
  %874 = icmp eq i32 %873, 1
  br i1 %874, label %875, label %881

875:                                              ; preds = %867
  %876 = load ptr, ptr %8, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %876, i32 0, i32 1
  %878 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %877, i32 0, i32 2
  %879 = load ptr, ptr %878, align 8, !tbaa !90
  %880 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 37
  store ptr %879, ptr %880, align 8, !tbaa !82
  br label %881

881:                                              ; preds = %875, %867
  %882 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 46
  %883 = load i32, ptr %882, align 8, !tbaa !44
  %884 = icmp ugt i32 %883, 0
  br i1 %884, label %885, label %900

885:                                              ; preds = %881
  %886 = load ptr, ptr %8, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %886, i32 0, i32 2
  %888 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %887, i32 0, i32 2
  %889 = load ptr, ptr %888, align 8, !tbaa !91
  %890 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 32
  store ptr %889, ptr %890, align 8, !tbaa !84
  %891 = load i32, ptr %30, align 4, !tbaa !14
  %892 = icmp eq i32 %891, 1
  br i1 %892, label %893, label %899

893:                                              ; preds = %885
  %894 = load ptr, ptr %8, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %894, i32 0, i32 2
  %896 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %895, i32 0, i32 2
  %897 = load ptr, ptr %896, align 8, !tbaa !91
  %898 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 31
  store ptr %897, ptr %898, align 8, !tbaa !85
  br label %899

899:                                              ; preds = %893, %885
  br label %900

900:                                              ; preds = %899, %881
  br label %901

901:                                              ; preds = %900, %863
  %902 = load i32, ptr %10, align 4, !tbaa !14
  %903 = icmp eq i32 %902, 12
  br i1 %903, label %904, label %919

904:                                              ; preds = %901
  %905 = load i32, ptr %11, align 4, !tbaa !14
  %906 = icmp eq i32 %905, 2
  br i1 %906, label %907, label %919

907:                                              ; preds = %904
  %908 = load i32, ptr %12, align 4, !tbaa !14
  %909 = icmp eq i32 %908, 2
  br i1 %909, label %913, label %910

910:                                              ; preds = %907
  %911 = load i32, ptr %12, align 4, !tbaa !14
  %912 = icmp eq i32 %911, 1
  br i1 %912, label %913, label %919

913:                                              ; preds = %910, %907
  %914 = load ptr, ptr %8, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %914, i32 0, i32 1
  %916 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %915, i32 0, i32 2
  %917 = load ptr, ptr %916, align 8, !tbaa !90
  %918 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 30
  store ptr %917, ptr %918, align 8, !tbaa !86
  br label %919

919:                                              ; preds = %913, %910, %904, %901
  %920 = load i32, ptr %10, align 4, !tbaa !14
  %921 = icmp eq i32 %920, 12
  br i1 %921, label %922, label %935

922:                                              ; preds = %919
  %923 = load i32, ptr %11, align 4, !tbaa !14
  %924 = icmp eq i32 %923, 12
  br i1 %924, label %925, label %935

925:                                              ; preds = %922
  %926 = load i32, ptr %12, align 4, !tbaa !14
  %927 = icmp eq i32 %926, 1
  br i1 %927, label %928, label %935

928:                                              ; preds = %925
  %929 = load ptr, ptr %8, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.libxsmm_gemm_ext_param, ptr %929, i32 0, i32 3
  %931 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %930, i32 0, i32 2
  %932 = load ptr, ptr %931, align 8, !tbaa !92
  %933 = load float, ptr %932, align 4, !tbaa !88
  %934 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 29
  store float %933, ptr %934, align 4, !tbaa !89
  br label %935

935:                                              ; preds = %928, %925, %922, %919
  br label %936

936:                                              ; preds = %935, %822
  %937 = load i32, ptr %17, align 4, !tbaa !14
  %938 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 4
  store i32 %937, ptr %938, align 8, !tbaa !93
  %939 = load i32, ptr %18, align 4, !tbaa !14
  %940 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 5
  store i32 %939, ptr %940, align 4, !tbaa !94
  %941 = load i32, ptr %19, align 4, !tbaa !14
  %942 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 6
  store i32 %941, ptr %942, align 8, !tbaa !95
  %943 = load i32, ptr %14, align 4, !tbaa !14
  %944 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 7
  store i32 %943, ptr %944, align 4, !tbaa !96
  %945 = load i32, ptr %15, align 4, !tbaa !14
  %946 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 8
  store i32 %945, ptr %946, align 8, !tbaa !97
  %947 = load i32, ptr %16, align 4, !tbaa !14
  %948 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 9
  store i32 %947, ptr %948, align 4, !tbaa !98
  %949 = load i32, ptr %10, align 4, !tbaa !14
  %950 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 0
  store i32 %949, ptr %950, align 8, !tbaa !99
  %951 = load i32, ptr %11, align 4, !tbaa !14
  %952 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 1
  store i32 %951, ptr %952, align 4, !tbaa !100
  %953 = load i32, ptr %13, align 4, !tbaa !14
  %954 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 3
  store i32 %953, ptr %954, align 4, !tbaa !101
  %955 = load i32, ptr %12, align 4, !tbaa !14
  %956 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 2
  store i32 %955, ptr %956, align 8, !tbaa !102
  %957 = load double, ptr %27, align 8, !tbaa !21
  %958 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 12
  store double %957, ptr %958, align 8, !tbaa !103
  %959 = load double, ptr %28, align 8, !tbaa !21
  %960 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 13
  store double %959, ptr %960, align 8, !tbaa !104
  %961 = load i32, ptr %22, align 4, !tbaa !14
  %962 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 14
  store i32 %961, ptr %962, align 8, !tbaa !105
  %963 = load i32, ptr %23, align 4, !tbaa !14
  %964 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 15
  store i32 %963, ptr %964, align 4, !tbaa !106
  %965 = load i32, ptr %24, align 4, !tbaa !14
  %966 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 16
  store i32 %965, ptr %966, align 8, !tbaa !107
  %967 = load i32, ptr %25, align 4, !tbaa !14
  %968 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 17
  store i32 %967, ptr %968, align 4, !tbaa !108
  %969 = load i32, ptr %26, align 4, !tbaa !14
  %970 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 18
  store i32 %969, ptr %970, align 8, !tbaa !109
  %971 = load i32, ptr %20, align 4, !tbaa !14
  %972 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 22
  store i32 %971, ptr %972, align 8, !tbaa !110
  %973 = load i32, ptr %21, align 4, !tbaa !14
  %974 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 23
  store i32 %973, ptr %974, align 4, !tbaa !111
  %975 = load i32, ptr %33, align 4, !tbaa !14
  %976 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 24
  store i32 %975, ptr %976, align 8, !tbaa !112
  %977 = load i32, ptr %30, align 4, !tbaa !14
  %978 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 25
  store i32 %977, ptr %978, align 4, !tbaa !113
  %979 = load i32, ptr %29, align 4, !tbaa !14
  %980 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 26
  store i32 %979, ptr %980, align 8, !tbaa !114
  %981 = load i32, ptr %31, align 4, !tbaa !14
  %982 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 40
  store i32 %981, ptr %982, align 8, !tbaa !115
  %983 = load i32, ptr %32, align 4, !tbaa !14
  %984 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 41
  store i32 %983, ptr %984, align 4, !tbaa !116
  %985 = load i32, ptr %26, align 4, !tbaa !14
  %986 = getelementptr inbounds %struct.libxsmm_gemm_def, ptr %7, i32 0, i32 64
  store i32 %985, ptr %986, align 8, !tbaa !28
  %987 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %987, ptr align 8 %7, i64 360, i1 false), !tbaa.struct !117
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 360, ptr %7) #6
  ret void
}

declare i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef) #4

declare i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef) #4

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) #4

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

!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, !11, i64 24}
!10 = !{!"libxsmm_gemm_descriptor", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !7, i64 28, !7, i64 29, !7, i64 32, !12, i64 33, !12, i64 41, !7, i64 49, !11, i64 50, !11, i64 54, !11, i64 58, !13, i64 62, !13, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !13, i64 70, !13, i64 72, !13, i64 74, !13, i64 76, !13, i64 78, !13, i64 80, !11, i64 82, !11, i64 86, !11, i64 90, !7, i64 94}
!11 = !{!"int", !7, i64 0}
!12 = !{!"long long", !7, i64 0}
!13 = !{!"short", !7, i64 0}
!14 = !{!11, !11, i64 0}
!15 = !{!10, !11, i64 12}
!16 = !{!10, !11, i64 16}
!17 = !{!10, !11, i64 20}
!18 = !{!10, !11, i64 0}
!19 = !{!10, !11, i64 4}
!20 = !{!10, !11, i64 8}
!21 = !{!22, !22, i64 0}
!22 = !{!"double", !7, i64 0}
!23 = !{!24, !11, i64 324}
!24 = !{!"libxsmm_gemm_def", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !22, i64 48, !22, i64 56, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !25, i64 124, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !11, i64 236, !11, i64 240, !11, i64 244, !11, i64 248, !11, i64 252, !11, i64 256, !12, i64 264, !12, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !11, i64 320, !11, i64 324, !11, i64 328, !11, i64 332, !11, i64 336, !11, i64 340, !6, i64 344, !6, i64 352}
!25 = !{!"float", !7, i64 0}
!26 = !{!24, !11, i64 328}
!27 = !{!24, !11, i64 332}
!28 = !{!24, !11, i64 336}
!29 = !{!24, !11, i64 320}
!30 = !{!10, !7, i64 69}
!31 = !{!10, !13, i64 80}
!32 = !{!10, !13, i64 74}
!33 = !{!10, !7, i64 66}
!34 = !{!10, !13, i64 62}
!35 = !{!10, !13, i64 64}
!36 = !{!24, !11, i64 256}
!37 = !{!24, !11, i64 220}
!38 = !{!24, !11, i64 236}
!39 = !{!24, !11, i64 224}
!40 = !{!24, !11, i64 228}
!41 = !{!24, !11, i64 240}
!42 = !{!24, !11, i64 244}
!43 = !{!24, !11, i64 248}
!44 = !{!24, !11, i64 232}
!45 = !{!24, !11, i64 84}
!46 = !{!24, !11, i64 88}
!47 = !{!24, !11, i64 252}
!48 = !{!24, !11, i64 216}
!49 = !{!50, !6, i64 16}
!50 = !{!"libxsmm_gemm_param", !51, i64 0, !52, i64 32, !52, i64 80, !52, i64 128}
!51 = !{!"libxsmm_matrix_op_arg", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!52 = !{!"libxsmm_matrix_arg", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!53 = !{!12, !12, i64 0}
!54 = !{!55, !6, i64 16}
!55 = !{!"libxsmm_gemm_ext_param", !51, i64 0, !52, i64 32, !52, i64 80, !52, i64 128, !52, i64 176, !52, i64 224, !52, i64 272, !52, i64 320}
!56 = !{!50, !6, i64 32}
!57 = !{!24, !6, i64 296}
!58 = !{!50, !6, i64 80}
!59 = !{!24, !6, i64 304}
!60 = !{!50, !6, i64 56}
!61 = !{!24, !6, i64 168}
!62 = !{!55, !6, i64 32}
!63 = !{!55, !6, i64 80}
!64 = !{!55, !6, i64 56}
!65 = !{!50, !6, i64 40}
!66 = !{!24, !6, i64 280}
!67 = !{!50, !6, i64 88}
!68 = !{!24, !6, i64 288}
!69 = !{!24, !6, i64 176}
!70 = !{!55, !6, i64 40}
!71 = !{!55, !6, i64 88}
!72 = !{!10, !12, i64 33}
!73 = !{!24, !12, i64 264}
!74 = !{!10, !12, i64 41}
!75 = !{!24, !12, i64 272}
!76 = !{!24, !6, i64 312}
!77 = !{!24, !6, i64 344}
!78 = !{!24, !6, i64 160}
!79 = !{!50, !6, i64 48}
!80 = !{!24, !6, i64 200}
!81 = !{!24, !6, i64 192}
!82 = !{!24, !6, i64 184}
!83 = !{!50, !6, i64 96}
!84 = !{!24, !6, i64 144}
!85 = !{!24, !6, i64 136}
!86 = !{!24, !6, i64 128}
!87 = !{!50, !6, i64 144}
!88 = !{!25, !25, i64 0}
!89 = !{!24, !25, i64 124}
!90 = !{!55, !6, i64 48}
!91 = !{!55, !6, i64 96}
!92 = !{!55, !6, i64 144}
!93 = !{!24, !11, i64 16}
!94 = !{!24, !11, i64 20}
!95 = !{!24, !11, i64 24}
!96 = !{!24, !11, i64 28}
!97 = !{!24, !11, i64 32}
!98 = !{!24, !11, i64 36}
!99 = !{!24, !11, i64 0}
!100 = !{!24, !11, i64 4}
!101 = !{!24, !11, i64 12}
!102 = !{!24, !11, i64 8}
!103 = !{!24, !22, i64 48}
!104 = !{!24, !22, i64 56}
!105 = !{!24, !11, i64 64}
!106 = !{!24, !11, i64 68}
!107 = !{!24, !11, i64 72}
!108 = !{!24, !11, i64 76}
!109 = !{!24, !11, i64 80}
!110 = !{!24, !11, i64 96}
!111 = !{!24, !11, i64 100}
!112 = !{!24, !11, i64 104}
!113 = !{!24, !11, i64 108}
!114 = !{!24, !11, i64 112}
!115 = !{!24, !11, i64 208}
!116 = !{!24, !11, i64 212}
!117 = !{i64 0, i64 4, !14, i64 4, i64 4, !14, i64 8, i64 4, !14, i64 12, i64 4, !14, i64 16, i64 4, !14, i64 20, i64 4, !14, i64 24, i64 4, !14, i64 28, i64 4, !14, i64 32, i64 4, !14, i64 36, i64 4, !14, i64 40, i64 4, !14, i64 44, i64 4, !14, i64 48, i64 8, !21, i64 56, i64 8, !21, i64 64, i64 4, !14, i64 68, i64 4, !14, i64 72, i64 4, !14, i64 76, i64 4, !14, i64 80, i64 4, !14, i64 84, i64 4, !14, i64 88, i64 4, !14, i64 92, i64 4, !14, i64 96, i64 4, !14, i64 100, i64 4, !14, i64 104, i64 4, !14, i64 108, i64 4, !14, i64 112, i64 4, !14, i64 116, i64 4, !14, i64 120, i64 4, !14, i64 124, i64 4, !88, i64 128, i64 8, !5, i64 136, i64 8, !5, i64 144, i64 8, !5, i64 152, i64 8, !5, i64 160, i64 8, !5, i64 168, i64 8, !5, i64 176, i64 8, !5, i64 184, i64 8, !5, i64 192, i64 8, !5, i64 200, i64 8, !5, i64 208, i64 4, !14, i64 212, i64 4, !14, i64 216, i64 4, !14, i64 220, i64 4, !14, i64 224, i64 4, !14, i64 228, i64 4, !14, i64 232, i64 4, !14, i64 236, i64 4, !14, i64 240, i64 4, !14, i64 244, i64 4, !14, i64 248, i64 4, !14, i64 252, i64 4, !14, i64 256, i64 4, !14, i64 264, i64 8, !53, i64 272, i64 8, !53, i64 280, i64 8, !5, i64 288, i64 8, !5, i64 296, i64 8, !5, i64 304, i64 8, !5, i64 312, i64 8, !5, i64 320, i64 4, !14, i64 324, i64 4, !14, i64 328, i64 4, !14, i64 332, i64 4, !14, i64 336, i64 4, !14, i64 340, i64 4, !14, i64 344, i64 8, !5, i64 352, i64 8, !5}


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

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [85 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_setup_gemm_def = external hidden unnamed_addr constant [89 x i8], align 1
@switch.table.libxsmm_setup_gemm_def = private unnamed_addr constant [7 x i64] [i64 2, i64 2, i64 1, i64 2, i64 8, i64 2, i64 4], align 8
@switch.table.libxsmm_setup_gemm_def.1 = private unnamed_addr constant [11 x i64] [i64 2, i64 2, i64 1, i64 2, i64 8, i64 2, i64 4, i64 2, i64 2, i64 2, i64 1], align 8

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #1

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_setup_gemm_def(ptr noundef writeonly %0, ptr noundef readonly %1, ptr noundef %2) local_unnamed_addr #3 {
  %4 = getelementptr inbounds i8, ptr %2, i64 24
  %5 = load i32, ptr %4, align 1, !tbaa !5
  %6 = and i32 %5, 32768
  %.not = icmp eq i32 %6, 0
  %7 = select i1 %.not, ptr null, ptr %1
  %8 = select i1 %.not, ptr %1, ptr null
  %9 = getelementptr inbounds i8, ptr %2, i64 29
  %10 = tail call i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef nonnull %9) #4
  %11 = tail call i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef nonnull %9) #4
  %12 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %9) #4
  %13 = tail call i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef nonnull %9) #4
  %14 = getelementptr inbounds i8, ptr %2, i64 16
  %15 = load <2 x i32>, ptr %14, align 1, !tbaa !12
  %16 = load <4 x i32>, ptr %2, align 1, !tbaa !12
  %17 = load i32, ptr %4, align 1, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %2, i64 69
  %19 = load i8, ptr %18, align 1, !tbaa !13
  %20 = icmp eq i8 %19, 1
  br i1 %20, label %21, label %31

21:                                               ; preds = %3
  %22 = getelementptr inbounds i8, ptr %2, i64 80
  %23 = load i16, ptr %22, align 1, !tbaa !14
  %24 = icmp eq i16 %23, 5
  br i1 %24, label %25, label %29

25:                                               ; preds = %21
  %26 = getelementptr inbounds i8, ptr %2, i64 74
  %27 = load i16, ptr %26, align 1, !tbaa !15
  %28 = and i16 %27, 1
  %. = zext nneg i16 %28 to i32
  br label %29

29:                                               ; preds = %25, %21
  %.sroa.106.0 = phi i32 [ 0, %21 ], [ 1, %25 ]
  %.sroa.108.0 = phi i32 [ 0, %21 ], [ %., %25 ]
  %30 = icmp eq i16 %23, 9
  %spec.select = zext i1 %30 to i32
  br label %31

31:                                               ; preds = %29, %3
  %.sroa.106.1 = phi i32 [ 0, %3 ], [ %.sroa.106.0, %29 ]
  %.sroa.108.1 = phi i32 [ 0, %3 ], [ %.sroa.108.0, %29 ]
  %.sroa.111.0 = phi i32 [ 0, %3 ], [ %spec.select, %29 ]
  %32 = getelementptr inbounds i8, ptr %2, i64 66
  %33 = load i8, ptr %32, align 1, !tbaa !16
  %34 = icmp eq i8 %33, 2
  br i1 %34, label %35, label %43

35:                                               ; preds = %31
  %36 = getelementptr inbounds i8, ptr %2, i64 62
  %37 = load i16, ptr %36, align 1, !tbaa !17
  %38 = icmp eq i16 %37, 1
  br i1 %38, label %39, label %43

39:                                               ; preds = %35
  %40 = getelementptr inbounds i8, ptr %2, i64 64
  %41 = load i16, ptr %40, align 1, !tbaa !18
  %42 = and i16 %41, 12
  %or.cond305 = icmp ne i16 %42, 0
  %spec.select319 = zext i1 %or.cond305 to i32
  br label %43

43:                                               ; preds = %39, %35, %31
  %.sroa.104.0 = phi i32 [ 0, %35 ], [ 0, %31 ], [ %spec.select319, %39 ]
  %44 = icmp eq i32 %10, 12
  br i1 %44, label %45, label %51

45:                                               ; preds = %43
  %46 = and i32 %17, 16777216
  %.not295 = icmp ne i32 %46, 0
  %47 = icmp eq i32 %11, 2
  %48 = icmp eq i32 %11, 1
  %narrow = select i1 %.not295, i1 %47, i1 false
  %.sroa.59.1 = zext i1 %narrow to i32
  %narrow476 = select i1 %.not295, i1 %48, i1 false
  %.sroa.64.1 = zext i1 %narrow476 to i32
  %49 = icmp eq i32 %11, 12
  %50 = and i32 %17, 134217728
  %.not296 = icmp ne i32 %50, 0
  %.lobit477 = lshr exact i32 %50, 27
  %.ph = select i1 %49, i1 %.not296, i1 false
  %.sroa.69.0.ph = select i1 %49, i32 %.lobit477, i32 0
  br label %54

51:                                               ; preds = %43
  %52 = and i32 %10, -2
  %or.cond3 = icmp eq i32 %52, 12
  br i1 %or.cond3, label %.thread354, label %.thread342

.thread354:                                       ; preds = %51
  %53 = icmp eq i32 %11, 12
  br label %54

54:                                               ; preds = %45, %.thread354
  %or.cond325333365 = phi i1 [ false, %.thread354 ], [ %49, %45 ]
  %55 = phi i1 [ %53, %.thread354 ], [ %49, %45 ]
  %.sroa.64.1324335364 = phi i32 [ 0, %.thread354 ], [ %.sroa.64.1, %45 ]
  %.sroa.59.1323337363 = phi i32 [ 0, %.thread354 ], [ %.sroa.59.1, %45 ]
  %56 = phi i1 [ false, %.thread354 ], [ %.ph, %45 ]
  %.sroa.69.0339362 = phi i32 [ 0, %.thread354 ], [ %.sroa.69.0.ph, %45 ]
  %57 = and i32 %17, 2097152
  %58 = icmp ne i32 %57, 0
  %59 = icmp eq i32 %11, 3
  %or.cond5 = select i1 %58, i1 %59, i1 false
  %spec.select310366 = zext i1 %or.cond5 to i32
  %60 = and i32 %17, 4194304
  %61 = icmp ne i32 %60, 0
  %or.cond9 = select i1 %61, i1 %55, i1 false
  br i1 %or.cond9, label %62, label %.thread342

62:                                               ; preds = %54
  br label %.thread342

.thread342:                                       ; preds = %51, %62, %54
  %.sroa.90.0353 = phi i32 [ %spec.select310366, %62 ], [ %spec.select310366, %54 ], [ 0, %51 ]
  %or.cond325332352 = phi i1 [ %or.cond325333365, %62 ], [ %or.cond325333365, %54 ], [ false, %51 ]
  %.sroa.64.1324334351 = phi i32 [ %.sroa.64.1324335364, %62 ], [ %.sroa.64.1324335364, %54 ], [ 0, %51 ]
  %.sroa.59.1323336350 = phi i32 [ %.sroa.59.1323337363, %62 ], [ %.sroa.59.1323337363, %54 ], [ 0, %51 ]
  %63 = phi i1 [ %56, %62 ], [ %56, %54 ], [ false, %51 ]
  %.sroa.69.0338349 = phi i32 [ %.sroa.69.0339362, %62 ], [ %.sroa.69.0339362, %54 ], [ 0, %51 ]
  %64 = phi i32 [ 12, %62 ], [ 12, %54 ], [ %52, %51 ]
  %65 = phi i1 [ true, %62 ], [ false, %54 ], [ false, %51 ]
  %.sroa.75.0 = phi i32 [ 1, %62 ], [ 0, %54 ], [ 0, %51 ]
  %.sroa.90.1 = phi i32 [ 1, %62 ], [ %spec.select310366, %54 ], [ 0, %51 ]
  %66 = and i32 %17, 65536
  %.not297 = icmp eq i32 %66, 0
  %67 = and i32 %17, 131072
  %.not298 = icmp eq i32 %67, 0
  %68 = and i32 %17, 262144
  %.not299 = icmp eq i32 %68, 0
  %69 = and i32 %17, 458752
  %or.cond312 = icmp eq i32 %69, 0
  br i1 %or.cond312, label %.thread373, label %70

70:                                               ; preds = %.thread342
  %71 = icmp eq ptr %7, null
  %.313 = select i1 %71, ptr %8, ptr %7
  %.in.in = getelementptr inbounds i8, ptr %.313, i64 16
  %.in = load ptr, ptr %.in.in, align 8, !tbaa !19
  %72 = load i64, ptr %.in, align 8, !tbaa !21
  %73 = trunc i64 %72 to i32
  br i1 %.not297, label %91, label %74

74:                                               ; preds = %70
  br i1 %71, label %75, label %83

75:                                               ; preds = %74
  %76 = getelementptr inbounds i8, ptr %8, i64 32
  %77 = load ptr, ptr %76, align 8, !tbaa !22
  %78 = getelementptr inbounds i8, ptr %8, i64 80
  %79 = load ptr, ptr %78, align 8, !tbaa !26
  br i1 %65, label %80, label %.thread444

80:                                               ; preds = %75
  %81 = getelementptr inbounds i8, ptr %8, i64 56
  %82 = load ptr, ptr %81, align 8, !tbaa !27
  br label %.thread444

83:                                               ; preds = %74
  %84 = getelementptr inbounds i8, ptr %7, i64 32
  %85 = load ptr, ptr %84, align 8, !tbaa !28
  %86 = getelementptr inbounds i8, ptr %7, i64 80
  %87 = load ptr, ptr %86, align 8, !tbaa !30
  br i1 %65, label %88, label %.thread421

88:                                               ; preds = %83
  %89 = getelementptr inbounds i8, ptr %7, i64 56
  %90 = load ptr, ptr %89, align 8, !tbaa !31
  br label %.thread421

91:                                               ; preds = %70
  br i1 %.not298, label %109, label %92

92:                                               ; preds = %91
  br i1 %71, label %93, label %101

93:                                               ; preds = %92
  %94 = getelementptr inbounds i8, ptr %8, i64 40
  %95 = load ptr, ptr %94, align 8, !tbaa !32
  %96 = getelementptr inbounds i8, ptr %8, i64 88
  %97 = load ptr, ptr %96, align 8, !tbaa !33
  br i1 %65, label %98, label %.thread444

98:                                               ; preds = %93
  %99 = getelementptr inbounds i8, ptr %8, i64 56
  %100 = load ptr, ptr %99, align 8, !tbaa !27
  br label %.thread444

101:                                              ; preds = %92
  %102 = getelementptr inbounds i8, ptr %7, i64 40
  %103 = load ptr, ptr %102, align 8, !tbaa !34
  %104 = getelementptr inbounds i8, ptr %7, i64 88
  %105 = load ptr, ptr %104, align 8, !tbaa !35
  br i1 %65, label %106, label %.thread421

106:                                              ; preds = %101
  %107 = getelementptr inbounds i8, ptr %7, i64 56
  %108 = load ptr, ptr %107, align 8, !tbaa !31
  br label %.thread421

109:                                              ; preds = %91
  br i1 %.not299, label %.thread373, label %110

110:                                              ; preds = %109
  %111 = getelementptr inbounds i8, ptr %2, i64 33
  %112 = load i64, ptr %111, align 1, !tbaa !36
  switch i32 %10, label %113 [
    i32 0, label %118
    i32 1, label %.fold.split
  ]

113:                                              ; preds = %110
  %switch.tableidx = add i32 %64, -2
  %114 = icmp ult i32 %switch.tableidx, 7
  br i1 %114, label %switch.lookup, label %115

115:                                              ; preds = %113
  %or.cond63 = icmp eq i32 %64, 10
  %.mux = select i1 %or.cond63, i64 2, i64 1
  %.off = add i32 %10, -10
  %switch = icmp ult i32 %.off, 4
  br i1 %switch, label %118, label %116

116:                                              ; preds = %115
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 450, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_setup_gemm_def) #5
  unreachable

.fold.split:                                      ; preds = %110
  br label %118

switch.lookup:                                    ; preds = %113
  %117 = zext nneg i32 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [7 x i64], ptr @switch.table.libxsmm_setup_gemm_def, i64 0, i64 %117
  %switch.load = load i64, ptr %switch.gep, align 8
  br label %118

118:                                              ; preds = %switch.lookup, %115, %110, %.fold.split
  %119 = phi i64 [ 8, %110 ], [ 4, %.fold.split ], [ %.mux, %115 ], [ %switch.load, %switch.lookup ]
  %120 = sdiv i64 %112, %119
  %121 = getelementptr inbounds i8, ptr %2, i64 41
  %122 = load i64, ptr %121, align 1, !tbaa !37
  switch i32 %11, label %123 [
    i32 0, label %128
    i32 1, label %.fold.split314
  ]

123:                                              ; preds = %118
  %124 = and i32 %11, -2
  %switch.tableidx502 = add i32 %124, -2
  %125 = icmp ult i32 %switch.tableidx502, 11
  br i1 %125, label %switch.hole_check503, label %126

126:                                              ; preds = %switch.hole_check503, %123
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 451, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_setup_gemm_def) #5
  unreachable

.fold.split314:                                   ; preds = %118
  br label %128

switch.hole_check503:                             ; preds = %123
  %switch.maskindex505 = trunc nuw i32 %switch.tableidx502 to i16
  %switch.shifted506 = lshr i16 1365, %switch.maskindex505
  %switch.lobit507 = trunc i16 %switch.shifted506 to i1
  br i1 %switch.lobit507, label %switch.lookup504, label %126

switch.lookup504:                                 ; preds = %switch.hole_check503
  %127 = zext nneg i32 %switch.tableidx502 to i64
  %switch.gep508 = getelementptr inbounds [11 x i64], ptr @switch.table.libxsmm_setup_gemm_def.1, i64 0, i64 %127
  %switch.load509 = load i64, ptr %switch.gep508, align 8
  br label %128

128:                                              ; preds = %switch.lookup504, %118, %.fold.split314
  %129 = phi i64 [ 8, %118 ], [ 4, %.fold.split314 ], [ %switch.load509, %switch.lookup504 ]
  %130 = sdiv i64 %122, %129
  br i1 %65, label %131, label %148

131:                                              ; preds = %128
  br i1 %71, label %132, label %135

132:                                              ; preds = %131
  %133 = getelementptr inbounds i8, ptr %8, i64 56
  %134 = load ptr, ptr %133, align 8, !tbaa !27
  br label %.thread444

135:                                              ; preds = %131
  %136 = getelementptr inbounds i8, ptr %7, i64 56
  %137 = load ptr, ptr %136, align 8, !tbaa !31
  br label %.thread421

.thread373:                                       ; preds = %.thread342, %109
  %138 = and i32 %17, 8388608
  %.not303 = icmp eq i32 %138, 0
  br i1 %.not303, label %139, label %.thread

139:                                              ; preds = %.thread373
  br i1 %65, label %140, label %148

140:                                              ; preds = %139
  %141 = icmp eq ptr %7, null
  br i1 %141, label %142, label %145

142:                                              ; preds = %140
  %143 = getelementptr inbounds i8, ptr %8, i64 56
  %144 = load ptr, ptr %143, align 8, !tbaa !27
  br label %.thread444

145:                                              ; preds = %140
  %146 = getelementptr inbounds i8, ptr %7, i64 56
  %147 = load ptr, ptr %146, align 8, !tbaa !31
  br label %.thread421

148:                                              ; preds = %139, %128
  %.sroa.93230.0 = phi i64 [ %120, %128 ], [ undef, %139 ]
  %.sroa.94.0 = phi i64 [ %130, %128 ], [ undef, %139 ]
  %.1 = phi i32 [ %73, %128 ], [ 1, %139 ]
  %.0 = phi i32 [ 3, %128 ], [ 0, %139 ]
  %149 = icmp eq ptr %7, null
  br i1 %149, label %.thread444, label %.thread421

.thread:                                          ; preds = %.thread373
  %150 = icmp eq ptr %7, null
  br i1 %150, label %151, label %.thread421

151:                                              ; preds = %.thread
  %152 = getelementptr inbounds i8, ptr %8, i64 40
  %153 = load ptr, ptr %152, align 8, !tbaa !32
  %.not304 = icmp eq i32 %12, 1
  br i1 %.not304, label %220, label %154

154:                                              ; preds = %151
  %155 = extractelement <4 x i32> %16, i64 0
  %156 = sext i32 %155 to i64
  %157 = extractelement <4 x i32> %16, i64 1
  %158 = sext i32 %157 to i64
  %159 = shl nsw i64 %156, 2
  %160 = mul i64 %159, %158
  %161 = tail call noalias ptr @malloc(i64 noundef %160) #6
  br label %220

.thread444:                                       ; preds = %148, %93, %98, %142, %132, %80, %75
  %.sroa.39.0389466 = phi ptr [ undef, %142 ], [ undef, %132 ], [ undef, %93 ], [ undef, %98 ], [ undef, %75 ], [ %82, %80 ], [ undef, %148 ]
  %.sroa.41.0391465 = phi ptr [ %144, %142 ], [ %134, %132 ], [ undef, %93 ], [ %100, %98 ], [ undef, %75 ], [ undef, %80 ], [ undef, %148 ]
  %.sroa.93230.0395463 = phi i64 [ undef, %142 ], [ %120, %132 ], [ undef, %93 ], [ undef, %98 ], [ undef, %75 ], [ undef, %80 ], [ %.sroa.93230.0, %148 ]
  %.sroa.94.0397462 = phi i64 [ undef, %142 ], [ %130, %132 ], [ undef, %93 ], [ undef, %98 ], [ undef, %75 ], [ undef, %80 ], [ %.sroa.94.0, %148 ]
  %.sroa.95.0399461 = phi ptr [ undef, %142 ], [ undef, %132 ], [ %95, %93 ], [ %95, %98 ], [ undef, %75 ], [ undef, %80 ], [ undef, %148 ]
  %.sroa.97.0401460 = phi ptr [ undef, %142 ], [ undef, %132 ], [ %97, %93 ], [ %97, %98 ], [ undef, %75 ], [ undef, %80 ], [ undef, %148 ]
  %.sroa.99.0403459 = phi ptr [ undef, %142 ], [ undef, %132 ], [ undef, %93 ], [ undef, %98 ], [ %77, %75 ], [ %77, %80 ], [ undef, %148 ]
  %.sroa.101.0405458 = phi ptr [ undef, %142 ], [ undef, %132 ], [ undef, %93 ], [ undef, %98 ], [ %79, %75 ], [ %79, %80 ], [ undef, %148 ]
  %.1407457 = phi i32 [ 1, %142 ], [ %73, %132 ], [ %73, %93 ], [ %73, %98 ], [ %73, %75 ], [ %73, %80 ], [ %.1, %148 ]
  %.0409456 = phi i32 [ 0, %142 ], [ 3, %132 ], [ 2, %93 ], [ 2, %98 ], [ 1, %75 ], [ 1, %80 ], [ %.0, %148 ]
  %162 = icmp eq i32 %11, 3
  %or.cond11 = select i1 %44, i1 %162, i1 false
  br i1 %or.cond11, label %163, label %171

163:                                              ; preds = %.thread444
  switch i32 %13, label %171 [
    i32 14, label %164
    i32 3, label %164
    i32 1, label %164
  ]

164:                                              ; preds = %163, %163, %163
  %165 = and i32 %12, -3
  %or.cond17 = icmp eq i32 %165, 1
  br i1 %or.cond17, label %166, label %171

166:                                              ; preds = %164
  %167 = getelementptr inbounds i8, ptr %8, i64 56
  %168 = load ptr, ptr %167, align 8, !tbaa !27
  %169 = getelementptr inbounds i8, ptr %8, i64 48
  %170 = load ptr, ptr %169, align 8, !tbaa !38
  br label %171

171:                                              ; preds = %163, %164, %166, %.thread444
  %.sroa.37219.0 = phi ptr [ %168, %166 ], [ undef, %164 ], [ undef, %163 ], [ undef, %.thread444 ]
  %.sroa.51.0 = phi ptr [ %170, %166 ], [ undef, %164 ], [ undef, %163 ], [ undef, %.thread444 ]
  %172 = or i32 %.sroa.59.1323336350, %.sroa.64.1324334351
  %or.cond20 = icmp ne i32 %172, 0
  %or.cond23 = or i1 %63, %or.cond20
  br i1 %or.cond23, label %173, label %179

173:                                              ; preds = %171
  %174 = getelementptr inbounds i8, ptr %8, i64 48
  %175 = load ptr, ptr %174, align 8, !tbaa !38
  br i1 %63, label %176, label %179

176:                                              ; preds = %173
  %177 = getelementptr inbounds i8, ptr %8, i64 96
  %178 = load ptr, ptr %177, align 8, !tbaa !39
  %spec.select315 = select i1 %.not297, ptr undef, ptr %178
  br label %179

179:                                              ; preds = %176, %173, %171
  %.sroa.33.0 = phi ptr [ undef, %173 ], [ undef, %171 ], [ %spec.select315, %176 ]
  %.sroa.35.0 = phi ptr [ undef, %173 ], [ undef, %171 ], [ %178, %176 ]
  %.sroa.49.0 = phi ptr [ %175, %173 ], [ undef, %171 ], [ %175, %176 ]
  %180 = icmp eq i32 %11, 2
  %or.cond25 = select i1 %44, i1 %180, i1 false
  %181 = add i32 %12, -1
  %or.cond27 = icmp ult i32 %181, 2
  %or.cond316 = select i1 %or.cond25, i1 %or.cond27, i1 false
  br i1 %or.cond316, label %182, label %185

182:                                              ; preds = %179
  %183 = getelementptr inbounds i8, ptr %8, i64 48
  %184 = load ptr, ptr %183, align 8, !tbaa !38
  br label %185

185:                                              ; preds = %182, %179
  %.sroa.31.0 = phi ptr [ %184, %182 ], [ undef, %179 ]
  %186 = icmp eq i32 %12, 1
  %or.cond31 = select i1 %or.cond325332352, i1 %186, i1 false
  br i1 %or.cond31, label %187, label %220

187:                                              ; preds = %185
  %188 = getelementptr inbounds i8, ptr %8, i64 144
  %189 = load ptr, ptr %188, align 8, !tbaa !40
  %190 = load float, ptr %189, align 4, !tbaa !41
  br label %220

.thread421:                                       ; preds = %.thread, %83, %88, %135, %145, %106, %101, %148
  %.0443 = phi i32 [ %.0, %148 ], [ 0, %145 ], [ 3, %135 ], [ 2, %101 ], [ 2, %106 ], [ 1, %83 ], [ 1, %88 ], [ 0, %.thread ]
  %.1442 = phi i32 [ %.1, %148 ], [ 1, %145 ], [ %73, %135 ], [ %73, %101 ], [ %73, %106 ], [ %73, %83 ], [ %73, %88 ], [ 1, %.thread ]
  %.sroa.101.0441 = phi ptr [ undef, %148 ], [ undef, %145 ], [ undef, %135 ], [ undef, %101 ], [ undef, %106 ], [ %87, %83 ], [ %87, %88 ], [ undef, %.thread ]
  %.sroa.99.0440 = phi ptr [ undef, %148 ], [ undef, %145 ], [ undef, %135 ], [ undef, %101 ], [ undef, %106 ], [ %85, %83 ], [ %85, %88 ], [ undef, %.thread ]
  %.sroa.97.0439 = phi ptr [ undef, %148 ], [ undef, %145 ], [ undef, %135 ], [ %105, %101 ], [ %105, %106 ], [ undef, %83 ], [ undef, %88 ], [ undef, %.thread ]
  %.sroa.95.0438 = phi ptr [ undef, %148 ], [ undef, %145 ], [ undef, %135 ], [ %103, %101 ], [ %103, %106 ], [ undef, %83 ], [ undef, %88 ], [ undef, %.thread ]
  %.sroa.94.0437 = phi i64 [ %.sroa.94.0, %148 ], [ undef, %145 ], [ %130, %135 ], [ undef, %101 ], [ undef, %106 ], [ undef, %83 ], [ undef, %88 ], [ undef, %.thread ]
  %.sroa.93230.0436 = phi i64 [ %.sroa.93230.0, %148 ], [ undef, %145 ], [ %120, %135 ], [ undef, %101 ], [ undef, %106 ], [ undef, %83 ], [ undef, %88 ], [ undef, %.thread ]
  %.sroa.87.0435 = phi i32 [ 0, %148 ], [ 0, %145 ], [ 0, %135 ], [ 0, %101 ], [ 0, %106 ], [ 0, %83 ], [ 0, %88 ], [ 1, %.thread ]
  %.sroa.41.0434 = phi ptr [ undef, %148 ], [ %147, %145 ], [ %137, %135 ], [ undef, %101 ], [ %108, %106 ], [ undef, %83 ], [ undef, %88 ], [ undef, %.thread ]
  %.sroa.39.0433 = phi ptr [ undef, %148 ], [ undef, %145 ], [ undef, %135 ], [ undef, %101 ], [ undef, %106 ], [ undef, %83 ], [ %90, %88 ], [ undef, %.thread ]
  %191 = icmp eq i32 %11, 3
  %or.cond33 = select i1 %44, i1 %191, i1 false
  br i1 %or.cond33, label %192, label %200

192:                                              ; preds = %.thread421
  switch i32 %13, label %200 [
    i32 14, label %193
    i32 3, label %193
    i32 1, label %193
  ]

193:                                              ; preds = %192, %192, %192
  %194 = and i32 %12, -3
  %or.cond39 = icmp eq i32 %194, 1
  br i1 %or.cond39, label %195, label %200

195:                                              ; preds = %193
  %196 = getelementptr inbounds i8, ptr %7, i64 56
  %197 = load ptr, ptr %196, align 8, !tbaa !31
  %198 = getelementptr inbounds i8, ptr %7, i64 48
  %199 = load ptr, ptr %198, align 8, !tbaa !43
  br label %200

200:                                              ; preds = %192, %193, %195, %.thread421
  %.sroa.37219.1 = phi ptr [ %197, %195 ], [ undef, %193 ], [ undef, %192 ], [ undef, %.thread421 ]
  %.sroa.51.1 = phi ptr [ %199, %195 ], [ undef, %193 ], [ undef, %192 ], [ undef, %.thread421 ]
  %201 = or i32 %.sroa.59.1323336350, %.sroa.64.1324334351
  %or.cond42 = icmp ne i32 %201, 0
  %or.cond45 = or i1 %63, %or.cond42
  br i1 %or.cond45, label %202, label %208

202:                                              ; preds = %200
  %203 = getelementptr inbounds i8, ptr %7, i64 48
  %204 = load ptr, ptr %203, align 8, !tbaa !43
  br i1 %63, label %205, label %208

205:                                              ; preds = %202
  %206 = getelementptr inbounds i8, ptr %7, i64 96
  %207 = load ptr, ptr %206, align 8, !tbaa !44
  %spec.select317 = select i1 %.not297, ptr undef, ptr %207
  br label %208

208:                                              ; preds = %205, %202, %200
  %.sroa.33.1 = phi ptr [ undef, %202 ], [ undef, %200 ], [ %spec.select317, %205 ]
  %.sroa.35.1 = phi ptr [ undef, %202 ], [ undef, %200 ], [ %207, %205 ]
  %.sroa.49.1 = phi ptr [ %204, %202 ], [ undef, %200 ], [ %204, %205 ]
  %209 = icmp eq i32 %11, 2
  %or.cond47 = select i1 %44, i1 %209, i1 false
  %210 = add i32 %12, -1
  %or.cond49 = icmp ult i32 %210, 2
  %or.cond318 = select i1 %or.cond47, i1 %or.cond49, i1 false
  br i1 %or.cond318, label %211, label %214

211:                                              ; preds = %208
  %212 = getelementptr inbounds i8, ptr %7, i64 48
  %213 = load ptr, ptr %212, align 8, !tbaa !43
  br label %214

214:                                              ; preds = %211, %208
  %.sroa.31.1 = phi ptr [ %213, %211 ], [ undef, %208 ]
  %215 = icmp eq i32 %12, 1
  %or.cond53 = select i1 %or.cond325332352, i1 %215, i1 false
  br i1 %or.cond53, label %216, label %220

216:                                              ; preds = %214
  %217 = getelementptr inbounds i8, ptr %7, i64 144
  %218 = load ptr, ptr %217, align 8, !tbaa !45
  %219 = load float, ptr %218, align 4, !tbaa !41
  br label %220

220:                                              ; preds = %151, %214, %216, %154, %187, %185
  %.0408 = phi i32 [ 0, %154 ], [ %.0409456, %187 ], [ %.0409456, %185 ], [ %.0443, %216 ], [ %.0443, %214 ], [ 0, %151 ]
  %.1406 = phi i32 [ 1, %154 ], [ %.1407457, %187 ], [ %.1407457, %185 ], [ %.1442, %216 ], [ %.1442, %214 ], [ 1, %151 ]
  %.sroa.101.0404 = phi ptr [ undef, %154 ], [ %.sroa.101.0405458, %187 ], [ %.sroa.101.0405458, %185 ], [ %.sroa.101.0441, %216 ], [ %.sroa.101.0441, %214 ], [ undef, %151 ]
  %.sroa.99.0402 = phi ptr [ undef, %154 ], [ %.sroa.99.0403459, %187 ], [ %.sroa.99.0403459, %185 ], [ %.sroa.99.0440, %216 ], [ %.sroa.99.0440, %214 ], [ undef, %151 ]
  %.sroa.97.0400 = phi ptr [ undef, %154 ], [ %.sroa.97.0401460, %187 ], [ %.sroa.97.0401460, %185 ], [ %.sroa.97.0439, %216 ], [ %.sroa.97.0439, %214 ], [ undef, %151 ]
  %.sroa.95.0398 = phi ptr [ undef, %154 ], [ %.sroa.95.0399461, %187 ], [ %.sroa.95.0399461, %185 ], [ %.sroa.95.0438, %216 ], [ %.sroa.95.0438, %214 ], [ undef, %151 ]
  %.sroa.94.0396 = phi i64 [ undef, %154 ], [ %.sroa.94.0397462, %187 ], [ %.sroa.94.0397462, %185 ], [ %.sroa.94.0437, %216 ], [ %.sroa.94.0437, %214 ], [ undef, %151 ]
  %.sroa.93230.0394 = phi i64 [ undef, %154 ], [ %.sroa.93230.0395463, %187 ], [ %.sroa.93230.0395463, %185 ], [ %.sroa.93230.0436, %216 ], [ %.sroa.93230.0436, %214 ], [ undef, %151 ]
  %.sroa.87.0392 = phi i32 [ 1, %154 ], [ 0, %187 ], [ 0, %185 ], [ %.sroa.87.0435, %216 ], [ %.sroa.87.0435, %214 ], [ 1, %151 ]
  %.sroa.41.0390 = phi ptr [ undef, %154 ], [ %.sroa.41.0391465, %187 ], [ %.sroa.41.0391465, %185 ], [ %.sroa.41.0434, %216 ], [ %.sroa.41.0434, %214 ], [ undef, %151 ]
  %.sroa.39.0388 = phi ptr [ undef, %154 ], [ %.sroa.39.0389466, %187 ], [ %.sroa.39.0389466, %185 ], [ %.sroa.39.0433, %216 ], [ %.sroa.39.0433, %214 ], [ undef, %151 ]
  %.sroa.29218.0 = phi float [ undef, %154 ], [ %190, %187 ], [ undef, %185 ], [ %219, %216 ], [ undef, %214 ], [ undef, %151 ]
  %.sroa.31.2 = phi ptr [ undef, %154 ], [ %.sroa.31.0, %187 ], [ %.sroa.31.0, %185 ], [ %.sroa.31.1, %216 ], [ %.sroa.31.1, %214 ], [ undef, %151 ]
  %.sroa.33.2 = phi ptr [ undef, %154 ], [ %.sroa.33.0, %187 ], [ %.sroa.33.0, %185 ], [ %.sroa.33.1, %216 ], [ %.sroa.33.1, %214 ], [ undef, %151 ]
  %.sroa.35.2 = phi ptr [ undef, %154 ], [ %.sroa.35.0, %187 ], [ %.sroa.35.0, %185 ], [ %.sroa.35.1, %216 ], [ %.sroa.35.1, %214 ], [ undef, %151 ]
  %.sroa.37219.2 = phi ptr [ undef, %154 ], [ %.sroa.37219.0, %187 ], [ %.sroa.37219.0, %185 ], [ %.sroa.37219.1, %216 ], [ %.sroa.37219.1, %214 ], [ undef, %151 ]
  %.sroa.49.2 = phi ptr [ undef, %154 ], [ %.sroa.49.0, %187 ], [ %.sroa.49.0, %185 ], [ %.sroa.49.1, %216 ], [ %.sroa.49.1, %214 ], [ undef, %151 ]
  %.sroa.51.2 = phi ptr [ undef, %154 ], [ %.sroa.51.0, %187 ], [ %.sroa.51.0, %185 ], [ %.sroa.51.1, %216 ], [ %.sroa.51.1, %214 ], [ undef, %151 ]
  %.sroa.103.0 = phi ptr [ %153, %154 ], [ undef, %187 ], [ undef, %185 ], [ undef, %216 ], [ undef, %214 ], [ %153, %151 ]
  %.sroa.115231.0 = phi ptr [ %161, %154 ], [ undef, %187 ], [ undef, %185 ], [ undef, %216 ], [ undef, %214 ], [ null, %151 ]
  %221 = lshr i32 %17, 9
  %.lobit475 = and i32 %221, 1
  %222 = lshr i32 %17, 8
  %.lobit474 = and i32 %222, 1
  %223 = and i32 %17, 4
  %.not289 = icmp eq i32 %223, 0
  %224 = select i1 %.not289, double 1.000000e+00, double 0.000000e+00
  %225 = lshr i32 %17, 13
  %.lobit288 = and i32 %225, 1
  %226 = lshr i32 %17, 12
  %.lobit286 = and i32 %226, 1
  %227 = lshr i32 %17, 11
  %.lobit284 = and i32 %227, 1
  %228 = lshr i32 %17, 1
  %.lobit = and i32 %228, 1
  %229 = and i32 %17, 1
  store i32 %10, ptr %0, align 8, !tbaa !12
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
  store i32 %11, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !12
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8
  store i32 %12, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !12
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %13, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !12
  %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16
  store <4 x i32> %16, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !12
  %.sroa.11.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32
  store <2 x i32> %15, ptr %.sroa.11.0..sroa_idx, align 8, !tbaa !12
  %.sroa.13216.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 48
  store double 1.000000e+00, ptr %.sroa.13216.0..sroa_idx, align 8, !tbaa !46
  %.sroa.14.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 56
  store double %224, ptr %.sroa.14.0..sroa_idx, align 8, !tbaa !46
  %.sroa.15.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 64
  store i32 %229, ptr %.sroa.15.0..sroa_idx, align 8, !tbaa !12
  %.sroa.16.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 68
  store i32 %.lobit, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !12
  %.sroa.17.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 72
  store i32 %.lobit284, ptr %.sroa.17.0..sroa_idx, align 8, !tbaa !12
  %.sroa.18.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 76
  store i32 %.lobit286, ptr %.sroa.18.0..sroa_idx, align 4, !tbaa !12
  %.sroa.19.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 80
  store i32 %.lobit288, ptr %.sroa.19.0..sroa_idx, align 8, !tbaa !12
  %.sroa.20.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %.lobit474, ptr %.sroa.20.0..sroa_idx, align 4, !tbaa !12
  %.sroa.22.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %.lobit475, ptr %.sroa.22.0..sroa_idx, align 8, !tbaa !12
  %.sroa.24217.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 96
  store i32 1, ptr %.sroa.24217.0..sroa_idx, align 8, !tbaa !12
  %.sroa.25.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 100
  store i32 1, ptr %.sroa.25.0..sroa_idx, align 4, !tbaa !12
  %.sroa.26.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 104
  store i32 0, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !12
  %.sroa.27.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 108
  store i32 %.0408, ptr %.sroa.27.0..sroa_idx, align 4, !tbaa !12
  %.sroa.28.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 112
  store i32 %.1406, ptr %.sroa.28.0..sroa_idx, align 8, !tbaa !12
  %.sroa.29218.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 124
  store float %.sroa.29218.0, ptr %.sroa.29218.0..sroa_idx, align 4, !tbaa !41
  %.sroa.31.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 128
  store ptr %.sroa.31.2, ptr %.sroa.31.0..sroa_idx, align 8, !tbaa !19
  %.sroa.33.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 136
  store ptr %.sroa.33.2, ptr %.sroa.33.0..sroa_idx, align 8, !tbaa !19
  %.sroa.35.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 144
  store ptr %.sroa.35.2, ptr %.sroa.35.0..sroa_idx, align 8, !tbaa !19
  %.sroa.37219.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 160
  store ptr %.sroa.37219.2, ptr %.sroa.37219.0..sroa_idx, align 8, !tbaa !19
  %.sroa.39.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 168
  store ptr %.sroa.39.0388, ptr %.sroa.39.0..sroa_idx, align 8, !tbaa !19
  %.sroa.41.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 176
  store ptr %.sroa.41.0390, ptr %.sroa.41.0..sroa_idx, align 8, !tbaa !19
  %.sroa.47.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 184
  store ptr %.sroa.49.2, ptr %.sroa.47.0..sroa_idx, align 8, !tbaa !19
  %.sroa.49.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 192
  store ptr %.sroa.49.2, ptr %.sroa.49.0..sroa_idx, align 8, !tbaa !19
  %.sroa.51.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 200
  store ptr %.sroa.51.2, ptr %.sroa.51.0..sroa_idx, align 8, !tbaa !19
  %.sroa.53.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 208
  store i32 0, ptr %.sroa.53.0..sroa_idx, align 8, !tbaa !12
  %.sroa.54.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 212
  store i32 0, ptr %.sroa.54.0..sroa_idx, align 4, !tbaa !12
  %.sroa.55.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 216
  store i32 32, ptr %.sroa.55.0..sroa_idx, align 8, !tbaa !12
  %.sroa.57.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 220
  store i32 %.sroa.90.0353, ptr %.sroa.57.0..sroa_idx, align 4, !tbaa !12
  %.sroa.59.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 224
  store i32 %.sroa.59.1323336350, ptr %.sroa.59.0..sroa_idx, align 8, !tbaa !12
  %.sroa.64.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 228
  store i32 %.sroa.64.1324334351, ptr %.sroa.64.0..sroa_idx, align 4, !tbaa !12
  %.sroa.69.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 232
  store i32 %.sroa.69.0338349, ptr %.sroa.69.0..sroa_idx, align 8, !tbaa !12
  %.sroa.75.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 236
  store i32 %.sroa.75.0, ptr %.sroa.75.0..sroa_idx, align 4, !tbaa !12
  %.sroa.84.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 240
  store i32 0, ptr %.sroa.84.0..sroa_idx, align 8, !tbaa !12
  %.sroa.85.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 244
  store i32 0, ptr %.sroa.85.0..sroa_idx, align 4, !tbaa !12
  %.sroa.86.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 248
  store i32 0, ptr %.sroa.86.0..sroa_idx, align 8, !tbaa !12
  %.sroa.87.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 252
  store i32 %.sroa.87.0392, ptr %.sroa.87.0..sroa_idx, align 4, !tbaa !12
  %.sroa.90.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 256
  store i32 %.sroa.90.1, ptr %.sroa.90.0..sroa_idx, align 8, !tbaa !12
  %.sroa.93230.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 264
  store i64 %.sroa.93230.0394, ptr %.sroa.93230.0..sroa_idx, align 8, !tbaa !21
  %.sroa.94.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 272
  store i64 %.sroa.94.0396, ptr %.sroa.94.0..sroa_idx, align 8, !tbaa !21
  %.sroa.95.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 280
  store ptr %.sroa.95.0398, ptr %.sroa.95.0..sroa_idx, align 8, !tbaa !19
  %.sroa.97.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 288
  store ptr %.sroa.97.0400, ptr %.sroa.97.0..sroa_idx, align 8, !tbaa !19
  %.sroa.99.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 296
  store ptr %.sroa.99.0402, ptr %.sroa.99.0..sroa_idx, align 8, !tbaa !19
  %.sroa.101.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 304
  store ptr %.sroa.101.0404, ptr %.sroa.101.0..sroa_idx, align 8, !tbaa !19
  %.sroa.103.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 312
  store ptr %.sroa.103.0, ptr %.sroa.103.0..sroa_idx, align 8, !tbaa !19
  %.sroa.104.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 320
  store i32 %.sroa.104.0, ptr %.sroa.104.0..sroa_idx, align 8, !tbaa !12
  %.sroa.106.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 324
  store i32 %.sroa.106.1, ptr %.sroa.106.0..sroa_idx, align 4, !tbaa !12
  %.sroa.108.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 328
  store i32 %.sroa.108.1, ptr %.sroa.108.0..sroa_idx, align 8, !tbaa !12
  %.sroa.111.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 332
  store i32 %.sroa.111.0, ptr %.sroa.111.0..sroa_idx, align 4, !tbaa !12
  %.sroa.113.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 336
  store i32 %.lobit288, ptr %.sroa.113.0..sroa_idx, align 8, !tbaa !12
  %.sroa.115231.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 344
  store ptr %.sroa.115231.0, ptr %.sroa.115231.0..sroa_idx, align 8, !tbaa !19
  ret void
}

declare i32 @LIBXSMM_GEMM_GETENUM_A_PREC(ptr noundef) local_unnamed_addr #2

declare i32 @LIBXSMM_GEMM_GETENUM_B_PREC(ptr noundef) local_unnamed_addr #2

declare i32 @LIBXSMM_GEMM_GETENUM_COMP_PREC(ptr noundef) local_unnamed_addr #2

attributes #0 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind }
attributes #6 = { nounwind allocsize(0) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 24}
!6 = !{!"libxsmm_gemm_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !8, i64 28, !8, i64 29, !8, i64 32, !10, i64 33, !10, i64 41, !8, i64 49, !7, i64 50, !7, i64 54, !7, i64 58, !11, i64 62, !11, i64 64, !8, i64 66, !8, i64 67, !8, i64 68, !8, i64 69, !11, i64 70, !11, i64 72, !11, i64 74, !11, i64 76, !11, i64 78, !11, i64 80, !7, i64 82, !7, i64 86, !7, i64 90, !8, i64 94}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"long long", !8, i64 0}
!11 = !{!"short", !8, i64 0}
!12 = !{!7, !7, i64 0}
!13 = !{!6, !8, i64 69}
!14 = !{!6, !11, i64 80}
!15 = !{!6, !11, i64 74}
!16 = !{!6, !8, i64 66}
!17 = !{!6, !11, i64 62}
!18 = !{!6, !11, i64 64}
!19 = !{!20, !20, i64 0}
!20 = !{!"any pointer", !8, i64 0}
!21 = !{!10, !10, i64 0}
!22 = !{!23, !20, i64 32}
!23 = !{!"libxsmm_gemm_param", !24, i64 0, !25, i64 32, !25, i64 80, !25, i64 128}
!24 = !{!"libxsmm_matrix_op_arg", !20, i64 0, !20, i64 8, !20, i64 16, !20, i64 24}
!25 = !{!"libxsmm_matrix_arg", !20, i64 0, !20, i64 8, !20, i64 16, !20, i64 24, !20, i64 32, !20, i64 40}
!26 = !{!23, !20, i64 80}
!27 = !{!23, !20, i64 56}
!28 = !{!29, !20, i64 32}
!29 = !{!"libxsmm_gemm_ext_param", !24, i64 0, !25, i64 32, !25, i64 80, !25, i64 128, !25, i64 176, !25, i64 224, !25, i64 272, !25, i64 320}
!30 = !{!29, !20, i64 80}
!31 = !{!29, !20, i64 56}
!32 = !{!23, !20, i64 40}
!33 = !{!23, !20, i64 88}
!34 = !{!29, !20, i64 40}
!35 = !{!29, !20, i64 88}
!36 = !{!6, !10, i64 33}
!37 = !{!6, !10, i64 41}
!38 = !{!23, !20, i64 48}
!39 = !{!23, !20, i64 96}
!40 = !{!23, !20, i64 144}
!41 = !{!42, !42, i64 0}
!42 = !{!"float", !8, i64 0}
!43 = !{!29, !20, i64 48}
!44 = !{!29, !20, i64 96}
!45 = !{!29, !20, i64 144}
!46 = !{!47, !47, i64 0}
!47 = !{!"double", !8, i64 0}


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