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

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

%struct.libxsmm_matrix_eqn = type { ptr, ptr, i32, i32, i32, i32 }
%struct.libxsmm_meqn_elem = type { ptr, ptr, ptr, ptr, i32, %union.libxsmm_meqn_info, i32, i32, %struct.libxsmm_meqn_tmp_info, i32, i32, i32, %union.libxsmm_meqn_fusion_info }
%union.libxsmm_meqn_info = type { %struct.libxsmm_meqn_arg }
%struct.libxsmm_meqn_arg = type { i32, i32, i32, i32, i32, i32, i32, %struct.libxsmm_matrix_arg_attributes }
%struct.libxsmm_matrix_arg_attributes = type { i32, i32, i32, i32 }
%struct.libxsmm_meqn_tmp_info = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%union.libxsmm_meqn_fusion_info = type { %struct.libxsmm_meqn_xgemm_fusion_info }
%struct.libxsmm_meqn_xgemm_fusion_info = type { i32, i32, i32, i32, i32 }
%struct.libxsmm_meqn_unary_op = type { i32, i32, i32, i32 }
%struct.libxsmm_meqn_binary_op = type { i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_meqn_ternary_op = type { i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_matequation_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [32 x i32], i32, i32, i32, i32, ptr, ptr, i32, i32, i32, [64 x i32], [64 x i32], %struct.libxsmm_mateltwise_kernel_config_struct, %struct.libxsmm_micro_kernel_config }
%struct.libxsmm_mateltwise_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }
%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_matequation_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.libxsmm_mateltwise_gp_reg_mapping_struct, %struct.libxsmm_gp_reg_mapping_struct }
%struct.libxsmm_mateltwise_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_meqn_descriptor = type <{ i32, i32, i32, i8, i32 }>

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [98 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_configure_reserved_zmms_and_masks = external hidden unnamed_addr constant [203 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 nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

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

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

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

declare void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) #3

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_configure_reserved_zmms_and_masks(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #1 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %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
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  store i32 0, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 1, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !9
  %19 = load ptr, ptr %10, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %19, i32 0, i32 0
  %21 = load ptr, ptr %20, align 8, !tbaa !11
  %22 = getelementptr inbounds %struct.libxsmm_meqn_elem, ptr %21, i32 0, i32 4
  %23 = load i32, ptr %22, align 8, !tbaa !11
  %24 = icmp eq i32 %23, 1
  br i1 %24, label %25, label %32

25:                                               ; preds = %5
  %26 = load ptr, ptr %10, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %26, i32 0, i32 0
  %28 = load ptr, ptr %27, align 8, !tbaa !11
  %29 = getelementptr inbounds %struct.libxsmm_meqn_elem, ptr %28, i32 0, i32 5
  %30 = getelementptr inbounds %struct.libxsmm_meqn_unary_op, ptr %29, i32 0, i32 2
  %31 = load i32, ptr %30, align 4, !tbaa !11
  store i32 %31, ptr %13, align 4, !tbaa !9
  br label %63

32:                                               ; preds = %5
  %33 = load ptr, ptr %10, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %33, i32 0, i32 0
  %35 = load ptr, ptr %34, align 8, !tbaa !11
  %36 = getelementptr inbounds %struct.libxsmm_meqn_elem, ptr %35, i32 0, i32 4
  %37 = load i32, ptr %36, align 8, !tbaa !11
  %38 = icmp eq i32 %37, 2
  br i1 %38, label %39, label %46

39:                                               ; preds = %32
  %40 = load ptr, ptr %10, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %40, i32 0, i32 0
  %42 = load ptr, ptr %41, align 8, !tbaa !11
  %43 = getelementptr inbounds %struct.libxsmm_meqn_elem, ptr %42, i32 0, i32 5
  %44 = getelementptr inbounds %struct.libxsmm_meqn_binary_op, ptr %43, i32 0, i32 2
  %45 = load i32, ptr %44, align 4, !tbaa !11
  store i32 %45, ptr %13, align 4, !tbaa !9
  br label %62

46:                                               ; preds = %32
  %47 = load ptr, ptr %10, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %47, i32 0, i32 0
  %49 = load ptr, ptr %48, align 8, !tbaa !11
  %50 = getelementptr inbounds %struct.libxsmm_meqn_elem, ptr %49, i32 0, i32 4
  %51 = load i32, ptr %50, align 8, !tbaa !11
  %52 = icmp eq i32 %51, 4
  br i1 %52, label %53, label %60

53:                                               ; preds = %46
  %54 = load ptr, ptr %10, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %54, i32 0, i32 0
  %56 = load ptr, ptr %55, align 8, !tbaa !11
  %57 = getelementptr inbounds %struct.libxsmm_meqn_elem, ptr %56, i32 0, i32 5
  %58 = getelementptr inbounds %struct.libxsmm_meqn_ternary_op, ptr %57, i32 0, i32 2
  %59 = load i32, ptr %58, align 4, !tbaa !11
  store i32 %59, ptr %13, align 4, !tbaa !9
  br label %61

60:                                               ; preds = %46
  br label %61

61:                                               ; preds = %60, %53
  br label %62

62:                                               ; preds = %61, %39
  br label %63

63:                                               ; preds = %62, %25
  %64 = load ptr, ptr %6, align 8, !tbaa !5
  %65 = load ptr, ptr %9, align 8, !tbaa !5
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %66, i32 0, i32 0
  %68 = load ptr, ptr %67, align 8, !tbaa !11
  call void @libxsmm_mark_reserved_zmms(ptr noundef %64, ptr noundef %65, ptr noundef %68)
  %69 = load ptr, ptr %9, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %69, i32 0, i32 59
  %71 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %70, i32 0, i32 18
  store i32 0, ptr %71, align 4, !tbaa !12
  %72 = load ptr, ptr %9, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %72, i32 0, i32 59
  %74 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %73, i32 0, i32 19
  store i32 1, ptr %74, align 4, !tbaa !18
  %75 = load ptr, ptr %9, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %75, i32 0, i32 59
  store ptr %76, ptr %12, align 8, !tbaa !5
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.libxsmm_matrix_eqn, ptr %77, i32 0, i32 0
  %79 = load ptr, ptr %78, align 8, !tbaa !11
  call void @libxsmm_generator_has_hf8_input(ptr noundef %79, ptr noundef %14)
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %80

80:                                               ; preds = %100, %63
  %81 = load i32, ptr %11, align 4, !tbaa !9
  %82 = icmp ult i32 %81, 64
  br i1 %82, label %83, label %103

83:                                               ; preds = %80
  %84 = load ptr, ptr %9, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %84, i32 0, i32 57
  %86 = load i32, ptr %11, align 4, !tbaa !9
  %87 = zext i32 %86 to i64
  %88 = getelementptr inbounds [64 x i32], ptr %85, i64 0, i64 %87
  %89 = load i32, ptr %88, align 4, !tbaa !9
  %90 = icmp ugt i32 %89, 0
  br i1 %90, label %91, label %99

91:                                               ; preds = %83
  %92 = load ptr, ptr %6, align 8, !tbaa !5
  %93 = load ptr, ptr %12, align 8, !tbaa !5
  %94 = load i32, ptr %13, align 4, !tbaa !9
  %95 = load i32, ptr %11, align 4, !tbaa !9
  %96 = load ptr, ptr %8, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %96, i32 0, i32 12
  %98 = load i32, ptr %97, align 4, !tbaa !19
  call void @libxsmm_configure_unary_kernel_vregs_masks(ptr noundef %92, ptr noundef %93, i32 noundef %94, i32 noundef %95, i32 noundef 0, i32 noundef %98, i32 noundef 127, i32 noundef 127)
  br label %99

99:                                               ; preds = %91, %83
  br label %100

100:                                              ; preds = %99
  %101 = load i32, ptr %11, align 4, !tbaa !9
  %102 = add i32 %101, 1
  store i32 %102, ptr %11, align 4, !tbaa !9
  br label %80, !llvm.loop !23

103:                                              ; preds = %80
  %104 = load ptr, ptr %12, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %104, i32 0, i32 18
  %106 = load i32, ptr %105, align 4, !tbaa !25
  %107 = load ptr, ptr %9, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %107, i32 0, i32 54
  store i32 %106, ptr %108, align 8, !tbaa !26
  %109 = load ptr, ptr %12, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %109, i32 0, i32 19
  %111 = load i32, ptr %110, align 4, !tbaa !27
  %112 = load ptr, ptr %9, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %112, i32 0, i32 55
  store i32 %111, ptr %113, align 4, !tbaa !28
  %114 = load ptr, ptr %6, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %114, i32 0, i32 6
  %116 = load i32, ptr %115, align 4, !tbaa !29
  %117 = icmp ult i32 %116, 1051
  br i1 %117, label %118, label %139

118:                                              ; preds = %103
  %119 = load ptr, ptr %7, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %119, i32 0, i32 0
  %121 = load i32, ptr %120, align 1, !tbaa !31
  %122 = load ptr, ptr %9, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %122, i32 0, i32 15
  %124 = load i32, ptr %123, align 4, !tbaa !33
  %125 = urem i32 %121, %124
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %127, label %139

127:                                              ; preds = %118
  %128 = load ptr, ptr %9, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %128, i32 0, i32 54
  %130 = load i32, ptr %129, align 8, !tbaa !26
  %131 = load ptr, ptr %9, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %131, i32 0, i32 25
  store i32 %130, ptr %132, align 4, !tbaa !34
  %133 = load ptr, ptr %9, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %133, i32 0, i32 54
  %135 = load i32, ptr %134, align 8, !tbaa !26
  %136 = add i32 %135, 1
  %137 = load ptr, ptr %9, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %137, i32 0, i32 54
  store i32 %136, ptr %138, align 8, !tbaa !26
  br label %139

139:                                              ; preds = %127, %118, %103
  %140 = load ptr, ptr %9, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %140, i32 0, i32 24
  store i32 0, ptr %141, align 8, !tbaa !35
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %289, %139
  %143 = load i32, ptr %11, align 4, !tbaa !9
  %144 = icmp ult i32 %143, 64
  br i1 %144, label %145, label %292

145:                                              ; preds = %142
  %146 = load ptr, ptr %9, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %146, i32 0, i32 57
  %148 = load i32, ptr %11, align 4, !tbaa !9
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds [64 x i32], ptr %147, i64 0, i64 %149
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp ugt i32 %151, 0
  br i1 %152, label %153, label %156

153:                                              ; preds = %145
  %154 = load i32, ptr %11, align 4, !tbaa !9
  %155 = icmp eq i32 %154, 24
  br i1 %155, label %167, label %156

156:                                              ; preds = %153, %145
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %157, i32 0, i32 58
  %159 = load i32, ptr %11, align 4, !tbaa !9
  %160 = zext i32 %159 to i64
  %161 = getelementptr inbounds [64 x i32], ptr %158, i64 0, i64 %160
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = icmp ugt i32 %162, 0
  br i1 %163, label %164, label %288

164:                                              ; preds = %156
  %165 = load i32, ptr %11, align 4, !tbaa !9
  %166 = icmp eq i32 %165, 7
  br i1 %166, label %167, label %288

167:                                              ; preds = %164, %153
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %168 = load ptr, ptr %9, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %168, i32 0, i32 17
  %170 = load i32, ptr %169, align 4, !tbaa !36
  store i32 %170, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 0, ptr %16, align 4, !tbaa !9
  %171 = load ptr, ptr %9, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %171, i32 0, i32 24
  store i32 1, ptr %172, align 8, !tbaa !35
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %173, i32 0, i32 54
  %175 = load i32, ptr %174, align 8, !tbaa !26
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %176, i32 0, i32 45
  store i32 %175, ptr %177, align 4, !tbaa !37
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %178, i32 0, i32 54
  %180 = load i32, ptr %179, align 8, !tbaa !26
  %181 = add i32 %180, 1
  %182 = load ptr, ptr %9, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %182, i32 0, i32 54
  %184 = load i32, ptr %183, align 8, !tbaa !26
  %185 = add i32 %184, %181
  store i32 %185, ptr %183, align 8, !tbaa !26
  %186 = load ptr, ptr %6, align 8, !tbaa !5
  %187 = load ptr, ptr %9, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %187, i32 0, i32 18
  %189 = load i8, ptr %188, align 8, !tbaa !38
  %190 = load ptr, ptr %9, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %190, i32 0, i32 45
  %192 = load i32, ptr %191, align 4, !tbaa !37
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %193, i32 0, i32 45
  %195 = load i32, ptr %194, align 4, !tbaa !37
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %196, i32 0, i32 45
  %198 = load i32, ptr %197, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %186, i32 noundef 805639919, i8 noundef signext %189, i32 noundef %192, i32 noundef %195, i32 noundef %198)
  %199 = load ptr, ptr %6, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %199, i32 0, i32 6
  %201 = load i32, ptr %200, align 4, !tbaa !29
  %202 = icmp uge i32 %201, 1051
  br i1 %202, label %203, label %265

203:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %204 = load ptr, ptr %6, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %204, i32 0, i32 6
  %206 = load i32, ptr %205, align 4, !tbaa !29
  %207 = icmp uge i32 %206, 1101
  br i1 %207, label %208, label %224

208:                                              ; preds = %203
  %209 = load i32, ptr %15, align 4, !tbaa !9
  %210 = icmp eq i32 %209, 64
  br i1 %210, label %211, label %212

211:                                              ; preds = %208
  store i32 12, ptr %17, align 4, !tbaa !9
  br label %223

212:                                              ; preds = %208
  %213 = load i32, ptr %15, align 4, !tbaa !9
  %214 = icmp eq i32 %213, 32
  br i1 %214, label %215, label %216

215:                                              ; preds = %212
  store i32 2, ptr %17, align 4, !tbaa !9
  br label %222

216:                                              ; preds = %212
  %217 = load i32, ptr %15, align 4, !tbaa !9
  %218 = icmp eq i32 %217, 16
  br i1 %218, label %219, label %220

219:                                              ; preds = %216
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %221

220:                                              ; preds = %216
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %220, %219
  br label %222

222:                                              ; preds = %221, %215
  br label %223

223:                                              ; preds = %222, %211
  br label %240

224:                                              ; preds = %203
  %225 = load i32, ptr %15, align 4, !tbaa !9
  %226 = icmp eq i32 %225, 32
  br i1 %226, label %227, label %228

227:                                              ; preds = %224
  store i32 12, ptr %17, align 4, !tbaa !9
  br label %239

228:                                              ; preds = %224
  %229 = load i32, ptr %15, align 4, !tbaa !9
  %230 = icmp eq i32 %229, 16
  br i1 %230, label %231, label %232

231:                                              ; preds = %228
  store i32 2, ptr %17, align 4, !tbaa !9
  br label %238

232:                                              ; preds = %228
  %233 = load i32, ptr %15, align 4, !tbaa !9
  %234 = icmp eq i32 %233, 8
  br i1 %234, label %235, label %236

235:                                              ; preds = %232
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %237

236:                                              ; preds = %232
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %236, %235
  br label %238

238:                                              ; preds = %237, %231
  br label %239

239:                                              ; preds = %238, %227
  br label %240

240:                                              ; preds = %239, %223
  %241 = load i32, ptr %15, align 4, !tbaa !9
  %242 = sub i32 %241, 1
  store i32 %242, ptr %16, align 4, !tbaa !9
  %243 = load ptr, ptr %9, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %243, i32 0, i32 55
  %245 = load i32, ptr %244, align 4, !tbaa !28
  %246 = load ptr, ptr %9, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %246, i32 0, i32 31
  store i32 %245, ptr %247, align 4, !tbaa !39
  %248 = load ptr, ptr %6, align 8, !tbaa !5
  %249 = load ptr, ptr %8, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %249, i32 0, i32 12
  %251 = load i32, ptr %250, align 4, !tbaa !19
  %252 = load ptr, ptr %9, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %252, i32 0, i32 31
  %254 = load i32, ptr %253, align 4, !tbaa !39
  %255 = load i32, ptr %16, align 4, !tbaa !9
  %256 = load i32, ptr %17, align 4, !tbaa !9
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %248, i32 noundef %251, i32 noundef %254, i32 noundef %255, i32 noundef %256)
  %257 = load ptr, ptr %9, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %257, i32 0, i32 55
  %259 = load i32, ptr %258, align 4, !tbaa !28
  %260 = add i32 %259, 1
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %261, i32 0, i32 55
  %263 = load i32, ptr %262, align 4, !tbaa !28
  %264 = add i32 %263, %260
  store i32 %264, ptr %262, align 4, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  br label %287

265:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %266 = load i32, ptr %15, align 4, !tbaa !9
  %267 = icmp eq i32 %266, 4
  br i1 %267, label %268, label %269

268:                                              ; preds = %265
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %270

269:                                              ; preds = %265
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %269, %268
  %271 = load ptr, ptr %9, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %271, i32 0, i32 54
  %273 = load i32, ptr %272, align 8, !tbaa !26
  %274 = load ptr, ptr %9, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %274, i32 0, i32 31
  store i32 %273, ptr %275, align 4, !tbaa !39
  %276 = load ptr, ptr %9, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %276, i32 0, i32 54
  %278 = load i32, ptr %277, align 8, !tbaa !26
  %279 = add i32 %278, 1
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %280, i32 0, i32 54
  store i32 %279, ptr %281, align 8, !tbaa !26
  %282 = load ptr, ptr %6, align 8, !tbaa !5
  %283 = load ptr, ptr %9, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %283, i32 0, i32 31
  %285 = load i32, ptr %284, align 4, !tbaa !39
  %286 = load i32, ptr %18, align 4, !tbaa !9
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef %282, i32 noundef %285, i32 noundef 1, i32 noundef %286)
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  br label %287

287:                                              ; preds = %270, %240
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %288

288:                                              ; preds = %287, %164, %156
  br label %289

289:                                              ; preds = %288
  %290 = load i32, ptr %11, align 4, !tbaa !9
  %291 = add i32 %290, 1
  store i32 %291, ptr %11, align 4, !tbaa !9
  br label %142, !llvm.loop !40

292:                                              ; preds = %142
  %293 = load i32, ptr %13, align 4, !tbaa !9
  %294 = icmp eq i32 %293, 1
  br i1 %294, label %295, label %527

295:                                              ; preds = %292
  %296 = load ptr, ptr %7, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %296, i32 0, i32 3
  %298 = load i8, ptr %297, align 1, !tbaa !41
  %299 = zext i8 %298 to i32
  %300 = ashr i32 %299, 4
  %301 = icmp eq i32 0, %300
  br i1 %301, label %302, label %464

302:                                              ; preds = %295
  %303 = load ptr, ptr %7, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %303, i32 0, i32 3
  %305 = load i8, ptr %304, align 1, !tbaa !41
  %306 = zext i8 %305 to i32
  %307 = and i32 %306, 15
  %308 = icmp eq i32 0, %307
  br i1 %308, label %309, label %310

309:                                              ; preds = %302
  br label %462

310:                                              ; preds = %302
  %311 = load ptr, ptr %7, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %311, i32 0, i32 3
  %313 = load i8, ptr %312, align 1, !tbaa !41
  %314 = zext i8 %313 to i32
  %315 = and i32 %314, 15
  %316 = icmp eq i32 1, %315
  br i1 %316, label %317, label %318

317:                                              ; preds = %310
  br label %460

318:                                              ; preds = %310
  %319 = load ptr, ptr %7, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %319, i32 0, i32 3
  %321 = load i8, ptr %320, align 1, !tbaa !41
  %322 = zext i8 %321 to i32
  %323 = and i32 %322, 15
  %324 = icmp eq i32 2, %323
  br i1 %324, label %325, label %326

325:                                              ; preds = %318
  br label %458

326:                                              ; preds = %318
  %327 = load ptr, ptr %7, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %327, i32 0, i32 3
  %329 = load i8, ptr %328, align 1, !tbaa !41
  %330 = zext i8 %329 to i32
  %331 = and i32 %330, 15
  %332 = icmp eq i32 3, %331
  br i1 %332, label %333, label %334

333:                                              ; preds = %326
  br label %456

334:                                              ; preds = %326
  %335 = load ptr, ptr %7, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %335, i32 0, i32 3
  %337 = load i8, ptr %336, align 1, !tbaa !41
  %338 = zext i8 %337 to i32
  %339 = and i32 %338, 15
  %340 = icmp eq i32 4, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %334
  br label %454

342:                                              ; preds = %334
  %343 = load ptr, ptr %7, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %343, i32 0, i32 3
  %345 = load i8, ptr %344, align 1, !tbaa !41
  %346 = zext i8 %345 to i32
  %347 = and i32 %346, 15
  %348 = icmp eq i32 5, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %342
  br label %452

350:                                              ; preds = %342
  %351 = load ptr, ptr %7, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %351, i32 0, i32 3
  %353 = load i8, ptr %352, align 1, !tbaa !41
  %354 = zext i8 %353 to i32
  %355 = and i32 %354, 15
  %356 = icmp eq i32 6, %355
  br i1 %356, label %357, label %358

357:                                              ; preds = %350
  br label %450

358:                                              ; preds = %350
  %359 = load ptr, ptr %7, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %359, i32 0, i32 3
  %361 = load i8, ptr %360, align 1, !tbaa !41
  %362 = zext i8 %361 to i32
  %363 = and i32 %362, 15
  %364 = icmp eq i32 7, %363
  br i1 %364, label %365, label %366

365:                                              ; preds = %358
  br label %448

366:                                              ; preds = %358
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %367, i32 0, i32 3
  %369 = load i8, ptr %368, align 1, !tbaa !41
  %370 = zext i8 %369 to i32
  %371 = and i32 %370, 15
  %372 = icmp eq i32 8, %371
  br i1 %372, label %373, label %374

373:                                              ; preds = %366
  br label %446

374:                                              ; preds = %366
  %375 = load ptr, ptr %7, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %375, i32 0, i32 3
  %377 = load i8, ptr %376, align 1, !tbaa !41
  %378 = zext i8 %377 to i32
  %379 = and i32 %378, 15
  %380 = icmp eq i32 9, %379
  br i1 %380, label %381, label %382

381:                                              ; preds = %374
  br label %444

382:                                              ; preds = %374
  %383 = load ptr, ptr %7, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %383, i32 0, i32 3
  %385 = load i8, ptr %384, align 1, !tbaa !41
  %386 = zext i8 %385 to i32
  %387 = and i32 %386, 15
  %388 = icmp eq i32 10, %387
  br i1 %388, label %389, label %390

389:                                              ; preds = %382
  br label %442

390:                                              ; preds = %382
  %391 = load ptr, ptr %7, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %391, i32 0, i32 3
  %393 = load i8, ptr %392, align 1, !tbaa !41
  %394 = zext i8 %393 to i32
  %395 = and i32 %394, 15
  %396 = icmp eq i32 11, %395
  br i1 %396, label %397, label %398

397:                                              ; preds = %390
  br label %440

398:                                              ; preds = %390
  %399 = load ptr, ptr %7, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %399, i32 0, i32 3
  %401 = load i8, ptr %400, align 1, !tbaa !41
  %402 = zext i8 %401 to i32
  %403 = and i32 %402, 15
  %404 = icmp eq i32 12, %403
  br i1 %404, label %405, label %406

405:                                              ; preds = %398
  br label %438

406:                                              ; preds = %398
  %407 = load ptr, ptr %7, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %407, i32 0, i32 3
  %409 = load i8, ptr %408, align 1, !tbaa !41
  %410 = zext i8 %409 to i32
  %411 = and i32 %410, 15
  %412 = icmp eq i32 13, %411
  br i1 %412, label %413, label %414

413:                                              ; preds = %406
  br label %436

414:                                              ; preds = %406
  %415 = load ptr, ptr %7, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %415, i32 0, i32 3
  %417 = load i8, ptr %416, align 1, !tbaa !41
  %418 = zext i8 %417 to i32
  %419 = and i32 %418, 15
  %420 = icmp eq i32 14, %419
  br i1 %420, label %421, label %422

421:                                              ; preds = %414
  br label %434

422:                                              ; preds = %414
  %423 = load ptr, ptr %7, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %423, i32 0, i32 3
  %425 = load i8, ptr %424, align 1, !tbaa !41
  %426 = zext i8 %425 to i32
  %427 = and i32 %426, 15
  %428 = icmp eq i32 15, %427
  br i1 %428, label %429, label %430

429:                                              ; preds = %422
  br label %432

430:                                              ; preds = %422
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1742, ptr noundef @__PRETTY_FUNCTION__.libxsmm_configure_reserved_zmms_and_masks) #5
  unreachable

431:                                              ; No predecessors!
  br label %432

432:                                              ; preds = %431, %429
  %433 = phi i32 [ 15, %429 ], [ 0, %431 ]
  br label %434

434:                                              ; preds = %432, %421
  %435 = phi i32 [ 14, %421 ], [ %433, %432 ]
  br label %436

436:                                              ; preds = %434, %413
  %437 = phi i32 [ 12, %413 ], [ %435, %434 ]
  br label %438

438:                                              ; preds = %436, %405
  %439 = phi i32 [ 12, %405 ], [ %437, %436 ]
  br label %440

440:                                              ; preds = %438, %397
  %441 = phi i32 [ 10, %397 ], [ %439, %438 ]
  br label %442

442:                                              ; preds = %440, %389
  %443 = phi i32 [ 10, %389 ], [ %441, %440 ]
  br label %444

444:                                              ; preds = %442, %381
  %445 = phi i32 [ 8, %381 ], [ %443, %442 ]
  br label %446

446:                                              ; preds = %444, %373
  %447 = phi i32 [ 8, %373 ], [ %445, %444 ]
  br label %448

448:                                              ; preds = %446, %365
  %449 = phi i32 [ 6, %365 ], [ %447, %446 ]
  br label %450

450:                                              ; preds = %448, %357
  %451 = phi i32 [ 6, %357 ], [ %449, %448 ]
  br label %452

452:                                              ; preds = %450, %349
  %453 = phi i32 [ 5, %349 ], [ %451, %450 ]
  br label %454

454:                                              ; preds = %452, %341
  %455 = phi i32 [ 4, %341 ], [ %453, %452 ]
  br label %456

456:                                              ; preds = %454, %333
  %457 = phi i32 [ 3, %333 ], [ %455, %454 ]
  br label %458

458:                                              ; preds = %456, %325
  %459 = phi i32 [ 2, %325 ], [ %457, %456 ]
  br label %460

460:                                              ; preds = %458, %317
  %461 = phi i32 [ 1, %317 ], [ %459, %458 ]
  br label %462

462:                                              ; preds = %460, %309
  %463 = phi i32 [ 0, %309 ], [ %461, %460 ]
  br label %470

464:                                              ; preds = %295
  %465 = load ptr, ptr %7, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %465, i32 0, i32 3
  %467 = load i8, ptr %466, align 1, !tbaa !41
  %468 = zext i8 %467 to i32
  %469 = ashr i32 %468, 4
  br label %470

470:                                              ; preds = %464, %462
  %471 = phi i32 [ %463, %462 ], [ %469, %464 ]
  %472 = icmp eq i32 %471, 2
  br i1 %472, label %473, label %527

473:                                              ; preds = %470
  %474 = load ptr, ptr %9, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %474, i32 0, i32 32
  store i32 1, ptr %475, align 8, !tbaa !42
  %476 = load ptr, ptr %6, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %476, i32 0, i32 6
  %478 = load i32, ptr %477, align 4, !tbaa !29
  %479 = icmp ult i32 %478, 1103
  br i1 %479, label %480, label %526

480:                                              ; preds = %473
  %481 = load ptr, ptr %6, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %481, i32 0, i32 6
  %483 = load i32, ptr %482, align 4, !tbaa !29
  %484 = icmp ne i32 %483, 1008
  br i1 %484, label %485, label %526

485:                                              ; preds = %480
  %486 = load ptr, ptr %9, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %486, i32 0, i32 33
  store i32 1, ptr %487, align 4, !tbaa !43
  %488 = load ptr, ptr %6, align 8, !tbaa !5
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %489, i32 0, i32 12
  %491 = load i32, ptr %490, align 4, !tbaa !19
  call void @libxsmm_generator_vcvtneps2bf16_avx512_prep_stack(ptr noundef %488, i32 noundef %491)
  %492 = load ptr, ptr %9, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %492, i32 0, i32 55
  %494 = load i32, ptr %493, align 4, !tbaa !28
  %495 = load ptr, ptr %9, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %495, i32 0, i32 38
  store i32 %494, ptr %496, align 8, !tbaa !44
  %497 = load ptr, ptr %9, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %497, i32 0, i32 55
  %499 = load i32, ptr %498, align 4, !tbaa !28
  %500 = add i32 %499, 1
  %501 = load ptr, ptr %9, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %501, i32 0, i32 39
  store i32 %500, ptr %502, align 4, !tbaa !45
  %503 = load ptr, ptr %9, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %503, i32 0, i32 55
  %505 = load i32, ptr %504, align 4, !tbaa !28
  %506 = add i32 %505, 2
  %507 = load ptr, ptr %9, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %507, i32 0, i32 55
  store i32 %506, ptr %508, align 4, !tbaa !28
  %509 = load ptr, ptr %9, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %509, i32 0, i32 54
  %511 = load i32, ptr %510, align 8, !tbaa !26
  %512 = load ptr, ptr %9, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %512, i32 0, i32 41
  store i32 %511, ptr %513, align 4, !tbaa !46
  %514 = load ptr, ptr %9, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %514, i32 0, i32 54
  %516 = load i32, ptr %515, align 8, !tbaa !26
  %517 = add i32 %516, 1
  %518 = load ptr, ptr %9, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %518, i32 0, i32 42
  store i32 %517, ptr %519, align 8, !tbaa !47
  %520 = load ptr, ptr %9, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %520, i32 0, i32 54
  %522 = load i32, ptr %521, align 8, !tbaa !26
  %523 = add i32 %522, 2
  %524 = load ptr, ptr %9, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %524, i32 0, i32 54
  store i32 %523, ptr %525, align 8, !tbaa !26
  br label %526

526:                                              ; preds = %485, %480, %473
  br label %532

527:                                              ; preds = %470, %292
  %528 = load ptr, ptr %9, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %528, i32 0, i32 32
  store i32 0, ptr %529, align 8, !tbaa !42
  %530 = load ptr, ptr %9, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %530, i32 0, i32 33
  store i32 0, ptr %531, align 4, !tbaa !43
  br label %532

532:                                              ; preds = %527, %526
  %533 = load i32, ptr %13, align 4, !tbaa !9
  %534 = icmp eq i32 %533, 1
  br i1 %534, label %535, label %716

535:                                              ; preds = %532
  %536 = load ptr, ptr %7, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %536, i32 0, i32 3
  %538 = load i8, ptr %537, align 1, !tbaa !41
  %539 = zext i8 %538 to i32
  %540 = ashr i32 %539, 4
  %541 = icmp eq i32 0, %540
  br i1 %541, label %542, label %704

542:                                              ; preds = %535
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %543, i32 0, i32 3
  %545 = load i8, ptr %544, align 1, !tbaa !41
  %546 = zext i8 %545 to i32
  %547 = and i32 %546, 15
  %548 = icmp eq i32 0, %547
  br i1 %548, label %549, label %550

549:                                              ; preds = %542
  br label %702

550:                                              ; preds = %542
  %551 = load ptr, ptr %7, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %551, i32 0, i32 3
  %553 = load i8, ptr %552, align 1, !tbaa !41
  %554 = zext i8 %553 to i32
  %555 = and i32 %554, 15
  %556 = icmp eq i32 1, %555
  br i1 %556, label %557, label %558

557:                                              ; preds = %550
  br label %700

558:                                              ; preds = %550
  %559 = load ptr, ptr %7, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %559, i32 0, i32 3
  %561 = load i8, ptr %560, align 1, !tbaa !41
  %562 = zext i8 %561 to i32
  %563 = and i32 %562, 15
  %564 = icmp eq i32 2, %563
  br i1 %564, label %565, label %566

565:                                              ; preds = %558
  br label %698

566:                                              ; preds = %558
  %567 = load ptr, ptr %7, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %567, i32 0, i32 3
  %569 = load i8, ptr %568, align 1, !tbaa !41
  %570 = zext i8 %569 to i32
  %571 = and i32 %570, 15
  %572 = icmp eq i32 3, %571
  br i1 %572, label %573, label %574

573:                                              ; preds = %566
  br label %696

574:                                              ; preds = %566
  %575 = load ptr, ptr %7, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %575, i32 0, i32 3
  %577 = load i8, ptr %576, align 1, !tbaa !41
  %578 = zext i8 %577 to i32
  %579 = and i32 %578, 15
  %580 = icmp eq i32 4, %579
  br i1 %580, label %581, label %582

581:                                              ; preds = %574
  br label %694

582:                                              ; preds = %574
  %583 = load ptr, ptr %7, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %583, i32 0, i32 3
  %585 = load i8, ptr %584, align 1, !tbaa !41
  %586 = zext i8 %585 to i32
  %587 = and i32 %586, 15
  %588 = icmp eq i32 5, %587
  br i1 %588, label %589, label %590

589:                                              ; preds = %582
  br label %692

590:                                              ; preds = %582
  %591 = load ptr, ptr %7, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %591, i32 0, i32 3
  %593 = load i8, ptr %592, align 1, !tbaa !41
  %594 = zext i8 %593 to i32
  %595 = and i32 %594, 15
  %596 = icmp eq i32 6, %595
  br i1 %596, label %597, label %598

597:                                              ; preds = %590
  br label %690

598:                                              ; preds = %590
  %599 = load ptr, ptr %7, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %599, i32 0, i32 3
  %601 = load i8, ptr %600, align 1, !tbaa !41
  %602 = zext i8 %601 to i32
  %603 = and i32 %602, 15
  %604 = icmp eq i32 7, %603
  br i1 %604, label %605, label %606

605:                                              ; preds = %598
  br label %688

606:                                              ; preds = %598
  %607 = load ptr, ptr %7, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %607, i32 0, i32 3
  %609 = load i8, ptr %608, align 1, !tbaa !41
  %610 = zext i8 %609 to i32
  %611 = and i32 %610, 15
  %612 = icmp eq i32 8, %611
  br i1 %612, label %613, label %614

613:                                              ; preds = %606
  br label %686

614:                                              ; preds = %606
  %615 = load ptr, ptr %7, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %615, i32 0, i32 3
  %617 = load i8, ptr %616, align 1, !tbaa !41
  %618 = zext i8 %617 to i32
  %619 = and i32 %618, 15
  %620 = icmp eq i32 9, %619
  br i1 %620, label %621, label %622

621:                                              ; preds = %614
  br label %684

622:                                              ; preds = %614
  %623 = load ptr, ptr %7, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %623, i32 0, i32 3
  %625 = load i8, ptr %624, align 1, !tbaa !41
  %626 = zext i8 %625 to i32
  %627 = and i32 %626, 15
  %628 = icmp eq i32 10, %627
  br i1 %628, label %629, label %630

629:                                              ; preds = %622
  br label %682

630:                                              ; preds = %622
  %631 = load ptr, ptr %7, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %631, i32 0, i32 3
  %633 = load i8, ptr %632, align 1, !tbaa !41
  %634 = zext i8 %633 to i32
  %635 = and i32 %634, 15
  %636 = icmp eq i32 11, %635
  br i1 %636, label %637, label %638

637:                                              ; preds = %630
  br label %680

638:                                              ; preds = %630
  %639 = load ptr, ptr %7, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %639, i32 0, i32 3
  %641 = load i8, ptr %640, align 1, !tbaa !41
  %642 = zext i8 %641 to i32
  %643 = and i32 %642, 15
  %644 = icmp eq i32 12, %643
  br i1 %644, label %645, label %646

645:                                              ; preds = %638
  br label %678

646:                                              ; preds = %638
  %647 = load ptr, ptr %7, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %647, i32 0, i32 3
  %649 = load i8, ptr %648, align 1, !tbaa !41
  %650 = zext i8 %649 to i32
  %651 = and i32 %650, 15
  %652 = icmp eq i32 13, %651
  br i1 %652, label %653, label %654

653:                                              ; preds = %646
  br label %676

654:                                              ; preds = %646
  %655 = load ptr, ptr %7, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %655, i32 0, i32 3
  %657 = load i8, ptr %656, align 1, !tbaa !41
  %658 = zext i8 %657 to i32
  %659 = and i32 %658, 15
  %660 = icmp eq i32 14, %659
  br i1 %660, label %661, label %662

661:                                              ; preds = %654
  br label %674

662:                                              ; preds = %654
  %663 = load ptr, ptr %7, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %663, i32 0, i32 3
  %665 = load i8, ptr %664, align 1, !tbaa !41
  %666 = zext i8 %665 to i32
  %667 = and i32 %666, 15
  %668 = icmp eq i32 15, %667
  br i1 %668, label %669, label %670

669:                                              ; preds = %662
  br label %672

670:                                              ; preds = %662
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1759, ptr noundef @__PRETTY_FUNCTION__.libxsmm_configure_reserved_zmms_and_masks) #5
  unreachable

671:                                              ; No predecessors!
  br label %672

672:                                              ; preds = %671, %669
  %673 = phi i32 [ 15, %669 ], [ 0, %671 ]
  br label %674

674:                                              ; preds = %672, %661
  %675 = phi i32 [ 14, %661 ], [ %673, %672 ]
  br label %676

676:                                              ; preds = %674, %653
  %677 = phi i32 [ 12, %653 ], [ %675, %674 ]
  br label %678

678:                                              ; preds = %676, %645
  %679 = phi i32 [ 12, %645 ], [ %677, %676 ]
  br label %680

680:                                              ; preds = %678, %637
  %681 = phi i32 [ 10, %637 ], [ %679, %678 ]
  br label %682

682:                                              ; preds = %680, %629
  %683 = phi i32 [ 10, %629 ], [ %681, %680 ]
  br label %684

684:                                              ; preds = %682, %621
  %685 = phi i32 [ 8, %621 ], [ %683, %682 ]
  br label %686

686:                                              ; preds = %684, %613
  %687 = phi i32 [ 8, %613 ], [ %685, %684 ]
  br label %688

688:                                              ; preds = %686, %605
  %689 = phi i32 [ 6, %605 ], [ %687, %686 ]
  br label %690

690:                                              ; preds = %688, %597
  %691 = phi i32 [ 6, %597 ], [ %689, %688 ]
  br label %692

692:                                              ; preds = %690, %589
  %693 = phi i32 [ 5, %589 ], [ %691, %690 ]
  br label %694

694:                                              ; preds = %692, %581
  %695 = phi i32 [ 4, %581 ], [ %693, %692 ]
  br label %696

696:                                              ; preds = %694, %573
  %697 = phi i32 [ 3, %573 ], [ %695, %694 ]
  br label %698

698:                                              ; preds = %696, %565
  %699 = phi i32 [ 2, %565 ], [ %697, %696 ]
  br label %700

700:                                              ; preds = %698, %557
  %701 = phi i32 [ 1, %557 ], [ %699, %698 ]
  br label %702

702:                                              ; preds = %700, %549
  %703 = phi i32 [ 0, %549 ], [ %701, %700 ]
  br label %710

704:                                              ; preds = %535
  %705 = load ptr, ptr %7, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %705, i32 0, i32 3
  %707 = load i8, ptr %706, align 1, !tbaa !41
  %708 = zext i8 %707 to i32
  %709 = ashr i32 %708, 4
  br label %710

710:                                              ; preds = %704, %702
  %711 = phi i32 [ %703, %702 ], [ %709, %704 ]
  %712 = icmp eq i32 %711, 3
  br i1 %712, label %713, label %716

713:                                              ; preds = %710
  %714 = load ptr, ptr %9, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %714, i32 0, i32 34
  store i32 1, ptr %715, align 8, !tbaa !48
  br label %719

716:                                              ; preds = %710, %532
  %717 = load ptr, ptr %9, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %717, i32 0, i32 34
  store i32 0, ptr %718, align 8, !tbaa !48
  br label %719

719:                                              ; preds = %716, %713
  %720 = load i32, ptr %13, align 4, !tbaa !9
  %721 = icmp eq i32 %720, 1
  br i1 %721, label %722, label %941

722:                                              ; preds = %719
  %723 = load ptr, ptr %7, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %723, i32 0, i32 3
  %725 = load i8, ptr %724, align 1, !tbaa !41
  %726 = zext i8 %725 to i32
  %727 = ashr i32 %726, 4
  %728 = icmp eq i32 0, %727
  br i1 %728, label %729, label %891

729:                                              ; preds = %722
  %730 = load ptr, ptr %7, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %730, i32 0, i32 3
  %732 = load i8, ptr %731, align 1, !tbaa !41
  %733 = zext i8 %732 to i32
  %734 = and i32 %733, 15
  %735 = icmp eq i32 0, %734
  br i1 %735, label %736, label %737

736:                                              ; preds = %729
  br label %889

737:                                              ; preds = %729
  %738 = load ptr, ptr %7, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %738, i32 0, i32 3
  %740 = load i8, ptr %739, align 1, !tbaa !41
  %741 = zext i8 %740 to i32
  %742 = and i32 %741, 15
  %743 = icmp eq i32 1, %742
  br i1 %743, label %744, label %745

744:                                              ; preds = %737
  br label %887

745:                                              ; preds = %737
  %746 = load ptr, ptr %7, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %746, i32 0, i32 3
  %748 = load i8, ptr %747, align 1, !tbaa !41
  %749 = zext i8 %748 to i32
  %750 = and i32 %749, 15
  %751 = icmp eq i32 2, %750
  br i1 %751, label %752, label %753

752:                                              ; preds = %745
  br label %885

753:                                              ; preds = %745
  %754 = load ptr, ptr %7, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %754, i32 0, i32 3
  %756 = load i8, ptr %755, align 1, !tbaa !41
  %757 = zext i8 %756 to i32
  %758 = and i32 %757, 15
  %759 = icmp eq i32 3, %758
  br i1 %759, label %760, label %761

760:                                              ; preds = %753
  br label %883

761:                                              ; preds = %753
  %762 = load ptr, ptr %7, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %762, i32 0, i32 3
  %764 = load i8, ptr %763, align 1, !tbaa !41
  %765 = zext i8 %764 to i32
  %766 = and i32 %765, 15
  %767 = icmp eq i32 4, %766
  br i1 %767, label %768, label %769

768:                                              ; preds = %761
  br label %881

769:                                              ; preds = %761
  %770 = load ptr, ptr %7, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %770, i32 0, i32 3
  %772 = load i8, ptr %771, align 1, !tbaa !41
  %773 = zext i8 %772 to i32
  %774 = and i32 %773, 15
  %775 = icmp eq i32 5, %774
  br i1 %775, label %776, label %777

776:                                              ; preds = %769
  br label %879

777:                                              ; preds = %769
  %778 = load ptr, ptr %7, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %778, i32 0, i32 3
  %780 = load i8, ptr %779, align 1, !tbaa !41
  %781 = zext i8 %780 to i32
  %782 = and i32 %781, 15
  %783 = icmp eq i32 6, %782
  br i1 %783, label %784, label %785

784:                                              ; preds = %777
  br label %877

785:                                              ; preds = %777
  %786 = load ptr, ptr %7, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %786, i32 0, i32 3
  %788 = load i8, ptr %787, align 1, !tbaa !41
  %789 = zext i8 %788 to i32
  %790 = and i32 %789, 15
  %791 = icmp eq i32 7, %790
  br i1 %791, label %792, label %793

792:                                              ; preds = %785
  br label %875

793:                                              ; preds = %785
  %794 = load ptr, ptr %7, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %794, i32 0, i32 3
  %796 = load i8, ptr %795, align 1, !tbaa !41
  %797 = zext i8 %796 to i32
  %798 = and i32 %797, 15
  %799 = icmp eq i32 8, %798
  br i1 %799, label %800, label %801

800:                                              ; preds = %793
  br label %873

801:                                              ; preds = %793
  %802 = load ptr, ptr %7, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %802, i32 0, i32 3
  %804 = load i8, ptr %803, align 1, !tbaa !41
  %805 = zext i8 %804 to i32
  %806 = and i32 %805, 15
  %807 = icmp eq i32 9, %806
  br i1 %807, label %808, label %809

808:                                              ; preds = %801
  br label %871

809:                                              ; preds = %801
  %810 = load ptr, ptr %7, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %810, i32 0, i32 3
  %812 = load i8, ptr %811, align 1, !tbaa !41
  %813 = zext i8 %812 to i32
  %814 = and i32 %813, 15
  %815 = icmp eq i32 10, %814
  br i1 %815, label %816, label %817

816:                                              ; preds = %809
  br label %869

817:                                              ; preds = %809
  %818 = load ptr, ptr %7, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %818, i32 0, i32 3
  %820 = load i8, ptr %819, align 1, !tbaa !41
  %821 = zext i8 %820 to i32
  %822 = and i32 %821, 15
  %823 = icmp eq i32 11, %822
  br i1 %823, label %824, label %825

824:                                              ; preds = %817
  br label %867

825:                                              ; preds = %817
  %826 = load ptr, ptr %7, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %826, i32 0, i32 3
  %828 = load i8, ptr %827, align 1, !tbaa !41
  %829 = zext i8 %828 to i32
  %830 = and i32 %829, 15
  %831 = icmp eq i32 12, %830
  br i1 %831, label %832, label %833

832:                                              ; preds = %825
  br label %865

833:                                              ; preds = %825
  %834 = load ptr, ptr %7, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %834, i32 0, i32 3
  %836 = load i8, ptr %835, align 1, !tbaa !41
  %837 = zext i8 %836 to i32
  %838 = and i32 %837, 15
  %839 = icmp eq i32 13, %838
  br i1 %839, label %840, label %841

840:                                              ; preds = %833
  br label %863

841:                                              ; preds = %833
  %842 = load ptr, ptr %7, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %842, i32 0, i32 3
  %844 = load i8, ptr %843, align 1, !tbaa !41
  %845 = zext i8 %844 to i32
  %846 = and i32 %845, 15
  %847 = icmp eq i32 14, %846
  br i1 %847, label %848, label %849

848:                                              ; preds = %841
  br label %861

849:                                              ; preds = %841
  %850 = load ptr, ptr %7, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %850, i32 0, i32 3
  %852 = load i8, ptr %851, align 1, !tbaa !41
  %853 = zext i8 %852 to i32
  %854 = and i32 %853, 15
  %855 = icmp eq i32 15, %854
  br i1 %855, label %856, label %857

856:                                              ; preds = %849
  br label %859

857:                                              ; preds = %849
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1765, ptr noundef @__PRETTY_FUNCTION__.libxsmm_configure_reserved_zmms_and_masks) #5
  unreachable

858:                                              ; No predecessors!
  br label %859

859:                                              ; preds = %858, %856
  %860 = phi i32 [ 15, %856 ], [ 0, %858 ]
  br label %861

861:                                              ; preds = %859, %848
  %862 = phi i32 [ 14, %848 ], [ %860, %859 ]
  br label %863

863:                                              ; preds = %861, %840
  %864 = phi i32 [ 12, %840 ], [ %862, %861 ]
  br label %865

865:                                              ; preds = %863, %832
  %866 = phi i32 [ 12, %832 ], [ %864, %863 ]
  br label %867

867:                                              ; preds = %865, %824
  %868 = phi i32 [ 10, %824 ], [ %866, %865 ]
  br label %869

869:                                              ; preds = %867, %816
  %870 = phi i32 [ 10, %816 ], [ %868, %867 ]
  br label %871

871:                                              ; preds = %869, %808
  %872 = phi i32 [ 8, %808 ], [ %870, %869 ]
  br label %873

873:                                              ; preds = %871, %800
  %874 = phi i32 [ 8, %800 ], [ %872, %871 ]
  br label %875

875:                                              ; preds = %873, %792
  %876 = phi i32 [ 6, %792 ], [ %874, %873 ]
  br label %877

877:                                              ; preds = %875, %784
  %878 = phi i32 [ 6, %784 ], [ %876, %875 ]
  br label %879

879:                                              ; preds = %877, %776
  %880 = phi i32 [ 5, %776 ], [ %878, %877 ]
  br label %881

881:                                              ; preds = %879, %768
  %882 = phi i32 [ 4, %768 ], [ %880, %879 ]
  br label %883

883:                                              ; preds = %881, %760
  %884 = phi i32 [ 3, %760 ], [ %882, %881 ]
  br label %885

885:                                              ; preds = %883, %752
  %886 = phi i32 [ 2, %752 ], [ %884, %883 ]
  br label %887

887:                                              ; preds = %885, %744
  %888 = phi i32 [ 1, %744 ], [ %886, %885 ]
  br label %889

889:                                              ; preds = %887, %736
  %890 = phi i32 [ 0, %736 ], [ %888, %887 ]
  br label %897

891:                                              ; preds = %722
  %892 = load ptr, ptr %7, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %892, i32 0, i32 3
  %894 = load i8, ptr %893, align 1, !tbaa !41
  %895 = zext i8 %894 to i32
  %896 = ashr i32 %895, 4
  br label %897

897:                                              ; preds = %891, %889
  %898 = phi i32 [ %890, %889 ], [ %896, %891 ]
  %899 = icmp eq i32 %898, 4
  br i1 %899, label %900, label %941

900:                                              ; preds = %897
  %901 = load ptr, ptr %9, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %901, i32 0, i32 35
  store i32 1, ptr %902, align 4, !tbaa !49
  %903 = load ptr, ptr %6, align 8, !tbaa !5
  %904 = load ptr, ptr %8, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %904, i32 0, i32 12
  %906 = load i32, ptr %905, align 4, !tbaa !19
  call void @libxsmm_generator_vcvtneps2bf8_avx512_prep_stack(ptr noundef %903, i32 noundef %906)
  %907 = load ptr, ptr %9, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %907, i32 0, i32 55
  %909 = load i32, ptr %908, align 4, !tbaa !28
  %910 = load ptr, ptr %9, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %910, i32 0, i32 38
  store i32 %909, ptr %911, align 8, !tbaa !44
  %912 = load ptr, ptr %9, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %912, i32 0, i32 55
  %914 = load i32, ptr %913, align 4, !tbaa !28
  %915 = add i32 %914, 1
  %916 = load ptr, ptr %9, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %916, i32 0, i32 39
  store i32 %915, ptr %917, align 4, !tbaa !45
  %918 = load ptr, ptr %9, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %918, i32 0, i32 55
  %920 = load i32, ptr %919, align 4, !tbaa !28
  %921 = add i32 %920, 2
  %922 = load ptr, ptr %9, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %922, i32 0, i32 55
  store i32 %921, ptr %923, align 4, !tbaa !28
  %924 = load ptr, ptr %9, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %924, i32 0, i32 54
  %926 = load i32, ptr %925, align 8, !tbaa !26
  %927 = load ptr, ptr %9, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %927, i32 0, i32 41
  store i32 %926, ptr %928, align 4, !tbaa !46
  %929 = load ptr, ptr %9, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %929, i32 0, i32 54
  %931 = load i32, ptr %930, align 8, !tbaa !26
  %932 = add i32 %931, 1
  %933 = load ptr, ptr %9, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %933, i32 0, i32 42
  store i32 %932, ptr %934, align 8, !tbaa !47
  %935 = load ptr, ptr %9, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %935, i32 0, i32 54
  %937 = load i32, ptr %936, align 8, !tbaa !26
  %938 = add i32 %937, 2
  %939 = load ptr, ptr %9, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %939, i32 0, i32 54
  store i32 %938, ptr %940, align 8, !tbaa !26
  br label %944

941:                                              ; preds = %897, %719
  %942 = load ptr, ptr %9, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %942, i32 0, i32 35
  store i32 0, ptr %943, align 4, !tbaa !49
  br label %944

944:                                              ; preds = %941, %900
  %945 = load i32, ptr %14, align 4, !tbaa !9
  %946 = icmp ugt i32 %945, 0
  br i1 %946, label %1128, label %947

947:                                              ; preds = %944
  %948 = load i32, ptr %13, align 4, !tbaa !9
  %949 = icmp eq i32 %948, 1
  br i1 %949, label %950, label %1185

950:                                              ; preds = %947
  %951 = load ptr, ptr %7, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %951, i32 0, i32 3
  %953 = load i8, ptr %952, align 1, !tbaa !41
  %954 = zext i8 %953 to i32
  %955 = ashr i32 %954, 4
  %956 = icmp eq i32 0, %955
  br i1 %956, label %957, label %1119

957:                                              ; preds = %950
  %958 = load ptr, ptr %7, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %958, i32 0, i32 3
  %960 = load i8, ptr %959, align 1, !tbaa !41
  %961 = zext i8 %960 to i32
  %962 = and i32 %961, 15
  %963 = icmp eq i32 0, %962
  br i1 %963, label %964, label %965

964:                                              ; preds = %957
  br label %1117

965:                                              ; preds = %957
  %966 = load ptr, ptr %7, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %966, i32 0, i32 3
  %968 = load i8, ptr %967, align 1, !tbaa !41
  %969 = zext i8 %968 to i32
  %970 = and i32 %969, 15
  %971 = icmp eq i32 1, %970
  br i1 %971, label %972, label %973

972:                                              ; preds = %965
  br label %1115

973:                                              ; preds = %965
  %974 = load ptr, ptr %7, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %974, i32 0, i32 3
  %976 = load i8, ptr %975, align 1, !tbaa !41
  %977 = zext i8 %976 to i32
  %978 = and i32 %977, 15
  %979 = icmp eq i32 2, %978
  br i1 %979, label %980, label %981

980:                                              ; preds = %973
  br label %1113

981:                                              ; preds = %973
  %982 = load ptr, ptr %7, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %982, i32 0, i32 3
  %984 = load i8, ptr %983, align 1, !tbaa !41
  %985 = zext i8 %984 to i32
  %986 = and i32 %985, 15
  %987 = icmp eq i32 3, %986
  br i1 %987, label %988, label %989

988:                                              ; preds = %981
  br label %1111

989:                                              ; preds = %981
  %990 = load ptr, ptr %7, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %990, i32 0, i32 3
  %992 = load i8, ptr %991, align 1, !tbaa !41
  %993 = zext i8 %992 to i32
  %994 = and i32 %993, 15
  %995 = icmp eq i32 4, %994
  br i1 %995, label %996, label %997

996:                                              ; preds = %989
  br label %1109

997:                                              ; preds = %989
  %998 = load ptr, ptr %7, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %998, i32 0, i32 3
  %1000 = load i8, ptr %999, align 1, !tbaa !41
  %1001 = zext i8 %1000 to i32
  %1002 = and i32 %1001, 15
  %1003 = icmp eq i32 5, %1002
  br i1 %1003, label %1004, label %1005

1004:                                             ; preds = %997
  br label %1107

1005:                                             ; preds = %997
  %1006 = load ptr, ptr %7, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1006, i32 0, i32 3
  %1008 = load i8, ptr %1007, align 1, !tbaa !41
  %1009 = zext i8 %1008 to i32
  %1010 = and i32 %1009, 15
  %1011 = icmp eq i32 6, %1010
  br i1 %1011, label %1012, label %1013

1012:                                             ; preds = %1005
  br label %1105

1013:                                             ; preds = %1005
  %1014 = load ptr, ptr %7, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1014, i32 0, i32 3
  %1016 = load i8, ptr %1015, align 1, !tbaa !41
  %1017 = zext i8 %1016 to i32
  %1018 = and i32 %1017, 15
  %1019 = icmp eq i32 7, %1018
  br i1 %1019, label %1020, label %1021

1020:                                             ; preds = %1013
  br label %1103

1021:                                             ; preds = %1013
  %1022 = load ptr, ptr %7, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1022, i32 0, i32 3
  %1024 = load i8, ptr %1023, align 1, !tbaa !41
  %1025 = zext i8 %1024 to i32
  %1026 = and i32 %1025, 15
  %1027 = icmp eq i32 8, %1026
  br i1 %1027, label %1028, label %1029

1028:                                             ; preds = %1021
  br label %1101

1029:                                             ; preds = %1021
  %1030 = load ptr, ptr %7, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1030, i32 0, i32 3
  %1032 = load i8, ptr %1031, align 1, !tbaa !41
  %1033 = zext i8 %1032 to i32
  %1034 = and i32 %1033, 15
  %1035 = icmp eq i32 9, %1034
  br i1 %1035, label %1036, label %1037

1036:                                             ; preds = %1029
  br label %1099

1037:                                             ; preds = %1029
  %1038 = load ptr, ptr %7, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1038, i32 0, i32 3
  %1040 = load i8, ptr %1039, align 1, !tbaa !41
  %1041 = zext i8 %1040 to i32
  %1042 = and i32 %1041, 15
  %1043 = icmp eq i32 10, %1042
  br i1 %1043, label %1044, label %1045

1044:                                             ; preds = %1037
  br label %1097

1045:                                             ; preds = %1037
  %1046 = load ptr, ptr %7, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1046, i32 0, i32 3
  %1048 = load i8, ptr %1047, align 1, !tbaa !41
  %1049 = zext i8 %1048 to i32
  %1050 = and i32 %1049, 15
  %1051 = icmp eq i32 11, %1050
  br i1 %1051, label %1052, label %1053

1052:                                             ; preds = %1045
  br label %1095

1053:                                             ; preds = %1045
  %1054 = load ptr, ptr %7, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1054, i32 0, i32 3
  %1056 = load i8, ptr %1055, align 1, !tbaa !41
  %1057 = zext i8 %1056 to i32
  %1058 = and i32 %1057, 15
  %1059 = icmp eq i32 12, %1058
  br i1 %1059, label %1060, label %1061

1060:                                             ; preds = %1053
  br label %1093

1061:                                             ; preds = %1053
  %1062 = load ptr, ptr %7, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1062, i32 0, i32 3
  %1064 = load i8, ptr %1063, align 1, !tbaa !41
  %1065 = zext i8 %1064 to i32
  %1066 = and i32 %1065, 15
  %1067 = icmp eq i32 13, %1066
  br i1 %1067, label %1068, label %1069

1068:                                             ; preds = %1061
  br label %1091

1069:                                             ; preds = %1061
  %1070 = load ptr, ptr %7, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1070, i32 0, i32 3
  %1072 = load i8, ptr %1071, align 1, !tbaa !41
  %1073 = zext i8 %1072 to i32
  %1074 = and i32 %1073, 15
  %1075 = icmp eq i32 14, %1074
  br i1 %1075, label %1076, label %1077

1076:                                             ; preds = %1069
  br label %1089

1077:                                             ; preds = %1069
  %1078 = load ptr, ptr %7, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1078, i32 0, i32 3
  %1080 = load i8, ptr %1079, align 1, !tbaa !41
  %1081 = zext i8 %1080 to i32
  %1082 = and i32 %1081, 15
  %1083 = icmp eq i32 15, %1082
  br i1 %1083, label %1084, label %1085

1084:                                             ; preds = %1077
  br label %1087

1085:                                             ; preds = %1077
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1778, ptr noundef @__PRETTY_FUNCTION__.libxsmm_configure_reserved_zmms_and_masks) #5
  unreachable

1086:                                             ; No predecessors!
  br label %1087

1087:                                             ; preds = %1086, %1084
  %1088 = phi i32 [ 15, %1084 ], [ 0, %1086 ]
  br label %1089

1089:                                             ; preds = %1087, %1076
  %1090 = phi i32 [ 14, %1076 ], [ %1088, %1087 ]
  br label %1091

1091:                                             ; preds = %1089, %1068
  %1092 = phi i32 [ 12, %1068 ], [ %1090, %1089 ]
  br label %1093

1093:                                             ; preds = %1091, %1060
  %1094 = phi i32 [ 12, %1060 ], [ %1092, %1091 ]
  br label %1095

1095:                                             ; preds = %1093, %1052
  %1096 = phi i32 [ 10, %1052 ], [ %1094, %1093 ]
  br label %1097

1097:                                             ; preds = %1095, %1044
  %1098 = phi i32 [ 10, %1044 ], [ %1096, %1095 ]
  br label %1099

1099:                                             ; preds = %1097, %1036
  %1100 = phi i32 [ 8, %1036 ], [ %1098, %1097 ]
  br label %1101

1101:                                             ; preds = %1099, %1028
  %1102 = phi i32 [ 8, %1028 ], [ %1100, %1099 ]
  br label %1103

1103:                                             ; preds = %1101, %1020
  %1104 = phi i32 [ 6, %1020 ], [ %1102, %1101 ]
  br label %1105

1105:                                             ; preds = %1103, %1012
  %1106 = phi i32 [ 6, %1012 ], [ %1104, %1103 ]
  br label %1107

1107:                                             ; preds = %1105, %1004
  %1108 = phi i32 [ 5, %1004 ], [ %1106, %1105 ]
  br label %1109

1109:                                             ; preds = %1107, %996
  %1110 = phi i32 [ 4, %996 ], [ %1108, %1107 ]
  br label %1111

1111:                                             ; preds = %1109, %988
  %1112 = phi i32 [ 3, %988 ], [ %1110, %1109 ]
  br label %1113

1113:                                             ; preds = %1111, %980
  %1114 = phi i32 [ 2, %980 ], [ %1112, %1111 ]
  br label %1115

1115:                                             ; preds = %1113, %972
  %1116 = phi i32 [ 1, %972 ], [ %1114, %1113 ]
  br label %1117

1117:                                             ; preds = %1115, %964
  %1118 = phi i32 [ 0, %964 ], [ %1116, %1115 ]
  br label %1125

1119:                                             ; preds = %950
  %1120 = load ptr, ptr %7, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1120, i32 0, i32 3
  %1122 = load i8, ptr %1121, align 1, !tbaa !41
  %1123 = zext i8 %1122 to i32
  %1124 = ashr i32 %1123, 4
  br label %1125

1125:                                             ; preds = %1119, %1117
  %1126 = phi i32 [ %1118, %1117 ], [ %1124, %1119 ]
  %1127 = icmp eq i32 %1126, 5
  br i1 %1127, label %1128, label %1185

1128:                                             ; preds = %1125, %944
  %1129 = load ptr, ptr %6, align 8, !tbaa !5
  %1130 = load ptr, ptr %8, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %1130, i32 0, i32 12
  %1132 = load i32, ptr %1131, align 4, !tbaa !19
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef %1129, i32 noundef %1132)
  %1133 = load ptr, ptr %9, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1133, i32 0, i32 55
  %1135 = load i32, ptr %1134, align 4, !tbaa !28
  %1136 = load ptr, ptr %9, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1136, i32 0, i32 38
  store i32 %1135, ptr %1137, align 8, !tbaa !44
  %1138 = load ptr, ptr %9, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1138, i32 0, i32 55
  %1140 = load i32, ptr %1139, align 4, !tbaa !28
  %1141 = add i32 %1140, 1
  %1142 = load ptr, ptr %9, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1142, i32 0, i32 39
  store i32 %1141, ptr %1143, align 4, !tbaa !45
  %1144 = load ptr, ptr %9, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1144, i32 0, i32 55
  %1146 = load i32, ptr %1145, align 4, !tbaa !28
  %1147 = add i32 %1146, 2
  %1148 = load ptr, ptr %9, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1148, i32 0, i32 40
  store i32 %1147, ptr %1149, align 8, !tbaa !50
  %1150 = load ptr, ptr %9, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1150, i32 0, i32 55
  %1152 = load i32, ptr %1151, align 4, !tbaa !28
  %1153 = add i32 %1152, 3
  %1154 = load ptr, ptr %9, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1154, i32 0, i32 55
  store i32 %1153, ptr %1155, align 4, !tbaa !28
  %1156 = load ptr, ptr %9, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1156, i32 0, i32 54
  %1158 = load i32, ptr %1157, align 8, !tbaa !26
  %1159 = load ptr, ptr %9, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1159, i32 0, i32 41
  store i32 %1158, ptr %1160, align 4, !tbaa !46
  %1161 = load ptr, ptr %9, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1161, i32 0, i32 54
  %1163 = load i32, ptr %1162, align 8, !tbaa !26
  %1164 = add i32 %1163, 1
  %1165 = load ptr, ptr %9, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1165, i32 0, i32 42
  store i32 %1164, ptr %1166, align 8, !tbaa !47
  %1167 = load ptr, ptr %9, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1167, i32 0, i32 54
  %1169 = load i32, ptr %1168, align 8, !tbaa !26
  %1170 = add i32 %1169, 2
  %1171 = load ptr, ptr %9, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1171, i32 0, i32 43
  store i32 %1170, ptr %1172, align 4, !tbaa !51
  %1173 = load ptr, ptr %9, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1173, i32 0, i32 54
  %1175 = load i32, ptr %1174, align 8, !tbaa !26
  %1176 = add i32 %1175, 3
  %1177 = load ptr, ptr %9, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1177, i32 0, i32 44
  store i32 %1176, ptr %1178, align 8, !tbaa !52
  %1179 = load ptr, ptr %9, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1179, i32 0, i32 54
  %1181 = load i32, ptr %1180, align 8, !tbaa !26
  %1182 = add i32 %1181, 4
  %1183 = load ptr, ptr %9, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1183, i32 0, i32 54
  store i32 %1182, ptr %1184, align 8, !tbaa !26
  br label %1185

1185:                                             ; preds = %1128, %1125, %947
  %1186 = load i32, ptr %13, align 4, !tbaa !9
  %1187 = icmp eq i32 %1186, 1
  br i1 %1187, label %1188, label %1369

1188:                                             ; preds = %1185
  %1189 = load ptr, ptr %7, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1189, i32 0, i32 3
  %1191 = load i8, ptr %1190, align 1, !tbaa !41
  %1192 = zext i8 %1191 to i32
  %1193 = ashr i32 %1192, 4
  %1194 = icmp eq i32 0, %1193
  br i1 %1194, label %1195, label %1357

1195:                                             ; preds = %1188
  %1196 = load ptr, ptr %7, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1196, i32 0, i32 3
  %1198 = load i8, ptr %1197, align 1, !tbaa !41
  %1199 = zext i8 %1198 to i32
  %1200 = and i32 %1199, 15
  %1201 = icmp eq i32 0, %1200
  br i1 %1201, label %1202, label %1203

1202:                                             ; preds = %1195
  br label %1355

1203:                                             ; preds = %1195
  %1204 = load ptr, ptr %7, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1204, i32 0, i32 3
  %1206 = load i8, ptr %1205, align 1, !tbaa !41
  %1207 = zext i8 %1206 to i32
  %1208 = and i32 %1207, 15
  %1209 = icmp eq i32 1, %1208
  br i1 %1209, label %1210, label %1211

1210:                                             ; preds = %1203
  br label %1353

1211:                                             ; preds = %1203
  %1212 = load ptr, ptr %7, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1212, i32 0, i32 3
  %1214 = load i8, ptr %1213, align 1, !tbaa !41
  %1215 = zext i8 %1214 to i32
  %1216 = and i32 %1215, 15
  %1217 = icmp eq i32 2, %1216
  br i1 %1217, label %1218, label %1219

1218:                                             ; preds = %1211
  br label %1351

1219:                                             ; preds = %1211
  %1220 = load ptr, ptr %7, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1220, i32 0, i32 3
  %1222 = load i8, ptr %1221, align 1, !tbaa !41
  %1223 = zext i8 %1222 to i32
  %1224 = and i32 %1223, 15
  %1225 = icmp eq i32 3, %1224
  br i1 %1225, label %1226, label %1227

1226:                                             ; preds = %1219
  br label %1349

1227:                                             ; preds = %1219
  %1228 = load ptr, ptr %7, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1228, i32 0, i32 3
  %1230 = load i8, ptr %1229, align 1, !tbaa !41
  %1231 = zext i8 %1230 to i32
  %1232 = and i32 %1231, 15
  %1233 = icmp eq i32 4, %1232
  br i1 %1233, label %1234, label %1235

1234:                                             ; preds = %1227
  br label %1347

1235:                                             ; preds = %1227
  %1236 = load ptr, ptr %7, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1236, i32 0, i32 3
  %1238 = load i8, ptr %1237, align 1, !tbaa !41
  %1239 = zext i8 %1238 to i32
  %1240 = and i32 %1239, 15
  %1241 = icmp eq i32 5, %1240
  br i1 %1241, label %1242, label %1243

1242:                                             ; preds = %1235
  br label %1345

1243:                                             ; preds = %1235
  %1244 = load ptr, ptr %7, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1244, i32 0, i32 3
  %1246 = load i8, ptr %1245, align 1, !tbaa !41
  %1247 = zext i8 %1246 to i32
  %1248 = and i32 %1247, 15
  %1249 = icmp eq i32 6, %1248
  br i1 %1249, label %1250, label %1251

1250:                                             ; preds = %1243
  br label %1343

1251:                                             ; preds = %1243
  %1252 = load ptr, ptr %7, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1252, i32 0, i32 3
  %1254 = load i8, ptr %1253, align 1, !tbaa !41
  %1255 = zext i8 %1254 to i32
  %1256 = and i32 %1255, 15
  %1257 = icmp eq i32 7, %1256
  br i1 %1257, label %1258, label %1259

1258:                                             ; preds = %1251
  br label %1341

1259:                                             ; preds = %1251
  %1260 = load ptr, ptr %7, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1260, i32 0, i32 3
  %1262 = load i8, ptr %1261, align 1, !tbaa !41
  %1263 = zext i8 %1262 to i32
  %1264 = and i32 %1263, 15
  %1265 = icmp eq i32 8, %1264
  br i1 %1265, label %1266, label %1267

1266:                                             ; preds = %1259
  br label %1339

1267:                                             ; preds = %1259
  %1268 = load ptr, ptr %7, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1268, i32 0, i32 3
  %1270 = load i8, ptr %1269, align 1, !tbaa !41
  %1271 = zext i8 %1270 to i32
  %1272 = and i32 %1271, 15
  %1273 = icmp eq i32 9, %1272
  br i1 %1273, label %1274, label %1275

1274:                                             ; preds = %1267
  br label %1337

1275:                                             ; preds = %1267
  %1276 = load ptr, ptr %7, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1276, i32 0, i32 3
  %1278 = load i8, ptr %1277, align 1, !tbaa !41
  %1279 = zext i8 %1278 to i32
  %1280 = and i32 %1279, 15
  %1281 = icmp eq i32 10, %1280
  br i1 %1281, label %1282, label %1283

1282:                                             ; preds = %1275
  br label %1335

1283:                                             ; preds = %1275
  %1284 = load ptr, ptr %7, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1284, i32 0, i32 3
  %1286 = load i8, ptr %1285, align 1, !tbaa !41
  %1287 = zext i8 %1286 to i32
  %1288 = and i32 %1287, 15
  %1289 = icmp eq i32 11, %1288
  br i1 %1289, label %1290, label %1291

1290:                                             ; preds = %1283
  br label %1333

1291:                                             ; preds = %1283
  %1292 = load ptr, ptr %7, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1292, i32 0, i32 3
  %1294 = load i8, ptr %1293, align 1, !tbaa !41
  %1295 = zext i8 %1294 to i32
  %1296 = and i32 %1295, 15
  %1297 = icmp eq i32 12, %1296
  br i1 %1297, label %1298, label %1299

1298:                                             ; preds = %1291
  br label %1331

1299:                                             ; preds = %1291
  %1300 = load ptr, ptr %7, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1300, i32 0, i32 3
  %1302 = load i8, ptr %1301, align 1, !tbaa !41
  %1303 = zext i8 %1302 to i32
  %1304 = and i32 %1303, 15
  %1305 = icmp eq i32 13, %1304
  br i1 %1305, label %1306, label %1307

1306:                                             ; preds = %1299
  br label %1329

1307:                                             ; preds = %1299
  %1308 = load ptr, ptr %7, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1308, i32 0, i32 3
  %1310 = load i8, ptr %1309, align 1, !tbaa !41
  %1311 = zext i8 %1310 to i32
  %1312 = and i32 %1311, 15
  %1313 = icmp eq i32 14, %1312
  br i1 %1313, label %1314, label %1315

1314:                                             ; preds = %1307
  br label %1327

1315:                                             ; preds = %1307
  %1316 = load ptr, ptr %7, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1316, i32 0, i32 3
  %1318 = load i8, ptr %1317, align 1, !tbaa !41
  %1319 = zext i8 %1318 to i32
  %1320 = and i32 %1319, 15
  %1321 = icmp eq i32 15, %1320
  br i1 %1321, label %1322, label %1323

1322:                                             ; preds = %1315
  br label %1325

1323:                                             ; preds = %1315
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1790, ptr noundef @__PRETTY_FUNCTION__.libxsmm_configure_reserved_zmms_and_masks) #5
  unreachable

1324:                                             ; No predecessors!
  br label %1325

1325:                                             ; preds = %1324, %1322
  %1326 = phi i32 [ 15, %1322 ], [ 0, %1324 ]
  br label %1327

1327:                                             ; preds = %1325, %1314
  %1328 = phi i32 [ 14, %1314 ], [ %1326, %1325 ]
  br label %1329

1329:                                             ; preds = %1327, %1306
  %1330 = phi i32 [ 12, %1306 ], [ %1328, %1327 ]
  br label %1331

1331:                                             ; preds = %1329, %1298
  %1332 = phi i32 [ 12, %1298 ], [ %1330, %1329 ]
  br label %1333

1333:                                             ; preds = %1331, %1290
  %1334 = phi i32 [ 10, %1290 ], [ %1332, %1331 ]
  br label %1335

1335:                                             ; preds = %1333, %1282
  %1336 = phi i32 [ 10, %1282 ], [ %1334, %1333 ]
  br label %1337

1337:                                             ; preds = %1335, %1274
  %1338 = phi i32 [ 8, %1274 ], [ %1336, %1335 ]
  br label %1339

1339:                                             ; preds = %1337, %1266
  %1340 = phi i32 [ 8, %1266 ], [ %1338, %1337 ]
  br label %1341

1341:                                             ; preds = %1339, %1258
  %1342 = phi i32 [ 6, %1258 ], [ %1340, %1339 ]
  br label %1343

1343:                                             ; preds = %1341, %1250
  %1344 = phi i32 [ 6, %1250 ], [ %1342, %1341 ]
  br label %1345

1345:                                             ; preds = %1343, %1242
  %1346 = phi i32 [ 5, %1242 ], [ %1344, %1343 ]
  br label %1347

1347:                                             ; preds = %1345, %1234
  %1348 = phi i32 [ 4, %1234 ], [ %1346, %1345 ]
  br label %1349

1349:                                             ; preds = %1347, %1226
  %1350 = phi i32 [ 3, %1226 ], [ %1348, %1347 ]
  br label %1351

1351:                                             ; preds = %1349, %1218
  %1352 = phi i32 [ 2, %1218 ], [ %1350, %1349 ]
  br label %1353

1353:                                             ; preds = %1351, %1210
  %1354 = phi i32 [ 1, %1210 ], [ %1352, %1351 ]
  br label %1355

1355:                                             ; preds = %1353, %1202
  %1356 = phi i32 [ 0, %1202 ], [ %1354, %1353 ]
  br label %1363

1357:                                             ; preds = %1188
  %1358 = load ptr, ptr %7, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1358, i32 0, i32 3
  %1360 = load i8, ptr %1359, align 1, !tbaa !41
  %1361 = zext i8 %1360 to i32
  %1362 = ashr i32 %1361, 4
  br label %1363

1363:                                             ; preds = %1357, %1355
  %1364 = phi i32 [ %1356, %1355 ], [ %1362, %1357 ]
  %1365 = icmp eq i32 %1364, 5
  br i1 %1365, label %1366, label %1369

1366:                                             ; preds = %1363
  %1367 = load ptr, ptr %9, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %1367, i32 0, i32 36
  store i32 1, ptr %1368, align 8, !tbaa !53
  br label %1369

1369:                                             ; preds = %1366, %1363, %1185
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  ret void
}

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !10, i64 948}
!13 = !{!"libxsmm_matequation_kernel_config_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !7, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !7, i64 188, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !6, i64 336, !6, i64 344, !10, i64 352, !10, i64 356, !10, i64 360, !7, i64 364, !7, i64 620, !14, i64 876, !15, i64 1392}
!14 = !{!"libxsmm_mateltwise_kernel_config_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !10, i64 392, !10, i64 396, !10, i64 400, !10, i64 404, !10, i64 408, !10, i64 412, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !10, i64 432, !10, i64 436, !10, i64 440, !10, i64 444, !10, i64 448, !10, i64 452, !10, i64 456, !10, i64 460, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !7, i64 512}
!15 = !{!"libxsmm_micro_kernel_config", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !7, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !7, i64 364, !7, i64 380, !7, i64 396, !7, i64 412, !7, i64 428, !7, i64 444, !10, i64 460, !7, i64 464, !16, i64 520, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !6, i64 592, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !6, i64 616, !10, i64 624, !10, i64 628, !10, i64 632, !10, i64 636, !10, i64 640, !10, i64 644, !10, i64 648, !10, i64 652, !10, i64 656, !10, i64 660, !10, i64 664, !10, i64 668, !10, i64 672, !10, i64 676, !10, i64 680}
!16 = !{!"libxsmm_tile_config", !7, i64 0, !17, i64 2, !7, i64 4, !17, i64 6, !7, i64 8, !17, i64 10, !7, i64 12, !17, i64 14, !7, i64 16, !17, i64 18, !7, i64 20, !17, i64 22, !7, i64 24, !17, i64 26, !7, i64 28, !17, i64 30, !7, i64 32}
!17 = !{!"short", !7, i64 0}
!18 = !{!13, !10, i64 952}
!19 = !{!20, !10, i64 48}
!20 = !{!"libxsmm_matequation_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !21, i64 72, !22, i64 220}
!21 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144}
!22 = !{!"libxsmm_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!14, !10, i64 72}
!26 = !{!13, !10, i64 352}
!27 = !{!14, !10, i64 76}
!28 = !{!13, !10, i64 356}
!29 = !{!30, !10, i64 28}
!30 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!31 = !{!32, !10, i64 0}
!32 = !{!"libxsmm_meqn_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 13}
!33 = !{!13, !10, i64 60}
!34 = !{!13, !10, i64 100}
!35 = !{!13, !10, i64 96}
!36 = !{!13, !10, i64 68}
!37 = !{!13, !10, i64 180}
!38 = !{!13, !7, i64 72}
!39 = !{!13, !10, i64 124}
!40 = distinct !{!40, !24}
!41 = !{!32, !7, i64 12}
!42 = !{!13, !10, i64 128}
!43 = !{!13, !10, i64 132}
!44 = !{!13, !10, i64 152}
!45 = !{!13, !10, i64 156}
!46 = !{!13, !10, i64 164}
!47 = !{!13, !10, i64 168}
!48 = !{!13, !10, i64 136}
!49 = !{!13, !10, i64 140}
!50 = !{!13, !10, i64 160}
!51 = !{!13, !10, i64 172}
!52 = !{!13, !10, i64 176}
!53 = !{!13, !10, i64 144}


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

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

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

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

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

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

declare void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_configure_reserved_zmms_and_masks(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr nocapture noundef readonly %4) local_unnamed_addr #1 {
  %6 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #4
  store i32 0, ptr %6, align 4, !tbaa !5
  %7 = load ptr, ptr %4, align 8, !tbaa !9
  %8 = getelementptr inbounds i8, ptr %7, i64 32
  %9 = load i32, ptr %8, align 8, !tbaa !9
  switch i32 %9, label %12 [
    i32 1, label %.sink.split
    i32 2, label %.sink.split
    i32 4, label %.sink.split
  ]

.sink.split:                                      ; preds = %5, %5, %5
  %10 = getelementptr inbounds i8, ptr %7, i64 44
  %11 = load i32, ptr %10, align 4, !tbaa !9
  br label %12

12:                                               ; preds = %.sink.split, %5
  %.0237 = phi i32 [ 1, %5 ], [ %11, %.sink.split ]
  tail call void @libxsmm_mark_reserved_zmms(ptr noundef %0, ptr noundef %3, ptr noundef nonnull %7)
  %13 = getelementptr inbounds i8, ptr %3, i64 876
  %14 = getelementptr inbounds i8, ptr %3, i64 948
  store i32 0, ptr %14, align 4, !tbaa !10
  %15 = getelementptr inbounds i8, ptr %3, i64 952
  store i32 1, ptr %15, align 4, !tbaa !17
  %16 = load ptr, ptr %4, align 8, !tbaa !9
  call void @libxsmm_generator_has_hf8_input(ptr noundef %16, ptr noundef nonnull %6)
  %17 = getelementptr inbounds i8, ptr %3, i64 364
  %18 = getelementptr inbounds i8, ptr %2, i64 48
  br label %19

19:                                               ; preds = %12, %25
  %indvars.iv = phi i64 [ 0, %12 ], [ %indvars.iv.next, %25 ]
  %20 = getelementptr inbounds [64 x i32], ptr %17, i64 0, i64 %indvars.iv
  %21 = load i32, ptr %20, align 4, !tbaa !5
  %.not256 = icmp eq i32 %21, 0
  br i1 %.not256, label %25, label %22

22:                                               ; preds = %19
  %23 = load i32, ptr %18, align 4, !tbaa !18
  %24 = trunc nuw nsw i64 %indvars.iv to i32
  call void @libxsmm_configure_unary_kernel_vregs_masks(ptr noundef %0, ptr noundef nonnull %13, i32 noundef %.0237, i32 noundef %24, i32 noundef 0, i32 noundef %23, i32 noundef 127, i32 noundef 127) #4
  br label %25

25:                                               ; preds = %19, %22
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 64
  br i1 %exitcond.not, label %26, label %19, !llvm.loop !22

26:                                               ; preds = %25
  %27 = getelementptr inbounds i8, ptr %3, i64 352
  %28 = getelementptr inbounds i8, ptr %3, i64 356
  %29 = load <2 x i32>, ptr %14, align 4, !tbaa !5
  store <2 x i32> %29, ptr %27, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %0, i64 28
  %31 = load i32, ptr %30, align 4, !tbaa !24
  %32 = icmp ult i32 %31, 1051
  br i1 %32, label %33, label %42

33:                                               ; preds = %26
  %34 = load i32, ptr %1, align 1, !tbaa !26
  %35 = getelementptr inbounds i8, ptr %3, i64 60
  %36 = load i32, ptr %35, align 4, !tbaa !28
  %37 = urem i32 %34, %36
  %.not = icmp eq i32 %37, 0
  br i1 %.not, label %42, label %38

38:                                               ; preds = %33
  %39 = getelementptr inbounds i8, ptr %3, i64 100
  %40 = extractelement <2 x i32> %29, i64 0
  store i32 %40, ptr %39, align 4, !tbaa !29
  %41 = add i32 %40, 1
  store i32 %41, ptr %27, align 8, !tbaa !30
  br label %42

42:                                               ; preds = %38, %33, %26
  %43 = getelementptr inbounds i8, ptr %3, i64 96
  store i32 0, ptr %43, align 8, !tbaa !31
  %44 = getelementptr inbounds i8, ptr %3, i64 620
  %45 = getelementptr inbounds i8, ptr %3, i64 68
  %46 = getelementptr inbounds i8, ptr %3, i64 180
  %47 = getelementptr inbounds i8, ptr %3, i64 72
  %48 = getelementptr inbounds i8, ptr %3, i64 124
  br label %49

49:                                               ; preds = %42, %86
  %indvars.iv338 = phi i64 [ 0, %42 ], [ %indvars.iv.next339, %86 ]
  %50 = getelementptr inbounds [64 x i32], ptr %17, i64 0, i64 %indvars.iv338
  %51 = load i32, ptr %50, align 4, !tbaa !5
  %52 = icmp ne i32 %51, 0
  %53 = icmp eq i64 %indvars.iv338, 24
  %or.cond = and i1 %53, %52
  br i1 %or.cond, label %59, label %54

54:                                               ; preds = %49
  %55 = getelementptr inbounds [64 x i32], ptr %44, i64 0, i64 %indvars.iv338
  %56 = load i32, ptr %55, align 4, !tbaa !5
  %57 = icmp ne i32 %56, 0
  %58 = icmp eq i64 %indvars.iv338, 7
  %or.cond3 = and i1 %58, %57
  br i1 %or.cond3, label %59, label %86

59:                                               ; preds = %54, %49
  %60 = load i32, ptr %45, align 4, !tbaa !32
  store i32 1, ptr %43, align 8, !tbaa !31
  %61 = load i32, ptr %27, align 8, !tbaa !30
  store i32 %61, ptr %46, align 4, !tbaa !33
  %reass.add = shl i32 %61, 1
  %62 = or disjoint i32 %reass.add, 1
  store i32 %62, ptr %27, align 8, !tbaa !30
  %63 = load i8, ptr %47, align 8, !tbaa !34
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805639919, i8 noundef signext %63, i32 noundef %61, i32 noundef %61, i32 noundef %61) #4
  %64 = load i32, ptr %30, align 4, !tbaa !24
  %65 = icmp ugt i32 %64, 1050
  br i1 %65, label %66, label %82

66:                                               ; preds = %59
  %67 = icmp ugt i32 %64, 1100
  br i1 %67, label %68, label %72

68:                                               ; preds = %66
  switch i32 %60, label %71 [
    i32 64, label %76
    i32 32, label %69
    i32 16, label %70
  ]

69:                                               ; preds = %68
  br label %76

70:                                               ; preds = %68
  br label %76

71:                                               ; preds = %68
  br label %76

72:                                               ; preds = %66
  switch i32 %60, label %75 [
    i32 32, label %76
    i32 16, label %73
    i32 8, label %74
  ]

73:                                               ; preds = %72
  br label %76

74:                                               ; preds = %72
  br label %76

75:                                               ; preds = %72
  br label %76

76:                                               ; preds = %72, %68, %74, %75, %73, %70, %71, %69
  %.0235 = phi i32 [ 2, %69 ], [ 1, %70 ], [ 0, %71 ], [ 2, %73 ], [ 1, %74 ], [ 0, %75 ], [ 12, %68 ], [ 12, %72 ]
  %77 = add i32 %60, -1
  %78 = load i32, ptr %28, align 4, !tbaa !35
  store i32 %78, ptr %48, align 4, !tbaa !36
  %79 = load i32, ptr %18, align 4, !tbaa !18
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef %79, i32 noundef %78, i32 noundef %77, i32 noundef %.0235) #4
  %80 = load i32, ptr %28, align 4, !tbaa !35
  %reass.add255 = shl i32 %80, 1
  %81 = or disjoint i32 %reass.add255, 1
  store i32 %81, ptr %28, align 4, !tbaa !35
  br label %86

82:                                               ; preds = %59
  %83 = icmp ne i32 %60, 4
  %. = zext i1 %83 to i32
  %84 = load i32, ptr %27, align 8, !tbaa !30
  store i32 %84, ptr %48, align 4, !tbaa !36
  %85 = add i32 %84, 1
  store i32 %85, ptr %27, align 8, !tbaa !30
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef nonnull %0, i32 noundef %84, i32 noundef 1, i32 noundef %.) #4
  br label %86

86:                                               ; preds = %76, %82, %54
  %indvars.iv.next339 = add nuw nsw i64 %indvars.iv338, 1
  %exitcond341.not = icmp eq i64 %indvars.iv.next339, 64
  br i1 %exitcond341.not, label %87, label %49, !llvm.loop !37

87:                                               ; preds = %86
  %88 = icmp eq i32 %.0237, 1
  br i1 %88, label %89, label %.thread326

89:                                               ; preds = %87
  %90 = getelementptr inbounds i8, ptr %1, i64 12
  %91 = load i8, ptr %90, align 1, !tbaa !38
  %92 = icmp ult i8 %91, 16
  br i1 %92, label %93, label %94

93:                                               ; preds = %89
  %cond331 = icmp eq i8 %91, 2
  br i1 %cond331, label %.thread309, label %.thread313

94:                                               ; preds = %89
  %.mask332 = and i8 %91, -16
  %95 = icmp eq i8 %.mask332, 32
  br i1 %95, label %.thread309, label %.thread313

.thread309:                                       ; preds = %93, %94
  %96 = getelementptr inbounds i8, ptr %3, i64 128
  store i32 1, ptr %96, align 8, !tbaa !39
  %97 = load i32, ptr %30, align 4, !tbaa !24
  %98 = icmp ugt i32 %97, 1102
  %.not252 = icmp eq i32 %97, 1008
  %or.cond270 = or i1 %98, %.not252
  br i1 %or.cond270, label %.thread311, label %99

99:                                               ; preds = %.thread309
  %100 = getelementptr inbounds i8, ptr %3, i64 132
  store i32 1, ptr %100, align 4, !tbaa !40
  %101 = load i32, ptr %18, align 4, !tbaa !18
  call void @libxsmm_generator_vcvtneps2bf16_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef %101) #4
  %102 = load i32, ptr %28, align 4, !tbaa !35
  %103 = getelementptr inbounds i8, ptr %3, i64 152
  store i32 %102, ptr %103, align 8, !tbaa !41
  %104 = add i32 %102, 1
  %105 = getelementptr inbounds i8, ptr %3, i64 156
  store i32 %104, ptr %105, align 4, !tbaa !42
  %106 = add i32 %102, 2
  store i32 %106, ptr %28, align 4, !tbaa !35
  %107 = load i32, ptr %27, align 8, !tbaa !30
  %108 = getelementptr inbounds i8, ptr %3, i64 164
  store i32 %107, ptr %108, align 4, !tbaa !43
  %109 = add i32 %107, 1
  %110 = getelementptr inbounds i8, ptr %3, i64 168
  store i32 %109, ptr %110, align 8, !tbaa !44
  %111 = add i32 %107, 2
  store i32 %111, ptr %27, align 8, !tbaa !30
  %.pre = load i8, ptr %90, align 1, !tbaa !38
  br label %.thread311

.thread313:                                       ; preds = %93, %94
  %112 = getelementptr inbounds i8, ptr %3, i64 128
  store i32 0, ptr %112, align 8, !tbaa !39
  %113 = getelementptr inbounds i8, ptr %3, i64 132
  store i32 0, ptr %113, align 4, !tbaa !40
  br label %.thread311

.thread311:                                       ; preds = %99, %.thread309, %.thread313
  %114 = phi i8 [ %.pre, %99 ], [ %91, %.thread309 ], [ %91, %.thread313 ]
  %115 = icmp ult i8 %114, 16
  br i1 %115, label %116, label %117

116:                                              ; preds = %.thread311
  %cond330 = icmp eq i8 %114, 3
  br i1 %cond330, label %.thread317, label %.thread319

117:                                              ; preds = %.thread311
  %.mask333 = and i8 %114, -16
  %118 = icmp eq i8 %.mask333, 48
  br i1 %118, label %.thread317, label %.thread319

.thread319:                                       ; preds = %116, %117
  br label %.thread317

.thread317:                                       ; preds = %117, %116, %.thread319
  %.sink = phi i32 [ 0, %.thread319 ], [ 1, %116 ], [ 1, %117 ]
  %119 = getelementptr inbounds i8, ptr %3, i64 136
  store i32 %.sink, ptr %119, align 8, !tbaa !45
  br i1 %115, label %120, label %121

120:                                              ; preds = %.thread317
  %cond329 = icmp eq i8 %114, 4
  br i1 %cond329, label %.thread323, label %123

121:                                              ; preds = %.thread317
  %.mask334 = and i8 %114, -16
  %122 = icmp eq i8 %.mask334, 64
  br i1 %122, label %.thread323, label %123

123:                                              ; preds = %120, %121
  %124 = getelementptr inbounds i8, ptr %3, i64 140
  store i32 0, ptr %124, align 4, !tbaa !46
  %125 = load i32, ptr %6, align 4, !tbaa !5
  %.not253 = icmp eq i32 %125, 0
  br i1 %.not253, label %.thread325, label %.critedge

.thread326:                                       ; preds = %87
  %126 = getelementptr inbounds i8, ptr %3, i64 128
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %126, i8 0, i64 16, i1 false)
  %127 = load i32, ptr %6, align 4, !tbaa !5
  %.not253327 = icmp eq i32 %127, 0
  br i1 %.not253327, label %.critedge302, label %.critedge

.thread323:                                       ; preds = %120, %121
  %128 = getelementptr inbounds i8, ptr %3, i64 140
  store i32 1, ptr %128, align 4, !tbaa !46
  %129 = load i32, ptr %18, align 4, !tbaa !18
  call void @libxsmm_generator_vcvtneps2bf8_avx512_prep_stack(ptr noundef %0, i32 noundef %129) #4
  %130 = load i32, ptr %28, align 4, !tbaa !35
  %131 = getelementptr inbounds i8, ptr %3, i64 152
  store i32 %130, ptr %131, align 8, !tbaa !41
  %132 = add i32 %130, 1
  %133 = getelementptr inbounds i8, ptr %3, i64 156
  store i32 %132, ptr %133, align 4, !tbaa !42
  %134 = add i32 %130, 2
  store i32 %134, ptr %28, align 4, !tbaa !35
  %135 = load i32, ptr %27, align 8, !tbaa !30
  %136 = getelementptr inbounds i8, ptr %3, i64 164
  store i32 %135, ptr %136, align 4, !tbaa !43
  %137 = add i32 %135, 1
  %138 = getelementptr inbounds i8, ptr %3, i64 168
  store i32 %137, ptr %138, align 8, !tbaa !44
  %139 = add i32 %135, 2
  store i32 %139, ptr %27, align 8, !tbaa !30
  %140 = load i32, ptr %6, align 4, !tbaa !5
  %.not253324 = icmp eq i32 %140, 0
  br i1 %.not253324, label %.thread323..thread325_crit_edge, label %.critedge

.thread323..thread325_crit_edge:                  ; preds = %.thread323
  %.pre342 = load i8, ptr %90, align 1, !tbaa !38
  br label %.thread325

.thread325:                                       ; preds = %.thread323..thread325_crit_edge, %123
  %141 = phi i8 [ %.pre342, %.thread323..thread325_crit_edge ], [ %114, %123 ]
  %142 = icmp ult i8 %141, 16
  br i1 %142, label %143, label %144

143:                                              ; preds = %.thread325
  %cond = icmp eq i8 %141, 5
  br i1 %cond, label %.critedge, label %.critedge.thread.thread

144:                                              ; preds = %.thread325
  %.mask = and i8 %141, -16
  %145 = icmp eq i8 %.mask, 80
  br i1 %145, label %.critedge, label %.critedge.thread.thread344

.critedge:                                        ; preds = %.thread326, %123, %144, %143, %.thread323
  %146 = load i32, ptr %18, align 4, !tbaa !18
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef %0, i32 noundef %146) #4
  %147 = getelementptr inbounds i8, ptr %3, i64 152
  %148 = getelementptr inbounds i8, ptr %3, i64 156
  %149 = getelementptr inbounds i8, ptr %3, i64 164
  %150 = getelementptr inbounds i8, ptr %3, i64 168
  %151 = getelementptr inbounds i8, ptr %3, i64 176
  %152 = load <2 x i32>, ptr %27, align 8, !tbaa !5
  %153 = extractelement <2 x i32> %152, i64 1
  store i32 %153, ptr %147, align 8, !tbaa !41
  %154 = shufflevector <2 x i32> %152, <2 x i32> poison, <2 x i32> <i32 1, i32 1>
  %155 = add <2 x i32> %154, <i32 1, i32 2>
  store <2 x i32> %155, ptr %148, align 4, !tbaa !5
  %156 = extractelement <2 x i32> %152, i64 0
  store i32 %156, ptr %149, align 4, !tbaa !43
  %157 = shufflevector <2 x i32> %152, <2 x i32> poison, <2 x i32> zeroinitializer
  %158 = add <2 x i32> %157, <i32 1, i32 2>
  store <2 x i32> %158, ptr %150, align 8, !tbaa !5
  %159 = add i32 %156, 3
  store i32 %159, ptr %151, align 8, !tbaa !47
  %160 = add <2 x i32> %152, <i32 4, i32 3>
  store <2 x i32> %160, ptr %27, align 8, !tbaa !5
  br i1 %88, label %.critedge.thread, label %.critedge302

.critedge.thread:                                 ; preds = %.critedge
  %.phi.trans.insert = getelementptr inbounds i8, ptr %1, i64 12
  %.pre343 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !38
  %161 = icmp ult i8 %.pre343, 16
  br i1 %161, label %.critedge.thread.thread, label %.critedge.thread.thread344

.critedge.thread.thread:                          ; preds = %143, %.critedge.thread
  %162 = phi i8 [ %.pre343, %.critedge.thread ], [ %141, %143 ]
  %cond308 = icmp eq i8 %162, 5
  br i1 %cond308, label %.fold.split303, label %.critedge302

.critedge.thread.thread344:                       ; preds = %144, %.critedge.thread
  %163 = phi i8 [ %.pre343, %.critedge.thread ], [ %141, %144 ]
  %.mask254 = and i8 %163, -16
  %164 = icmp eq i8 %.mask254, 80
  br i1 %164, label %.fold.split303, label %.critedge302

.fold.split303:                                   ; preds = %.critedge.thread.thread, %.critedge.thread.thread344
  %165 = getelementptr inbounds i8, ptr %3, i64 144
  store i32 1, ptr %165, align 8, !tbaa !48
  br label %.critedge302

.critedge302:                                     ; preds = %.thread326, %.critedge.thread.thread, %.fold.split303, %.critedge.thread.thread344, %.critedge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #4
  ret void
}

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 948}
!11 = !{!"libxsmm_matequation_kernel_config_struct", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !7, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !7, i64 188, !6, i64 316, !6, i64 320, !6, i64 324, !6, i64 328, !12, i64 336, !12, i64 344, !6, i64 352, !6, i64 356, !6, i64 360, !7, i64 364, !7, i64 620, !13, i64 876, !14, i64 1392}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!"libxsmm_mateltwise_kernel_config_struct", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224, !6, i64 228, !6, i64 232, !6, i64 236, !6, i64 240, !6, i64 244, !6, i64 248, !6, i64 252, !6, i64 256, !6, i64 260, !6, i64 264, !6, i64 268, !6, i64 272, !6, i64 276, !6, i64 280, !6, i64 284, !6, i64 288, !6, i64 292, !6, i64 296, !6, i64 300, !6, i64 304, !6, i64 308, !6, i64 312, !6, i64 316, !6, i64 320, !6, i64 324, !6, i64 328, !6, i64 332, !6, i64 336, !6, i64 340, !6, i64 344, !6, i64 348, !6, i64 352, !6, i64 356, !6, i64 360, !6, i64 364, !6, i64 368, !6, i64 372, !6, i64 376, !6, i64 380, !6, i64 384, !6, i64 388, !6, i64 392, !6, i64 396, !6, i64 400, !6, i64 404, !6, i64 408, !6, i64 412, !6, i64 416, !6, i64 420, !6, i64 424, !6, i64 428, !6, i64 432, !6, i64 436, !6, i64 440, !6, i64 444, !6, i64 448, !6, i64 452, !6, i64 456, !6, i64 460, !6, i64 464, !6, i64 468, !6, i64 472, !6, i64 476, !6, i64 480, !6, i64 484, !6, i64 488, !6, i64 492, !6, i64 496, !6, i64 500, !6, i64 504, !6, i64 508, !7, i64 512}
!14 = !{!"libxsmm_micro_kernel_config", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !7, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224, !6, i64 228, !6, i64 232, !6, i64 236, !6, i64 240, !6, i64 244, !6, i64 248, !6, i64 252, !6, i64 256, !6, i64 260, !6, i64 264, !6, i64 268, !6, i64 272, !6, i64 276, !6, i64 280, !6, i64 284, !6, i64 288, !6, i64 292, !6, i64 296, !6, i64 300, !6, i64 304, !6, i64 308, !6, i64 312, !6, i64 316, !6, i64 320, !6, i64 324, !6, i64 328, !6, i64 332, !6, i64 336, !6, i64 340, !6, i64 344, !6, i64 348, !6, i64 352, !6, i64 356, !6, i64 360, !7, i64 364, !7, i64 380, !7, i64 396, !7, i64 412, !7, i64 428, !7, i64 444, !6, i64 460, !7, i64 464, !15, i64 520, !6, i64 556, !6, i64 560, !6, i64 564, !6, i64 568, !6, i64 572, !6, i64 576, !6, i64 580, !6, i64 584, !12, i64 592, !6, i64 600, !6, i64 604, !6, i64 608, !6, i64 612, !12, i64 616, !6, i64 624, !6, i64 628, !6, i64 632, !6, i64 636, !6, i64 640, !6, i64 644, !6, i64 648, !6, i64 652, !6, i64 656, !6, i64 660, !6, i64 664, !6, i64 668, !6, i64 672, !6, i64 676, !6, i64 680}
!15 = !{!"libxsmm_tile_config", !7, i64 0, !16, i64 2, !7, i64 4, !16, i64 6, !7, i64 8, !16, i64 10, !7, i64 12, !16, i64 14, !7, i64 16, !16, i64 18, !7, i64 20, !16, i64 22, !7, i64 24, !16, i64 26, !7, i64 28, !16, i64 30, !7, i64 32}
!16 = !{!"short", !7, i64 0}
!17 = !{!11, !6, i64 952}
!18 = !{!19, !6, i64 48}
!19 = !{!"libxsmm_matequation_gp_reg_mapping_struct", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !20, i64 72, !21, i64 220}
!20 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144}
!21 = !{!"libxsmm_gp_reg_mapping_struct", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!25, !6, i64 28}
!25 = !{!"libxsmm_generated_code", !12, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28}
!26 = !{!27, !6, i64 0}
!27 = !{!"libxsmm_meqn_descriptor", !6, i64 0, !6, i64 4, !6, i64 8, !7, i64 12, !6, i64 13}
!28 = !{!11, !6, i64 60}
!29 = !{!11, !6, i64 100}
!30 = !{!11, !6, i64 352}
!31 = !{!11, !6, i64 96}
!32 = !{!11, !6, i64 68}
!33 = !{!11, !6, i64 180}
!34 = !{!11, !7, i64 72}
!35 = !{!11, !6, i64 356}
!36 = !{!11, !6, i64 124}
!37 = distinct !{!37, !23}
!38 = !{!27, !7, i64 12}
!39 = !{!11, !6, i64 128}
!40 = !{!11, !6, i64 132}
!41 = !{!11, !6, i64 152}
!42 = !{!11, !6, i64 156}
!43 = !{!11, !6, i64 164}
!44 = !{!11, !6, i64 168}
!45 = !{!11, !6, i64 136}
!46 = !{!11, !6, i64 140}
!47 = !{!11, !6, i64 176}
!48 = !{!11, !6, i64 144}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass