; 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_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_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_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_generated_code = type { ptr, i32, i32, i32, i32, i32, 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_generator_mateqn_load_arg_to_2d_reg_block = external hidden unnamed_addr constant [301 x i8], align 1

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_generator_matequation_regblocks_vmove_instruction(i32 noundef) #0

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateqn_load_arg_to_2d_reg_block(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11) #0 {
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i8, align 1
  %38 = alloca i32, align 4
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca i8, align 1
  %44 = alloca i8, align 1
  %45 = alloca i8, align 1
  %46 = alloca i8, align 1
  %47 = alloca i8, align 1
  %48 = alloca i8, align 1
  %49 = alloca i8, align 1
  %50 = alloca i32, align 4
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  %53 = alloca i8, align 1
  %54 = alloca i8, align 1
  %55 = alloca i8, align 1
  %56 = alloca i8, align 1
  %57 = alloca i8, align 1
  %58 = alloca i8, align 1
  %59 = alloca i8, align 1
  %60 = alloca i8, align 1
  %61 = alloca i8, align 1
  %62 = alloca i8, align 1
  store ptr %0, ptr %13, align 8, !tbaa !5
  store ptr %1, ptr %14, align 8, !tbaa !5
  store ptr %2, ptr %15, align 8, !tbaa !5
  store ptr %3, ptr %16, align 8, !tbaa !5
  store i32 %4, ptr %17, align 4, !tbaa !9
  store i32 %5, ptr %18, align 4, !tbaa !9
  store i32 %6, ptr %19, align 4, !tbaa !9
  store i32 %7, ptr %20, align 4, !tbaa !9
  store i32 %8, ptr %21, align 4, !tbaa !9
  store i32 %9, ptr %22, align 4, !tbaa !9
  store i32 %10, ptr %23, align 4, !tbaa !9
  store i32 %11, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %63 = load ptr, ptr %14, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %63, i32 0, i32 12
  %65 = load i32, ptr %64, align 4, !tbaa !11
  store i32 %65, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %66, i32 0, i32 13
  %68 = load i32, ptr %67, align 4, !tbaa !15
  store i32 %68, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  %69 = load ptr, ptr %15, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %69, i32 0, i32 52
  %71 = load ptr, ptr %70, align 8, !tbaa !16
  store ptr %71, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %72 = load ptr, ptr %15, align 8, !tbaa !5
  %73 = load i32, ptr %19, align 4, !tbaa !9
  %74 = call i32 @libxsmm_generator_matequation_regblocks_get_start_of_register_block(ptr noundef %72, i32 noundef %73)
  store i32 %74, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  %75 = load ptr, ptr %15, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %75, i32 0, i32 41
  %77 = load i32, ptr %76, align 4, !tbaa !22
  store i32 %77, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  %78 = load ptr, ptr %15, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %78, i32 0, i32 42
  %80 = load i32, ptr %79, align 8, !tbaa !23
  store i32 %80, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  %81 = load ptr, ptr %15, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %81, i32 0, i32 38
  %83 = load i32, ptr %82, align 8, !tbaa !24
  store i32 %83, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %84 = load ptr, ptr %15, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %84, i32 0, i32 39
  %86 = load i32, ptr %85, align 4, !tbaa !25
  store i32 %86, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #4
  %87 = load ptr, ptr %30, align 8, !tbaa !5
  %88 = load i32, ptr %17, align 4, !tbaa !9
  %89 = zext i32 %88 to i64
  %90 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %87, i64 %89
  %91 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %90, i32 0, i32 5
  %92 = load i32, ptr %91, align 4, !tbaa !26
  %93 = icmp eq i32 0, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %12
  br label %240

95:                                               ; preds = %12
  %96 = load ptr, ptr %30, align 8, !tbaa !5
  %97 = load i32, ptr %17, align 4, !tbaa !9
  %98 = zext i32 %97 to i64
  %99 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %96, i64 %98
  %100 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %99, i32 0, i32 5
  %101 = load i32, ptr %100, align 4, !tbaa !26
  %102 = icmp eq i32 1, %101
  br i1 %102, label %103, label %104

103:                                              ; preds = %95
  br label %238

104:                                              ; preds = %95
  %105 = load ptr, ptr %30, align 8, !tbaa !5
  %106 = load i32, ptr %17, align 4, !tbaa !9
  %107 = zext i32 %106 to i64
  %108 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %105, i64 %107
  %109 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %108, i32 0, i32 5
  %110 = load i32, ptr %109, align 4, !tbaa !26
  %111 = icmp eq i32 2, %110
  br i1 %111, label %112, label %113

112:                                              ; preds = %104
  br label %236

113:                                              ; preds = %104
  %114 = load ptr, ptr %30, align 8, !tbaa !5
  %115 = load i32, ptr %17, align 4, !tbaa !9
  %116 = zext i32 %115 to i64
  %117 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %114, i64 %116
  %118 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %117, i32 0, i32 5
  %119 = load i32, ptr %118, align 4, !tbaa !26
  %120 = icmp eq i32 3, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %113
  br label %234

122:                                              ; preds = %113
  %123 = load ptr, ptr %30, align 8, !tbaa !5
  %124 = load i32, ptr %17, align 4, !tbaa !9
  %125 = zext i32 %124 to i64
  %126 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %123, i64 %125
  %127 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %126, i32 0, i32 5
  %128 = load i32, ptr %127, align 4, !tbaa !26
  %129 = icmp eq i32 4, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %122
  br label %232

131:                                              ; preds = %122
  %132 = load ptr, ptr %30, align 8, !tbaa !5
  %133 = load i32, ptr %17, align 4, !tbaa !9
  %134 = zext i32 %133 to i64
  %135 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %132, i64 %134
  %136 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %135, i32 0, i32 5
  %137 = load i32, ptr %136, align 4, !tbaa !26
  %138 = icmp eq i32 5, %137
  br i1 %138, label %139, label %140

139:                                              ; preds = %131
  br label %230

140:                                              ; preds = %131
  %141 = load ptr, ptr %30, align 8, !tbaa !5
  %142 = load i32, ptr %17, align 4, !tbaa !9
  %143 = zext i32 %142 to i64
  %144 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %141, i64 %143
  %145 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %144, i32 0, i32 5
  %146 = load i32, ptr %145, align 4, !tbaa !26
  %147 = icmp eq i32 6, %146
  br i1 %147, label %148, label %149

148:                                              ; preds = %140
  br label %228

149:                                              ; preds = %140
  %150 = load ptr, ptr %30, align 8, !tbaa !5
  %151 = load i32, ptr %17, align 4, !tbaa !9
  %152 = zext i32 %151 to i64
  %153 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %150, i64 %152
  %154 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %153, i32 0, i32 5
  %155 = load i32, ptr %154, align 4, !tbaa !26
  %156 = icmp eq i32 7, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %149
  br label %226

158:                                              ; preds = %149
  %159 = load ptr, ptr %30, align 8, !tbaa !5
  %160 = load i32, ptr %17, align 4, !tbaa !9
  %161 = zext i32 %160 to i64
  %162 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %159, i64 %161
  %163 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %162, i32 0, i32 5
  %164 = load i32, ptr %163, align 4, !tbaa !26
  %165 = icmp eq i32 8, %164
  br i1 %165, label %166, label %167

166:                                              ; preds = %158
  br label %224

167:                                              ; preds = %158
  %168 = load ptr, ptr %30, align 8, !tbaa !5
  %169 = load i32, ptr %17, align 4, !tbaa !9
  %170 = zext i32 %169 to i64
  %171 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %168, i64 %170
  %172 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %171, i32 0, i32 5
  %173 = load i32, ptr %172, align 4, !tbaa !26
  %174 = icmp eq i32 9, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %167
  br label %222

176:                                              ; preds = %167
  %177 = load ptr, ptr %30, align 8, !tbaa !5
  %178 = load i32, ptr %17, align 4, !tbaa !9
  %179 = zext i32 %178 to i64
  %180 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %177, i64 %179
  %181 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %180, i32 0, i32 5
  %182 = load i32, ptr %181, align 4, !tbaa !26
  %183 = icmp eq i32 10, %182
  br i1 %183, label %184, label %185

184:                                              ; preds = %176
  br label %220

185:                                              ; preds = %176
  %186 = load ptr, ptr %30, align 8, !tbaa !5
  %187 = load i32, ptr %17, align 4, !tbaa !9
  %188 = zext i32 %187 to i64
  %189 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %186, i64 %188
  %190 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %189, i32 0, i32 5
  %191 = load i32, ptr %190, align 4, !tbaa !26
  %192 = icmp eq i32 11, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %185
  br label %218

194:                                              ; preds = %185
  %195 = load ptr, ptr %30, align 8, !tbaa !5
  %196 = load i32, ptr %17, align 4, !tbaa !9
  %197 = zext i32 %196 to i64
  %198 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %195, i64 %197
  %199 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %198, i32 0, i32 5
  %200 = load i32, ptr %199, align 4, !tbaa !26
  %201 = icmp eq i32 12, %200
  br i1 %201, label %202, label %203

202:                                              ; preds = %194
  br label %216

203:                                              ; preds = %194
  %204 = load ptr, ptr %30, align 8, !tbaa !5
  %205 = load i32, ptr %17, align 4, !tbaa !9
  %206 = zext i32 %205 to i64
  %207 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %204, i64 %206
  %208 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %207, i32 0, i32 5
  %209 = load i32, ptr %208, align 4, !tbaa !26
  %210 = icmp eq i32 13, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %203
  br label %214

212:                                              ; preds = %203
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 582, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #5
  unreachable

213:                                              ; No predecessors!
  br label %214

214:                                              ; preds = %213, %211
  %215 = phi i32 [ 1, %211 ], [ 0, %213 ]
  br label %216

216:                                              ; preds = %214, %202
  %217 = phi i32 [ 1, %202 ], [ %215, %214 ]
  br label %218

218:                                              ; preds = %216, %193
  %219 = phi i32 [ 2, %193 ], [ %217, %216 ]
  br label %220

220:                                              ; preds = %218, %184
  %221 = phi i32 [ 2, %184 ], [ %219, %218 ]
  br label %222

222:                                              ; preds = %220, %175
  %223 = phi i32 [ 4, %175 ], [ %221, %220 ]
  br label %224

224:                                              ; preds = %222, %166
  %225 = phi i32 [ 4, %166 ], [ %223, %222 ]
  br label %226

226:                                              ; preds = %224, %157
  %227 = phi i32 [ 8, %157 ], [ %225, %224 ]
  br label %228

228:                                              ; preds = %226, %148
  %229 = phi i32 [ 8, %148 ], [ %227, %226 ]
  br label %230

230:                                              ; preds = %228, %139
  %231 = phi i32 [ 1, %139 ], [ %229, %228 ]
  br label %232

232:                                              ; preds = %230, %130
  %233 = phi i32 [ 1, %130 ], [ %231, %230 ]
  br label %234

234:                                              ; preds = %232, %121
  %235 = phi i32 [ 2, %121 ], [ %233, %232 ]
  br label %236

236:                                              ; preds = %234, %112
  %237 = phi i32 [ 2, %112 ], [ %235, %234 ]
  br label %238

238:                                              ; preds = %236, %103
  %239 = phi i32 [ 4, %103 ], [ %237, %236 ]
  br label %240

240:                                              ; preds = %238, %94
  %241 = phi i32 [ 8, %94 ], [ %239, %238 ]
  %242 = load i32, ptr %18, align 4, !tbaa !9
  %243 = mul i32 %241, %242
  %244 = icmp eq i32 %243, 64
  br i1 %244, label %245, label %246

245:                                              ; preds = %240
  br label %407

246:                                              ; preds = %240
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  %248 = load i32, ptr %17, align 4, !tbaa !9
  %249 = zext i32 %248 to i64
  %250 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %247, i64 %249
  %251 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %250, i32 0, i32 5
  %252 = load i32, ptr %251, align 4, !tbaa !26
  %253 = icmp eq i32 0, %252
  br i1 %253, label %254, label %255

254:                                              ; preds = %246
  br label %400

255:                                              ; preds = %246
  %256 = load ptr, ptr %30, align 8, !tbaa !5
  %257 = load i32, ptr %17, align 4, !tbaa !9
  %258 = zext i32 %257 to i64
  %259 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %256, i64 %258
  %260 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %259, i32 0, i32 5
  %261 = load i32, ptr %260, align 4, !tbaa !26
  %262 = icmp eq i32 1, %261
  br i1 %262, label %263, label %264

263:                                              ; preds = %255
  br label %398

264:                                              ; preds = %255
  %265 = load ptr, ptr %30, align 8, !tbaa !5
  %266 = load i32, ptr %17, align 4, !tbaa !9
  %267 = zext i32 %266 to i64
  %268 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %265, i64 %267
  %269 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %268, i32 0, i32 5
  %270 = load i32, ptr %269, align 4, !tbaa !26
  %271 = icmp eq i32 2, %270
  br i1 %271, label %272, label %273

272:                                              ; preds = %264
  br label %396

273:                                              ; preds = %264
  %274 = load ptr, ptr %30, align 8, !tbaa !5
  %275 = load i32, ptr %17, align 4, !tbaa !9
  %276 = zext i32 %275 to i64
  %277 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %274, i64 %276
  %278 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %277, i32 0, i32 5
  %279 = load i32, ptr %278, align 4, !tbaa !26
  %280 = icmp eq i32 3, %279
  br i1 %280, label %281, label %282

281:                                              ; preds = %273
  br label %394

282:                                              ; preds = %273
  %283 = load ptr, ptr %30, align 8, !tbaa !5
  %284 = load i32, ptr %17, align 4, !tbaa !9
  %285 = zext i32 %284 to i64
  %286 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %283, i64 %285
  %287 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %286, i32 0, i32 5
  %288 = load i32, ptr %287, align 4, !tbaa !26
  %289 = icmp eq i32 4, %288
  br i1 %289, label %290, label %291

290:                                              ; preds = %282
  br label %392

291:                                              ; preds = %282
  %292 = load ptr, ptr %30, align 8, !tbaa !5
  %293 = load i32, ptr %17, align 4, !tbaa !9
  %294 = zext i32 %293 to i64
  %295 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %292, i64 %294
  %296 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %295, i32 0, i32 5
  %297 = load i32, ptr %296, align 4, !tbaa !26
  %298 = icmp eq i32 5, %297
  br i1 %298, label %299, label %300

299:                                              ; preds = %291
  br label %390

300:                                              ; preds = %291
  %301 = load ptr, ptr %30, align 8, !tbaa !5
  %302 = load i32, ptr %17, align 4, !tbaa !9
  %303 = zext i32 %302 to i64
  %304 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %301, i64 %303
  %305 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %304, i32 0, i32 5
  %306 = load i32, ptr %305, align 4, !tbaa !26
  %307 = icmp eq i32 6, %306
  br i1 %307, label %308, label %309

308:                                              ; preds = %300
  br label %388

309:                                              ; preds = %300
  %310 = load ptr, ptr %30, align 8, !tbaa !5
  %311 = load i32, ptr %17, align 4, !tbaa !9
  %312 = zext i32 %311 to i64
  %313 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %310, i64 %312
  %314 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %313, i32 0, i32 5
  %315 = load i32, ptr %314, align 4, !tbaa !26
  %316 = icmp eq i32 7, %315
  br i1 %316, label %317, label %318

317:                                              ; preds = %309
  br label %386

318:                                              ; preds = %309
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = load i32, ptr %17, align 4, !tbaa !9
  %321 = zext i32 %320 to i64
  %322 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %319, i64 %321
  %323 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %322, i32 0, i32 5
  %324 = load i32, ptr %323, align 4, !tbaa !26
  %325 = icmp eq i32 8, %324
  br i1 %325, label %326, label %327

326:                                              ; preds = %318
  br label %384

327:                                              ; preds = %318
  %328 = load ptr, ptr %30, align 8, !tbaa !5
  %329 = load i32, ptr %17, align 4, !tbaa !9
  %330 = zext i32 %329 to i64
  %331 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %328, i64 %330
  %332 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %331, i32 0, i32 5
  %333 = load i32, ptr %332, align 4, !tbaa !26
  %334 = icmp eq i32 9, %333
  br i1 %334, label %335, label %336

335:                                              ; preds = %327
  br label %382

336:                                              ; preds = %327
  %337 = load ptr, ptr %30, align 8, !tbaa !5
  %338 = load i32, ptr %17, align 4, !tbaa !9
  %339 = zext i32 %338 to i64
  %340 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %337, i64 %339
  %341 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %340, i32 0, i32 5
  %342 = load i32, ptr %341, align 4, !tbaa !26
  %343 = icmp eq i32 10, %342
  br i1 %343, label %344, label %345

344:                                              ; preds = %336
  br label %380

345:                                              ; preds = %336
  %346 = load ptr, ptr %30, align 8, !tbaa !5
  %347 = load i32, ptr %17, align 4, !tbaa !9
  %348 = zext i32 %347 to i64
  %349 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %346, i64 %348
  %350 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %349, i32 0, i32 5
  %351 = load i32, ptr %350, align 4, !tbaa !26
  %352 = icmp eq i32 11, %351
  br i1 %352, label %353, label %354

353:                                              ; preds = %345
  br label %378

354:                                              ; preds = %345
  %355 = load ptr, ptr %30, align 8, !tbaa !5
  %356 = load i32, ptr %17, align 4, !tbaa !9
  %357 = zext i32 %356 to i64
  %358 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %355, i64 %357
  %359 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %358, i32 0, i32 5
  %360 = load i32, ptr %359, align 4, !tbaa !26
  %361 = icmp eq i32 12, %360
  br i1 %361, label %362, label %363

362:                                              ; preds = %354
  br label %376

363:                                              ; preds = %354
  %364 = load ptr, ptr %30, align 8, !tbaa !5
  %365 = load i32, ptr %17, align 4, !tbaa !9
  %366 = zext i32 %365 to i64
  %367 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %364, i64 %366
  %368 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %367, i32 0, i32 5
  %369 = load i32, ptr %368, align 4, !tbaa !26
  %370 = icmp eq i32 13, %369
  br i1 %370, label %371, label %372

371:                                              ; preds = %363
  br label %374

372:                                              ; preds = %363
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 582, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #5
  unreachable

373:                                              ; No predecessors!
  br label %374

374:                                              ; preds = %373, %371
  %375 = phi i32 [ 1, %371 ], [ 0, %373 ]
  br label %376

376:                                              ; preds = %374, %362
  %377 = phi i32 [ 1, %362 ], [ %375, %374 ]
  br label %378

378:                                              ; preds = %376, %353
  %379 = phi i32 [ 2, %353 ], [ %377, %376 ]
  br label %380

380:                                              ; preds = %378, %344
  %381 = phi i32 [ 2, %344 ], [ %379, %378 ]
  br label %382

382:                                              ; preds = %380, %335
  %383 = phi i32 [ 4, %335 ], [ %381, %380 ]
  br label %384

384:                                              ; preds = %382, %326
  %385 = phi i32 [ 4, %326 ], [ %383, %382 ]
  br label %386

386:                                              ; preds = %384, %317
  %387 = phi i32 [ 8, %317 ], [ %385, %384 ]
  br label %388

388:                                              ; preds = %386, %308
  %389 = phi i32 [ 8, %308 ], [ %387, %386 ]
  br label %390

390:                                              ; preds = %388, %299
  %391 = phi i32 [ 1, %299 ], [ %389, %388 ]
  br label %392

392:                                              ; preds = %390, %290
  %393 = phi i32 [ 1, %290 ], [ %391, %390 ]
  br label %394

394:                                              ; preds = %392, %281
  %395 = phi i32 [ 2, %281 ], [ %393, %392 ]
  br label %396

396:                                              ; preds = %394, %272
  %397 = phi i32 [ 2, %272 ], [ %395, %394 ]
  br label %398

398:                                              ; preds = %396, %263
  %399 = phi i32 [ 4, %263 ], [ %397, %396 ]
  br label %400

400:                                              ; preds = %398, %254
  %401 = phi i32 [ 8, %254 ], [ %399, %398 ]
  %402 = load i32, ptr %18, align 4, !tbaa !9
  %403 = mul i32 %401, %402
  %404 = icmp eq i32 %403, 32
  %405 = zext i1 %404 to i64
  %406 = select i1 %404, i32 121, i32 120
  br label %407

407:                                              ; preds = %400, %245
  %408 = phi i32 [ 122, %245 ], [ %406, %400 ]
  %409 = trunc i32 %408 to i8
  store i8 %409, ptr %37, align 1, !tbaa !26
  %410 = load ptr, ptr %16, align 8, !tbaa !5
  %411 = load i32, ptr %17, align 4, !tbaa !9
  %412 = load ptr, ptr %15, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %412, i32 0, i32 46
  %414 = load i32, ptr %413, align 8, !tbaa !27
  %415 = icmp ult i32 %411, %414
  br i1 %415, label %416, label %423

416:                                              ; preds = %407
  %417 = load ptr, ptr %15, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %417, i32 0, i32 47
  %419 = load i32, ptr %17, align 4, !tbaa !9
  %420 = zext i32 %419 to i64
  %421 = getelementptr inbounds [32 x i32], ptr %418, i64 0, i64 %420
  %422 = load i32, ptr %421, align 4, !tbaa !9
  store i32 %422, ptr %32, align 4, !tbaa !9
  br label %435

423:                                              ; preds = %407
  %424 = load ptr, ptr %13, align 8, !tbaa !5
  %425 = load i32, ptr %17, align 4, !tbaa !9
  %426 = mul i32 %425, 8
  %427 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_meqn_getaddr_stack_tmpaddr_i(ptr noundef %424, i32 noundef %426, i32 noundef %427)
  %428 = load ptr, ptr %13, align 8, !tbaa !5
  %429 = load ptr, ptr %15, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %429, i32 0, i32 10
  %431 = load i32, ptr %430, align 8, !tbaa !28
  %432 = load i32, ptr %28, align 4, !tbaa !9
  %433 = load i32, ptr %27, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %428, i32 noundef %431, i32 noundef %432, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %433, i32 noundef 0)
  %434 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %434, ptr %32, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %423, %416
  %436 = load ptr, ptr %30, align 8, !tbaa !5
  %437 = load i32, ptr %17, align 4, !tbaa !9
  %438 = zext i32 %437 to i64
  %439 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %436, i64 %438
  %440 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %439, i32 0, i32 5
  %441 = load i32, ptr %440, align 4, !tbaa !26
  %442 = icmp eq i32 %441, 2
  br i1 %442, label %451, label %443

443:                                              ; preds = %435
  %444 = load ptr, ptr %30, align 8, !tbaa !5
  %445 = load i32, ptr %17, align 4, !tbaa !9
  %446 = zext i32 %445 to i64
  %447 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %444, i64 %446
  %448 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %447, i32 0, i32 5
  %449 = load i32, ptr %448, align 4, !tbaa !26
  %450 = icmp eq i32 %449, 3
  br i1 %450, label %451, label %470

451:                                              ; preds = %443, %435
  %452 = load ptr, ptr %13, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %452, i32 0, i32 6
  %454 = load i32, ptr %453, align 4, !tbaa !29
  %455 = icmp ult i32 %454, 1051
  br i1 %455, label %456, label %469

456:                                              ; preds = %451
  %457 = load i32, ptr %22, align 4, !tbaa !9
  %458 = icmp ugt i32 %457, 0
  br i1 %458, label %459, label %468

459:                                              ; preds = %456
  %460 = load ptr, ptr %30, align 8, !tbaa !5
  %461 = load i32, ptr %17, align 4, !tbaa !9
  %462 = zext i32 %461 to i64
  %463 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %460, i64 %462
  %464 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %463, i32 0, i32 0
  %465 = load i32, ptr %464, align 4, !tbaa !26
  %466 = load i32, ptr %18, align 4, !tbaa !9
  %467 = urem i32 %465, %466
  store i32 %467, ptr %23, align 4, !tbaa !9
  br label %468

468:                                              ; preds = %459, %456
  br label %469

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

470:                                              ; preds = %469, %443
  %471 = load ptr, ptr %30, align 8, !tbaa !5
  %472 = load i32, ptr %17, align 4, !tbaa !9
  %473 = zext i32 %472 to i64
  %474 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %471, i64 %473
  %475 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %474, i32 0, i32 6
  %476 = load i32, ptr %475, align 4, !tbaa !26
  %477 = icmp eq i32 %476, 0
  br i1 %477, label %478, label %851

478:                                              ; preds = %470
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %479

479:                                              ; preds = %847, %478
  %480 = load i32, ptr %25, align 4, !tbaa !9
  %481 = load i32, ptr %21, align 4, !tbaa !9
  %482 = icmp ult i32 %480, %481
  br i1 %482, label %483, label %850

483:                                              ; preds = %479
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %843, %483
  %485 = load i32, ptr %26, align 4, !tbaa !9
  %486 = load i32, ptr %20, align 4, !tbaa !9
  %487 = icmp ult i32 %485, %486
  br i1 %487, label %488, label %846

488:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  %489 = load ptr, ptr %30, align 8, !tbaa !5
  %490 = load i32, ptr %17, align 4, !tbaa !9
  %491 = zext i32 %490 to i64
  %492 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %489, i64 %491
  %493 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %492, i32 0, i32 5
  %494 = load i32, ptr %493, align 4, !tbaa !26
  %495 = icmp eq i32 4, %494
  br i1 %495, label %504, label %496

496:                                              ; preds = %488
  %497 = load ptr, ptr %30, align 8, !tbaa !5
  %498 = load i32, ptr %17, align 4, !tbaa !9
  %499 = zext i32 %498 to i64
  %500 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %497, i64 %499
  %501 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %500, i32 0, i32 5
  %502 = load i32, ptr %501, align 4, !tbaa !26
  %503 = icmp eq i32 5, %502
  br i1 %503, label %504, label %518

504:                                              ; preds = %496, %488
  %505 = load ptr, ptr %13, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %505, i32 0, i32 6
  %507 = load i32, ptr %506, align 4, !tbaa !29
  %508 = icmp ult i32 %507, 1101
  br i1 %508, label %509, label %518

509:                                              ; preds = %504
  %510 = load i32, ptr %22, align 4, !tbaa !9
  %511 = icmp eq i32 %510, 1
  br i1 %511, label %512, label %517

512:                                              ; preds = %509
  %513 = load i32, ptr %26, align 4, !tbaa !9
  %514 = load i32, ptr %20, align 4, !tbaa !9
  %515 = sub i32 %514, 1
  %516 = icmp eq i32 %513, %515
  br i1 %516, label %518, label %517

517:                                              ; preds = %512, %509
  br label %526

518:                                              ; preds = %512, %504, %496
  %519 = load ptr, ptr %30, align 8, !tbaa !5
  %520 = load i32, ptr %17, align 4, !tbaa !9
  %521 = zext i32 %520 to i64
  %522 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %519, i64 %521
  %523 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %522, i32 0, i32 5
  %524 = load i32, ptr %523, align 4, !tbaa !26
  %525 = call i32 @libxsmm_generator_matequation_regblocks_vmove_instruction(i32 noundef %524)
  br label %526

526:                                              ; preds = %518, %517
  %527 = phi i32 [ 545725200, %517 ], [ %525, %518 ]
  store i32 %527, ptr %38, align 4, !tbaa !9
  %528 = load i32, ptr %31, align 4, !tbaa !9
  %529 = load i32, ptr %25, align 4, !tbaa !9
  %530 = load i32, ptr %20, align 4, !tbaa !9
  %531 = mul i32 %529, %530
  %532 = add i32 %528, %531
  %533 = load i32, ptr %26, align 4, !tbaa !9
  %534 = add i32 %532, %533
  store i32 %534, ptr %29, align 4, !tbaa !9
  %535 = load ptr, ptr %13, align 8, !tbaa !5
  %536 = load i32, ptr %38, align 4, !tbaa !9
  %537 = load i32, ptr %32, align 4, !tbaa !9
  %538 = load i32, ptr %26, align 4, !tbaa !9
  %539 = load i32, ptr %18, align 4, !tbaa !9
  %540 = mul i32 %538, %539
  %541 = load i32, ptr %25, align 4, !tbaa !9
  %542 = load ptr, ptr %30, align 8, !tbaa !5
  %543 = load i32, ptr %17, align 4, !tbaa !9
  %544 = zext i32 %543 to i64
  %545 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %542, i64 %544
  %546 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %545, i32 0, i32 2
  %547 = load i32, ptr %546, align 4, !tbaa !26
  %548 = mul i32 %541, %547
  %549 = add i32 %540, %548
  %550 = load ptr, ptr %30, align 8, !tbaa !5
  %551 = load i32, ptr %17, align 4, !tbaa !9
  %552 = zext i32 %551 to i64
  %553 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %550, i64 %552
  %554 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %553, i32 0, i32 5
  %555 = load i32, ptr %554, align 4, !tbaa !26
  %556 = icmp eq i32 0, %555
  br i1 %556, label %557, label %558

557:                                              ; preds = %526
  br label %703

558:                                              ; preds = %526
  %559 = load ptr, ptr %30, align 8, !tbaa !5
  %560 = load i32, ptr %17, align 4, !tbaa !9
  %561 = zext i32 %560 to i64
  %562 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %559, i64 %561
  %563 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %562, i32 0, i32 5
  %564 = load i32, ptr %563, align 4, !tbaa !26
  %565 = icmp eq i32 1, %564
  br i1 %565, label %566, label %567

566:                                              ; preds = %558
  br label %701

567:                                              ; preds = %558
  %568 = load ptr, ptr %30, align 8, !tbaa !5
  %569 = load i32, ptr %17, align 4, !tbaa !9
  %570 = zext i32 %569 to i64
  %571 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %568, i64 %570
  %572 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %571, i32 0, i32 5
  %573 = load i32, ptr %572, align 4, !tbaa !26
  %574 = icmp eq i32 2, %573
  br i1 %574, label %575, label %576

575:                                              ; preds = %567
  br label %699

576:                                              ; preds = %567
  %577 = load ptr, ptr %30, align 8, !tbaa !5
  %578 = load i32, ptr %17, align 4, !tbaa !9
  %579 = zext i32 %578 to i64
  %580 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %577, i64 %579
  %581 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %580, i32 0, i32 5
  %582 = load i32, ptr %581, align 4, !tbaa !26
  %583 = icmp eq i32 3, %582
  br i1 %583, label %584, label %585

584:                                              ; preds = %576
  br label %697

585:                                              ; preds = %576
  %586 = load ptr, ptr %30, align 8, !tbaa !5
  %587 = load i32, ptr %17, align 4, !tbaa !9
  %588 = zext i32 %587 to i64
  %589 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %586, i64 %588
  %590 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %589, i32 0, i32 5
  %591 = load i32, ptr %590, align 4, !tbaa !26
  %592 = icmp eq i32 4, %591
  br i1 %592, label %593, label %594

593:                                              ; preds = %585
  br label %695

594:                                              ; preds = %585
  %595 = load ptr, ptr %30, align 8, !tbaa !5
  %596 = load i32, ptr %17, align 4, !tbaa !9
  %597 = zext i32 %596 to i64
  %598 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %595, i64 %597
  %599 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %598, i32 0, i32 5
  %600 = load i32, ptr %599, align 4, !tbaa !26
  %601 = icmp eq i32 5, %600
  br i1 %601, label %602, label %603

602:                                              ; preds = %594
  br label %693

603:                                              ; preds = %594
  %604 = load ptr, ptr %30, align 8, !tbaa !5
  %605 = load i32, ptr %17, align 4, !tbaa !9
  %606 = zext i32 %605 to i64
  %607 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %604, i64 %606
  %608 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %607, i32 0, i32 5
  %609 = load i32, ptr %608, align 4, !tbaa !26
  %610 = icmp eq i32 6, %609
  br i1 %610, label %611, label %612

611:                                              ; preds = %603
  br label %691

612:                                              ; preds = %603
  %613 = load ptr, ptr %30, align 8, !tbaa !5
  %614 = load i32, ptr %17, align 4, !tbaa !9
  %615 = zext i32 %614 to i64
  %616 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %613, i64 %615
  %617 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %616, i32 0, i32 5
  %618 = load i32, ptr %617, align 4, !tbaa !26
  %619 = icmp eq i32 7, %618
  br i1 %619, label %620, label %621

620:                                              ; preds = %612
  br label %689

621:                                              ; preds = %612
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load i32, ptr %17, align 4, !tbaa !9
  %624 = zext i32 %623 to i64
  %625 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %622, i64 %624
  %626 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %625, i32 0, i32 5
  %627 = load i32, ptr %626, align 4, !tbaa !26
  %628 = icmp eq i32 8, %627
  br i1 %628, label %629, label %630

629:                                              ; preds = %621
  br label %687

630:                                              ; preds = %621
  %631 = load ptr, ptr %30, align 8, !tbaa !5
  %632 = load i32, ptr %17, align 4, !tbaa !9
  %633 = zext i32 %632 to i64
  %634 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %631, i64 %633
  %635 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %634, i32 0, i32 5
  %636 = load i32, ptr %635, align 4, !tbaa !26
  %637 = icmp eq i32 9, %636
  br i1 %637, label %638, label %639

638:                                              ; preds = %630
  br label %685

639:                                              ; preds = %630
  %640 = load ptr, ptr %30, align 8, !tbaa !5
  %641 = load i32, ptr %17, align 4, !tbaa !9
  %642 = zext i32 %641 to i64
  %643 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %640, i64 %642
  %644 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %643, i32 0, i32 5
  %645 = load i32, ptr %644, align 4, !tbaa !26
  %646 = icmp eq i32 10, %645
  br i1 %646, label %647, label %648

647:                                              ; preds = %639
  br label %683

648:                                              ; preds = %639
  %649 = load ptr, ptr %30, align 8, !tbaa !5
  %650 = load i32, ptr %17, align 4, !tbaa !9
  %651 = zext i32 %650 to i64
  %652 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %649, i64 %651
  %653 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %652, i32 0, i32 5
  %654 = load i32, ptr %653, align 4, !tbaa !26
  %655 = icmp eq i32 11, %654
  br i1 %655, label %656, label %657

656:                                              ; preds = %648
  br label %681

657:                                              ; preds = %648
  %658 = load ptr, ptr %30, align 8, !tbaa !5
  %659 = load i32, ptr %17, align 4, !tbaa !9
  %660 = zext i32 %659 to i64
  %661 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %658, i64 %660
  %662 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %661, i32 0, i32 5
  %663 = load i32, ptr %662, align 4, !tbaa !26
  %664 = icmp eq i32 12, %663
  br i1 %664, label %665, label %666

665:                                              ; preds = %657
  br label %679

666:                                              ; preds = %657
  %667 = load ptr, ptr %30, align 8, !tbaa !5
  %668 = load i32, ptr %17, align 4, !tbaa !9
  %669 = zext i32 %668 to i64
  %670 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %667, i64 %669
  %671 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %670, i32 0, i32 5
  %672 = load i32, ptr %671, align 4, !tbaa !26
  %673 = icmp eq i32 13, %672
  br i1 %673, label %674, label %675

674:                                              ; preds = %666
  br label %677

675:                                              ; preds = %666
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 617, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #5
  unreachable

676:                                              ; No predecessors!
  br label %677

677:                                              ; preds = %676, %674
  %678 = phi i32 [ 1, %674 ], [ 0, %676 ]
  br label %679

679:                                              ; preds = %677, %665
  %680 = phi i32 [ 1, %665 ], [ %678, %677 ]
  br label %681

681:                                              ; preds = %679, %656
  %682 = phi i32 [ 2, %656 ], [ %680, %679 ]
  br label %683

683:                                              ; preds = %681, %647
  %684 = phi i32 [ 2, %647 ], [ %682, %681 ]
  br label %685

685:                                              ; preds = %683, %638
  %686 = phi i32 [ 4, %638 ], [ %684, %683 ]
  br label %687

687:                                              ; preds = %685, %629
  %688 = phi i32 [ 4, %629 ], [ %686, %685 ]
  br label %689

689:                                              ; preds = %687, %620
  %690 = phi i32 [ 8, %620 ], [ %688, %687 ]
  br label %691

691:                                              ; preds = %689, %611
  %692 = phi i32 [ 8, %611 ], [ %690, %689 ]
  br label %693

693:                                              ; preds = %691, %602
  %694 = phi i32 [ 1, %602 ], [ %692, %691 ]
  br label %695

695:                                              ; preds = %693, %593
  %696 = phi i32 [ 1, %593 ], [ %694, %693 ]
  br label %697

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

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

701:                                              ; preds = %699, %566
  %702 = phi i32 [ 4, %566 ], [ %700, %699 ]
  br label %703

703:                                              ; preds = %701, %557
  %704 = phi i32 [ 8, %557 ], [ %702, %701 ]
  %705 = mul i32 %549, %704
  %706 = load i8, ptr %37, align 1, !tbaa !26
  %707 = load i32, ptr %29, align 4, !tbaa !9
  %708 = load i32, ptr %22, align 4, !tbaa !9
  %709 = icmp eq i32 %708, 1
  br i1 %709, label %710, label %715

710:                                              ; preds = %703
  %711 = load i32, ptr %26, align 4, !tbaa !9
  %712 = load i32, ptr %20, align 4, !tbaa !9
  %713 = sub i32 %712, 1
  %714 = icmp eq i32 %711, %713
  br label %715

715:                                              ; preds = %710, %703
  %716 = phi i1 [ false, %703 ], [ %714, %710 ]
  %717 = zext i1 %716 to i64
  %718 = select i1 %716, i32 1, i32 0
  %719 = load i32, ptr %22, align 4, !tbaa !9
  %720 = icmp eq i32 %719, 1
  br i1 %720, label %721, label %728

721:                                              ; preds = %715
  %722 = load i32, ptr %26, align 4, !tbaa !9
  %723 = load i32, ptr %20, align 4, !tbaa !9
  %724 = sub i32 %723, 1
  %725 = icmp eq i32 %722, %724
  br i1 %725, label %726, label %728

726:                                              ; preds = %721
  %727 = load i32, ptr %23, align 4, !tbaa !9
  br label %729

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

729:                                              ; preds = %728, %726
  %730 = phi i32 [ %727, %726 ], [ 0, %728 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %535, i32 noundef %536, i32 noundef %537, i32 noundef 127, i32 noundef 0, i32 noundef %705, i8 noundef signext %706, i32 noundef %707, i32 noundef %718, i32 noundef %730, i32 noundef 0)
  %731 = load i32, ptr %24, align 4, !tbaa !9
  %732 = icmp eq i32 %731, 0
  br i1 %732, label %733, label %842

733:                                              ; preds = %729
  %734 = load ptr, ptr %30, align 8, !tbaa !5
  %735 = load i32, ptr %17, align 4, !tbaa !9
  %736 = zext i32 %735 to i64
  %737 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %734, i64 %736
  %738 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %737, i32 0, i32 5
  %739 = load i32, ptr %738, align 4, !tbaa !26
  %740 = icmp eq i32 %739, 2
  br i1 %740, label %741, label %753

741:                                              ; preds = %733
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #4
  %742 = load ptr, ptr %13, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %742, i32 0, i32 6
  %744 = load i32, ptr %743, align 4, !tbaa !29
  %745 = icmp ult i32 %744, 1101
  %746 = zext i1 %745 to i64
  %747 = select i1 %745, i32 121, i32 122
  %748 = trunc i32 %747 to i8
  store i8 %748, ptr %39, align 1, !tbaa !26
  %749 = load ptr, ptr %13, align 8, !tbaa !5
  %750 = load i8, ptr %39, align 1, !tbaa !26
  %751 = load i32, ptr %29, align 4, !tbaa !9
  %752 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %749, i8 noundef signext %750, i32 noundef %751, i32 noundef %752)
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #4
  br label %841

753:                                              ; preds = %733
  %754 = load ptr, ptr %30, align 8, !tbaa !5
  %755 = load i32, ptr %17, align 4, !tbaa !9
  %756 = zext i32 %755 to i64
  %757 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %754, i64 %756
  %758 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %757, i32 0, i32 5
  %759 = load i32, ptr %758, align 4, !tbaa !26
  %760 = icmp eq i32 %759, 3
  br i1 %760, label %761, label %773

761:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #4
  %762 = load ptr, ptr %13, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %762, i32 0, i32 6
  %764 = load i32, ptr %763, align 4, !tbaa !29
  %765 = icmp ult i32 %764, 1101
  %766 = zext i1 %765 to i64
  %767 = select i1 %765, i32 121, i32 122
  %768 = trunc i32 %767 to i8
  store i8 %768, ptr %40, align 1, !tbaa !26
  %769 = load ptr, ptr %13, align 8, !tbaa !5
  %770 = load i8, ptr %40, align 1, !tbaa !26
  %771 = load i32, ptr %29, align 4, !tbaa !9
  %772 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %769, i32 noundef 537208083, i8 noundef signext %770, i32 noundef %771, i32 noundef %772)
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #4
  br label %840

773:                                              ; preds = %753
  %774 = load ptr, ptr %30, align 8, !tbaa !5
  %775 = load i32, ptr %17, align 4, !tbaa !9
  %776 = zext i32 %775 to i64
  %777 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %774, i64 %776
  %778 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %777, i32 0, i32 5
  %779 = load i32, ptr %778, align 4, !tbaa !26
  %780 = icmp eq i32 %779, 4
  br i1 %780, label %781, label %793

781:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #4
  %782 = load ptr, ptr %13, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %782, i32 0, i32 6
  %784 = load i32, ptr %783, align 4, !tbaa !29
  %785 = icmp ult i32 %784, 1101
  %786 = zext i1 %785 to i64
  %787 = select i1 %785, i32 121, i32 122
  %788 = trunc i32 %787 to i8
  store i8 %788, ptr %41, align 1, !tbaa !26
  %789 = load ptr, ptr %13, align 8, !tbaa !5
  %790 = load i8, ptr %41, align 1, !tbaa !26
  %791 = load i32, ptr %29, align 4, !tbaa !9
  %792 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %789, i8 noundef signext %790, i32 noundef %791, i32 noundef %792)
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #4
  br label %839

793:                                              ; preds = %773
  %794 = load ptr, ptr %30, align 8, !tbaa !5
  %795 = load i32, ptr %17, align 4, !tbaa !9
  %796 = zext i32 %795 to i64
  %797 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %794, i64 %796
  %798 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %797, i32 0, i32 5
  %799 = load i32, ptr %798, align 4, !tbaa !26
  %800 = icmp eq i32 %799, 5
  br i1 %800, label %801, label %817

801:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #4
  %802 = load ptr, ptr %13, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %802, i32 0, i32 6
  %804 = load i32, ptr %803, align 4, !tbaa !29
  %805 = icmp ult i32 %804, 1101
  %806 = zext i1 %805 to i64
  %807 = select i1 %805, i32 121, i32 122
  %808 = trunc i32 %807 to i8
  store i8 %808, ptr %42, align 1, !tbaa !26
  %809 = load ptr, ptr %13, align 8, !tbaa !5
  %810 = load i8, ptr %42, align 1, !tbaa !26
  %811 = load i32, ptr %29, align 4, !tbaa !9
  %812 = load i32, ptr %29, align 4, !tbaa !9
  %813 = load i32, ptr %33, align 4, !tbaa !9
  %814 = load i32, ptr %34, align 4, !tbaa !9
  %815 = load i32, ptr %35, align 4, !tbaa !9
  %816 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %809, i8 noundef signext %810, i32 noundef %811, i32 noundef %812, i32 noundef %813, i32 noundef %814, i32 noundef %815, i32 noundef %816)
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #4
  br label %838

817:                                              ; preds = %793
  %818 = load ptr, ptr %30, align 8, !tbaa !5
  %819 = load i32, ptr %17, align 4, !tbaa !9
  %820 = zext i32 %819 to i64
  %821 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %818, i64 %820
  %822 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %821, i32 0, i32 5
  %823 = load i32, ptr %822, align 4, !tbaa !26
  %824 = icmp eq i32 %823, 8
  br i1 %824, label %825, label %837

825:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #4
  %826 = load ptr, ptr %13, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %826, i32 0, i32 6
  %828 = load i32, ptr %827, align 4, !tbaa !29
  %829 = icmp ult i32 %828, 1101
  %830 = zext i1 %829 to i64
  %831 = select i1 %829, i32 121, i32 122
  %832 = trunc i32 %831 to i8
  store i8 %832, ptr %43, align 1, !tbaa !26
  %833 = load ptr, ptr %13, align 8, !tbaa !5
  %834 = load i8, ptr %43, align 1, !tbaa !26
  %835 = load i32, ptr %29, align 4, !tbaa !9
  %836 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %833, i32 noundef 537138779, i8 noundef signext %834, i32 noundef %835, i32 noundef 255, i32 noundef %836, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #4
  br label %837

837:                                              ; preds = %825, %817
  br label %838

838:                                              ; preds = %837, %801
  br label %839

839:                                              ; preds = %838, %781
  br label %840

840:                                              ; preds = %839, %761
  br label %841

841:                                              ; preds = %840, %741
  br label %842

842:                                              ; preds = %841, %729
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  br label %843

843:                                              ; preds = %842
  %844 = load i32, ptr %26, align 4, !tbaa !9
  %845 = add i32 %844, 1
  store i32 %845, ptr %26, align 4, !tbaa !9
  br label %484, !llvm.loop !31

846:                                              ; preds = %484
  br label %847

847:                                              ; preds = %846
  %848 = load i32, ptr %25, align 4, !tbaa !9
  %849 = add i32 %848, 1
  store i32 %849, ptr %25, align 4, !tbaa !9
  br label %479, !llvm.loop !33

850:                                              ; preds = %479
  br label %1789

851:                                              ; preds = %470
  %852 = load ptr, ptr %30, align 8, !tbaa !5
  %853 = load i32, ptr %17, align 4, !tbaa !9
  %854 = zext i32 %853 to i64
  %855 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %852, i64 %854
  %856 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %855, i32 0, i32 6
  %857 = load i32, ptr %856, align 4, !tbaa !26
  %858 = icmp eq i32 %857, 1
  br i1 %858, label %859, label %1195

859:                                              ; preds = %851
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %860

860:                                              ; preds = %1191, %859
  %861 = load i32, ptr %25, align 4, !tbaa !9
  %862 = load i32, ptr %21, align 4, !tbaa !9
  %863 = icmp ult i32 %861, %862
  br i1 %863, label %864, label %1194

864:                                              ; preds = %860
  store i32 0, ptr %26, align 4, !tbaa !9
  %865 = load i32, ptr %31, align 4, !tbaa !9
  %866 = load i32, ptr %25, align 4, !tbaa !9
  %867 = load i32, ptr %20, align 4, !tbaa !9
  %868 = mul i32 %866, %867
  %869 = add i32 %865, %868
  %870 = load i32, ptr %26, align 4, !tbaa !9
  %871 = add i32 %869, %870
  store i32 %871, ptr %29, align 4, !tbaa !9
  %872 = load ptr, ptr %13, align 8, !tbaa !5
  %873 = load ptr, ptr %13, align 8, !tbaa !5
  %874 = load ptr, ptr %30, align 8, !tbaa !5
  %875 = load i32, ptr %17, align 4, !tbaa !9
  %876 = zext i32 %875 to i64
  %877 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %874, i64 %876
  %878 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %877, i32 0, i32 5
  %879 = load i32, ptr %878, align 4, !tbaa !26
  %880 = call i32 @libxsmm_generator_matequation_regblocks_vbcast_instruction(ptr noundef %873, i32 noundef %879)
  %881 = load i32, ptr %32, align 4, !tbaa !9
  %882 = load i32, ptr %25, align 4, !tbaa !9
  %883 = load ptr, ptr %30, align 8, !tbaa !5
  %884 = load i32, ptr %17, align 4, !tbaa !9
  %885 = zext i32 %884 to i64
  %886 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %883, i64 %885
  %887 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %886, i32 0, i32 2
  %888 = load i32, ptr %887, align 4, !tbaa !26
  %889 = mul i32 %882, %888
  %890 = load ptr, ptr %30, align 8, !tbaa !5
  %891 = load i32, ptr %17, align 4, !tbaa !9
  %892 = zext i32 %891 to i64
  %893 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %890, i64 %892
  %894 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %893, i32 0, i32 5
  %895 = load i32, ptr %894, align 4, !tbaa !26
  %896 = icmp eq i32 0, %895
  br i1 %896, label %897, label %898

897:                                              ; preds = %864
  br label %1043

898:                                              ; preds = %864
  %899 = load ptr, ptr %30, align 8, !tbaa !5
  %900 = load i32, ptr %17, align 4, !tbaa !9
  %901 = zext i32 %900 to i64
  %902 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %899, i64 %901
  %903 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %902, i32 0, i32 5
  %904 = load i32, ptr %903, align 4, !tbaa !26
  %905 = icmp eq i32 1, %904
  br i1 %905, label %906, label %907

906:                                              ; preds = %898
  br label %1041

907:                                              ; preds = %898
  %908 = load ptr, ptr %30, align 8, !tbaa !5
  %909 = load i32, ptr %17, align 4, !tbaa !9
  %910 = zext i32 %909 to i64
  %911 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %908, i64 %910
  %912 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %911, i32 0, i32 5
  %913 = load i32, ptr %912, align 4, !tbaa !26
  %914 = icmp eq i32 2, %913
  br i1 %914, label %915, label %916

915:                                              ; preds = %907
  br label %1039

916:                                              ; preds = %907
  %917 = load ptr, ptr %30, align 8, !tbaa !5
  %918 = load i32, ptr %17, align 4, !tbaa !9
  %919 = zext i32 %918 to i64
  %920 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %917, i64 %919
  %921 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %920, i32 0, i32 5
  %922 = load i32, ptr %921, align 4, !tbaa !26
  %923 = icmp eq i32 3, %922
  br i1 %923, label %924, label %925

924:                                              ; preds = %916
  br label %1037

925:                                              ; preds = %916
  %926 = load ptr, ptr %30, align 8, !tbaa !5
  %927 = load i32, ptr %17, align 4, !tbaa !9
  %928 = zext i32 %927 to i64
  %929 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %926, i64 %928
  %930 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %929, i32 0, i32 5
  %931 = load i32, ptr %930, align 4, !tbaa !26
  %932 = icmp eq i32 4, %931
  br i1 %932, label %933, label %934

933:                                              ; preds = %925
  br label %1035

934:                                              ; preds = %925
  %935 = load ptr, ptr %30, align 8, !tbaa !5
  %936 = load i32, ptr %17, align 4, !tbaa !9
  %937 = zext i32 %936 to i64
  %938 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %935, i64 %937
  %939 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %938, i32 0, i32 5
  %940 = load i32, ptr %939, align 4, !tbaa !26
  %941 = icmp eq i32 5, %940
  br i1 %941, label %942, label %943

942:                                              ; preds = %934
  br label %1033

943:                                              ; preds = %934
  %944 = load ptr, ptr %30, align 8, !tbaa !5
  %945 = load i32, ptr %17, align 4, !tbaa !9
  %946 = zext i32 %945 to i64
  %947 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %944, i64 %946
  %948 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %947, i32 0, i32 5
  %949 = load i32, ptr %948, align 4, !tbaa !26
  %950 = icmp eq i32 6, %949
  br i1 %950, label %951, label %952

951:                                              ; preds = %943
  br label %1031

952:                                              ; preds = %943
  %953 = load ptr, ptr %30, align 8, !tbaa !5
  %954 = load i32, ptr %17, align 4, !tbaa !9
  %955 = zext i32 %954 to i64
  %956 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %953, i64 %955
  %957 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %956, i32 0, i32 5
  %958 = load i32, ptr %957, align 4, !tbaa !26
  %959 = icmp eq i32 7, %958
  br i1 %959, label %960, label %961

960:                                              ; preds = %952
  br label %1029

961:                                              ; preds = %952
  %962 = load ptr, ptr %30, align 8, !tbaa !5
  %963 = load i32, ptr %17, align 4, !tbaa !9
  %964 = zext i32 %963 to i64
  %965 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %962, i64 %964
  %966 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %965, i32 0, i32 5
  %967 = load i32, ptr %966, align 4, !tbaa !26
  %968 = icmp eq i32 8, %967
  br i1 %968, label %969, label %970

969:                                              ; preds = %961
  br label %1027

970:                                              ; preds = %961
  %971 = load ptr, ptr %30, align 8, !tbaa !5
  %972 = load i32, ptr %17, align 4, !tbaa !9
  %973 = zext i32 %972 to i64
  %974 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %971, i64 %973
  %975 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %974, i32 0, i32 5
  %976 = load i32, ptr %975, align 4, !tbaa !26
  %977 = icmp eq i32 9, %976
  br i1 %977, label %978, label %979

978:                                              ; preds = %970
  br label %1025

979:                                              ; preds = %970
  %980 = load ptr, ptr %30, align 8, !tbaa !5
  %981 = load i32, ptr %17, align 4, !tbaa !9
  %982 = zext i32 %981 to i64
  %983 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %980, i64 %982
  %984 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %983, i32 0, i32 5
  %985 = load i32, ptr %984, align 4, !tbaa !26
  %986 = icmp eq i32 10, %985
  br i1 %986, label %987, label %988

987:                                              ; preds = %979
  br label %1023

988:                                              ; preds = %979
  %989 = load ptr, ptr %30, align 8, !tbaa !5
  %990 = load i32, ptr %17, align 4, !tbaa !9
  %991 = zext i32 %990 to i64
  %992 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %989, i64 %991
  %993 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %992, i32 0, i32 5
  %994 = load i32, ptr %993, align 4, !tbaa !26
  %995 = icmp eq i32 11, %994
  br i1 %995, label %996, label %997

996:                                              ; preds = %988
  br label %1021

997:                                              ; preds = %988
  %998 = load ptr, ptr %30, align 8, !tbaa !5
  %999 = load i32, ptr %17, align 4, !tbaa !9
  %1000 = zext i32 %999 to i64
  %1001 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %998, i64 %1000
  %1002 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1001, i32 0, i32 5
  %1003 = load i32, ptr %1002, align 4, !tbaa !26
  %1004 = icmp eq i32 12, %1003
  br i1 %1004, label %1005, label %1006

1005:                                             ; preds = %997
  br label %1019

1006:                                             ; preds = %997
  %1007 = load ptr, ptr %30, align 8, !tbaa !5
  %1008 = load i32, ptr %17, align 4, !tbaa !9
  %1009 = zext i32 %1008 to i64
  %1010 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1007, i64 %1009
  %1011 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1010, i32 0, i32 5
  %1012 = load i32, ptr %1011, align 4, !tbaa !26
  %1013 = icmp eq i32 13, %1012
  br i1 %1013, label %1014, label %1015

1014:                                             ; preds = %1006
  br label %1017

1015:                                             ; preds = %1006
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 651, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #5
  unreachable

1016:                                             ; No predecessors!
  br label %1017

1017:                                             ; preds = %1016, %1014
  %1018 = phi i32 [ 1, %1014 ], [ 0, %1016 ]
  br label %1019

1019:                                             ; preds = %1017, %1005
  %1020 = phi i32 [ 1, %1005 ], [ %1018, %1017 ]
  br label %1021

1021:                                             ; preds = %1019, %996
  %1022 = phi i32 [ 2, %996 ], [ %1020, %1019 ]
  br label %1023

1023:                                             ; preds = %1021, %987
  %1024 = phi i32 [ 2, %987 ], [ %1022, %1021 ]
  br label %1025

1025:                                             ; preds = %1023, %978
  %1026 = phi i32 [ 4, %978 ], [ %1024, %1023 ]
  br label %1027

1027:                                             ; preds = %1025, %969
  %1028 = phi i32 [ 4, %969 ], [ %1026, %1025 ]
  br label %1029

1029:                                             ; preds = %1027, %960
  %1030 = phi i32 [ 8, %960 ], [ %1028, %1027 ]
  br label %1031

1031:                                             ; preds = %1029, %951
  %1032 = phi i32 [ 8, %951 ], [ %1030, %1029 ]
  br label %1033

1033:                                             ; preds = %1031, %942
  %1034 = phi i32 [ 1, %942 ], [ %1032, %1031 ]
  br label %1035

1035:                                             ; preds = %1033, %933
  %1036 = phi i32 [ 1, %933 ], [ %1034, %1033 ]
  br label %1037

1037:                                             ; preds = %1035, %924
  %1038 = phi i32 [ 2, %924 ], [ %1036, %1035 ]
  br label %1039

1039:                                             ; preds = %1037, %915
  %1040 = phi i32 [ 2, %915 ], [ %1038, %1037 ]
  br label %1041

1041:                                             ; preds = %1039, %906
  %1042 = phi i32 [ 4, %906 ], [ %1040, %1039 ]
  br label %1043

1043:                                             ; preds = %1041, %897
  %1044 = phi i32 [ 8, %897 ], [ %1042, %1041 ]
  %1045 = mul i32 %889, %1044
  %1046 = load i8, ptr %37, align 1, !tbaa !26
  %1047 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %872, i32 noundef %880, i32 noundef %881, i32 noundef 127, i32 noundef 0, i32 noundef %1045, i8 noundef signext %1046, i32 noundef %1047, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1048 = load i32, ptr %24, align 4, !tbaa !9
  %1049 = icmp eq i32 %1048, 0
  br i1 %1049, label %1050, label %1159

1050:                                             ; preds = %1043
  %1051 = load ptr, ptr %30, align 8, !tbaa !5
  %1052 = load i32, ptr %17, align 4, !tbaa !9
  %1053 = zext i32 %1052 to i64
  %1054 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1051, i64 %1053
  %1055 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1054, i32 0, i32 5
  %1056 = load i32, ptr %1055, align 4, !tbaa !26
  %1057 = icmp eq i32 %1056, 2
  br i1 %1057, label %1058, label %1070

1058:                                             ; preds = %1050
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #4
  %1059 = load ptr, ptr %13, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1059, i32 0, i32 6
  %1061 = load i32, ptr %1060, align 4, !tbaa !29
  %1062 = icmp ult i32 %1061, 1101
  %1063 = zext i1 %1062 to i64
  %1064 = select i1 %1062, i32 121, i32 122
  %1065 = trunc i32 %1064 to i8
  store i8 %1065, ptr %44, align 1, !tbaa !26
  %1066 = load ptr, ptr %13, align 8, !tbaa !5
  %1067 = load i8, ptr %44, align 1, !tbaa !26
  %1068 = load i32, ptr %29, align 4, !tbaa !9
  %1069 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1066, i8 noundef signext %1067, i32 noundef %1068, i32 noundef %1069)
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #4
  br label %1158

1070:                                             ; preds = %1050
  %1071 = load ptr, ptr %30, align 8, !tbaa !5
  %1072 = load i32, ptr %17, align 4, !tbaa !9
  %1073 = zext i32 %1072 to i64
  %1074 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1071, i64 %1073
  %1075 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1074, i32 0, i32 5
  %1076 = load i32, ptr %1075, align 4, !tbaa !26
  %1077 = icmp eq i32 %1076, 3
  br i1 %1077, label %1078, label %1090

1078:                                             ; preds = %1070
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #4
  %1079 = load ptr, ptr %13, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1079, i32 0, i32 6
  %1081 = load i32, ptr %1080, align 4, !tbaa !29
  %1082 = icmp ult i32 %1081, 1101
  %1083 = zext i1 %1082 to i64
  %1084 = select i1 %1082, i32 121, i32 122
  %1085 = trunc i32 %1084 to i8
  store i8 %1085, ptr %45, align 1, !tbaa !26
  %1086 = load ptr, ptr %13, align 8, !tbaa !5
  %1087 = load i8, ptr %45, align 1, !tbaa !26
  %1088 = load i32, ptr %29, align 4, !tbaa !9
  %1089 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1086, i32 noundef 537208083, i8 noundef signext %1087, i32 noundef %1088, i32 noundef %1089)
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #4
  br label %1157

1090:                                             ; preds = %1070
  %1091 = load ptr, ptr %30, align 8, !tbaa !5
  %1092 = load i32, ptr %17, align 4, !tbaa !9
  %1093 = zext i32 %1092 to i64
  %1094 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1091, i64 %1093
  %1095 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1094, i32 0, i32 5
  %1096 = load i32, ptr %1095, align 4, !tbaa !26
  %1097 = icmp eq i32 %1096, 4
  br i1 %1097, label %1098, label %1110

1098:                                             ; preds = %1090
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #4
  %1099 = load ptr, ptr %13, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1099, i32 0, i32 6
  %1101 = load i32, ptr %1100, align 4, !tbaa !29
  %1102 = icmp ult i32 %1101, 1101
  %1103 = zext i1 %1102 to i64
  %1104 = select i1 %1102, i32 121, i32 122
  %1105 = trunc i32 %1104 to i8
  store i8 %1105, ptr %46, align 1, !tbaa !26
  %1106 = load ptr, ptr %13, align 8, !tbaa !5
  %1107 = load i8, ptr %46, align 1, !tbaa !26
  %1108 = load i32, ptr %29, align 4, !tbaa !9
  %1109 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1106, i8 noundef signext %1107, i32 noundef %1108, i32 noundef %1109)
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #4
  br label %1156

1110:                                             ; preds = %1090
  %1111 = load ptr, ptr %30, align 8, !tbaa !5
  %1112 = load i32, ptr %17, align 4, !tbaa !9
  %1113 = zext i32 %1112 to i64
  %1114 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1111, i64 %1113
  %1115 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1114, i32 0, i32 5
  %1116 = load i32, ptr %1115, align 4, !tbaa !26
  %1117 = icmp eq i32 %1116, 5
  br i1 %1117, label %1118, label %1134

1118:                                             ; preds = %1110
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #4
  %1119 = load ptr, ptr %13, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1119, i32 0, i32 6
  %1121 = load i32, ptr %1120, align 4, !tbaa !29
  %1122 = icmp ult i32 %1121, 1101
  %1123 = zext i1 %1122 to i64
  %1124 = select i1 %1122, i32 121, i32 122
  %1125 = trunc i32 %1124 to i8
  store i8 %1125, ptr %47, align 1, !tbaa !26
  %1126 = load ptr, ptr %13, align 8, !tbaa !5
  %1127 = load i8, ptr %47, align 1, !tbaa !26
  %1128 = load i32, ptr %29, align 4, !tbaa !9
  %1129 = load i32, ptr %29, align 4, !tbaa !9
  %1130 = load i32, ptr %33, align 4, !tbaa !9
  %1131 = load i32, ptr %34, align 4, !tbaa !9
  %1132 = load i32, ptr %35, align 4, !tbaa !9
  %1133 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1126, i8 noundef signext %1127, i32 noundef %1128, i32 noundef %1129, i32 noundef %1130, i32 noundef %1131, i32 noundef %1132, i32 noundef %1133)
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #4
  br label %1155

1134:                                             ; preds = %1110
  %1135 = load ptr, ptr %30, align 8, !tbaa !5
  %1136 = load i32, ptr %17, align 4, !tbaa !9
  %1137 = zext i32 %1136 to i64
  %1138 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1135, i64 %1137
  %1139 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1138, i32 0, i32 5
  %1140 = load i32, ptr %1139, align 4, !tbaa !26
  %1141 = icmp eq i32 %1140, 8
  br i1 %1141, label %1142, label %1154

1142:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #4
  %1143 = load ptr, ptr %13, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1143, i32 0, i32 6
  %1145 = load i32, ptr %1144, align 4, !tbaa !29
  %1146 = icmp ult i32 %1145, 1101
  %1147 = zext i1 %1146 to i64
  %1148 = select i1 %1146, i32 121, i32 122
  %1149 = trunc i32 %1148 to i8
  store i8 %1149, ptr %48, align 1, !tbaa !26
  %1150 = load ptr, ptr %13, align 8, !tbaa !5
  %1151 = load i8, ptr %48, align 1, !tbaa !26
  %1152 = load i32, ptr %29, align 4, !tbaa !9
  %1153 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1150, i32 noundef 537138779, i8 noundef signext %1151, i32 noundef %1152, i32 noundef 255, i32 noundef %1153, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #4
  br label %1154

1154:                                             ; preds = %1142, %1134
  br label %1155

1155:                                             ; preds = %1154, %1118
  br label %1156

1156:                                             ; preds = %1155, %1098
  br label %1157

1157:                                             ; preds = %1156, %1078
  br label %1158

1158:                                             ; preds = %1157, %1058
  br label %1159

1159:                                             ; preds = %1158, %1043
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %1160

1160:                                             ; preds = %1187, %1159
  %1161 = load i32, ptr %26, align 4, !tbaa !9
  %1162 = load i32, ptr %20, align 4, !tbaa !9
  %1163 = icmp ult i32 %1161, %1162
  br i1 %1163, label %1164, label %1190

1164:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #4
  %1165 = load ptr, ptr %13, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1165, i32 0, i32 6
  %1167 = load i32, ptr %1166, align 4, !tbaa !29
  %1168 = icmp uge i32 %1167, 1101
  %1169 = zext i1 %1168 to i64
  %1170 = select i1 %1168, i32 122, i32 121
  %1171 = trunc i32 %1170 to i8
  store i8 %1171, ptr %49, align 1, !tbaa !26
  %1172 = load i32, ptr %31, align 4, !tbaa !9
  %1173 = load i32, ptr %25, align 4, !tbaa !9
  %1174 = load i32, ptr %20, align 4, !tbaa !9
  %1175 = mul i32 %1173, %1174
  %1176 = add i32 %1172, %1175
  %1177 = load i32, ptr %26, align 4, !tbaa !9
  %1178 = add i32 %1176, %1177
  store i32 %1178, ptr %29, align 4, !tbaa !9
  %1179 = load ptr, ptr %13, align 8, !tbaa !5
  %1180 = load i8, ptr %49, align 1, !tbaa !26
  %1181 = load i32, ptr %31, align 4, !tbaa !9
  %1182 = load i32, ptr %25, align 4, !tbaa !9
  %1183 = load i32, ptr %20, align 4, !tbaa !9
  %1184 = mul i32 %1182, %1183
  %1185 = add i32 %1181, %1184
  %1186 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1179, i32 noundef 537138704, i8 noundef signext %1180, i32 noundef %1185, i32 noundef %1186)
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #4
  br label %1187

1187:                                             ; preds = %1164
  %1188 = load i32, ptr %26, align 4, !tbaa !9
  %1189 = add i32 %1188, 1
  store i32 %1189, ptr %26, align 4, !tbaa !9
  br label %1160, !llvm.loop !34

1190:                                             ; preds = %1160
  br label %1191

1191:                                             ; preds = %1190
  %1192 = load i32, ptr %25, align 4, !tbaa !9
  %1193 = add i32 %1192, 1
  store i32 %1193, ptr %25, align 4, !tbaa !9
  br label %860, !llvm.loop !35

1194:                                             ; preds = %860
  br label %1788

1195:                                             ; preds = %851
  %1196 = load ptr, ptr %30, align 8, !tbaa !5
  %1197 = load i32, ptr %17, align 4, !tbaa !9
  %1198 = zext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1196, i64 %1198
  %1200 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1199, i32 0, i32 6
  %1201 = load i32, ptr %1200, align 4, !tbaa !26
  %1202 = icmp eq i32 %1201, 2
  br i1 %1202, label %1203, label %1605

1203:                                             ; preds = %1195
  store i32 0, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %1204

1204:                                             ; preds = %1563, %1203
  %1205 = load i32, ptr %26, align 4, !tbaa !9
  %1206 = load i32, ptr %20, align 4, !tbaa !9
  %1207 = icmp ult i32 %1205, %1206
  br i1 %1207, label %1208, label %1566

1208:                                             ; preds = %1204
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  %1209 = load ptr, ptr %30, align 8, !tbaa !5
  %1210 = load i32, ptr %17, align 4, !tbaa !9
  %1211 = zext i32 %1210 to i64
  %1212 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1209, i64 %1211
  %1213 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1212, i32 0, i32 5
  %1214 = load i32, ptr %1213, align 4, !tbaa !26
  %1215 = icmp eq i32 4, %1214
  br i1 %1215, label %1224, label %1216

1216:                                             ; preds = %1208
  %1217 = load ptr, ptr %30, align 8, !tbaa !5
  %1218 = load i32, ptr %17, align 4, !tbaa !9
  %1219 = zext i32 %1218 to i64
  %1220 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1217, i64 %1219
  %1221 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1220, i32 0, i32 5
  %1222 = load i32, ptr %1221, align 4, !tbaa !26
  %1223 = icmp eq i32 5, %1222
  br i1 %1223, label %1224, label %1238

1224:                                             ; preds = %1216, %1208
  %1225 = load ptr, ptr %13, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1225, i32 0, i32 6
  %1227 = load i32, ptr %1226, align 4, !tbaa !29
  %1228 = icmp ult i32 %1227, 1101
  br i1 %1228, label %1229, label %1238

1229:                                             ; preds = %1224
  %1230 = load i32, ptr %22, align 4, !tbaa !9
  %1231 = icmp eq i32 %1230, 1
  br i1 %1231, label %1232, label %1237

1232:                                             ; preds = %1229
  %1233 = load i32, ptr %26, align 4, !tbaa !9
  %1234 = load i32, ptr %20, align 4, !tbaa !9
  %1235 = sub i32 %1234, 1
  %1236 = icmp eq i32 %1233, %1235
  br i1 %1236, label %1238, label %1237

1237:                                             ; preds = %1232, %1229
  br label %1246

1238:                                             ; preds = %1232, %1224, %1216
  %1239 = load ptr, ptr %30, align 8, !tbaa !5
  %1240 = load i32, ptr %17, align 4, !tbaa !9
  %1241 = zext i32 %1240 to i64
  %1242 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1239, i64 %1241
  %1243 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1242, i32 0, i32 5
  %1244 = load i32, ptr %1243, align 4, !tbaa !26
  %1245 = call i32 @libxsmm_generator_matequation_regblocks_vmove_instruction(i32 noundef %1244)
  br label %1246

1246:                                             ; preds = %1238, %1237
  %1247 = phi i32 [ 545725200, %1237 ], [ %1245, %1238 ]
  store i32 %1247, ptr %50, align 4, !tbaa !9
  %1248 = load i32, ptr %31, align 4, !tbaa !9
  %1249 = load i32, ptr %25, align 4, !tbaa !9
  %1250 = load i32, ptr %20, align 4, !tbaa !9
  %1251 = mul i32 %1249, %1250
  %1252 = add i32 %1248, %1251
  %1253 = load i32, ptr %26, align 4, !tbaa !9
  %1254 = add i32 %1252, %1253
  store i32 %1254, ptr %29, align 4, !tbaa !9
  %1255 = load ptr, ptr %13, align 8, !tbaa !5
  %1256 = load i32, ptr %50, align 4, !tbaa !9
  %1257 = load i32, ptr %32, align 4, !tbaa !9
  %1258 = load i32, ptr %26, align 4, !tbaa !9
  %1259 = load i32, ptr %18, align 4, !tbaa !9
  %1260 = mul i32 %1258, %1259
  %1261 = load i32, ptr %25, align 4, !tbaa !9
  %1262 = load ptr, ptr %30, align 8, !tbaa !5
  %1263 = load i32, ptr %17, align 4, !tbaa !9
  %1264 = zext i32 %1263 to i64
  %1265 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1262, i64 %1264
  %1266 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1265, i32 0, i32 2
  %1267 = load i32, ptr %1266, align 4, !tbaa !26
  %1268 = mul i32 %1261, %1267
  %1269 = add i32 %1260, %1268
  %1270 = load ptr, ptr %30, align 8, !tbaa !5
  %1271 = load i32, ptr %17, align 4, !tbaa !9
  %1272 = zext i32 %1271 to i64
  %1273 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1270, i64 %1272
  %1274 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1273, i32 0, i32 5
  %1275 = load i32, ptr %1274, align 4, !tbaa !26
  %1276 = icmp eq i32 0, %1275
  br i1 %1276, label %1277, label %1278

1277:                                             ; preds = %1246
  br label %1423

1278:                                             ; preds = %1246
  %1279 = load ptr, ptr %30, align 8, !tbaa !5
  %1280 = load i32, ptr %17, align 4, !tbaa !9
  %1281 = zext i32 %1280 to i64
  %1282 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1279, i64 %1281
  %1283 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1282, i32 0, i32 5
  %1284 = load i32, ptr %1283, align 4, !tbaa !26
  %1285 = icmp eq i32 1, %1284
  br i1 %1285, label %1286, label %1287

1286:                                             ; preds = %1278
  br label %1421

1287:                                             ; preds = %1278
  %1288 = load ptr, ptr %30, align 8, !tbaa !5
  %1289 = load i32, ptr %17, align 4, !tbaa !9
  %1290 = zext i32 %1289 to i64
  %1291 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1288, i64 %1290
  %1292 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1291, i32 0, i32 5
  %1293 = load i32, ptr %1292, align 4, !tbaa !26
  %1294 = icmp eq i32 2, %1293
  br i1 %1294, label %1295, label %1296

1295:                                             ; preds = %1287
  br label %1419

1296:                                             ; preds = %1287
  %1297 = load ptr, ptr %30, align 8, !tbaa !5
  %1298 = load i32, ptr %17, align 4, !tbaa !9
  %1299 = zext i32 %1298 to i64
  %1300 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1297, i64 %1299
  %1301 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1300, i32 0, i32 5
  %1302 = load i32, ptr %1301, align 4, !tbaa !26
  %1303 = icmp eq i32 3, %1302
  br i1 %1303, label %1304, label %1305

1304:                                             ; preds = %1296
  br label %1417

1305:                                             ; preds = %1296
  %1306 = load ptr, ptr %30, align 8, !tbaa !5
  %1307 = load i32, ptr %17, align 4, !tbaa !9
  %1308 = zext i32 %1307 to i64
  %1309 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1306, i64 %1308
  %1310 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1309, i32 0, i32 5
  %1311 = load i32, ptr %1310, align 4, !tbaa !26
  %1312 = icmp eq i32 4, %1311
  br i1 %1312, label %1313, label %1314

1313:                                             ; preds = %1305
  br label %1415

1314:                                             ; preds = %1305
  %1315 = load ptr, ptr %30, align 8, !tbaa !5
  %1316 = load i32, ptr %17, align 4, !tbaa !9
  %1317 = zext i32 %1316 to i64
  %1318 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1315, i64 %1317
  %1319 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1318, i32 0, i32 5
  %1320 = load i32, ptr %1319, align 4, !tbaa !26
  %1321 = icmp eq i32 5, %1320
  br i1 %1321, label %1322, label %1323

1322:                                             ; preds = %1314
  br label %1413

1323:                                             ; preds = %1314
  %1324 = load ptr, ptr %30, align 8, !tbaa !5
  %1325 = load i32, ptr %17, align 4, !tbaa !9
  %1326 = zext i32 %1325 to i64
  %1327 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1324, i64 %1326
  %1328 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1327, i32 0, i32 5
  %1329 = load i32, ptr %1328, align 4, !tbaa !26
  %1330 = icmp eq i32 6, %1329
  br i1 %1330, label %1331, label %1332

1331:                                             ; preds = %1323
  br label %1411

1332:                                             ; preds = %1323
  %1333 = load ptr, ptr %30, align 8, !tbaa !5
  %1334 = load i32, ptr %17, align 4, !tbaa !9
  %1335 = zext i32 %1334 to i64
  %1336 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1333, i64 %1335
  %1337 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1336, i32 0, i32 5
  %1338 = load i32, ptr %1337, align 4, !tbaa !26
  %1339 = icmp eq i32 7, %1338
  br i1 %1339, label %1340, label %1341

1340:                                             ; preds = %1332
  br label %1409

1341:                                             ; preds = %1332
  %1342 = load ptr, ptr %30, align 8, !tbaa !5
  %1343 = load i32, ptr %17, align 4, !tbaa !9
  %1344 = zext i32 %1343 to i64
  %1345 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1342, i64 %1344
  %1346 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1345, i32 0, i32 5
  %1347 = load i32, ptr %1346, align 4, !tbaa !26
  %1348 = icmp eq i32 8, %1347
  br i1 %1348, label %1349, label %1350

1349:                                             ; preds = %1341
  br label %1407

1350:                                             ; preds = %1341
  %1351 = load ptr, ptr %30, align 8, !tbaa !5
  %1352 = load i32, ptr %17, align 4, !tbaa !9
  %1353 = zext i32 %1352 to i64
  %1354 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1351, i64 %1353
  %1355 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1354, i32 0, i32 5
  %1356 = load i32, ptr %1355, align 4, !tbaa !26
  %1357 = icmp eq i32 9, %1356
  br i1 %1357, label %1358, label %1359

1358:                                             ; preds = %1350
  br label %1405

1359:                                             ; preds = %1350
  %1360 = load ptr, ptr %30, align 8, !tbaa !5
  %1361 = load i32, ptr %17, align 4, !tbaa !9
  %1362 = zext i32 %1361 to i64
  %1363 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1360, i64 %1362
  %1364 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1363, i32 0, i32 5
  %1365 = load i32, ptr %1364, align 4, !tbaa !26
  %1366 = icmp eq i32 10, %1365
  br i1 %1366, label %1367, label %1368

1367:                                             ; preds = %1359
  br label %1403

1368:                                             ; preds = %1359
  %1369 = load ptr, ptr %30, align 8, !tbaa !5
  %1370 = load i32, ptr %17, align 4, !tbaa !9
  %1371 = zext i32 %1370 to i64
  %1372 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1369, i64 %1371
  %1373 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1372, i32 0, i32 5
  %1374 = load i32, ptr %1373, align 4, !tbaa !26
  %1375 = icmp eq i32 11, %1374
  br i1 %1375, label %1376, label %1377

1376:                                             ; preds = %1368
  br label %1401

1377:                                             ; preds = %1368
  %1378 = load ptr, ptr %30, align 8, !tbaa !5
  %1379 = load i32, ptr %17, align 4, !tbaa !9
  %1380 = zext i32 %1379 to i64
  %1381 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1378, i64 %1380
  %1382 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1381, i32 0, i32 5
  %1383 = load i32, ptr %1382, align 4, !tbaa !26
  %1384 = icmp eq i32 12, %1383
  br i1 %1384, label %1385, label %1386

1385:                                             ; preds = %1377
  br label %1399

1386:                                             ; preds = %1377
  %1387 = load ptr, ptr %30, align 8, !tbaa !5
  %1388 = load i32, ptr %17, align 4, !tbaa !9
  %1389 = zext i32 %1388 to i64
  %1390 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1387, i64 %1389
  %1391 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1390, i32 0, i32 5
  %1392 = load i32, ptr %1391, align 4, !tbaa !26
  %1393 = icmp eq i32 13, %1392
  br i1 %1393, label %1394, label %1395

1394:                                             ; preds = %1386
  br label %1397

1395:                                             ; preds = %1386
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 691, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #5
  unreachable

1396:                                             ; No predecessors!
  br label %1397

1397:                                             ; preds = %1396, %1394
  %1398 = phi i32 [ 1, %1394 ], [ 0, %1396 ]
  br label %1399

1399:                                             ; preds = %1397, %1385
  %1400 = phi i32 [ 1, %1385 ], [ %1398, %1397 ]
  br label %1401

1401:                                             ; preds = %1399, %1376
  %1402 = phi i32 [ 2, %1376 ], [ %1400, %1399 ]
  br label %1403

1403:                                             ; preds = %1401, %1367
  %1404 = phi i32 [ 2, %1367 ], [ %1402, %1401 ]
  br label %1405

1405:                                             ; preds = %1403, %1358
  %1406 = phi i32 [ 4, %1358 ], [ %1404, %1403 ]
  br label %1407

1407:                                             ; preds = %1405, %1349
  %1408 = phi i32 [ 4, %1349 ], [ %1406, %1405 ]
  br label %1409

1409:                                             ; preds = %1407, %1340
  %1410 = phi i32 [ 8, %1340 ], [ %1408, %1407 ]
  br label %1411

1411:                                             ; preds = %1409, %1331
  %1412 = phi i32 [ 8, %1331 ], [ %1410, %1409 ]
  br label %1413

1413:                                             ; preds = %1411, %1322
  %1414 = phi i32 [ 1, %1322 ], [ %1412, %1411 ]
  br label %1415

1415:                                             ; preds = %1413, %1313
  %1416 = phi i32 [ 1, %1313 ], [ %1414, %1413 ]
  br label %1417

1417:                                             ; preds = %1415, %1304
  %1418 = phi i32 [ 2, %1304 ], [ %1416, %1415 ]
  br label %1419

1419:                                             ; preds = %1417, %1295
  %1420 = phi i32 [ 2, %1295 ], [ %1418, %1417 ]
  br label %1421

1421:                                             ; preds = %1419, %1286
  %1422 = phi i32 [ 4, %1286 ], [ %1420, %1419 ]
  br label %1423

1423:                                             ; preds = %1421, %1277
  %1424 = phi i32 [ 8, %1277 ], [ %1422, %1421 ]
  %1425 = mul i32 %1269, %1424
  %1426 = load i8, ptr %37, align 1, !tbaa !26
  %1427 = load i32, ptr %29, align 4, !tbaa !9
  %1428 = load i32, ptr %22, align 4, !tbaa !9
  %1429 = icmp eq i32 %1428, 1
  br i1 %1429, label %1430, label %1435

1430:                                             ; preds = %1423
  %1431 = load i32, ptr %26, align 4, !tbaa !9
  %1432 = load i32, ptr %20, align 4, !tbaa !9
  %1433 = sub i32 %1432, 1
  %1434 = icmp eq i32 %1431, %1433
  br label %1435

1435:                                             ; preds = %1430, %1423
  %1436 = phi i1 [ false, %1423 ], [ %1434, %1430 ]
  %1437 = zext i1 %1436 to i64
  %1438 = select i1 %1436, i32 1, i32 0
  %1439 = load i32, ptr %22, align 4, !tbaa !9
  %1440 = icmp eq i32 %1439, 1
  br i1 %1440, label %1441, label %1448

1441:                                             ; preds = %1435
  %1442 = load i32, ptr %26, align 4, !tbaa !9
  %1443 = load i32, ptr %20, align 4, !tbaa !9
  %1444 = sub i32 %1443, 1
  %1445 = icmp eq i32 %1442, %1444
  br i1 %1445, label %1446, label %1448

1446:                                             ; preds = %1441
  %1447 = load i32, ptr %23, align 4, !tbaa !9
  br label %1449

1448:                                             ; preds = %1441, %1435
  br label %1449

1449:                                             ; preds = %1448, %1446
  %1450 = phi i32 [ %1447, %1446 ], [ 0, %1448 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1255, i32 noundef %1256, i32 noundef %1257, i32 noundef 127, i32 noundef 0, i32 noundef %1425, i8 noundef signext %1426, i32 noundef %1427, i32 noundef %1438, i32 noundef %1450, i32 noundef 0)
  %1451 = load i32, ptr %24, align 4, !tbaa !9
  %1452 = icmp eq i32 %1451, 0
  br i1 %1452, label %1453, label %1562

1453:                                             ; preds = %1449
  %1454 = load ptr, ptr %30, align 8, !tbaa !5
  %1455 = load i32, ptr %17, align 4, !tbaa !9
  %1456 = zext i32 %1455 to i64
  %1457 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1454, i64 %1456
  %1458 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1457, i32 0, i32 5
  %1459 = load i32, ptr %1458, align 4, !tbaa !26
  %1460 = icmp eq i32 %1459, 2
  br i1 %1460, label %1461, label %1473

1461:                                             ; preds = %1453
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #4
  %1462 = load ptr, ptr %13, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1462, i32 0, i32 6
  %1464 = load i32, ptr %1463, align 4, !tbaa !29
  %1465 = icmp ult i32 %1464, 1101
  %1466 = zext i1 %1465 to i64
  %1467 = select i1 %1465, i32 121, i32 122
  %1468 = trunc i32 %1467 to i8
  store i8 %1468, ptr %51, align 1, !tbaa !26
  %1469 = load ptr, ptr %13, align 8, !tbaa !5
  %1470 = load i8, ptr %51, align 1, !tbaa !26
  %1471 = load i32, ptr %29, align 4, !tbaa !9
  %1472 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1469, i8 noundef signext %1470, i32 noundef %1471, i32 noundef %1472)
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #4
  br label %1561

1473:                                             ; preds = %1453
  %1474 = load ptr, ptr %30, align 8, !tbaa !5
  %1475 = load i32, ptr %17, align 4, !tbaa !9
  %1476 = zext i32 %1475 to i64
  %1477 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1474, i64 %1476
  %1478 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1477, i32 0, i32 5
  %1479 = load i32, ptr %1478, align 4, !tbaa !26
  %1480 = icmp eq i32 %1479, 3
  br i1 %1480, label %1481, label %1493

1481:                                             ; preds = %1473
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #4
  %1482 = load ptr, ptr %13, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1482, i32 0, i32 6
  %1484 = load i32, ptr %1483, align 4, !tbaa !29
  %1485 = icmp ult i32 %1484, 1101
  %1486 = zext i1 %1485 to i64
  %1487 = select i1 %1485, i32 121, i32 122
  %1488 = trunc i32 %1487 to i8
  store i8 %1488, ptr %52, align 1, !tbaa !26
  %1489 = load ptr, ptr %13, align 8, !tbaa !5
  %1490 = load i8, ptr %52, align 1, !tbaa !26
  %1491 = load i32, ptr %29, align 4, !tbaa !9
  %1492 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1489, i32 noundef 537208083, i8 noundef signext %1490, i32 noundef %1491, i32 noundef %1492)
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #4
  br label %1560

1493:                                             ; preds = %1473
  %1494 = load ptr, ptr %30, align 8, !tbaa !5
  %1495 = load i32, ptr %17, align 4, !tbaa !9
  %1496 = zext i32 %1495 to i64
  %1497 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1494, i64 %1496
  %1498 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1497, i32 0, i32 5
  %1499 = load i32, ptr %1498, align 4, !tbaa !26
  %1500 = icmp eq i32 %1499, 4
  br i1 %1500, label %1501, label %1513

1501:                                             ; preds = %1493
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #4
  %1502 = load ptr, ptr %13, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1502, i32 0, i32 6
  %1504 = load i32, ptr %1503, align 4, !tbaa !29
  %1505 = icmp ult i32 %1504, 1101
  %1506 = zext i1 %1505 to i64
  %1507 = select i1 %1505, i32 121, i32 122
  %1508 = trunc i32 %1507 to i8
  store i8 %1508, ptr %53, align 1, !tbaa !26
  %1509 = load ptr, ptr %13, align 8, !tbaa !5
  %1510 = load i8, ptr %53, align 1, !tbaa !26
  %1511 = load i32, ptr %29, align 4, !tbaa !9
  %1512 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1509, i8 noundef signext %1510, i32 noundef %1511, i32 noundef %1512)
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #4
  br label %1559

1513:                                             ; preds = %1493
  %1514 = load ptr, ptr %30, align 8, !tbaa !5
  %1515 = load i32, ptr %17, align 4, !tbaa !9
  %1516 = zext i32 %1515 to i64
  %1517 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1514, i64 %1516
  %1518 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1517, i32 0, i32 5
  %1519 = load i32, ptr %1518, align 4, !tbaa !26
  %1520 = icmp eq i32 %1519, 5
  br i1 %1520, label %1521, label %1537

1521:                                             ; preds = %1513
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #4
  %1522 = load ptr, ptr %13, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1522, i32 0, i32 6
  %1524 = load i32, ptr %1523, align 4, !tbaa !29
  %1525 = icmp ult i32 %1524, 1101
  %1526 = zext i1 %1525 to i64
  %1527 = select i1 %1525, i32 121, i32 122
  %1528 = trunc i32 %1527 to i8
  store i8 %1528, ptr %54, align 1, !tbaa !26
  %1529 = load ptr, ptr %13, align 8, !tbaa !5
  %1530 = load i8, ptr %54, align 1, !tbaa !26
  %1531 = load i32, ptr %29, align 4, !tbaa !9
  %1532 = load i32, ptr %29, align 4, !tbaa !9
  %1533 = load i32, ptr %33, align 4, !tbaa !9
  %1534 = load i32, ptr %34, align 4, !tbaa !9
  %1535 = load i32, ptr %35, align 4, !tbaa !9
  %1536 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1529, i8 noundef signext %1530, i32 noundef %1531, i32 noundef %1532, i32 noundef %1533, i32 noundef %1534, i32 noundef %1535, i32 noundef %1536)
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #4
  br label %1558

1537:                                             ; preds = %1513
  %1538 = load ptr, ptr %30, align 8, !tbaa !5
  %1539 = load i32, ptr %17, align 4, !tbaa !9
  %1540 = zext i32 %1539 to i64
  %1541 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1538, i64 %1540
  %1542 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1541, i32 0, i32 5
  %1543 = load i32, ptr %1542, align 4, !tbaa !26
  %1544 = icmp eq i32 %1543, 8
  br i1 %1544, label %1545, label %1557

1545:                                             ; preds = %1537
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #4
  %1546 = load ptr, ptr %13, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1546, i32 0, i32 6
  %1548 = load i32, ptr %1547, align 4, !tbaa !29
  %1549 = icmp ult i32 %1548, 1101
  %1550 = zext i1 %1549 to i64
  %1551 = select i1 %1549, i32 121, i32 122
  %1552 = trunc i32 %1551 to i8
  store i8 %1552, ptr %55, align 1, !tbaa !26
  %1553 = load ptr, ptr %13, align 8, !tbaa !5
  %1554 = load i8, ptr %55, align 1, !tbaa !26
  %1555 = load i32, ptr %29, align 4, !tbaa !9
  %1556 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1553, i32 noundef 537138779, i8 noundef signext %1554, i32 noundef %1555, i32 noundef 255, i32 noundef %1556, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #4
  br label %1557

1557:                                             ; preds = %1545, %1537
  br label %1558

1558:                                             ; preds = %1557, %1521
  br label %1559

1559:                                             ; preds = %1558, %1501
  br label %1560

1560:                                             ; preds = %1559, %1481
  br label %1561

1561:                                             ; preds = %1560, %1461
  br label %1562

1562:                                             ; preds = %1561, %1449
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  br label %1563

1563:                                             ; preds = %1562
  %1564 = load i32, ptr %26, align 4, !tbaa !9
  %1565 = add i32 %1564, 1
  store i32 %1565, ptr %26, align 4, !tbaa !9
  br label %1204, !llvm.loop !36

1566:                                             ; preds = %1204
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %1567

1567:                                             ; preds = %1601, %1566
  %1568 = load i32, ptr %25, align 4, !tbaa !9
  %1569 = load i32, ptr %21, align 4, !tbaa !9
  %1570 = icmp ult i32 %1568, %1569
  br i1 %1570, label %1571, label %1604

1571:                                             ; preds = %1567
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %1572

1572:                                             ; preds = %1597, %1571
  %1573 = load i32, ptr %26, align 4, !tbaa !9
  %1574 = load i32, ptr %20, align 4, !tbaa !9
  %1575 = icmp ult i32 %1573, %1574
  br i1 %1575, label %1576, label %1600

1576:                                             ; preds = %1572
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #4
  %1577 = load ptr, ptr %13, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1577, i32 0, i32 6
  %1579 = load i32, ptr %1578, align 4, !tbaa !29
  %1580 = icmp uge i32 %1579, 1101
  %1581 = zext i1 %1580 to i64
  %1582 = select i1 %1580, i32 122, i32 121
  %1583 = trunc i32 %1582 to i8
  store i8 %1583, ptr %56, align 1, !tbaa !26
  %1584 = load i32, ptr %31, align 4, !tbaa !9
  %1585 = load i32, ptr %25, align 4, !tbaa !9
  %1586 = load i32, ptr %20, align 4, !tbaa !9
  %1587 = mul i32 %1585, %1586
  %1588 = add i32 %1584, %1587
  %1589 = load i32, ptr %26, align 4, !tbaa !9
  %1590 = add i32 %1588, %1589
  store i32 %1590, ptr %29, align 4, !tbaa !9
  %1591 = load ptr, ptr %13, align 8, !tbaa !5
  %1592 = load i8, ptr %56, align 1, !tbaa !26
  %1593 = load i32, ptr %31, align 4, !tbaa !9
  %1594 = load i32, ptr %26, align 4, !tbaa !9
  %1595 = add i32 %1593, %1594
  %1596 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1591, i32 noundef 537138704, i8 noundef signext %1592, i32 noundef %1595, i32 noundef %1596)
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #4
  br label %1597

1597:                                             ; preds = %1576
  %1598 = load i32, ptr %26, align 4, !tbaa !9
  %1599 = add i32 %1598, 1
  store i32 %1599, ptr %26, align 4, !tbaa !9
  br label %1572, !llvm.loop !37

1600:                                             ; preds = %1572
  br label %1601

1601:                                             ; preds = %1600
  %1602 = load i32, ptr %25, align 4, !tbaa !9
  %1603 = add i32 %1602, 1
  store i32 %1603, ptr %25, align 4, !tbaa !9
  br label %1567, !llvm.loop !38

1604:                                             ; preds = %1567
  br label %1787

1605:                                             ; preds = %1195
  %1606 = load ptr, ptr %30, align 8, !tbaa !5
  %1607 = load i32, ptr %17, align 4, !tbaa !9
  %1608 = zext i32 %1607 to i64
  %1609 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1606, i64 %1608
  %1610 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1609, i32 0, i32 6
  %1611 = load i32, ptr %1610, align 4, !tbaa !26
  %1612 = icmp eq i32 %1611, 4
  br i1 %1612, label %1613, label %1786

1613:                                             ; preds = %1605
  store i32 0, ptr %26, align 4, !tbaa !9
  store i32 0, ptr %25, align 4, !tbaa !9
  %1614 = load i32, ptr %31, align 4, !tbaa !9
  %1615 = load i32, ptr %25, align 4, !tbaa !9
  %1616 = load i32, ptr %20, align 4, !tbaa !9
  %1617 = mul i32 %1615, %1616
  %1618 = add i32 %1614, %1617
  %1619 = load i32, ptr %26, align 4, !tbaa !9
  %1620 = add i32 %1618, %1619
  store i32 %1620, ptr %29, align 4, !tbaa !9
  %1621 = load ptr, ptr %13, align 8, !tbaa !5
  %1622 = load ptr, ptr %13, align 8, !tbaa !5
  %1623 = load ptr, ptr %30, align 8, !tbaa !5
  %1624 = load i32, ptr %17, align 4, !tbaa !9
  %1625 = zext i32 %1624 to i64
  %1626 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1623, i64 %1625
  %1627 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1626, i32 0, i32 5
  %1628 = load i32, ptr %1627, align 4, !tbaa !26
  %1629 = call i32 @libxsmm_generator_matequation_regblocks_vbcast_instruction(ptr noundef %1622, i32 noundef %1628)
  %1630 = load i32, ptr %32, align 4, !tbaa !9
  %1631 = load i8, ptr %37, align 1, !tbaa !26
  %1632 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1621, i32 noundef %1629, i32 noundef %1630, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %1631, i32 noundef %1632, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1633 = load i32, ptr %24, align 4, !tbaa !9
  %1634 = icmp eq i32 %1633, 0
  br i1 %1634, label %1635, label %1744

1635:                                             ; preds = %1613
  %1636 = load ptr, ptr %30, align 8, !tbaa !5
  %1637 = load i32, ptr %17, align 4, !tbaa !9
  %1638 = zext i32 %1637 to i64
  %1639 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1636, i64 %1638
  %1640 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1639, i32 0, i32 5
  %1641 = load i32, ptr %1640, align 4, !tbaa !26
  %1642 = icmp eq i32 %1641, 2
  br i1 %1642, label %1643, label %1655

1643:                                             ; preds = %1635
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #4
  %1644 = load ptr, ptr %13, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1644, i32 0, i32 6
  %1646 = load i32, ptr %1645, align 4, !tbaa !29
  %1647 = icmp ult i32 %1646, 1101
  %1648 = zext i1 %1647 to i64
  %1649 = select i1 %1647, i32 121, i32 122
  %1650 = trunc i32 %1649 to i8
  store i8 %1650, ptr %57, align 1, !tbaa !26
  %1651 = load ptr, ptr %13, align 8, !tbaa !5
  %1652 = load i8, ptr %57, align 1, !tbaa !26
  %1653 = load i32, ptr %29, align 4, !tbaa !9
  %1654 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1651, i8 noundef signext %1652, i32 noundef %1653, i32 noundef %1654)
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #4
  br label %1743

1655:                                             ; preds = %1635
  %1656 = load ptr, ptr %30, align 8, !tbaa !5
  %1657 = load i32, ptr %17, align 4, !tbaa !9
  %1658 = zext i32 %1657 to i64
  %1659 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1656, i64 %1658
  %1660 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1659, i32 0, i32 5
  %1661 = load i32, ptr %1660, align 4, !tbaa !26
  %1662 = icmp eq i32 %1661, 3
  br i1 %1662, label %1663, label %1675

1663:                                             ; preds = %1655
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #4
  %1664 = load ptr, ptr %13, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1664, i32 0, i32 6
  %1666 = load i32, ptr %1665, align 4, !tbaa !29
  %1667 = icmp ult i32 %1666, 1101
  %1668 = zext i1 %1667 to i64
  %1669 = select i1 %1667, i32 121, i32 122
  %1670 = trunc i32 %1669 to i8
  store i8 %1670, ptr %58, align 1, !tbaa !26
  %1671 = load ptr, ptr %13, align 8, !tbaa !5
  %1672 = load i8, ptr %58, align 1, !tbaa !26
  %1673 = load i32, ptr %29, align 4, !tbaa !9
  %1674 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1671, i32 noundef 537208083, i8 noundef signext %1672, i32 noundef %1673, i32 noundef %1674)
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #4
  br label %1742

1675:                                             ; preds = %1655
  %1676 = load ptr, ptr %30, align 8, !tbaa !5
  %1677 = load i32, ptr %17, align 4, !tbaa !9
  %1678 = zext i32 %1677 to i64
  %1679 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1676, i64 %1678
  %1680 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1679, i32 0, i32 5
  %1681 = load i32, ptr %1680, align 4, !tbaa !26
  %1682 = icmp eq i32 %1681, 4
  br i1 %1682, label %1683, label %1695

1683:                                             ; preds = %1675
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #4
  %1684 = load ptr, ptr %13, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1684, i32 0, i32 6
  %1686 = load i32, ptr %1685, align 4, !tbaa !29
  %1687 = icmp ult i32 %1686, 1101
  %1688 = zext i1 %1687 to i64
  %1689 = select i1 %1687, i32 121, i32 122
  %1690 = trunc i32 %1689 to i8
  store i8 %1690, ptr %59, align 1, !tbaa !26
  %1691 = load ptr, ptr %13, align 8, !tbaa !5
  %1692 = load i8, ptr %59, align 1, !tbaa !26
  %1693 = load i32, ptr %29, align 4, !tbaa !9
  %1694 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1691, i8 noundef signext %1692, i32 noundef %1693, i32 noundef %1694)
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #4
  br label %1741

1695:                                             ; preds = %1675
  %1696 = load ptr, ptr %30, align 8, !tbaa !5
  %1697 = load i32, ptr %17, align 4, !tbaa !9
  %1698 = zext i32 %1697 to i64
  %1699 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1696, i64 %1698
  %1700 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1699, i32 0, i32 5
  %1701 = load i32, ptr %1700, align 4, !tbaa !26
  %1702 = icmp eq i32 %1701, 5
  br i1 %1702, label %1703, label %1719

1703:                                             ; preds = %1695
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #4
  %1704 = load ptr, ptr %13, align 8, !tbaa !5
  %1705 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1704, i32 0, i32 6
  %1706 = load i32, ptr %1705, align 4, !tbaa !29
  %1707 = icmp ult i32 %1706, 1101
  %1708 = zext i1 %1707 to i64
  %1709 = select i1 %1707, i32 121, i32 122
  %1710 = trunc i32 %1709 to i8
  store i8 %1710, ptr %60, align 1, !tbaa !26
  %1711 = load ptr, ptr %13, align 8, !tbaa !5
  %1712 = load i8, ptr %60, align 1, !tbaa !26
  %1713 = load i32, ptr %29, align 4, !tbaa !9
  %1714 = load i32, ptr %29, align 4, !tbaa !9
  %1715 = load i32, ptr %33, align 4, !tbaa !9
  %1716 = load i32, ptr %34, align 4, !tbaa !9
  %1717 = load i32, ptr %35, align 4, !tbaa !9
  %1718 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1711, i8 noundef signext %1712, i32 noundef %1713, i32 noundef %1714, i32 noundef %1715, i32 noundef %1716, i32 noundef %1717, i32 noundef %1718)
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #4
  br label %1740

1719:                                             ; preds = %1695
  %1720 = load ptr, ptr %30, align 8, !tbaa !5
  %1721 = load i32, ptr %17, align 4, !tbaa !9
  %1722 = zext i32 %1721 to i64
  %1723 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1720, i64 %1722
  %1724 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %1723, i32 0, i32 5
  %1725 = load i32, ptr %1724, align 4, !tbaa !26
  %1726 = icmp eq i32 %1725, 8
  br i1 %1726, label %1727, label %1739

1727:                                             ; preds = %1719
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #4
  %1728 = load ptr, ptr %13, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1728, i32 0, i32 6
  %1730 = load i32, ptr %1729, align 4, !tbaa !29
  %1731 = icmp ult i32 %1730, 1101
  %1732 = zext i1 %1731 to i64
  %1733 = select i1 %1731, i32 121, i32 122
  %1734 = trunc i32 %1733 to i8
  store i8 %1734, ptr %61, align 1, !tbaa !26
  %1735 = load ptr, ptr %13, align 8, !tbaa !5
  %1736 = load i8, ptr %61, align 1, !tbaa !26
  %1737 = load i32, ptr %29, align 4, !tbaa !9
  %1738 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1735, i32 noundef 537138779, i8 noundef signext %1736, i32 noundef %1737, i32 noundef 255, i32 noundef %1738, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #4
  br label %1739

1739:                                             ; preds = %1727, %1719
  br label %1740

1740:                                             ; preds = %1739, %1703
  br label %1741

1741:                                             ; preds = %1740, %1683
  br label %1742

1742:                                             ; preds = %1741, %1663
  br label %1743

1743:                                             ; preds = %1742, %1643
  br label %1744

1744:                                             ; preds = %1743, %1613
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %1745

1745:                                             ; preds = %1782, %1744
  %1746 = load i32, ptr %25, align 4, !tbaa !9
  %1747 = load i32, ptr %21, align 4, !tbaa !9
  %1748 = icmp ult i32 %1746, %1747
  br i1 %1748, label %1749, label %1785

1749:                                             ; preds = %1745
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %1750

1750:                                             ; preds = %1778, %1749
  %1751 = load i32, ptr %26, align 4, !tbaa !9
  %1752 = load i32, ptr %20, align 4, !tbaa !9
  %1753 = icmp ult i32 %1751, %1752
  br i1 %1753, label %1754, label %1781

1754:                                             ; preds = %1750
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #4
  %1755 = load ptr, ptr %13, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1755, i32 0, i32 6
  %1757 = load i32, ptr %1756, align 4, !tbaa !29
  %1758 = icmp uge i32 %1757, 1101
  %1759 = zext i1 %1758 to i64
  %1760 = select i1 %1758, i32 122, i32 121
  %1761 = trunc i32 %1760 to i8
  store i8 %1761, ptr %62, align 1, !tbaa !26
  %1762 = load i32, ptr %31, align 4, !tbaa !9
  %1763 = load i32, ptr %25, align 4, !tbaa !9
  %1764 = load i32, ptr %20, align 4, !tbaa !9
  %1765 = mul i32 %1763, %1764
  %1766 = add i32 %1762, %1765
  %1767 = load i32, ptr %26, align 4, !tbaa !9
  %1768 = add i32 %1766, %1767
  store i32 %1768, ptr %29, align 4, !tbaa !9
  %1769 = load i32, ptr %29, align 4, !tbaa !9
  %1770 = load i32, ptr %31, align 4, !tbaa !9
  %1771 = icmp ne i32 %1769, %1770
  br i1 %1771, label %1772, label %1777

1772:                                             ; preds = %1754
  %1773 = load ptr, ptr %13, align 8, !tbaa !5
  %1774 = load i8, ptr %62, align 1, !tbaa !26
  %1775 = load i32, ptr %31, align 4, !tbaa !9
  %1776 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1773, i32 noundef 537138704, i8 noundef signext %1774, i32 noundef %1775, i32 noundef %1776)
  br label %1777

1777:                                             ; preds = %1772, %1754
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #4
  br label %1778

1778:                                             ; preds = %1777
  %1779 = load i32, ptr %26, align 4, !tbaa !9
  %1780 = add i32 %1779, 1
  store i32 %1780, ptr %26, align 4, !tbaa !9
  br label %1750, !llvm.loop !39

1781:                                             ; preds = %1750
  br label %1782

1782:                                             ; preds = %1781
  %1783 = load i32, ptr %25, align 4, !tbaa !9
  %1784 = add i32 %1783, 1
  store i32 %1784, ptr %25, align 4, !tbaa !9
  br label %1745, !llvm.loop !40

1785:                                             ; preds = %1745
  br label %1786

1786:                                             ; preds = %1785, %1605
  br label %1787

1787:                                             ; preds = %1786, %1604
  br label %1788

1788:                                             ; preds = %1787, %1194
  br label %1789

1789:                                             ; preds = %1788, %850
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  ret void
}

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

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

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

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

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

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #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 = !{!12, !10, i64 48}
!12 = !{!"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, !13, i64 72, !14, i64 220}
!13 = !{!"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}
!14 = !{!"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}
!15 = !{!12, !10, i64 52}
!16 = !{!17, !6, i64 336}
!17 = !{!"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, !18, i64 876, !19, i64 1392}
!18 = !{!"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}
!19 = !{!"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, !20, 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}
!20 = !{!"libxsmm_tile_config", !7, i64 0, !21, i64 2, !7, i64 4, !21, i64 6, !7, i64 8, !21, i64 10, !7, i64 12, !21, i64 14, !7, i64 16, !21, i64 18, !7, i64 20, !21, i64 22, !7, i64 24, !21, i64 26, !7, i64 28, !21, i64 30, !7, i64 32}
!21 = !{!"short", !7, i64 0}
!22 = !{!17, !10, i64 164}
!23 = !{!17, !10, i64 168}
!24 = !{!17, !10, i64 152}
!25 = !{!17, !10, i64 156}
!26 = !{!7, !7, i64 0}
!27 = !{!17, !10, i64 184}
!28 = !{!17, !10, i64 40}
!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 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = distinct !{!34, !32}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}
!40 = distinct !{!40, !32}


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

%struct.libxsmm_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 }

@.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_generator_mateqn_load_arg_to_2d_reg_block = external hidden unnamed_addr constant [301 x i8], align 1
@switch.table.libxsmm_generator_mateqn_load_arg_to_2d_reg_block.4 = private unnamed_addr constant [14 x i32] [i32 8, i32 4, i32 2, i32 2, i32 1, i32 1, i32 8, i32 8, i32 4, i32 4, i32 2, i32 2, i32 1, i32 1], align 4

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_generator_matequation_regblocks_vmove_instruction(i32 noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateqn_load_arg_to_2d_reg_block(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr nocapture noundef readnone %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11) local_unnamed_addr #0 {
  %13 = getelementptr inbounds i8, ptr %1, i64 48
  %14 = load i32, ptr %13, align 4, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %1, i64 52
  %16 = load i32, ptr %15, align 4, !tbaa !12
  %17 = getelementptr inbounds i8, ptr %2, i64 336
  %18 = load ptr, ptr %17, align 8, !tbaa !13
  %19 = tail call i32 @libxsmm_generator_matequation_regblocks_get_start_of_register_block(ptr noundef %2, i32 noundef %6)
  %20 = getelementptr inbounds i8, ptr %2, i64 164
  %21 = load i32, ptr %20, align 4, !tbaa !20
  %22 = getelementptr inbounds i8, ptr %2, i64 168
  %23 = load i32, ptr %22, align 8, !tbaa !21
  %24 = getelementptr inbounds i8, ptr %2, i64 152
  %25 = load i32, ptr %24, align 8, !tbaa !22
  %26 = getelementptr inbounds i8, ptr %2, i64 156
  %27 = load i32, ptr %26, align 4, !tbaa !23
  %28 = zext i32 %4 to i64
  %29 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %18, i64 %28
  %30 = getelementptr inbounds i8, ptr %29, i64 20
  %31 = load i32, ptr %30, align 4, !tbaa !24
  %32 = icmp ult i32 %31, 14
  br i1 %32, label %switch.lookup, label %33

33:                                               ; preds = %12
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 582, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #3
  unreachable

switch.lookup:                                    ; preds = %12
  %34 = zext nneg i32 %31 to i64
  %switch.gep = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_load_arg_to_2d_reg_block.4, i64 0, i64 %34
  %switch.load = load i32, ptr %switch.gep, align 4
  %35 = mul i32 %switch.load, %5
  %36 = icmp eq i32 %35, 64
  br i1 %36, label %41, label %switch.lookup634

switch.lookup634:                                 ; preds = %switch.lookup
  %37 = zext nneg i32 %31 to i64
  %switch.gep635 = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_load_arg_to_2d_reg_block.4, i64 0, i64 %37
  %switch.load636 = load i32, ptr %switch.gep635, align 4
  %38 = mul i32 %switch.load636, %5
  %39 = icmp eq i32 %38, 32
  %40 = select i1 %39, i8 121, i8 120
  br label %41

41:                                               ; preds = %switch.lookup, %switch.lookup634
  %42 = phi i8 [ %40, %switch.lookup634 ], [ 122, %switch.lookup ]
  %43 = getelementptr inbounds i8, ptr %2, i64 184
  %44 = load i32, ptr %43, align 8, !tbaa !25
  %45 = icmp ugt i32 %44, %4
  br i1 %45, label %46, label %50

46:                                               ; preds = %41
  %47 = getelementptr inbounds i8, ptr %2, i64 188
  %48 = getelementptr inbounds [32 x i32], ptr %47, i64 0, i64 %28
  %49 = load i32, ptr %48, align 4, !tbaa !26
  br label %54

50:                                               ; preds = %41
  %51 = shl i32 %4, 3
  tail call void @libxsmm_generator_meqn_getaddr_stack_tmpaddr_i(ptr noundef %0, i32 noundef %51, i32 noundef %16) #4
  %52 = getelementptr inbounds i8, ptr %2, i64 40
  %53 = load i32, ptr %52, align 8, !tbaa !27
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %53, i32 noundef %16, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %14, i32 noundef 0) #4
  %.pre = load i32, ptr %30, align 4, !tbaa !24
  br label %54

54:                                               ; preds = %50, %46
  %55 = phi i32 [ %31, %46 ], [ %.pre, %50 ]
  %.0493 = phi i32 [ %49, %46 ], [ %14, %50 ]
  %56 = and i32 %55, -2
  %switch = icmp eq i32 %56, 2
  br i1 %switch, label %57, label %65

57:                                               ; preds = %54
  %58 = getelementptr inbounds i8, ptr %0, i64 28
  %59 = load i32, ptr %58, align 4, !tbaa !28
  %60 = icmp ult i32 %59, 1051
  %61 = icmp ne i32 %9, 0
  %or.cond = and i1 %61, %60
  br i1 %or.cond, label %62, label %65

62:                                               ; preds = %57
  %63 = load i32, ptr %29, align 4, !tbaa !24
  %64 = urem i32 %63, %5
  br label %65

65:                                               ; preds = %54, %57, %62
  %.0 = phi i32 [ %64, %62 ], [ %10, %57 ], [ %10, %54 ]
  %66 = getelementptr inbounds i8, ptr %29, i64 24
  %67 = load i32, ptr %66, align 4, !tbaa !24
  switch i32 %67, label %.loopexit [
    i32 0, label %.preheader578
    i32 1, label %.preheader579
    i32 2, label %.preheader584
    i32 4, label %229
  ]

.preheader584:                                    ; preds = %65
  %.not607 = icmp eq i32 %7, 0
  br i1 %.not607, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader584
  %68 = getelementptr inbounds i8, ptr %0, i64 28
  %69 = icmp eq i32 %9, 1
  %70 = add i32 %7, -1
  %71 = icmp eq i32 %11, 0
  br label %184

.preheader579:                                    ; preds = %65
  %.not609 = icmp eq i32 %8, 0
  br i1 %.not609, label %.loopexit, label %.lr.ph598

.lr.ph598:                                        ; preds = %.preheader579
  %72 = getelementptr inbounds i8, ptr %29, i64 8
  %73 = icmp eq i32 %11, 0
  %74 = getelementptr inbounds i8, ptr %0, i64 28
  %75 = icmp ugt i32 %7, 1
  br label %131

.preheader578:                                    ; preds = %65
  %.not610 = icmp eq i32 %8, 0
  br i1 %.not610, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.preheader578
  %.not611 = icmp eq i32 %7, 0
  %76 = getelementptr inbounds i8, ptr %0, i64 28
  %77 = icmp eq i32 %9, 1
  %78 = add i32 %7, -1
  %79 = getelementptr inbounds i8, ptr %29, i64 8
  %80 = icmp eq i32 %11, 0
  br i1 %.not611, label %.loopexit, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.lr.ph, %._crit_edge602.us
  %.0488603.us = phi i32 [ %130, %._crit_edge602.us ], [ 0, %.preheader.lr.ph ]
  %81 = mul i32 %.0488603.us, %7
  %82 = add i32 %81, %19
  br label %83

83:                                               ; preds = %.preheader.us, %128
  %.0489599.us = phi i32 [ 0, %.preheader.us ], [ %129, %128 ]
  %84 = load i32, ptr %30, align 4, !tbaa !24
  %85 = and i32 %84, -2
  %switch575.us = icmp eq i32 %85, 4
  br i1 %switch575.us, label %86, label %90

86:                                               ; preds = %83
  %87 = load i32, ptr %76, align 4, !tbaa !28
  %88 = icmp ugt i32 %87, 1100
  %89 = icmp eq i32 %.0489599.us, %78
  %or.cond536.us = and i1 %77, %89
  %or.cond604 = or i1 %88, %or.cond536.us
  br i1 %or.cond604, label %90, label %92

90:                                               ; preds = %86, %83
  %91 = tail call i32 @libxsmm_generator_matequation_regblocks_vmove_instruction(i32 noundef %84)
  %.pre627 = load i32, ptr %30, align 4, !tbaa !24
  br label %92

92:                                               ; preds = %86, %90
  %93 = phi i32 [ %.pre627, %90 ], [ %84, %86 ]
  %94 = phi i32 [ %91, %90 ], [ 545725200, %86 ]
  %95 = add i32 %82, %.0489599.us
  %96 = icmp ult i32 %93, 14
  br i1 %96, label %switch.lookup637, label %.split.us

switch.lookup637:                                 ; preds = %92
  %97 = load i32, ptr %79, align 4, !tbaa !24
  %98 = mul i32 %97, %.0488603.us
  %99 = mul i32 %.0489599.us, %5
  %100 = add i32 %98, %99
  %101 = zext nneg i32 %93 to i64
  %switch.gep638 = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_load_arg_to_2d_reg_block.4, i64 0, i64 %101
  %switch.load639 = load i32, ptr %switch.gep638, align 4
  %102 = mul i32 %switch.load639, %100
  %103 = icmp eq i32 %.0489599.us, %78
  %104 = and i1 %77, %103
  %105 = zext i1 %104 to i32
  %spec.select548.us = select i1 %104, i32 %.0, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %94, i32 noundef %.0493, i32 noundef 127, i32 noundef 0, i32 noundef %102, i8 noundef signext %42, i32 noundef %95, i32 noundef %105, i32 noundef %spec.select548.us, i32 noundef 0) #4
  br i1 %80, label %106, label %128

106:                                              ; preds = %switch.lookup637
  %107 = load i32, ptr %30, align 4, !tbaa !24
  switch i32 %107, label %128 [
    i32 2, label %124
    i32 3, label %120
    i32 4, label %116
    i32 5, label %112
    i32 8, label %108
  ]

108:                                              ; preds = %106
  %109 = load i32, ptr %76, align 4, !tbaa !28
  %110 = icmp ult i32 %109, 1101
  %111 = select i1 %110, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %0, i32 noundef 537138779, i8 noundef signext %111, i32 noundef %95, i32 noundef 255, i32 noundef %95, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0) #4
  br label %128

112:                                              ; preds = %106
  %113 = load i32, ptr %76, align 4, !tbaa !28
  %114 = icmp ult i32 %113, 1101
  %115 = select i1 %114, i8 121, i8 122
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %115, i32 noundef %95, i32 noundef %95, i32 noundef %21, i32 noundef %23, i32 noundef %25, i32 noundef %27) #4
  br label %128

116:                                              ; preds = %106
  %117 = load i32, ptr %76, align 4, !tbaa !28
  %118 = icmp ult i32 %117, 1101
  %119 = select i1 %118, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %119, i32 noundef %95, i32 noundef %95) #4
  br label %128

120:                                              ; preds = %106
  %121 = load i32, ptr %76, align 4, !tbaa !28
  %122 = icmp ult i32 %121, 1101
  %123 = select i1 %122, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %123, i32 noundef %95, i32 noundef %95) #4
  br label %128

124:                                              ; preds = %106
  %125 = load i32, ptr %76, align 4, !tbaa !28
  %126 = icmp ult i32 %125, 1101
  %127 = select i1 %126, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %127, i32 noundef %95, i32 noundef %95) #4
  br label %128

128:                                              ; preds = %124, %120, %116, %112, %108, %106, %switch.lookup637
  %129 = add nuw i32 %.0489599.us, 1
  %exitcond624.not = icmp eq i32 %129, %7
  br i1 %exitcond624.not, label %._crit_edge602.us, label %83, !llvm.loop !30

._crit_edge602.us:                                ; preds = %128
  %130 = add nuw i32 %.0488603.us, 1
  %exitcond625.not = icmp eq i32 %130, %8
  br i1 %exitcond625.not, label %.loopexit, label %.preheader.us, !llvm.loop !32

.split.us:                                        ; preds = %92
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 617, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #3
  unreachable

131:                                              ; preds = %.lr.ph598, %._crit_edge
  %.1597 = phi i32 [ 0, %.lr.ph598 ], [ %171, %._crit_edge ]
  %132 = mul i32 %.1597, %7
  %133 = add i32 %132, %19
  %134 = load i32, ptr %30, align 4, !tbaa !24
  %135 = tail call i32 @libxsmm_generator_matequation_regblocks_vbcast_instruction(ptr noundef %0, i32 noundef %134)
  %136 = load i32, ptr %30, align 4, !tbaa !24
  %137 = icmp ult i32 %136, 14
  br i1 %137, label %switch.lookup640, label %138

138:                                              ; preds = %131
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 651, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #3
  unreachable

switch.lookup640:                                 ; preds = %131
  %139 = load i32, ptr %72, align 4, !tbaa !24
  %140 = mul i32 %139, %.1597
  %141 = zext nneg i32 %136 to i64
  %switch.gep641 = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_load_arg_to_2d_reg_block.4, i64 0, i64 %141
  %switch.load642 = load i32, ptr %switch.gep641, align 4
  %142 = mul i32 %140, %switch.load642
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %135, i32 noundef %.0493, i32 noundef 127, i32 noundef 0, i32 noundef %142, i8 noundef signext %42, i32 noundef %133, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4
  br i1 %73, label %143, label %165

143:                                              ; preds = %switch.lookup640
  %144 = load i32, ptr %30, align 4, !tbaa !24
  switch i32 %144, label %165 [
    i32 2, label %145
    i32 3, label %149
    i32 4, label %153
    i32 5, label %157
    i32 8, label %161
  ]

145:                                              ; preds = %143
  %146 = load i32, ptr %74, align 4, !tbaa !28
  %147 = icmp ult i32 %146, 1101
  %148 = select i1 %147, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %148, i32 noundef %133, i32 noundef %133) #4
  br label %165

149:                                              ; preds = %143
  %150 = load i32, ptr %74, align 4, !tbaa !28
  %151 = icmp ult i32 %150, 1101
  %152 = select i1 %151, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %152, i32 noundef %133, i32 noundef %133) #4
  br label %165

153:                                              ; preds = %143
  %154 = load i32, ptr %74, align 4, !tbaa !28
  %155 = icmp ult i32 %154, 1101
  %156 = select i1 %155, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %156, i32 noundef %133, i32 noundef %133) #4
  br label %165

157:                                              ; preds = %143
  %158 = load i32, ptr %74, align 4, !tbaa !28
  %159 = icmp ult i32 %158, 1101
  %160 = select i1 %159, i8 121, i8 122
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %160, i32 noundef %133, i32 noundef %133, i32 noundef %21, i32 noundef %23, i32 noundef %25, i32 noundef %27) #4
  br label %165

161:                                              ; preds = %143
  %162 = load i32, ptr %74, align 4, !tbaa !28
  %163 = icmp ult i32 %162, 1101
  %164 = select i1 %163, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %0, i32 noundef 537138779, i8 noundef signext %164, i32 noundef %133, i32 noundef 255, i32 noundef %133, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0) #4
  br label %165

165:                                              ; preds = %143, %145, %153, %161, %157, %149, %switch.lookup640
  br i1 %75, label %.lr.ph596, label %._crit_edge

.lr.ph596:                                        ; preds = %165, %.lr.ph596
  %.1490595 = phi i32 [ %170, %.lr.ph596 ], [ 1, %165 ]
  %166 = load i32, ptr %74, align 4, !tbaa !28
  %167 = icmp ugt i32 %166, 1100
  %168 = select i1 %167, i8 122, i8 121
  %169 = add i32 %.1490595, %133
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537138704, i8 noundef signext %168, i32 noundef %133, i32 noundef %169) #4
  %170 = add nuw i32 %.1490595, 1
  %exitcond622.not = icmp eq i32 %170, %7
  br i1 %exitcond622.not, label %._crit_edge, label %.lr.ph596, !llvm.loop !33

._crit_edge:                                      ; preds = %.lr.ph596, %165
  %171 = add nuw i32 %.1597, 1
  %exitcond623.not = icmp eq i32 %171, %8
  br i1 %exitcond623.not, label %.loopexit, label %131, !llvm.loop !34

.preheader582:                                    ; preds = %227
  %172 = icmp ugt i32 %8, 1
  br i1 %172, label %.preheader581.us.preheader, label %.loopexit

.preheader581.us.preheader:                       ; preds = %.preheader582
  %173 = getelementptr inbounds i8, ptr %0, i64 28
  br label %.preheader581.us

.preheader581.us:                                 ; preds = %.preheader581.us.preheader, %._crit_edge.us594
  %.2593.us = phi i32 [ %183, %._crit_edge.us594 ], [ 1, %.preheader581.us.preheader ]
  %174 = mul i32 %.2593.us, %7
  %175 = add i32 %174, %19
  br label %176

176:                                              ; preds = %.preheader581.us, %176
  %.3492591.us = phi i32 [ 0, %.preheader581.us ], [ %182, %176 ]
  %177 = load i32, ptr %173, align 4, !tbaa !28
  %178 = icmp ugt i32 %177, 1100
  %179 = select i1 %178, i8 122, i8 121
  %180 = add i32 %175, %.3492591.us
  %181 = add i32 %.3492591.us, %19
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537138704, i8 noundef signext %179, i32 noundef %181, i32 noundef %180) #4
  %182 = add nuw i32 %.3492591.us, 1
  %exitcond620.not = icmp eq i32 %182, %7
  br i1 %exitcond620.not, label %._crit_edge.us594, label %176, !llvm.loop !35

._crit_edge.us594:                                ; preds = %176
  %183 = add nuw i32 %.2593.us, 1
  %exitcond621.not = icmp eq i32 %183, %8
  br i1 %exitcond621.not, label %.loopexit, label %.preheader581.us, !llvm.loop !36

184:                                              ; preds = %.lr.ph, %227
  %.2491589 = phi i32 [ 0, %.lr.ph ], [ %228, %227 ]
  %185 = load i32, ptr %30, align 4, !tbaa !24
  %186 = and i32 %185, -2
  %switch577 = icmp eq i32 %186, 4
  br i1 %switch577, label %187, label %191

187:                                              ; preds = %184
  %188 = load i32, ptr %68, align 4, !tbaa !28
  %189 = icmp ugt i32 %188, 1100
  %190 = icmp eq i32 %.2491589, %70
  %or.cond561 = and i1 %69, %190
  %or.cond605 = or i1 %189, %or.cond561
  br i1 %or.cond605, label %191, label %193

191:                                              ; preds = %184, %187
  %192 = tail call i32 @libxsmm_generator_matequation_regblocks_vmove_instruction(i32 noundef %185)
  %.pre626 = load i32, ptr %30, align 4, !tbaa !24
  br label %193

193:                                              ; preds = %187, %191
  %194 = phi i32 [ %.pre626, %191 ], [ %185, %187 ]
  %195 = phi i32 [ %192, %191 ], [ 545725200, %187 ]
  %196 = add i32 %.2491589, %19
  %197 = icmp ult i32 %194, 14
  br i1 %197, label %switch.lookup643, label %198

198:                                              ; preds = %193
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 691, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_load_arg_to_2d_reg_block) #3
  unreachable

switch.lookup643:                                 ; preds = %193
  %199 = mul i32 %.2491589, %5
  %200 = zext nneg i32 %194 to i64
  %switch.gep644 = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_load_arg_to_2d_reg_block.4, i64 0, i64 %200
  %switch.load645 = load i32, ptr %switch.gep644, align 4
  %201 = mul i32 %199, %switch.load645
  %202 = icmp eq i32 %.2491589, %70
  %203 = and i1 %69, %202
  %204 = zext i1 %203 to i32
  %spec.select573 = select i1 %203, i32 %.0, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %195, i32 noundef %.0493, i32 noundef 127, i32 noundef 0, i32 noundef %201, i8 noundef signext %42, i32 noundef %196, i32 noundef %204, i32 noundef %spec.select573, i32 noundef 0) #4
  br i1 %71, label %205, label %227

205:                                              ; preds = %switch.lookup643
  %206 = load i32, ptr %30, align 4, !tbaa !24
  switch i32 %206, label %227 [
    i32 2, label %207
    i32 3, label %211
    i32 4, label %215
    i32 5, label %219
    i32 8, label %223
  ]

207:                                              ; preds = %205
  %208 = load i32, ptr %68, align 4, !tbaa !28
  %209 = icmp ult i32 %208, 1101
  %210 = select i1 %209, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %210, i32 noundef %196, i32 noundef %196) #4
  br label %227

211:                                              ; preds = %205
  %212 = load i32, ptr %68, align 4, !tbaa !28
  %213 = icmp ult i32 %212, 1101
  %214 = select i1 %213, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %214, i32 noundef %196, i32 noundef %196) #4
  br label %227

215:                                              ; preds = %205
  %216 = load i32, ptr %68, align 4, !tbaa !28
  %217 = icmp ult i32 %216, 1101
  %218 = select i1 %217, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %218, i32 noundef %196, i32 noundef %196) #4
  br label %227

219:                                              ; preds = %205
  %220 = load i32, ptr %68, align 4, !tbaa !28
  %221 = icmp ult i32 %220, 1101
  %222 = select i1 %221, i8 121, i8 122
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %222, i32 noundef %196, i32 noundef %196, i32 noundef %21, i32 noundef %23, i32 noundef %25, i32 noundef %27) #4
  br label %227

223:                                              ; preds = %205
  %224 = load i32, ptr %68, align 4, !tbaa !28
  %225 = icmp ult i32 %224, 1101
  %226 = select i1 %225, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %0, i32 noundef 537138779, i8 noundef signext %226, i32 noundef %196, i32 noundef 255, i32 noundef %196, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0) #4
  br label %227

227:                                              ; preds = %205, %207, %215, %223, %219, %211, %switch.lookup643
  %228 = add nuw i32 %.2491589, 1
  %exitcond619.not = icmp eq i32 %228, %7
  br i1 %exitcond619.not, label %.preheader582, label %184, !llvm.loop !37

229:                                              ; preds = %65
  %230 = tail call i32 @libxsmm_generator_matequation_regblocks_vbcast_instruction(ptr noundef %0, i32 noundef %55)
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %230, i32 noundef %.0493, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %42, i32 noundef %19, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4
  %231 = icmp eq i32 %11, 0
  br i1 %231, label %232, label %259

232:                                              ; preds = %229
  %233 = load i32, ptr %30, align 4, !tbaa !24
  switch i32 %233, label %259 [
    i32 2, label %234
    i32 3, label %239
    i32 4, label %244
    i32 5, label %249
    i32 8, label %254
  ]

234:                                              ; preds = %232
  %235 = getelementptr inbounds i8, ptr %0, i64 28
  %236 = load i32, ptr %235, align 4, !tbaa !28
  %237 = icmp ult i32 %236, 1101
  %238 = select i1 %237, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %238, i32 noundef %19, i32 noundef %19) #4
  br label %259

239:                                              ; preds = %232
  %240 = getelementptr inbounds i8, ptr %0, i64 28
  %241 = load i32, ptr %240, align 4, !tbaa !28
  %242 = icmp ult i32 %241, 1101
  %243 = select i1 %242, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %243, i32 noundef %19, i32 noundef %19) #4
  br label %259

244:                                              ; preds = %232
  %245 = getelementptr inbounds i8, ptr %0, i64 28
  %246 = load i32, ptr %245, align 4, !tbaa !28
  %247 = icmp ult i32 %246, 1101
  %248 = select i1 %247, i8 121, i8 122
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %248, i32 noundef %19, i32 noundef %19) #4
  br label %259

249:                                              ; preds = %232
  %250 = getelementptr inbounds i8, ptr %0, i64 28
  %251 = load i32, ptr %250, align 4, !tbaa !28
  %252 = icmp ult i32 %251, 1101
  %253 = select i1 %252, i8 121, i8 122
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %253, i32 noundef %19, i32 noundef %19, i32 noundef %21, i32 noundef %23, i32 noundef %25, i32 noundef %27) #4
  br label %259

254:                                              ; preds = %232
  %255 = getelementptr inbounds i8, ptr %0, i64 28
  %256 = load i32, ptr %255, align 4, !tbaa !28
  %257 = icmp ult i32 %256, 1101
  %258 = select i1 %257, i8 121, i8 122
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %0, i32 noundef 537138779, i8 noundef signext %258, i32 noundef %19, i32 noundef 255, i32 noundef %19, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0) #4
  br label %259

259:                                              ; preds = %232, %234, %244, %254, %249, %239, %229
  %.not = icmp eq i32 %8, 0
  br i1 %.not, label %.loopexit, label %.preheader585.lr.ph

.preheader585.lr.ph:                              ; preds = %259
  %.not606 = icmp eq i32 %7, 0
  %260 = getelementptr inbounds i8, ptr %0, i64 28
  br i1 %.not606, label %.loopexit, label %.preheader585.us

.preheader585.us:                                 ; preds = %.preheader585.lr.ph, %._crit_edge.us
  %.3588.us = phi i32 [ %271, %._crit_edge.us ], [ 0, %.preheader585.lr.ph ]
  %261 = mul i32 %.3588.us, %7
  %262 = add i32 %261, %19
  br label %263

263:                                              ; preds = %.preheader585.us, %269
  %.4587.us = phi i32 [ 0, %.preheader585.us ], [ %270, %269 ]
  %264 = add i32 %262, %.4587.us
  %.not.us = icmp eq i32 %264, %19
  br i1 %.not.us, label %269, label %265

265:                                              ; preds = %263
  %266 = load i32, ptr %260, align 4, !tbaa !28
  %267 = icmp ugt i32 %266, 1100
  %268 = select i1 %267, i8 122, i8 121
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537138704, i8 noundef signext %268, i32 noundef %19, i32 noundef %264) #4
  br label %269

269:                                              ; preds = %265, %263
  %270 = add nuw i32 %.4587.us, 1
  %exitcond.not = icmp eq i32 %270, %7
  br i1 %exitcond.not, label %._crit_edge.us, label %263, !llvm.loop !38

._crit_edge.us:                                   ; preds = %269
  %271 = add nuw i32 %.3588.us, 1
  %exitcond618.not = icmp eq i32 %271, %8
  br i1 %exitcond618.not, label %.loopexit, label %.preheader585.us, !llvm.loop !39

.loopexit:                                        ; preds = %._crit_edge.us, %._crit_edge.us594, %._crit_edge, %._crit_edge602.us, %.preheader584, %.preheader585.lr.ph, %.preheader.lr.ph, %259, %.preheader582, %.preheader579, %.preheader578, %65
  ret void
}

declare void @libxsmm_x86_instruction_unified_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) local_unnamed_addr #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 = { noreturn nounwind }
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, !7, i64 48}
!6 = !{!"libxsmm_matequation_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !10, i64 72, !11, i64 220}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144}
!11 = !{!"libxsmm_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128}
!12 = !{!6, !7, i64 52}
!13 = !{!14, !15, i64 336}
!14 = !{!"libxsmm_matequation_kernel_config_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !8, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !8, i64 188, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !15, i64 336, !15, i64 344, !7, i64 352, !7, i64 356, !7, i64 360, !8, i64 364, !8, i64 620, !16, i64 876, !17, i64 1392}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!"libxsmm_mateltwise_kernel_config_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !7, i64 304, !7, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !7, i64 364, !7, i64 368, !7, i64 372, !7, i64 376, !7, i64 380, !7, i64 384, !7, i64 388, !7, i64 392, !7, i64 396, !7, i64 400, !7, i64 404, !7, i64 408, !7, i64 412, !7, i64 416, !7, i64 420, !7, i64 424, !7, i64 428, !7, i64 432, !7, i64 436, !7, i64 440, !7, i64 444, !7, i64 448, !7, i64 452, !7, i64 456, !7, i64 460, !7, i64 464, !7, i64 468, !7, i64 472, !7, i64 476, !7, i64 480, !7, i64 484, !7, i64 488, !7, i64 492, !7, i64 496, !7, i64 500, !7, i64 504, !7, i64 508, !8, i64 512}
!17 = !{!"libxsmm_micro_kernel_config", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !8, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !7, i64 304, !7, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !8, i64 364, !8, i64 380, !8, i64 396, !8, i64 412, !8, i64 428, !8, i64 444, !7, i64 460, !8, i64 464, !18, i64 520, !7, i64 556, !7, i64 560, !7, i64 564, !7, i64 568, !7, i64 572, !7, i64 576, !7, i64 580, !7, i64 584, !15, i64 592, !7, i64 600, !7, i64 604, !7, i64 608, !7, i64 612, !15, i64 616, !7, i64 624, !7, i64 628, !7, i64 632, !7, i64 636, !7, i64 640, !7, i64 644, !7, i64 648, !7, i64 652, !7, i64 656, !7, i64 660, !7, i64 664, !7, i64 668, !7, i64 672, !7, i64 676, !7, i64 680}
!18 = !{!"libxsmm_tile_config", !8, i64 0, !19, i64 2, !8, i64 4, !19, i64 6, !8, i64 8, !19, i64 10, !8, i64 12, !19, i64 14, !8, i64 16, !19, i64 18, !8, i64 20, !19, i64 22, !8, i64 24, !19, i64 26, !8, i64 28, !19, i64 30, !8, i64 32}
!19 = !{!"short", !8, i64 0}
!20 = !{!14, !7, i64 164}
!21 = !{!14, !7, i64 168}
!22 = !{!14, !7, i64 152}
!23 = !{!14, !7, i64 156}
!24 = !{!8, !8, i64 0}
!25 = !{!14, !7, i64 184}
!26 = !{!7, !7, i64 0}
!27 = !{!14, !7, i64 40}
!28 = !{!29, !7, i64 28}
!29 = !{!"libxsmm_generated_code", !15, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = distinct !{!37, !31}
!38 = distinct !{!38, !31}
!39 = distinct !{!39, !31}


; Effective O3 passes: ADCEPass,ConstantMergePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass