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

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

%struct.libxsmm_generated_code = type { ptr, 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_descriptor = type <{ i32, i32, i32, i8, i32 }>
%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 }

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64 = external hidden unnamed_addr constant [202 x i8], align 1

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

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

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

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) #2

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #3 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %12 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  store i32 %12, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #4
  %13 = load ptr, ptr %5, align 8, !tbaa !5
  %14 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %13, i32 0, i32 6
  %15 = load i32, ptr %14, align 4, !tbaa !11
  %16 = icmp uge i32 %15, 2201
  br i1 %16, label %17, label %22

17:                                               ; preds = %4
  %18 = load ptr, ptr %5, align 8, !tbaa !5
  %19 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %18, i32 0, i32 6
  %20 = load i32, ptr %19, align 4, !tbaa !11
  %21 = icmp ule i32 %20, 2999
  br label %22

22:                                               ; preds = %17, %4
  %23 = phi i1 [ false, %4 ], [ %21, %17 ]
  %24 = zext i1 %23 to i32
  %25 = trunc i32 %24 to i8
  store i8 %25, ptr %10, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  %26 = load i8, ptr %10, align 1, !tbaa !13
  %27 = zext i8 %26 to i32
  %28 = icmp ne i32 %27, 0
  %29 = zext i1 %28 to i64
  %30 = select i1 %28, i32 1694507138, i32 773903371
  store i32 %30, ptr %11, align 4, !tbaa !9
  %31 = load i8, ptr %10, align 1, !tbaa !13
  %32 = icmp ne i8 %31, 0
  br i1 %32, label %33, label %46

33:                                               ; preds = %22
  %34 = load ptr, ptr %5, align 8, !tbaa !5
  %35 = load i32, ptr %11, align 4, !tbaa !9
  %36 = load ptr, ptr %7, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %36, i32 0, i32 45
  %38 = load i32, ptr %37, align 4, !tbaa !14
  %39 = load ptr, ptr %7, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %39, i32 0, i32 45
  %41 = load i32, ptr %40, align 4, !tbaa !14
  %42 = load ptr, ptr %7, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %42, i32 0, i32 45
  %44 = load i32, ptr %43, align 4, !tbaa !14
  %45 = load i32, ptr %9, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %34, i32 noundef %35, i32 noundef %38, i32 noundef %41, i8 noundef zeroext 0, i32 noundef %44, i32 noundef 0, i32 noundef %45)
  br label %2590

46:                                               ; preds = %22
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = load i32, ptr %11, align 4, !tbaa !9
  %49 = load ptr, ptr %7, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %49, i32 0, i32 45
  %51 = load i32, ptr %50, align 4, !tbaa !14
  %52 = load ptr, ptr %8, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %52, i32 0, i32 3
  %54 = load i8, ptr %53, align 1, !tbaa !20
  %55 = zext i8 %54 to i32
  %56 = ashr i32 %55, 4
  %57 = icmp eq i32 0, %56
  br i1 %57, label %58, label %220

58:                                               ; preds = %46
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %59, i32 0, i32 3
  %61 = load i8, ptr %60, align 1, !tbaa !20
  %62 = zext i8 %61 to i32
  %63 = and i32 %62, 15
  %64 = icmp eq i32 0, %63
  br i1 %64, label %65, label %66

65:                                               ; preds = %58
  br label %218

66:                                               ; preds = %58
  %67 = load ptr, ptr %8, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %67, i32 0, i32 3
  %69 = load i8, ptr %68, align 1, !tbaa !20
  %70 = zext i8 %69 to i32
  %71 = and i32 %70, 15
  %72 = icmp eq i32 1, %71
  br i1 %72, label %73, label %74

73:                                               ; preds = %66
  br label %216

74:                                               ; preds = %66
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %75, i32 0, i32 3
  %77 = load i8, ptr %76, align 1, !tbaa !20
  %78 = zext i8 %77 to i32
  %79 = and i32 %78, 15
  %80 = icmp eq i32 2, %79
  br i1 %80, label %81, label %82

81:                                               ; preds = %74
  br label %214

82:                                               ; preds = %74
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %83, i32 0, i32 3
  %85 = load i8, ptr %84, align 1, !tbaa !20
  %86 = zext i8 %85 to i32
  %87 = and i32 %86, 15
  %88 = icmp eq i32 3, %87
  br i1 %88, label %89, label %90

89:                                               ; preds = %82
  br label %212

90:                                               ; preds = %82
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %91, i32 0, i32 3
  %93 = load i8, ptr %92, align 1, !tbaa !20
  %94 = zext i8 %93 to i32
  %95 = and i32 %94, 15
  %96 = icmp eq i32 4, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %90
  br label %210

98:                                               ; preds = %90
  %99 = load ptr, ptr %8, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %99, i32 0, i32 3
  %101 = load i8, ptr %100, align 1, !tbaa !20
  %102 = zext i8 %101 to i32
  %103 = and i32 %102, 15
  %104 = icmp eq i32 5, %103
  br i1 %104, label %105, label %106

105:                                              ; preds = %98
  br label %208

106:                                              ; preds = %98
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %107, i32 0, i32 3
  %109 = load i8, ptr %108, align 1, !tbaa !20
  %110 = zext i8 %109 to i32
  %111 = and i32 %110, 15
  %112 = icmp eq i32 6, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %106
  br label %206

114:                                              ; preds = %106
  %115 = load ptr, ptr %8, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %115, i32 0, i32 3
  %117 = load i8, ptr %116, align 1, !tbaa !20
  %118 = zext i8 %117 to i32
  %119 = and i32 %118, 15
  %120 = icmp eq i32 7, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %114
  br label %204

122:                                              ; preds = %114
  %123 = load ptr, ptr %8, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %123, i32 0, i32 3
  %125 = load i8, ptr %124, align 1, !tbaa !20
  %126 = zext i8 %125 to i32
  %127 = and i32 %126, 15
  %128 = icmp eq i32 8, %127
  br i1 %128, label %129, label %130

129:                                              ; preds = %122
  br label %202

130:                                              ; preds = %122
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %131, i32 0, i32 3
  %133 = load i8, ptr %132, align 1, !tbaa !20
  %134 = zext i8 %133 to i32
  %135 = and i32 %134, 15
  %136 = icmp eq i32 9, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %130
  br label %200

138:                                              ; preds = %130
  %139 = load ptr, ptr %8, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %139, i32 0, i32 3
  %141 = load i8, ptr %140, align 1, !tbaa !20
  %142 = zext i8 %141 to i32
  %143 = and i32 %142, 15
  %144 = icmp eq i32 10, %143
  br i1 %144, label %145, label %146

145:                                              ; preds = %138
  br label %198

146:                                              ; preds = %138
  %147 = load ptr, ptr %8, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %147, i32 0, i32 3
  %149 = load i8, ptr %148, align 1, !tbaa !20
  %150 = zext i8 %149 to i32
  %151 = and i32 %150, 15
  %152 = icmp eq i32 11, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %146
  br label %196

154:                                              ; preds = %146
  %155 = load ptr, ptr %8, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %155, i32 0, i32 3
  %157 = load i8, ptr %156, align 1, !tbaa !20
  %158 = zext i8 %157 to i32
  %159 = and i32 %158, 15
  %160 = icmp eq i32 12, %159
  br i1 %160, label %161, label %162

161:                                              ; preds = %154
  br label %194

162:                                              ; preds = %154
  %163 = load ptr, ptr %8, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %163, i32 0, i32 3
  %165 = load i8, ptr %164, align 1, !tbaa !20
  %166 = zext i8 %165 to i32
  %167 = and i32 %166, 15
  %168 = icmp eq i32 13, %167
  br i1 %168, label %169, label %170

169:                                              ; preds = %162
  br label %192

170:                                              ; preds = %162
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %171, i32 0, i32 3
  %173 = load i8, ptr %172, align 1, !tbaa !20
  %174 = zext i8 %173 to i32
  %175 = and i32 %174, 15
  %176 = icmp eq i32 14, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %170
  br label %190

178:                                              ; preds = %170
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %179, i32 0, i32 3
  %181 = load i8, ptr %180, align 1, !tbaa !20
  %182 = zext i8 %181 to i32
  %183 = and i32 %182, 15
  %184 = icmp eq i32 15, %183
  br i1 %184, label %185, label %186

185:                                              ; preds = %178
  br label %188

186:                                              ; preds = %178
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

187:                                              ; No predecessors!
  br label %188

188:                                              ; preds = %187, %185
  %189 = phi i32 [ 15, %185 ], [ 0, %187 ]
  br label %190

190:                                              ; preds = %188, %177
  %191 = phi i32 [ 14, %177 ], [ %189, %188 ]
  br label %192

192:                                              ; preds = %190, %169
  %193 = phi i32 [ 12, %169 ], [ %191, %190 ]
  br label %194

194:                                              ; preds = %192, %161
  %195 = phi i32 [ 12, %161 ], [ %193, %192 ]
  br label %196

196:                                              ; preds = %194, %153
  %197 = phi i32 [ 10, %153 ], [ %195, %194 ]
  br label %198

198:                                              ; preds = %196, %145
  %199 = phi i32 [ 10, %145 ], [ %197, %196 ]
  br label %200

200:                                              ; preds = %198, %137
  %201 = phi i32 [ 8, %137 ], [ %199, %198 ]
  br label %202

202:                                              ; preds = %200, %129
  %203 = phi i32 [ 8, %129 ], [ %201, %200 ]
  br label %204

204:                                              ; preds = %202, %121
  %205 = phi i32 [ 6, %121 ], [ %203, %202 ]
  br label %206

206:                                              ; preds = %204, %113
  %207 = phi i32 [ 6, %113 ], [ %205, %204 ]
  br label %208

208:                                              ; preds = %206, %105
  %209 = phi i32 [ 5, %105 ], [ %207, %206 ]
  br label %210

210:                                              ; preds = %208, %97
  %211 = phi i32 [ 4, %97 ], [ %209, %208 ]
  br label %212

212:                                              ; preds = %210, %89
  %213 = phi i32 [ 3, %89 ], [ %211, %210 ]
  br label %214

214:                                              ; preds = %212, %81
  %215 = phi i32 [ 2, %81 ], [ %213, %212 ]
  br label %216

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

218:                                              ; preds = %216, %65
  %219 = phi i32 [ 0, %65 ], [ %217, %216 ]
  br label %226

220:                                              ; preds = %46
  %221 = load ptr, ptr %8, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %221, i32 0, i32 3
  %223 = load i8, ptr %222, align 1, !tbaa !20
  %224 = zext i8 %223 to i32
  %225 = ashr i32 %224, 4
  br label %226

226:                                              ; preds = %220, %218
  %227 = phi i32 [ %219, %218 ], [ %225, %220 ]
  %228 = icmp eq i32 0, %227
  br i1 %228, label %229, label %230

229:                                              ; preds = %226
  br label %2585

230:                                              ; preds = %226
  %231 = load ptr, ptr %8, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %231, i32 0, i32 3
  %233 = load i8, ptr %232, align 1, !tbaa !20
  %234 = zext i8 %233 to i32
  %235 = ashr i32 %234, 4
  %236 = icmp eq i32 0, %235
  br i1 %236, label %237, label %399

237:                                              ; preds = %230
  %238 = load ptr, ptr %8, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %238, i32 0, i32 3
  %240 = load i8, ptr %239, align 1, !tbaa !20
  %241 = zext i8 %240 to i32
  %242 = and i32 %241, 15
  %243 = icmp eq i32 0, %242
  br i1 %243, label %244, label %245

244:                                              ; preds = %237
  br label %397

245:                                              ; preds = %237
  %246 = load ptr, ptr %8, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %246, i32 0, i32 3
  %248 = load i8, ptr %247, align 1, !tbaa !20
  %249 = zext i8 %248 to i32
  %250 = and i32 %249, 15
  %251 = icmp eq i32 1, %250
  br i1 %251, label %252, label %253

252:                                              ; preds = %245
  br label %395

253:                                              ; preds = %245
  %254 = load ptr, ptr %8, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %254, i32 0, i32 3
  %256 = load i8, ptr %255, align 1, !tbaa !20
  %257 = zext i8 %256 to i32
  %258 = and i32 %257, 15
  %259 = icmp eq i32 2, %258
  br i1 %259, label %260, label %261

260:                                              ; preds = %253
  br label %393

261:                                              ; preds = %253
  %262 = load ptr, ptr %8, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %262, i32 0, i32 3
  %264 = load i8, ptr %263, align 1, !tbaa !20
  %265 = zext i8 %264 to i32
  %266 = and i32 %265, 15
  %267 = icmp eq i32 3, %266
  br i1 %267, label %268, label %269

268:                                              ; preds = %261
  br label %391

269:                                              ; preds = %261
  %270 = load ptr, ptr %8, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %270, i32 0, i32 3
  %272 = load i8, ptr %271, align 1, !tbaa !20
  %273 = zext i8 %272 to i32
  %274 = and i32 %273, 15
  %275 = icmp eq i32 4, %274
  br i1 %275, label %276, label %277

276:                                              ; preds = %269
  br label %389

277:                                              ; preds = %269
  %278 = load ptr, ptr %8, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %278, i32 0, i32 3
  %280 = load i8, ptr %279, align 1, !tbaa !20
  %281 = zext i8 %280 to i32
  %282 = and i32 %281, 15
  %283 = icmp eq i32 5, %282
  br i1 %283, label %284, label %285

284:                                              ; preds = %277
  br label %387

285:                                              ; preds = %277
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %286, i32 0, i32 3
  %288 = load i8, ptr %287, align 1, !tbaa !20
  %289 = zext i8 %288 to i32
  %290 = and i32 %289, 15
  %291 = icmp eq i32 6, %290
  br i1 %291, label %292, label %293

292:                                              ; preds = %285
  br label %385

293:                                              ; preds = %285
  %294 = load ptr, ptr %8, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %294, i32 0, i32 3
  %296 = load i8, ptr %295, align 1, !tbaa !20
  %297 = zext i8 %296 to i32
  %298 = and i32 %297, 15
  %299 = icmp eq i32 7, %298
  br i1 %299, label %300, label %301

300:                                              ; preds = %293
  br label %383

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

308:                                              ; preds = %301
  br label %381

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

316:                                              ; preds = %309
  br label %379

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

324:                                              ; preds = %317
  br label %377

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

332:                                              ; preds = %325
  br label %375

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

340:                                              ; preds = %333
  br label %373

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

348:                                              ; preds = %341
  br label %371

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

356:                                              ; preds = %349
  br label %369

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

364:                                              ; preds = %357
  br label %367

365:                                              ; preds = %357
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

366:                                              ; No predecessors!
  br label %367

367:                                              ; preds = %366, %364
  %368 = phi i32 [ 15, %364 ], [ 0, %366 ]
  br label %369

369:                                              ; preds = %367, %356
  %370 = phi i32 [ 14, %356 ], [ %368, %367 ]
  br label %371

371:                                              ; preds = %369, %348
  %372 = phi i32 [ 12, %348 ], [ %370, %369 ]
  br label %373

373:                                              ; preds = %371, %340
  %374 = phi i32 [ 12, %340 ], [ %372, %371 ]
  br label %375

375:                                              ; preds = %373, %332
  %376 = phi i32 [ 10, %332 ], [ %374, %373 ]
  br label %377

377:                                              ; preds = %375, %324
  %378 = phi i32 [ 10, %324 ], [ %376, %375 ]
  br label %379

379:                                              ; preds = %377, %316
  %380 = phi i32 [ 8, %316 ], [ %378, %377 ]
  br label %381

381:                                              ; preds = %379, %308
  %382 = phi i32 [ 8, %308 ], [ %380, %379 ]
  br label %383

383:                                              ; preds = %381, %300
  %384 = phi i32 [ 6, %300 ], [ %382, %381 ]
  br label %385

385:                                              ; preds = %383, %292
  %386 = phi i32 [ 6, %292 ], [ %384, %383 ]
  br label %387

387:                                              ; preds = %385, %284
  %388 = phi i32 [ 5, %284 ], [ %386, %385 ]
  br label %389

389:                                              ; preds = %387, %276
  %390 = phi i32 [ 4, %276 ], [ %388, %387 ]
  br label %391

391:                                              ; preds = %389, %268
  %392 = phi i32 [ 3, %268 ], [ %390, %389 ]
  br label %393

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

395:                                              ; preds = %393, %252
  %396 = phi i32 [ 1, %252 ], [ %394, %393 ]
  br label %397

397:                                              ; preds = %395, %244
  %398 = phi i32 [ 0, %244 ], [ %396, %395 ]
  br label %405

399:                                              ; preds = %230
  %400 = load ptr, ptr %8, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %400, i32 0, i32 3
  %402 = load i8, ptr %401, align 1, !tbaa !20
  %403 = zext i8 %402 to i32
  %404 = ashr i32 %403, 4
  br label %405

405:                                              ; preds = %399, %397
  %406 = phi i32 [ %398, %397 ], [ %404, %399 ]
  %407 = icmp eq i32 1, %406
  br i1 %407, label %408, label %409

408:                                              ; preds = %405
  br label %2583

409:                                              ; preds = %405
  %410 = load ptr, ptr %8, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %410, i32 0, i32 3
  %412 = load i8, ptr %411, align 1, !tbaa !20
  %413 = zext i8 %412 to i32
  %414 = ashr i32 %413, 4
  %415 = icmp eq i32 0, %414
  br i1 %415, label %416, label %578

416:                                              ; preds = %409
  %417 = load ptr, ptr %8, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %417, i32 0, i32 3
  %419 = load i8, ptr %418, align 1, !tbaa !20
  %420 = zext i8 %419 to i32
  %421 = and i32 %420, 15
  %422 = icmp eq i32 0, %421
  br i1 %422, label %423, label %424

423:                                              ; preds = %416
  br label %576

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

431:                                              ; preds = %424
  br label %574

432:                                              ; preds = %424
  %433 = load ptr, ptr %8, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %433, i32 0, i32 3
  %435 = load i8, ptr %434, align 1, !tbaa !20
  %436 = zext i8 %435 to i32
  %437 = and i32 %436, 15
  %438 = icmp eq i32 2, %437
  br i1 %438, label %439, label %440

439:                                              ; preds = %432
  br label %572

440:                                              ; preds = %432
  %441 = load ptr, ptr %8, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %441, i32 0, i32 3
  %443 = load i8, ptr %442, align 1, !tbaa !20
  %444 = zext i8 %443 to i32
  %445 = and i32 %444, 15
  %446 = icmp eq i32 3, %445
  br i1 %446, label %447, label %448

447:                                              ; preds = %440
  br label %570

448:                                              ; preds = %440
  %449 = load ptr, ptr %8, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %449, i32 0, i32 3
  %451 = load i8, ptr %450, align 1, !tbaa !20
  %452 = zext i8 %451 to i32
  %453 = and i32 %452, 15
  %454 = icmp eq i32 4, %453
  br i1 %454, label %455, label %456

455:                                              ; preds = %448
  br label %568

456:                                              ; preds = %448
  %457 = load ptr, ptr %8, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %457, i32 0, i32 3
  %459 = load i8, ptr %458, align 1, !tbaa !20
  %460 = zext i8 %459 to i32
  %461 = and i32 %460, 15
  %462 = icmp eq i32 5, %461
  br i1 %462, label %463, label %464

463:                                              ; preds = %456
  br label %566

464:                                              ; preds = %456
  %465 = load ptr, ptr %8, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %465, i32 0, i32 3
  %467 = load i8, ptr %466, align 1, !tbaa !20
  %468 = zext i8 %467 to i32
  %469 = and i32 %468, 15
  %470 = icmp eq i32 6, %469
  br i1 %470, label %471, label %472

471:                                              ; preds = %464
  br label %564

472:                                              ; preds = %464
  %473 = load ptr, ptr %8, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %473, i32 0, i32 3
  %475 = load i8, ptr %474, align 1, !tbaa !20
  %476 = zext i8 %475 to i32
  %477 = and i32 %476, 15
  %478 = icmp eq i32 7, %477
  br i1 %478, label %479, label %480

479:                                              ; preds = %472
  br label %562

480:                                              ; preds = %472
  %481 = load ptr, ptr %8, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %481, i32 0, i32 3
  %483 = load i8, ptr %482, align 1, !tbaa !20
  %484 = zext i8 %483 to i32
  %485 = and i32 %484, 15
  %486 = icmp eq i32 8, %485
  br i1 %486, label %487, label %488

487:                                              ; preds = %480
  br label %560

488:                                              ; preds = %480
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %489, i32 0, i32 3
  %491 = load i8, ptr %490, align 1, !tbaa !20
  %492 = zext i8 %491 to i32
  %493 = and i32 %492, 15
  %494 = icmp eq i32 9, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %488
  br label %558

496:                                              ; preds = %488
  %497 = load ptr, ptr %8, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %497, i32 0, i32 3
  %499 = load i8, ptr %498, align 1, !tbaa !20
  %500 = zext i8 %499 to i32
  %501 = and i32 %500, 15
  %502 = icmp eq i32 10, %501
  br i1 %502, label %503, label %504

503:                                              ; preds = %496
  br label %556

504:                                              ; preds = %496
  %505 = load ptr, ptr %8, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %505, i32 0, i32 3
  %507 = load i8, ptr %506, align 1, !tbaa !20
  %508 = zext i8 %507 to i32
  %509 = and i32 %508, 15
  %510 = icmp eq i32 11, %509
  br i1 %510, label %511, label %512

511:                                              ; preds = %504
  br label %554

512:                                              ; preds = %504
  %513 = load ptr, ptr %8, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %513, i32 0, i32 3
  %515 = load i8, ptr %514, align 1, !tbaa !20
  %516 = zext i8 %515 to i32
  %517 = and i32 %516, 15
  %518 = icmp eq i32 12, %517
  br i1 %518, label %519, label %520

519:                                              ; preds = %512
  br label %552

520:                                              ; preds = %512
  %521 = load ptr, ptr %8, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %521, i32 0, i32 3
  %523 = load i8, ptr %522, align 1, !tbaa !20
  %524 = zext i8 %523 to i32
  %525 = and i32 %524, 15
  %526 = icmp eq i32 13, %525
  br i1 %526, label %527, label %528

527:                                              ; preds = %520
  br label %550

528:                                              ; preds = %520
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %529, i32 0, i32 3
  %531 = load i8, ptr %530, align 1, !tbaa !20
  %532 = zext i8 %531 to i32
  %533 = and i32 %532, 15
  %534 = icmp eq i32 14, %533
  br i1 %534, label %535, label %536

535:                                              ; preds = %528
  br label %548

536:                                              ; preds = %528
  %537 = load ptr, ptr %8, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %537, i32 0, i32 3
  %539 = load i8, ptr %538, align 1, !tbaa !20
  %540 = zext i8 %539 to i32
  %541 = and i32 %540, 15
  %542 = icmp eq i32 15, %541
  br i1 %542, label %543, label %544

543:                                              ; preds = %536
  br label %546

544:                                              ; preds = %536
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

545:                                              ; No predecessors!
  br label %546

546:                                              ; preds = %545, %543
  %547 = phi i32 [ 15, %543 ], [ 0, %545 ]
  br label %548

548:                                              ; preds = %546, %535
  %549 = phi i32 [ 14, %535 ], [ %547, %546 ]
  br label %550

550:                                              ; preds = %548, %527
  %551 = phi i32 [ 12, %527 ], [ %549, %548 ]
  br label %552

552:                                              ; preds = %550, %519
  %553 = phi i32 [ 12, %519 ], [ %551, %550 ]
  br label %554

554:                                              ; preds = %552, %511
  %555 = phi i32 [ 10, %511 ], [ %553, %552 ]
  br label %556

556:                                              ; preds = %554, %503
  %557 = phi i32 [ 10, %503 ], [ %555, %554 ]
  br label %558

558:                                              ; preds = %556, %495
  %559 = phi i32 [ 8, %495 ], [ %557, %556 ]
  br label %560

560:                                              ; preds = %558, %487
  %561 = phi i32 [ 8, %487 ], [ %559, %558 ]
  br label %562

562:                                              ; preds = %560, %479
  %563 = phi i32 [ 6, %479 ], [ %561, %560 ]
  br label %564

564:                                              ; preds = %562, %471
  %565 = phi i32 [ 6, %471 ], [ %563, %562 ]
  br label %566

566:                                              ; preds = %564, %463
  %567 = phi i32 [ 5, %463 ], [ %565, %564 ]
  br label %568

568:                                              ; preds = %566, %455
  %569 = phi i32 [ 4, %455 ], [ %567, %566 ]
  br label %570

570:                                              ; preds = %568, %447
  %571 = phi i32 [ 3, %447 ], [ %569, %568 ]
  br label %572

572:                                              ; preds = %570, %439
  %573 = phi i32 [ 2, %439 ], [ %571, %570 ]
  br label %574

574:                                              ; preds = %572, %431
  %575 = phi i32 [ 1, %431 ], [ %573, %572 ]
  br label %576

576:                                              ; preds = %574, %423
  %577 = phi i32 [ 0, %423 ], [ %575, %574 ]
  br label %584

578:                                              ; preds = %409
  %579 = load ptr, ptr %8, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %579, i32 0, i32 3
  %581 = load i8, ptr %580, align 1, !tbaa !20
  %582 = zext i8 %581 to i32
  %583 = ashr i32 %582, 4
  br label %584

584:                                              ; preds = %578, %576
  %585 = phi i32 [ %577, %576 ], [ %583, %578 ]
  %586 = icmp eq i32 2, %585
  br i1 %586, label %587, label %588

587:                                              ; preds = %584
  br label %2581

588:                                              ; preds = %584
  %589 = load ptr, ptr %8, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %589, i32 0, i32 3
  %591 = load i8, ptr %590, align 1, !tbaa !20
  %592 = zext i8 %591 to i32
  %593 = ashr i32 %592, 4
  %594 = icmp eq i32 0, %593
  br i1 %594, label %595, label %757

595:                                              ; preds = %588
  %596 = load ptr, ptr %8, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %596, i32 0, i32 3
  %598 = load i8, ptr %597, align 1, !tbaa !20
  %599 = zext i8 %598 to i32
  %600 = and i32 %599, 15
  %601 = icmp eq i32 0, %600
  br i1 %601, label %602, label %603

602:                                              ; preds = %595
  br label %755

603:                                              ; preds = %595
  %604 = load ptr, ptr %8, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %604, i32 0, i32 3
  %606 = load i8, ptr %605, align 1, !tbaa !20
  %607 = zext i8 %606 to i32
  %608 = and i32 %607, 15
  %609 = icmp eq i32 1, %608
  br i1 %609, label %610, label %611

610:                                              ; preds = %603
  br label %753

611:                                              ; preds = %603
  %612 = load ptr, ptr %8, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %612, i32 0, i32 3
  %614 = load i8, ptr %613, align 1, !tbaa !20
  %615 = zext i8 %614 to i32
  %616 = and i32 %615, 15
  %617 = icmp eq i32 2, %616
  br i1 %617, label %618, label %619

618:                                              ; preds = %611
  br label %751

619:                                              ; preds = %611
  %620 = load ptr, ptr %8, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %620, i32 0, i32 3
  %622 = load i8, ptr %621, align 1, !tbaa !20
  %623 = zext i8 %622 to i32
  %624 = and i32 %623, 15
  %625 = icmp eq i32 3, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %619
  br label %749

627:                                              ; preds = %619
  %628 = load ptr, ptr %8, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %628, i32 0, i32 3
  %630 = load i8, ptr %629, align 1, !tbaa !20
  %631 = zext i8 %630 to i32
  %632 = and i32 %631, 15
  %633 = icmp eq i32 4, %632
  br i1 %633, label %634, label %635

634:                                              ; preds = %627
  br label %747

635:                                              ; preds = %627
  %636 = load ptr, ptr %8, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %636, i32 0, i32 3
  %638 = load i8, ptr %637, align 1, !tbaa !20
  %639 = zext i8 %638 to i32
  %640 = and i32 %639, 15
  %641 = icmp eq i32 5, %640
  br i1 %641, label %642, label %643

642:                                              ; preds = %635
  br label %745

643:                                              ; preds = %635
  %644 = load ptr, ptr %8, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %644, i32 0, i32 3
  %646 = load i8, ptr %645, align 1, !tbaa !20
  %647 = zext i8 %646 to i32
  %648 = and i32 %647, 15
  %649 = icmp eq i32 6, %648
  br i1 %649, label %650, label %651

650:                                              ; preds = %643
  br label %743

651:                                              ; preds = %643
  %652 = load ptr, ptr %8, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %652, i32 0, i32 3
  %654 = load i8, ptr %653, align 1, !tbaa !20
  %655 = zext i8 %654 to i32
  %656 = and i32 %655, 15
  %657 = icmp eq i32 7, %656
  br i1 %657, label %658, label %659

658:                                              ; preds = %651
  br label %741

659:                                              ; preds = %651
  %660 = load ptr, ptr %8, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %660, i32 0, i32 3
  %662 = load i8, ptr %661, align 1, !tbaa !20
  %663 = zext i8 %662 to i32
  %664 = and i32 %663, 15
  %665 = icmp eq i32 8, %664
  br i1 %665, label %666, label %667

666:                                              ; preds = %659
  br label %739

667:                                              ; preds = %659
  %668 = load ptr, ptr %8, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %668, i32 0, i32 3
  %670 = load i8, ptr %669, align 1, !tbaa !20
  %671 = zext i8 %670 to i32
  %672 = and i32 %671, 15
  %673 = icmp eq i32 9, %672
  br i1 %673, label %674, label %675

674:                                              ; preds = %667
  br label %737

675:                                              ; preds = %667
  %676 = load ptr, ptr %8, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %676, i32 0, i32 3
  %678 = load i8, ptr %677, align 1, !tbaa !20
  %679 = zext i8 %678 to i32
  %680 = and i32 %679, 15
  %681 = icmp eq i32 10, %680
  br i1 %681, label %682, label %683

682:                                              ; preds = %675
  br label %735

683:                                              ; preds = %675
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %684, i32 0, i32 3
  %686 = load i8, ptr %685, align 1, !tbaa !20
  %687 = zext i8 %686 to i32
  %688 = and i32 %687, 15
  %689 = icmp eq i32 11, %688
  br i1 %689, label %690, label %691

690:                                              ; preds = %683
  br label %733

691:                                              ; preds = %683
  %692 = load ptr, ptr %8, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %692, i32 0, i32 3
  %694 = load i8, ptr %693, align 1, !tbaa !20
  %695 = zext i8 %694 to i32
  %696 = and i32 %695, 15
  %697 = icmp eq i32 12, %696
  br i1 %697, label %698, label %699

698:                                              ; preds = %691
  br label %731

699:                                              ; preds = %691
  %700 = load ptr, ptr %8, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %700, i32 0, i32 3
  %702 = load i8, ptr %701, align 1, !tbaa !20
  %703 = zext i8 %702 to i32
  %704 = and i32 %703, 15
  %705 = icmp eq i32 13, %704
  br i1 %705, label %706, label %707

706:                                              ; preds = %699
  br label %729

707:                                              ; preds = %699
  %708 = load ptr, ptr %8, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %708, i32 0, i32 3
  %710 = load i8, ptr %709, align 1, !tbaa !20
  %711 = zext i8 %710 to i32
  %712 = and i32 %711, 15
  %713 = icmp eq i32 14, %712
  br i1 %713, label %714, label %715

714:                                              ; preds = %707
  br label %727

715:                                              ; preds = %707
  %716 = load ptr, ptr %8, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %716, i32 0, i32 3
  %718 = load i8, ptr %717, align 1, !tbaa !20
  %719 = zext i8 %718 to i32
  %720 = and i32 %719, 15
  %721 = icmp eq i32 15, %720
  br i1 %721, label %722, label %723

722:                                              ; preds = %715
  br label %725

723:                                              ; preds = %715
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

724:                                              ; No predecessors!
  br label %725

725:                                              ; preds = %724, %722
  %726 = phi i32 [ 15, %722 ], [ 0, %724 ]
  br label %727

727:                                              ; preds = %725, %714
  %728 = phi i32 [ 14, %714 ], [ %726, %725 ]
  br label %729

729:                                              ; preds = %727, %706
  %730 = phi i32 [ 12, %706 ], [ %728, %727 ]
  br label %731

731:                                              ; preds = %729, %698
  %732 = phi i32 [ 12, %698 ], [ %730, %729 ]
  br label %733

733:                                              ; preds = %731, %690
  %734 = phi i32 [ 10, %690 ], [ %732, %731 ]
  br label %735

735:                                              ; preds = %733, %682
  %736 = phi i32 [ 10, %682 ], [ %734, %733 ]
  br label %737

737:                                              ; preds = %735, %674
  %738 = phi i32 [ 8, %674 ], [ %736, %735 ]
  br label %739

739:                                              ; preds = %737, %666
  %740 = phi i32 [ 8, %666 ], [ %738, %737 ]
  br label %741

741:                                              ; preds = %739, %658
  %742 = phi i32 [ 6, %658 ], [ %740, %739 ]
  br label %743

743:                                              ; preds = %741, %650
  %744 = phi i32 [ 6, %650 ], [ %742, %741 ]
  br label %745

745:                                              ; preds = %743, %642
  %746 = phi i32 [ 5, %642 ], [ %744, %743 ]
  br label %747

747:                                              ; preds = %745, %634
  %748 = phi i32 [ 4, %634 ], [ %746, %745 ]
  br label %749

749:                                              ; preds = %747, %626
  %750 = phi i32 [ 3, %626 ], [ %748, %747 ]
  br label %751

751:                                              ; preds = %749, %618
  %752 = phi i32 [ 2, %618 ], [ %750, %749 ]
  br label %753

753:                                              ; preds = %751, %610
  %754 = phi i32 [ 1, %610 ], [ %752, %751 ]
  br label %755

755:                                              ; preds = %753, %602
  %756 = phi i32 [ 0, %602 ], [ %754, %753 ]
  br label %763

757:                                              ; preds = %588
  %758 = load ptr, ptr %8, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %758, i32 0, i32 3
  %760 = load i8, ptr %759, align 1, !tbaa !20
  %761 = zext i8 %760 to i32
  %762 = ashr i32 %761, 4
  br label %763

763:                                              ; preds = %757, %755
  %764 = phi i32 [ %756, %755 ], [ %762, %757 ]
  %765 = icmp eq i32 3, %764
  br i1 %765, label %766, label %767

766:                                              ; preds = %763
  br label %2579

767:                                              ; preds = %763
  %768 = load ptr, ptr %8, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %768, i32 0, i32 3
  %770 = load i8, ptr %769, align 1, !tbaa !20
  %771 = zext i8 %770 to i32
  %772 = ashr i32 %771, 4
  %773 = icmp eq i32 0, %772
  br i1 %773, label %774, label %936

774:                                              ; preds = %767
  %775 = load ptr, ptr %8, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %775, i32 0, i32 3
  %777 = load i8, ptr %776, align 1, !tbaa !20
  %778 = zext i8 %777 to i32
  %779 = and i32 %778, 15
  %780 = icmp eq i32 0, %779
  br i1 %780, label %781, label %782

781:                                              ; preds = %774
  br label %934

782:                                              ; preds = %774
  %783 = load ptr, ptr %8, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %783, i32 0, i32 3
  %785 = load i8, ptr %784, align 1, !tbaa !20
  %786 = zext i8 %785 to i32
  %787 = and i32 %786, 15
  %788 = icmp eq i32 1, %787
  br i1 %788, label %789, label %790

789:                                              ; preds = %782
  br label %932

790:                                              ; preds = %782
  %791 = load ptr, ptr %8, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %791, i32 0, i32 3
  %793 = load i8, ptr %792, align 1, !tbaa !20
  %794 = zext i8 %793 to i32
  %795 = and i32 %794, 15
  %796 = icmp eq i32 2, %795
  br i1 %796, label %797, label %798

797:                                              ; preds = %790
  br label %930

798:                                              ; preds = %790
  %799 = load ptr, ptr %8, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %799, i32 0, i32 3
  %801 = load i8, ptr %800, align 1, !tbaa !20
  %802 = zext i8 %801 to i32
  %803 = and i32 %802, 15
  %804 = icmp eq i32 3, %803
  br i1 %804, label %805, label %806

805:                                              ; preds = %798
  br label %928

806:                                              ; preds = %798
  %807 = load ptr, ptr %8, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %807, i32 0, i32 3
  %809 = load i8, ptr %808, align 1, !tbaa !20
  %810 = zext i8 %809 to i32
  %811 = and i32 %810, 15
  %812 = icmp eq i32 4, %811
  br i1 %812, label %813, label %814

813:                                              ; preds = %806
  br label %926

814:                                              ; preds = %806
  %815 = load ptr, ptr %8, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %815, i32 0, i32 3
  %817 = load i8, ptr %816, align 1, !tbaa !20
  %818 = zext i8 %817 to i32
  %819 = and i32 %818, 15
  %820 = icmp eq i32 5, %819
  br i1 %820, label %821, label %822

821:                                              ; preds = %814
  br label %924

822:                                              ; preds = %814
  %823 = load ptr, ptr %8, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %823, i32 0, i32 3
  %825 = load i8, ptr %824, align 1, !tbaa !20
  %826 = zext i8 %825 to i32
  %827 = and i32 %826, 15
  %828 = icmp eq i32 6, %827
  br i1 %828, label %829, label %830

829:                                              ; preds = %822
  br label %922

830:                                              ; preds = %822
  %831 = load ptr, ptr %8, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %831, i32 0, i32 3
  %833 = load i8, ptr %832, align 1, !tbaa !20
  %834 = zext i8 %833 to i32
  %835 = and i32 %834, 15
  %836 = icmp eq i32 7, %835
  br i1 %836, label %837, label %838

837:                                              ; preds = %830
  br label %920

838:                                              ; preds = %830
  %839 = load ptr, ptr %8, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %839, i32 0, i32 3
  %841 = load i8, ptr %840, align 1, !tbaa !20
  %842 = zext i8 %841 to i32
  %843 = and i32 %842, 15
  %844 = icmp eq i32 8, %843
  br i1 %844, label %845, label %846

845:                                              ; preds = %838
  br label %918

846:                                              ; preds = %838
  %847 = load ptr, ptr %8, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %847, i32 0, i32 3
  %849 = load i8, ptr %848, align 1, !tbaa !20
  %850 = zext i8 %849 to i32
  %851 = and i32 %850, 15
  %852 = icmp eq i32 9, %851
  br i1 %852, label %853, label %854

853:                                              ; preds = %846
  br label %916

854:                                              ; preds = %846
  %855 = load ptr, ptr %8, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %855, i32 0, i32 3
  %857 = load i8, ptr %856, align 1, !tbaa !20
  %858 = zext i8 %857 to i32
  %859 = and i32 %858, 15
  %860 = icmp eq i32 10, %859
  br i1 %860, label %861, label %862

861:                                              ; preds = %854
  br label %914

862:                                              ; preds = %854
  %863 = load ptr, ptr %8, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %863, i32 0, i32 3
  %865 = load i8, ptr %864, align 1, !tbaa !20
  %866 = zext i8 %865 to i32
  %867 = and i32 %866, 15
  %868 = icmp eq i32 11, %867
  br i1 %868, label %869, label %870

869:                                              ; preds = %862
  br label %912

870:                                              ; preds = %862
  %871 = load ptr, ptr %8, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %871, i32 0, i32 3
  %873 = load i8, ptr %872, align 1, !tbaa !20
  %874 = zext i8 %873 to i32
  %875 = and i32 %874, 15
  %876 = icmp eq i32 12, %875
  br i1 %876, label %877, label %878

877:                                              ; preds = %870
  br label %910

878:                                              ; preds = %870
  %879 = load ptr, ptr %8, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %879, i32 0, i32 3
  %881 = load i8, ptr %880, align 1, !tbaa !20
  %882 = zext i8 %881 to i32
  %883 = and i32 %882, 15
  %884 = icmp eq i32 13, %883
  br i1 %884, label %885, label %886

885:                                              ; preds = %878
  br label %908

886:                                              ; preds = %878
  %887 = load ptr, ptr %8, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %887, i32 0, i32 3
  %889 = load i8, ptr %888, align 1, !tbaa !20
  %890 = zext i8 %889 to i32
  %891 = and i32 %890, 15
  %892 = icmp eq i32 14, %891
  br i1 %892, label %893, label %894

893:                                              ; preds = %886
  br label %906

894:                                              ; preds = %886
  %895 = load ptr, ptr %8, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %895, i32 0, i32 3
  %897 = load i8, ptr %896, align 1, !tbaa !20
  %898 = zext i8 %897 to i32
  %899 = and i32 %898, 15
  %900 = icmp eq i32 15, %899
  br i1 %900, label %901, label %902

901:                                              ; preds = %894
  br label %904

902:                                              ; preds = %894
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

903:                                              ; No predecessors!
  br label %904

904:                                              ; preds = %903, %901
  %905 = phi i32 [ 15, %901 ], [ 0, %903 ]
  br label %906

906:                                              ; preds = %904, %893
  %907 = phi i32 [ 14, %893 ], [ %905, %904 ]
  br label %908

908:                                              ; preds = %906, %885
  %909 = phi i32 [ 12, %885 ], [ %907, %906 ]
  br label %910

910:                                              ; preds = %908, %877
  %911 = phi i32 [ 12, %877 ], [ %909, %908 ]
  br label %912

912:                                              ; preds = %910, %869
  %913 = phi i32 [ 10, %869 ], [ %911, %910 ]
  br label %914

914:                                              ; preds = %912, %861
  %915 = phi i32 [ 10, %861 ], [ %913, %912 ]
  br label %916

916:                                              ; preds = %914, %853
  %917 = phi i32 [ 8, %853 ], [ %915, %914 ]
  br label %918

918:                                              ; preds = %916, %845
  %919 = phi i32 [ 8, %845 ], [ %917, %916 ]
  br label %920

920:                                              ; preds = %918, %837
  %921 = phi i32 [ 6, %837 ], [ %919, %918 ]
  br label %922

922:                                              ; preds = %920, %829
  %923 = phi i32 [ 6, %829 ], [ %921, %920 ]
  br label %924

924:                                              ; preds = %922, %821
  %925 = phi i32 [ 5, %821 ], [ %923, %922 ]
  br label %926

926:                                              ; preds = %924, %813
  %927 = phi i32 [ 4, %813 ], [ %925, %924 ]
  br label %928

928:                                              ; preds = %926, %805
  %929 = phi i32 [ 3, %805 ], [ %927, %926 ]
  br label %930

930:                                              ; preds = %928, %797
  %931 = phi i32 [ 2, %797 ], [ %929, %928 ]
  br label %932

932:                                              ; preds = %930, %789
  %933 = phi i32 [ 1, %789 ], [ %931, %930 ]
  br label %934

934:                                              ; preds = %932, %781
  %935 = phi i32 [ 0, %781 ], [ %933, %932 ]
  br label %942

936:                                              ; preds = %767
  %937 = load ptr, ptr %8, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %937, i32 0, i32 3
  %939 = load i8, ptr %938, align 1, !tbaa !20
  %940 = zext i8 %939 to i32
  %941 = ashr i32 %940, 4
  br label %942

942:                                              ; preds = %936, %934
  %943 = phi i32 [ %935, %934 ], [ %941, %936 ]
  %944 = icmp eq i32 4, %943
  br i1 %944, label %945, label %946

945:                                              ; preds = %942
  br label %2577

946:                                              ; preds = %942
  %947 = load ptr, ptr %8, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %947, i32 0, i32 3
  %949 = load i8, ptr %948, align 1, !tbaa !20
  %950 = zext i8 %949 to i32
  %951 = ashr i32 %950, 4
  %952 = icmp eq i32 0, %951
  br i1 %952, label %953, label %1115

953:                                              ; preds = %946
  %954 = load ptr, ptr %8, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %954, i32 0, i32 3
  %956 = load i8, ptr %955, align 1, !tbaa !20
  %957 = zext i8 %956 to i32
  %958 = and i32 %957, 15
  %959 = icmp eq i32 0, %958
  br i1 %959, label %960, label %961

960:                                              ; preds = %953
  br label %1113

961:                                              ; preds = %953
  %962 = load ptr, ptr %8, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %962, i32 0, i32 3
  %964 = load i8, ptr %963, align 1, !tbaa !20
  %965 = zext i8 %964 to i32
  %966 = and i32 %965, 15
  %967 = icmp eq i32 1, %966
  br i1 %967, label %968, label %969

968:                                              ; preds = %961
  br label %1111

969:                                              ; preds = %961
  %970 = load ptr, ptr %8, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %970, i32 0, i32 3
  %972 = load i8, ptr %971, align 1, !tbaa !20
  %973 = zext i8 %972 to i32
  %974 = and i32 %973, 15
  %975 = icmp eq i32 2, %974
  br i1 %975, label %976, label %977

976:                                              ; preds = %969
  br label %1109

977:                                              ; preds = %969
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %978, i32 0, i32 3
  %980 = load i8, ptr %979, align 1, !tbaa !20
  %981 = zext i8 %980 to i32
  %982 = and i32 %981, 15
  %983 = icmp eq i32 3, %982
  br i1 %983, label %984, label %985

984:                                              ; preds = %977
  br label %1107

985:                                              ; preds = %977
  %986 = load ptr, ptr %8, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %986, i32 0, i32 3
  %988 = load i8, ptr %987, align 1, !tbaa !20
  %989 = zext i8 %988 to i32
  %990 = and i32 %989, 15
  %991 = icmp eq i32 4, %990
  br i1 %991, label %992, label %993

992:                                              ; preds = %985
  br label %1105

993:                                              ; preds = %985
  %994 = load ptr, ptr %8, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %994, i32 0, i32 3
  %996 = load i8, ptr %995, align 1, !tbaa !20
  %997 = zext i8 %996 to i32
  %998 = and i32 %997, 15
  %999 = icmp eq i32 5, %998
  br i1 %999, label %1000, label %1001

1000:                                             ; preds = %993
  br label %1103

1001:                                             ; preds = %993
  %1002 = load ptr, ptr %8, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1002, i32 0, i32 3
  %1004 = load i8, ptr %1003, align 1, !tbaa !20
  %1005 = zext i8 %1004 to i32
  %1006 = and i32 %1005, 15
  %1007 = icmp eq i32 6, %1006
  br i1 %1007, label %1008, label %1009

1008:                                             ; preds = %1001
  br label %1101

1009:                                             ; preds = %1001
  %1010 = load ptr, ptr %8, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1010, i32 0, i32 3
  %1012 = load i8, ptr %1011, align 1, !tbaa !20
  %1013 = zext i8 %1012 to i32
  %1014 = and i32 %1013, 15
  %1015 = icmp eq i32 7, %1014
  br i1 %1015, label %1016, label %1017

1016:                                             ; preds = %1009
  br label %1099

1017:                                             ; preds = %1009
  %1018 = load ptr, ptr %8, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1018, i32 0, i32 3
  %1020 = load i8, ptr %1019, align 1, !tbaa !20
  %1021 = zext i8 %1020 to i32
  %1022 = and i32 %1021, 15
  %1023 = icmp eq i32 8, %1022
  br i1 %1023, label %1024, label %1025

1024:                                             ; preds = %1017
  br label %1097

1025:                                             ; preds = %1017
  %1026 = load ptr, ptr %8, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1026, i32 0, i32 3
  %1028 = load i8, ptr %1027, align 1, !tbaa !20
  %1029 = zext i8 %1028 to i32
  %1030 = and i32 %1029, 15
  %1031 = icmp eq i32 9, %1030
  br i1 %1031, label %1032, label %1033

1032:                                             ; preds = %1025
  br label %1095

1033:                                             ; preds = %1025
  %1034 = load ptr, ptr %8, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1034, i32 0, i32 3
  %1036 = load i8, ptr %1035, align 1, !tbaa !20
  %1037 = zext i8 %1036 to i32
  %1038 = and i32 %1037, 15
  %1039 = icmp eq i32 10, %1038
  br i1 %1039, label %1040, label %1041

1040:                                             ; preds = %1033
  br label %1093

1041:                                             ; preds = %1033
  %1042 = load ptr, ptr %8, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1042, i32 0, i32 3
  %1044 = load i8, ptr %1043, align 1, !tbaa !20
  %1045 = zext i8 %1044 to i32
  %1046 = and i32 %1045, 15
  %1047 = icmp eq i32 11, %1046
  br i1 %1047, label %1048, label %1049

1048:                                             ; preds = %1041
  br label %1091

1049:                                             ; preds = %1041
  %1050 = load ptr, ptr %8, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1050, i32 0, i32 3
  %1052 = load i8, ptr %1051, align 1, !tbaa !20
  %1053 = zext i8 %1052 to i32
  %1054 = and i32 %1053, 15
  %1055 = icmp eq i32 12, %1054
  br i1 %1055, label %1056, label %1057

1056:                                             ; preds = %1049
  br label %1089

1057:                                             ; preds = %1049
  %1058 = load ptr, ptr %8, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1058, i32 0, i32 3
  %1060 = load i8, ptr %1059, align 1, !tbaa !20
  %1061 = zext i8 %1060 to i32
  %1062 = and i32 %1061, 15
  %1063 = icmp eq i32 13, %1062
  br i1 %1063, label %1064, label %1065

1064:                                             ; preds = %1057
  br label %1087

1065:                                             ; preds = %1057
  %1066 = load ptr, ptr %8, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1066, i32 0, i32 3
  %1068 = load i8, ptr %1067, align 1, !tbaa !20
  %1069 = zext i8 %1068 to i32
  %1070 = and i32 %1069, 15
  %1071 = icmp eq i32 14, %1070
  br i1 %1071, label %1072, label %1073

1072:                                             ; preds = %1065
  br label %1085

1073:                                             ; preds = %1065
  %1074 = load ptr, ptr %8, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1074, i32 0, i32 3
  %1076 = load i8, ptr %1075, align 1, !tbaa !20
  %1077 = zext i8 %1076 to i32
  %1078 = and i32 %1077, 15
  %1079 = icmp eq i32 15, %1078
  br i1 %1079, label %1080, label %1081

1080:                                             ; preds = %1073
  br label %1083

1081:                                             ; preds = %1073
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

1082:                                             ; No predecessors!
  br label %1083

1083:                                             ; preds = %1082, %1080
  %1084 = phi i32 [ 15, %1080 ], [ 0, %1082 ]
  br label %1085

1085:                                             ; preds = %1083, %1072
  %1086 = phi i32 [ 14, %1072 ], [ %1084, %1083 ]
  br label %1087

1087:                                             ; preds = %1085, %1064
  %1088 = phi i32 [ 12, %1064 ], [ %1086, %1085 ]
  br label %1089

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

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

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

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

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

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

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

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

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

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

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

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

1113:                                             ; preds = %1111, %960
  %1114 = phi i32 [ 0, %960 ], [ %1112, %1111 ]
  br label %1121

1115:                                             ; preds = %946
  %1116 = load ptr, ptr %8, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1116, i32 0, i32 3
  %1118 = load i8, ptr %1117, align 1, !tbaa !20
  %1119 = zext i8 %1118 to i32
  %1120 = ashr i32 %1119, 4
  br label %1121

1121:                                             ; preds = %1115, %1113
  %1122 = phi i32 [ %1114, %1113 ], [ %1120, %1115 ]
  %1123 = icmp eq i32 5, %1122
  br i1 %1123, label %1124, label %1125

1124:                                             ; preds = %1121
  br label %2575

1125:                                             ; preds = %1121
  %1126 = load ptr, ptr %8, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1126, i32 0, i32 3
  %1128 = load i8, ptr %1127, align 1, !tbaa !20
  %1129 = zext i8 %1128 to i32
  %1130 = ashr i32 %1129, 4
  %1131 = icmp eq i32 0, %1130
  br i1 %1131, label %1132, label %1294

1132:                                             ; preds = %1125
  %1133 = load ptr, ptr %8, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1133, i32 0, i32 3
  %1135 = load i8, ptr %1134, align 1, !tbaa !20
  %1136 = zext i8 %1135 to i32
  %1137 = and i32 %1136, 15
  %1138 = icmp eq i32 0, %1137
  br i1 %1138, label %1139, label %1140

1139:                                             ; preds = %1132
  br label %1292

1140:                                             ; preds = %1132
  %1141 = load ptr, ptr %8, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1141, i32 0, i32 3
  %1143 = load i8, ptr %1142, align 1, !tbaa !20
  %1144 = zext i8 %1143 to i32
  %1145 = and i32 %1144, 15
  %1146 = icmp eq i32 1, %1145
  br i1 %1146, label %1147, label %1148

1147:                                             ; preds = %1140
  br label %1290

1148:                                             ; preds = %1140
  %1149 = load ptr, ptr %8, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1149, i32 0, i32 3
  %1151 = load i8, ptr %1150, align 1, !tbaa !20
  %1152 = zext i8 %1151 to i32
  %1153 = and i32 %1152, 15
  %1154 = icmp eq i32 2, %1153
  br i1 %1154, label %1155, label %1156

1155:                                             ; preds = %1148
  br label %1288

1156:                                             ; preds = %1148
  %1157 = load ptr, ptr %8, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1157, i32 0, i32 3
  %1159 = load i8, ptr %1158, align 1, !tbaa !20
  %1160 = zext i8 %1159 to i32
  %1161 = and i32 %1160, 15
  %1162 = icmp eq i32 3, %1161
  br i1 %1162, label %1163, label %1164

1163:                                             ; preds = %1156
  br label %1286

1164:                                             ; preds = %1156
  %1165 = load ptr, ptr %8, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1165, i32 0, i32 3
  %1167 = load i8, ptr %1166, align 1, !tbaa !20
  %1168 = zext i8 %1167 to i32
  %1169 = and i32 %1168, 15
  %1170 = icmp eq i32 4, %1169
  br i1 %1170, label %1171, label %1172

1171:                                             ; preds = %1164
  br label %1284

1172:                                             ; preds = %1164
  %1173 = load ptr, ptr %8, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1173, i32 0, i32 3
  %1175 = load i8, ptr %1174, align 1, !tbaa !20
  %1176 = zext i8 %1175 to i32
  %1177 = and i32 %1176, 15
  %1178 = icmp eq i32 5, %1177
  br i1 %1178, label %1179, label %1180

1179:                                             ; preds = %1172
  br label %1282

1180:                                             ; preds = %1172
  %1181 = load ptr, ptr %8, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1181, i32 0, i32 3
  %1183 = load i8, ptr %1182, align 1, !tbaa !20
  %1184 = zext i8 %1183 to i32
  %1185 = and i32 %1184, 15
  %1186 = icmp eq i32 6, %1185
  br i1 %1186, label %1187, label %1188

1187:                                             ; preds = %1180
  br label %1280

1188:                                             ; preds = %1180
  %1189 = load ptr, ptr %8, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1189, i32 0, i32 3
  %1191 = load i8, ptr %1190, align 1, !tbaa !20
  %1192 = zext i8 %1191 to i32
  %1193 = and i32 %1192, 15
  %1194 = icmp eq i32 7, %1193
  br i1 %1194, label %1195, label %1196

1195:                                             ; preds = %1188
  br label %1278

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

1203:                                             ; preds = %1196
  br label %1276

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

1211:                                             ; preds = %1204
  br label %1274

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

1219:                                             ; preds = %1212
  br label %1272

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

1227:                                             ; preds = %1220
  br label %1270

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

1235:                                             ; preds = %1228
  br label %1268

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

1243:                                             ; preds = %1236
  br label %1266

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

1251:                                             ; preds = %1244
  br label %1264

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

1259:                                             ; preds = %1252
  br label %1262

1260:                                             ; preds = %1252
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

1261:                                             ; No predecessors!
  br label %1262

1262:                                             ; preds = %1261, %1259
  %1263 = phi i32 [ 15, %1259 ], [ 0, %1261 ]
  br label %1264

1264:                                             ; preds = %1262, %1251
  %1265 = phi i32 [ 14, %1251 ], [ %1263, %1262 ]
  br label %1266

1266:                                             ; preds = %1264, %1243
  %1267 = phi i32 [ 12, %1243 ], [ %1265, %1264 ]
  br label %1268

1268:                                             ; preds = %1266, %1235
  %1269 = phi i32 [ 12, %1235 ], [ %1267, %1266 ]
  br label %1270

1270:                                             ; preds = %1268, %1227
  %1271 = phi i32 [ 10, %1227 ], [ %1269, %1268 ]
  br label %1272

1272:                                             ; preds = %1270, %1219
  %1273 = phi i32 [ 10, %1219 ], [ %1271, %1270 ]
  br label %1274

1274:                                             ; preds = %1272, %1211
  %1275 = phi i32 [ 8, %1211 ], [ %1273, %1272 ]
  br label %1276

1276:                                             ; preds = %1274, %1203
  %1277 = phi i32 [ 8, %1203 ], [ %1275, %1274 ]
  br label %1278

1278:                                             ; preds = %1276, %1195
  %1279 = phi i32 [ 6, %1195 ], [ %1277, %1276 ]
  br label %1280

1280:                                             ; preds = %1278, %1187
  %1281 = phi i32 [ 6, %1187 ], [ %1279, %1278 ]
  br label %1282

1282:                                             ; preds = %1280, %1179
  %1283 = phi i32 [ 5, %1179 ], [ %1281, %1280 ]
  br label %1284

1284:                                             ; preds = %1282, %1171
  %1285 = phi i32 [ 4, %1171 ], [ %1283, %1282 ]
  br label %1286

1286:                                             ; preds = %1284, %1163
  %1287 = phi i32 [ 3, %1163 ], [ %1285, %1284 ]
  br label %1288

1288:                                             ; preds = %1286, %1155
  %1289 = phi i32 [ 2, %1155 ], [ %1287, %1286 ]
  br label %1290

1290:                                             ; preds = %1288, %1147
  %1291 = phi i32 [ 1, %1147 ], [ %1289, %1288 ]
  br label %1292

1292:                                             ; preds = %1290, %1139
  %1293 = phi i32 [ 0, %1139 ], [ %1291, %1290 ]
  br label %1300

1294:                                             ; preds = %1125
  %1295 = load ptr, ptr %8, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1295, i32 0, i32 3
  %1297 = load i8, ptr %1296, align 1, !tbaa !20
  %1298 = zext i8 %1297 to i32
  %1299 = ashr i32 %1298, 4
  br label %1300

1300:                                             ; preds = %1294, %1292
  %1301 = phi i32 [ %1293, %1292 ], [ %1299, %1294 ]
  %1302 = icmp eq i32 6, %1301
  br i1 %1302, label %1303, label %1304

1303:                                             ; preds = %1300
  br label %2573

1304:                                             ; preds = %1300
  %1305 = load ptr, ptr %8, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1305, i32 0, i32 3
  %1307 = load i8, ptr %1306, align 1, !tbaa !20
  %1308 = zext i8 %1307 to i32
  %1309 = ashr i32 %1308, 4
  %1310 = icmp eq i32 0, %1309
  br i1 %1310, label %1311, label %1473

1311:                                             ; preds = %1304
  %1312 = load ptr, ptr %8, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1312, i32 0, i32 3
  %1314 = load i8, ptr %1313, align 1, !tbaa !20
  %1315 = zext i8 %1314 to i32
  %1316 = and i32 %1315, 15
  %1317 = icmp eq i32 0, %1316
  br i1 %1317, label %1318, label %1319

1318:                                             ; preds = %1311
  br label %1471

1319:                                             ; preds = %1311
  %1320 = load ptr, ptr %8, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1320, i32 0, i32 3
  %1322 = load i8, ptr %1321, align 1, !tbaa !20
  %1323 = zext i8 %1322 to i32
  %1324 = and i32 %1323, 15
  %1325 = icmp eq i32 1, %1324
  br i1 %1325, label %1326, label %1327

1326:                                             ; preds = %1319
  br label %1469

1327:                                             ; preds = %1319
  %1328 = load ptr, ptr %8, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1328, i32 0, i32 3
  %1330 = load i8, ptr %1329, align 1, !tbaa !20
  %1331 = zext i8 %1330 to i32
  %1332 = and i32 %1331, 15
  %1333 = icmp eq i32 2, %1332
  br i1 %1333, label %1334, label %1335

1334:                                             ; preds = %1327
  br label %1467

1335:                                             ; preds = %1327
  %1336 = load ptr, ptr %8, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1336, i32 0, i32 3
  %1338 = load i8, ptr %1337, align 1, !tbaa !20
  %1339 = zext i8 %1338 to i32
  %1340 = and i32 %1339, 15
  %1341 = icmp eq i32 3, %1340
  br i1 %1341, label %1342, label %1343

1342:                                             ; preds = %1335
  br label %1465

1343:                                             ; preds = %1335
  %1344 = load ptr, ptr %8, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1344, i32 0, i32 3
  %1346 = load i8, ptr %1345, align 1, !tbaa !20
  %1347 = zext i8 %1346 to i32
  %1348 = and i32 %1347, 15
  %1349 = icmp eq i32 4, %1348
  br i1 %1349, label %1350, label %1351

1350:                                             ; preds = %1343
  br label %1463

1351:                                             ; preds = %1343
  %1352 = load ptr, ptr %8, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1352, i32 0, i32 3
  %1354 = load i8, ptr %1353, align 1, !tbaa !20
  %1355 = zext i8 %1354 to i32
  %1356 = and i32 %1355, 15
  %1357 = icmp eq i32 5, %1356
  br i1 %1357, label %1358, label %1359

1358:                                             ; preds = %1351
  br label %1461

1359:                                             ; preds = %1351
  %1360 = load ptr, ptr %8, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1360, i32 0, i32 3
  %1362 = load i8, ptr %1361, align 1, !tbaa !20
  %1363 = zext i8 %1362 to i32
  %1364 = and i32 %1363, 15
  %1365 = icmp eq i32 6, %1364
  br i1 %1365, label %1366, label %1367

1366:                                             ; preds = %1359
  br label %1459

1367:                                             ; preds = %1359
  %1368 = load ptr, ptr %8, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1368, i32 0, i32 3
  %1370 = load i8, ptr %1369, align 1, !tbaa !20
  %1371 = zext i8 %1370 to i32
  %1372 = and i32 %1371, 15
  %1373 = icmp eq i32 7, %1372
  br i1 %1373, label %1374, label %1375

1374:                                             ; preds = %1367
  br label %1457

1375:                                             ; preds = %1367
  %1376 = load ptr, ptr %8, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1376, i32 0, i32 3
  %1378 = load i8, ptr %1377, align 1, !tbaa !20
  %1379 = zext i8 %1378 to i32
  %1380 = and i32 %1379, 15
  %1381 = icmp eq i32 8, %1380
  br i1 %1381, label %1382, label %1383

1382:                                             ; preds = %1375
  br label %1455

1383:                                             ; preds = %1375
  %1384 = load ptr, ptr %8, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1384, i32 0, i32 3
  %1386 = load i8, ptr %1385, align 1, !tbaa !20
  %1387 = zext i8 %1386 to i32
  %1388 = and i32 %1387, 15
  %1389 = icmp eq i32 9, %1388
  br i1 %1389, label %1390, label %1391

1390:                                             ; preds = %1383
  br label %1453

1391:                                             ; preds = %1383
  %1392 = load ptr, ptr %8, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1392, i32 0, i32 3
  %1394 = load i8, ptr %1393, align 1, !tbaa !20
  %1395 = zext i8 %1394 to i32
  %1396 = and i32 %1395, 15
  %1397 = icmp eq i32 10, %1396
  br i1 %1397, label %1398, label %1399

1398:                                             ; preds = %1391
  br label %1451

1399:                                             ; preds = %1391
  %1400 = load ptr, ptr %8, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1400, i32 0, i32 3
  %1402 = load i8, ptr %1401, align 1, !tbaa !20
  %1403 = zext i8 %1402 to i32
  %1404 = and i32 %1403, 15
  %1405 = icmp eq i32 11, %1404
  br i1 %1405, label %1406, label %1407

1406:                                             ; preds = %1399
  br label %1449

1407:                                             ; preds = %1399
  %1408 = load ptr, ptr %8, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1408, i32 0, i32 3
  %1410 = load i8, ptr %1409, align 1, !tbaa !20
  %1411 = zext i8 %1410 to i32
  %1412 = and i32 %1411, 15
  %1413 = icmp eq i32 12, %1412
  br i1 %1413, label %1414, label %1415

1414:                                             ; preds = %1407
  br label %1447

1415:                                             ; preds = %1407
  %1416 = load ptr, ptr %8, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1416, i32 0, i32 3
  %1418 = load i8, ptr %1417, align 1, !tbaa !20
  %1419 = zext i8 %1418 to i32
  %1420 = and i32 %1419, 15
  %1421 = icmp eq i32 13, %1420
  br i1 %1421, label %1422, label %1423

1422:                                             ; preds = %1415
  br label %1445

1423:                                             ; preds = %1415
  %1424 = load ptr, ptr %8, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1424, i32 0, i32 3
  %1426 = load i8, ptr %1425, align 1, !tbaa !20
  %1427 = zext i8 %1426 to i32
  %1428 = and i32 %1427, 15
  %1429 = icmp eq i32 14, %1428
  br i1 %1429, label %1430, label %1431

1430:                                             ; preds = %1423
  br label %1443

1431:                                             ; preds = %1423
  %1432 = load ptr, ptr %8, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1432, i32 0, i32 3
  %1434 = load i8, ptr %1433, align 1, !tbaa !20
  %1435 = zext i8 %1434 to i32
  %1436 = and i32 %1435, 15
  %1437 = icmp eq i32 15, %1436
  br i1 %1437, label %1438, label %1439

1438:                                             ; preds = %1431
  br label %1441

1439:                                             ; preds = %1431
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

1440:                                             ; No predecessors!
  br label %1441

1441:                                             ; preds = %1440, %1438
  %1442 = phi i32 [ 15, %1438 ], [ 0, %1440 ]
  br label %1443

1443:                                             ; preds = %1441, %1430
  %1444 = phi i32 [ 14, %1430 ], [ %1442, %1441 ]
  br label %1445

1445:                                             ; preds = %1443, %1422
  %1446 = phi i32 [ 12, %1422 ], [ %1444, %1443 ]
  br label %1447

1447:                                             ; preds = %1445, %1414
  %1448 = phi i32 [ 12, %1414 ], [ %1446, %1445 ]
  br label %1449

1449:                                             ; preds = %1447, %1406
  %1450 = phi i32 [ 10, %1406 ], [ %1448, %1447 ]
  br label %1451

1451:                                             ; preds = %1449, %1398
  %1452 = phi i32 [ 10, %1398 ], [ %1450, %1449 ]
  br label %1453

1453:                                             ; preds = %1451, %1390
  %1454 = phi i32 [ 8, %1390 ], [ %1452, %1451 ]
  br label %1455

1455:                                             ; preds = %1453, %1382
  %1456 = phi i32 [ 8, %1382 ], [ %1454, %1453 ]
  br label %1457

1457:                                             ; preds = %1455, %1374
  %1458 = phi i32 [ 6, %1374 ], [ %1456, %1455 ]
  br label %1459

1459:                                             ; preds = %1457, %1366
  %1460 = phi i32 [ 6, %1366 ], [ %1458, %1457 ]
  br label %1461

1461:                                             ; preds = %1459, %1358
  %1462 = phi i32 [ 5, %1358 ], [ %1460, %1459 ]
  br label %1463

1463:                                             ; preds = %1461, %1350
  %1464 = phi i32 [ 4, %1350 ], [ %1462, %1461 ]
  br label %1465

1465:                                             ; preds = %1463, %1342
  %1466 = phi i32 [ 3, %1342 ], [ %1464, %1463 ]
  br label %1467

1467:                                             ; preds = %1465, %1334
  %1468 = phi i32 [ 2, %1334 ], [ %1466, %1465 ]
  br label %1469

1469:                                             ; preds = %1467, %1326
  %1470 = phi i32 [ 1, %1326 ], [ %1468, %1467 ]
  br label %1471

1471:                                             ; preds = %1469, %1318
  %1472 = phi i32 [ 0, %1318 ], [ %1470, %1469 ]
  br label %1479

1473:                                             ; preds = %1304
  %1474 = load ptr, ptr %8, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1474, i32 0, i32 3
  %1476 = load i8, ptr %1475, align 1, !tbaa !20
  %1477 = zext i8 %1476 to i32
  %1478 = ashr i32 %1477, 4
  br label %1479

1479:                                             ; preds = %1473, %1471
  %1480 = phi i32 [ %1472, %1471 ], [ %1478, %1473 ]
  %1481 = icmp eq i32 7, %1480
  br i1 %1481, label %1482, label %1483

1482:                                             ; preds = %1479
  br label %2571

1483:                                             ; preds = %1479
  %1484 = load ptr, ptr %8, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1484, i32 0, i32 3
  %1486 = load i8, ptr %1485, align 1, !tbaa !20
  %1487 = zext i8 %1486 to i32
  %1488 = ashr i32 %1487, 4
  %1489 = icmp eq i32 0, %1488
  br i1 %1489, label %1490, label %1652

1490:                                             ; preds = %1483
  %1491 = load ptr, ptr %8, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1491, i32 0, i32 3
  %1493 = load i8, ptr %1492, align 1, !tbaa !20
  %1494 = zext i8 %1493 to i32
  %1495 = and i32 %1494, 15
  %1496 = icmp eq i32 0, %1495
  br i1 %1496, label %1497, label %1498

1497:                                             ; preds = %1490
  br label %1650

1498:                                             ; preds = %1490
  %1499 = load ptr, ptr %8, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1499, i32 0, i32 3
  %1501 = load i8, ptr %1500, align 1, !tbaa !20
  %1502 = zext i8 %1501 to i32
  %1503 = and i32 %1502, 15
  %1504 = icmp eq i32 1, %1503
  br i1 %1504, label %1505, label %1506

1505:                                             ; preds = %1498
  br label %1648

1506:                                             ; preds = %1498
  %1507 = load ptr, ptr %8, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1507, i32 0, i32 3
  %1509 = load i8, ptr %1508, align 1, !tbaa !20
  %1510 = zext i8 %1509 to i32
  %1511 = and i32 %1510, 15
  %1512 = icmp eq i32 2, %1511
  br i1 %1512, label %1513, label %1514

1513:                                             ; preds = %1506
  br label %1646

1514:                                             ; preds = %1506
  %1515 = load ptr, ptr %8, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1515, i32 0, i32 3
  %1517 = load i8, ptr %1516, align 1, !tbaa !20
  %1518 = zext i8 %1517 to i32
  %1519 = and i32 %1518, 15
  %1520 = icmp eq i32 3, %1519
  br i1 %1520, label %1521, label %1522

1521:                                             ; preds = %1514
  br label %1644

1522:                                             ; preds = %1514
  %1523 = load ptr, ptr %8, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1523, i32 0, i32 3
  %1525 = load i8, ptr %1524, align 1, !tbaa !20
  %1526 = zext i8 %1525 to i32
  %1527 = and i32 %1526, 15
  %1528 = icmp eq i32 4, %1527
  br i1 %1528, label %1529, label %1530

1529:                                             ; preds = %1522
  br label %1642

1530:                                             ; preds = %1522
  %1531 = load ptr, ptr %8, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1531, i32 0, i32 3
  %1533 = load i8, ptr %1532, align 1, !tbaa !20
  %1534 = zext i8 %1533 to i32
  %1535 = and i32 %1534, 15
  %1536 = icmp eq i32 5, %1535
  br i1 %1536, label %1537, label %1538

1537:                                             ; preds = %1530
  br label %1640

1538:                                             ; preds = %1530
  %1539 = load ptr, ptr %8, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1539, i32 0, i32 3
  %1541 = load i8, ptr %1540, align 1, !tbaa !20
  %1542 = zext i8 %1541 to i32
  %1543 = and i32 %1542, 15
  %1544 = icmp eq i32 6, %1543
  br i1 %1544, label %1545, label %1546

1545:                                             ; preds = %1538
  br label %1638

1546:                                             ; preds = %1538
  %1547 = load ptr, ptr %8, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1547, i32 0, i32 3
  %1549 = load i8, ptr %1548, align 1, !tbaa !20
  %1550 = zext i8 %1549 to i32
  %1551 = and i32 %1550, 15
  %1552 = icmp eq i32 7, %1551
  br i1 %1552, label %1553, label %1554

1553:                                             ; preds = %1546
  br label %1636

1554:                                             ; preds = %1546
  %1555 = load ptr, ptr %8, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1555, i32 0, i32 3
  %1557 = load i8, ptr %1556, align 1, !tbaa !20
  %1558 = zext i8 %1557 to i32
  %1559 = and i32 %1558, 15
  %1560 = icmp eq i32 8, %1559
  br i1 %1560, label %1561, label %1562

1561:                                             ; preds = %1554
  br label %1634

1562:                                             ; preds = %1554
  %1563 = load ptr, ptr %8, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1563, i32 0, i32 3
  %1565 = load i8, ptr %1564, align 1, !tbaa !20
  %1566 = zext i8 %1565 to i32
  %1567 = and i32 %1566, 15
  %1568 = icmp eq i32 9, %1567
  br i1 %1568, label %1569, label %1570

1569:                                             ; preds = %1562
  br label %1632

1570:                                             ; preds = %1562
  %1571 = load ptr, ptr %8, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1571, i32 0, i32 3
  %1573 = load i8, ptr %1572, align 1, !tbaa !20
  %1574 = zext i8 %1573 to i32
  %1575 = and i32 %1574, 15
  %1576 = icmp eq i32 10, %1575
  br i1 %1576, label %1577, label %1578

1577:                                             ; preds = %1570
  br label %1630

1578:                                             ; preds = %1570
  %1579 = load ptr, ptr %8, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1579, i32 0, i32 3
  %1581 = load i8, ptr %1580, align 1, !tbaa !20
  %1582 = zext i8 %1581 to i32
  %1583 = and i32 %1582, 15
  %1584 = icmp eq i32 11, %1583
  br i1 %1584, label %1585, label %1586

1585:                                             ; preds = %1578
  br label %1628

1586:                                             ; preds = %1578
  %1587 = load ptr, ptr %8, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1587, i32 0, i32 3
  %1589 = load i8, ptr %1588, align 1, !tbaa !20
  %1590 = zext i8 %1589 to i32
  %1591 = and i32 %1590, 15
  %1592 = icmp eq i32 12, %1591
  br i1 %1592, label %1593, label %1594

1593:                                             ; preds = %1586
  br label %1626

1594:                                             ; preds = %1586
  %1595 = load ptr, ptr %8, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1595, i32 0, i32 3
  %1597 = load i8, ptr %1596, align 1, !tbaa !20
  %1598 = zext i8 %1597 to i32
  %1599 = and i32 %1598, 15
  %1600 = icmp eq i32 13, %1599
  br i1 %1600, label %1601, label %1602

1601:                                             ; preds = %1594
  br label %1624

1602:                                             ; preds = %1594
  %1603 = load ptr, ptr %8, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1603, i32 0, i32 3
  %1605 = load i8, ptr %1604, align 1, !tbaa !20
  %1606 = zext i8 %1605 to i32
  %1607 = and i32 %1606, 15
  %1608 = icmp eq i32 14, %1607
  br i1 %1608, label %1609, label %1610

1609:                                             ; preds = %1602
  br label %1622

1610:                                             ; preds = %1602
  %1611 = load ptr, ptr %8, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1611, i32 0, i32 3
  %1613 = load i8, ptr %1612, align 1, !tbaa !20
  %1614 = zext i8 %1613 to i32
  %1615 = and i32 %1614, 15
  %1616 = icmp eq i32 15, %1615
  br i1 %1616, label %1617, label %1618

1617:                                             ; preds = %1610
  br label %1620

1618:                                             ; preds = %1610
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

1619:                                             ; No predecessors!
  br label %1620

1620:                                             ; preds = %1619, %1617
  %1621 = phi i32 [ 15, %1617 ], [ 0, %1619 ]
  br label %1622

1622:                                             ; preds = %1620, %1609
  %1623 = phi i32 [ 14, %1609 ], [ %1621, %1620 ]
  br label %1624

1624:                                             ; preds = %1622, %1601
  %1625 = phi i32 [ 12, %1601 ], [ %1623, %1622 ]
  br label %1626

1626:                                             ; preds = %1624, %1593
  %1627 = phi i32 [ 12, %1593 ], [ %1625, %1624 ]
  br label %1628

1628:                                             ; preds = %1626, %1585
  %1629 = phi i32 [ 10, %1585 ], [ %1627, %1626 ]
  br label %1630

1630:                                             ; preds = %1628, %1577
  %1631 = phi i32 [ 10, %1577 ], [ %1629, %1628 ]
  br label %1632

1632:                                             ; preds = %1630, %1569
  %1633 = phi i32 [ 8, %1569 ], [ %1631, %1630 ]
  br label %1634

1634:                                             ; preds = %1632, %1561
  %1635 = phi i32 [ 8, %1561 ], [ %1633, %1632 ]
  br label %1636

1636:                                             ; preds = %1634, %1553
  %1637 = phi i32 [ 6, %1553 ], [ %1635, %1634 ]
  br label %1638

1638:                                             ; preds = %1636, %1545
  %1639 = phi i32 [ 6, %1545 ], [ %1637, %1636 ]
  br label %1640

1640:                                             ; preds = %1638, %1537
  %1641 = phi i32 [ 5, %1537 ], [ %1639, %1638 ]
  br label %1642

1642:                                             ; preds = %1640, %1529
  %1643 = phi i32 [ 4, %1529 ], [ %1641, %1640 ]
  br label %1644

1644:                                             ; preds = %1642, %1521
  %1645 = phi i32 [ 3, %1521 ], [ %1643, %1642 ]
  br label %1646

1646:                                             ; preds = %1644, %1513
  %1647 = phi i32 [ 2, %1513 ], [ %1645, %1644 ]
  br label %1648

1648:                                             ; preds = %1646, %1505
  %1649 = phi i32 [ 1, %1505 ], [ %1647, %1646 ]
  br label %1650

1650:                                             ; preds = %1648, %1497
  %1651 = phi i32 [ 0, %1497 ], [ %1649, %1648 ]
  br label %1658

1652:                                             ; preds = %1483
  %1653 = load ptr, ptr %8, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1653, i32 0, i32 3
  %1655 = load i8, ptr %1654, align 1, !tbaa !20
  %1656 = zext i8 %1655 to i32
  %1657 = ashr i32 %1656, 4
  br label %1658

1658:                                             ; preds = %1652, %1650
  %1659 = phi i32 [ %1651, %1650 ], [ %1657, %1652 ]
  %1660 = icmp eq i32 8, %1659
  br i1 %1660, label %1661, label %1662

1661:                                             ; preds = %1658
  br label %2569

1662:                                             ; preds = %1658
  %1663 = load ptr, ptr %8, align 8, !tbaa !5
  %1664 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1663, i32 0, i32 3
  %1665 = load i8, ptr %1664, align 1, !tbaa !20
  %1666 = zext i8 %1665 to i32
  %1667 = ashr i32 %1666, 4
  %1668 = icmp eq i32 0, %1667
  br i1 %1668, label %1669, label %1831

1669:                                             ; preds = %1662
  %1670 = load ptr, ptr %8, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1670, i32 0, i32 3
  %1672 = load i8, ptr %1671, align 1, !tbaa !20
  %1673 = zext i8 %1672 to i32
  %1674 = and i32 %1673, 15
  %1675 = icmp eq i32 0, %1674
  br i1 %1675, label %1676, label %1677

1676:                                             ; preds = %1669
  br label %1829

1677:                                             ; preds = %1669
  %1678 = load ptr, ptr %8, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1678, i32 0, i32 3
  %1680 = load i8, ptr %1679, align 1, !tbaa !20
  %1681 = zext i8 %1680 to i32
  %1682 = and i32 %1681, 15
  %1683 = icmp eq i32 1, %1682
  br i1 %1683, label %1684, label %1685

1684:                                             ; preds = %1677
  br label %1827

1685:                                             ; preds = %1677
  %1686 = load ptr, ptr %8, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1686, i32 0, i32 3
  %1688 = load i8, ptr %1687, align 1, !tbaa !20
  %1689 = zext i8 %1688 to i32
  %1690 = and i32 %1689, 15
  %1691 = icmp eq i32 2, %1690
  br i1 %1691, label %1692, label %1693

1692:                                             ; preds = %1685
  br label %1825

1693:                                             ; preds = %1685
  %1694 = load ptr, ptr %8, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1694, i32 0, i32 3
  %1696 = load i8, ptr %1695, align 1, !tbaa !20
  %1697 = zext i8 %1696 to i32
  %1698 = and i32 %1697, 15
  %1699 = icmp eq i32 3, %1698
  br i1 %1699, label %1700, label %1701

1700:                                             ; preds = %1693
  br label %1823

1701:                                             ; preds = %1693
  %1702 = load ptr, ptr %8, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1702, i32 0, i32 3
  %1704 = load i8, ptr %1703, align 1, !tbaa !20
  %1705 = zext i8 %1704 to i32
  %1706 = and i32 %1705, 15
  %1707 = icmp eq i32 4, %1706
  br i1 %1707, label %1708, label %1709

1708:                                             ; preds = %1701
  br label %1821

1709:                                             ; preds = %1701
  %1710 = load ptr, ptr %8, align 8, !tbaa !5
  %1711 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1710, i32 0, i32 3
  %1712 = load i8, ptr %1711, align 1, !tbaa !20
  %1713 = zext i8 %1712 to i32
  %1714 = and i32 %1713, 15
  %1715 = icmp eq i32 5, %1714
  br i1 %1715, label %1716, label %1717

1716:                                             ; preds = %1709
  br label %1819

1717:                                             ; preds = %1709
  %1718 = load ptr, ptr %8, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1718, i32 0, i32 3
  %1720 = load i8, ptr %1719, align 1, !tbaa !20
  %1721 = zext i8 %1720 to i32
  %1722 = and i32 %1721, 15
  %1723 = icmp eq i32 6, %1722
  br i1 %1723, label %1724, label %1725

1724:                                             ; preds = %1717
  br label %1817

1725:                                             ; preds = %1717
  %1726 = load ptr, ptr %8, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1726, i32 0, i32 3
  %1728 = load i8, ptr %1727, align 1, !tbaa !20
  %1729 = zext i8 %1728 to i32
  %1730 = and i32 %1729, 15
  %1731 = icmp eq i32 7, %1730
  br i1 %1731, label %1732, label %1733

1732:                                             ; preds = %1725
  br label %1815

1733:                                             ; preds = %1725
  %1734 = load ptr, ptr %8, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1734, i32 0, i32 3
  %1736 = load i8, ptr %1735, align 1, !tbaa !20
  %1737 = zext i8 %1736 to i32
  %1738 = and i32 %1737, 15
  %1739 = icmp eq i32 8, %1738
  br i1 %1739, label %1740, label %1741

1740:                                             ; preds = %1733
  br label %1813

1741:                                             ; preds = %1733
  %1742 = load ptr, ptr %8, align 8, !tbaa !5
  %1743 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1742, i32 0, i32 3
  %1744 = load i8, ptr %1743, align 1, !tbaa !20
  %1745 = zext i8 %1744 to i32
  %1746 = and i32 %1745, 15
  %1747 = icmp eq i32 9, %1746
  br i1 %1747, label %1748, label %1749

1748:                                             ; preds = %1741
  br label %1811

1749:                                             ; preds = %1741
  %1750 = load ptr, ptr %8, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1750, i32 0, i32 3
  %1752 = load i8, ptr %1751, align 1, !tbaa !20
  %1753 = zext i8 %1752 to i32
  %1754 = and i32 %1753, 15
  %1755 = icmp eq i32 10, %1754
  br i1 %1755, label %1756, label %1757

1756:                                             ; preds = %1749
  br label %1809

1757:                                             ; preds = %1749
  %1758 = load ptr, ptr %8, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1758, i32 0, i32 3
  %1760 = load i8, ptr %1759, align 1, !tbaa !20
  %1761 = zext i8 %1760 to i32
  %1762 = and i32 %1761, 15
  %1763 = icmp eq i32 11, %1762
  br i1 %1763, label %1764, label %1765

1764:                                             ; preds = %1757
  br label %1807

1765:                                             ; preds = %1757
  %1766 = load ptr, ptr %8, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1766, i32 0, i32 3
  %1768 = load i8, ptr %1767, align 1, !tbaa !20
  %1769 = zext i8 %1768 to i32
  %1770 = and i32 %1769, 15
  %1771 = icmp eq i32 12, %1770
  br i1 %1771, label %1772, label %1773

1772:                                             ; preds = %1765
  br label %1805

1773:                                             ; preds = %1765
  %1774 = load ptr, ptr %8, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1774, i32 0, i32 3
  %1776 = load i8, ptr %1775, align 1, !tbaa !20
  %1777 = zext i8 %1776 to i32
  %1778 = and i32 %1777, 15
  %1779 = icmp eq i32 13, %1778
  br i1 %1779, label %1780, label %1781

1780:                                             ; preds = %1773
  br label %1803

1781:                                             ; preds = %1773
  %1782 = load ptr, ptr %8, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1782, i32 0, i32 3
  %1784 = load i8, ptr %1783, align 1, !tbaa !20
  %1785 = zext i8 %1784 to i32
  %1786 = and i32 %1785, 15
  %1787 = icmp eq i32 14, %1786
  br i1 %1787, label %1788, label %1789

1788:                                             ; preds = %1781
  br label %1801

1789:                                             ; preds = %1781
  %1790 = load ptr, ptr %8, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1790, i32 0, i32 3
  %1792 = load i8, ptr %1791, align 1, !tbaa !20
  %1793 = zext i8 %1792 to i32
  %1794 = and i32 %1793, 15
  %1795 = icmp eq i32 15, %1794
  br i1 %1795, label %1796, label %1797

1796:                                             ; preds = %1789
  br label %1799

1797:                                             ; preds = %1789
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

1798:                                             ; No predecessors!
  br label %1799

1799:                                             ; preds = %1798, %1796
  %1800 = phi i32 [ 15, %1796 ], [ 0, %1798 ]
  br label %1801

1801:                                             ; preds = %1799, %1788
  %1802 = phi i32 [ 14, %1788 ], [ %1800, %1799 ]
  br label %1803

1803:                                             ; preds = %1801, %1780
  %1804 = phi i32 [ 12, %1780 ], [ %1802, %1801 ]
  br label %1805

1805:                                             ; preds = %1803, %1772
  %1806 = phi i32 [ 12, %1772 ], [ %1804, %1803 ]
  br label %1807

1807:                                             ; preds = %1805, %1764
  %1808 = phi i32 [ 10, %1764 ], [ %1806, %1805 ]
  br label %1809

1809:                                             ; preds = %1807, %1756
  %1810 = phi i32 [ 10, %1756 ], [ %1808, %1807 ]
  br label %1811

1811:                                             ; preds = %1809, %1748
  %1812 = phi i32 [ 8, %1748 ], [ %1810, %1809 ]
  br label %1813

1813:                                             ; preds = %1811, %1740
  %1814 = phi i32 [ 8, %1740 ], [ %1812, %1811 ]
  br label %1815

1815:                                             ; preds = %1813, %1732
  %1816 = phi i32 [ 6, %1732 ], [ %1814, %1813 ]
  br label %1817

1817:                                             ; preds = %1815, %1724
  %1818 = phi i32 [ 6, %1724 ], [ %1816, %1815 ]
  br label %1819

1819:                                             ; preds = %1817, %1716
  %1820 = phi i32 [ 5, %1716 ], [ %1818, %1817 ]
  br label %1821

1821:                                             ; preds = %1819, %1708
  %1822 = phi i32 [ 4, %1708 ], [ %1820, %1819 ]
  br label %1823

1823:                                             ; preds = %1821, %1700
  %1824 = phi i32 [ 3, %1700 ], [ %1822, %1821 ]
  br label %1825

1825:                                             ; preds = %1823, %1692
  %1826 = phi i32 [ 2, %1692 ], [ %1824, %1823 ]
  br label %1827

1827:                                             ; preds = %1825, %1684
  %1828 = phi i32 [ 1, %1684 ], [ %1826, %1825 ]
  br label %1829

1829:                                             ; preds = %1827, %1676
  %1830 = phi i32 [ 0, %1676 ], [ %1828, %1827 ]
  br label %1837

1831:                                             ; preds = %1662
  %1832 = load ptr, ptr %8, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1832, i32 0, i32 3
  %1834 = load i8, ptr %1833, align 1, !tbaa !20
  %1835 = zext i8 %1834 to i32
  %1836 = ashr i32 %1835, 4
  br label %1837

1837:                                             ; preds = %1831, %1829
  %1838 = phi i32 [ %1830, %1829 ], [ %1836, %1831 ]
  %1839 = icmp eq i32 9, %1838
  br i1 %1839, label %1840, label %1841

1840:                                             ; preds = %1837
  br label %2567

1841:                                             ; preds = %1837
  %1842 = load ptr, ptr %8, align 8, !tbaa !5
  %1843 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1842, i32 0, i32 3
  %1844 = load i8, ptr %1843, align 1, !tbaa !20
  %1845 = zext i8 %1844 to i32
  %1846 = ashr i32 %1845, 4
  %1847 = icmp eq i32 0, %1846
  br i1 %1847, label %1848, label %2010

1848:                                             ; preds = %1841
  %1849 = load ptr, ptr %8, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1849, i32 0, i32 3
  %1851 = load i8, ptr %1850, align 1, !tbaa !20
  %1852 = zext i8 %1851 to i32
  %1853 = and i32 %1852, 15
  %1854 = icmp eq i32 0, %1853
  br i1 %1854, label %1855, label %1856

1855:                                             ; preds = %1848
  br label %2008

1856:                                             ; preds = %1848
  %1857 = load ptr, ptr %8, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1857, i32 0, i32 3
  %1859 = load i8, ptr %1858, align 1, !tbaa !20
  %1860 = zext i8 %1859 to i32
  %1861 = and i32 %1860, 15
  %1862 = icmp eq i32 1, %1861
  br i1 %1862, label %1863, label %1864

1863:                                             ; preds = %1856
  br label %2006

1864:                                             ; preds = %1856
  %1865 = load ptr, ptr %8, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1865, i32 0, i32 3
  %1867 = load i8, ptr %1866, align 1, !tbaa !20
  %1868 = zext i8 %1867 to i32
  %1869 = and i32 %1868, 15
  %1870 = icmp eq i32 2, %1869
  br i1 %1870, label %1871, label %1872

1871:                                             ; preds = %1864
  br label %2004

1872:                                             ; preds = %1864
  %1873 = load ptr, ptr %8, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1873, i32 0, i32 3
  %1875 = load i8, ptr %1874, align 1, !tbaa !20
  %1876 = zext i8 %1875 to i32
  %1877 = and i32 %1876, 15
  %1878 = icmp eq i32 3, %1877
  br i1 %1878, label %1879, label %1880

1879:                                             ; preds = %1872
  br label %2002

1880:                                             ; preds = %1872
  %1881 = load ptr, ptr %8, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1881, i32 0, i32 3
  %1883 = load i8, ptr %1882, align 1, !tbaa !20
  %1884 = zext i8 %1883 to i32
  %1885 = and i32 %1884, 15
  %1886 = icmp eq i32 4, %1885
  br i1 %1886, label %1887, label %1888

1887:                                             ; preds = %1880
  br label %2000

1888:                                             ; preds = %1880
  %1889 = load ptr, ptr %8, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1889, i32 0, i32 3
  %1891 = load i8, ptr %1890, align 1, !tbaa !20
  %1892 = zext i8 %1891 to i32
  %1893 = and i32 %1892, 15
  %1894 = icmp eq i32 5, %1893
  br i1 %1894, label %1895, label %1896

1895:                                             ; preds = %1888
  br label %1998

1896:                                             ; preds = %1888
  %1897 = load ptr, ptr %8, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1897, i32 0, i32 3
  %1899 = load i8, ptr %1898, align 1, !tbaa !20
  %1900 = zext i8 %1899 to i32
  %1901 = and i32 %1900, 15
  %1902 = icmp eq i32 6, %1901
  br i1 %1902, label %1903, label %1904

1903:                                             ; preds = %1896
  br label %1996

1904:                                             ; preds = %1896
  %1905 = load ptr, ptr %8, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1905, i32 0, i32 3
  %1907 = load i8, ptr %1906, align 1, !tbaa !20
  %1908 = zext i8 %1907 to i32
  %1909 = and i32 %1908, 15
  %1910 = icmp eq i32 7, %1909
  br i1 %1910, label %1911, label %1912

1911:                                             ; preds = %1904
  br label %1994

1912:                                             ; preds = %1904
  %1913 = load ptr, ptr %8, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1913, i32 0, i32 3
  %1915 = load i8, ptr %1914, align 1, !tbaa !20
  %1916 = zext i8 %1915 to i32
  %1917 = and i32 %1916, 15
  %1918 = icmp eq i32 8, %1917
  br i1 %1918, label %1919, label %1920

1919:                                             ; preds = %1912
  br label %1992

1920:                                             ; preds = %1912
  %1921 = load ptr, ptr %8, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1921, i32 0, i32 3
  %1923 = load i8, ptr %1922, align 1, !tbaa !20
  %1924 = zext i8 %1923 to i32
  %1925 = and i32 %1924, 15
  %1926 = icmp eq i32 9, %1925
  br i1 %1926, label %1927, label %1928

1927:                                             ; preds = %1920
  br label %1990

1928:                                             ; preds = %1920
  %1929 = load ptr, ptr %8, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1929, i32 0, i32 3
  %1931 = load i8, ptr %1930, align 1, !tbaa !20
  %1932 = zext i8 %1931 to i32
  %1933 = and i32 %1932, 15
  %1934 = icmp eq i32 10, %1933
  br i1 %1934, label %1935, label %1936

1935:                                             ; preds = %1928
  br label %1988

1936:                                             ; preds = %1928
  %1937 = load ptr, ptr %8, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1937, i32 0, i32 3
  %1939 = load i8, ptr %1938, align 1, !tbaa !20
  %1940 = zext i8 %1939 to i32
  %1941 = and i32 %1940, 15
  %1942 = icmp eq i32 11, %1941
  br i1 %1942, label %1943, label %1944

1943:                                             ; preds = %1936
  br label %1986

1944:                                             ; preds = %1936
  %1945 = load ptr, ptr %8, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1945, i32 0, i32 3
  %1947 = load i8, ptr %1946, align 1, !tbaa !20
  %1948 = zext i8 %1947 to i32
  %1949 = and i32 %1948, 15
  %1950 = icmp eq i32 12, %1949
  br i1 %1950, label %1951, label %1952

1951:                                             ; preds = %1944
  br label %1984

1952:                                             ; preds = %1944
  %1953 = load ptr, ptr %8, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1953, i32 0, i32 3
  %1955 = load i8, ptr %1954, align 1, !tbaa !20
  %1956 = zext i8 %1955 to i32
  %1957 = and i32 %1956, 15
  %1958 = icmp eq i32 13, %1957
  br i1 %1958, label %1959, label %1960

1959:                                             ; preds = %1952
  br label %1982

1960:                                             ; preds = %1952
  %1961 = load ptr, ptr %8, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1961, i32 0, i32 3
  %1963 = load i8, ptr %1962, align 1, !tbaa !20
  %1964 = zext i8 %1963 to i32
  %1965 = and i32 %1964, 15
  %1966 = icmp eq i32 14, %1965
  br i1 %1966, label %1967, label %1968

1967:                                             ; preds = %1960
  br label %1980

1968:                                             ; preds = %1960
  %1969 = load ptr, ptr %8, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1969, i32 0, i32 3
  %1971 = load i8, ptr %1970, align 1, !tbaa !20
  %1972 = zext i8 %1971 to i32
  %1973 = and i32 %1972, 15
  %1974 = icmp eq i32 15, %1973
  br i1 %1974, label %1975, label %1976

1975:                                             ; preds = %1968
  br label %1978

1976:                                             ; preds = %1968
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

1977:                                             ; No predecessors!
  br label %1978

1978:                                             ; preds = %1977, %1975
  %1979 = phi i32 [ 15, %1975 ], [ 0, %1977 ]
  br label %1980

1980:                                             ; preds = %1978, %1967
  %1981 = phi i32 [ 14, %1967 ], [ %1979, %1978 ]
  br label %1982

1982:                                             ; preds = %1980, %1959
  %1983 = phi i32 [ 12, %1959 ], [ %1981, %1980 ]
  br label %1984

1984:                                             ; preds = %1982, %1951
  %1985 = phi i32 [ 12, %1951 ], [ %1983, %1982 ]
  br label %1986

1986:                                             ; preds = %1984, %1943
  %1987 = phi i32 [ 10, %1943 ], [ %1985, %1984 ]
  br label %1988

1988:                                             ; preds = %1986, %1935
  %1989 = phi i32 [ 10, %1935 ], [ %1987, %1986 ]
  br label %1990

1990:                                             ; preds = %1988, %1927
  %1991 = phi i32 [ 8, %1927 ], [ %1989, %1988 ]
  br label %1992

1992:                                             ; preds = %1990, %1919
  %1993 = phi i32 [ 8, %1919 ], [ %1991, %1990 ]
  br label %1994

1994:                                             ; preds = %1992, %1911
  %1995 = phi i32 [ 6, %1911 ], [ %1993, %1992 ]
  br label %1996

1996:                                             ; preds = %1994, %1903
  %1997 = phi i32 [ 6, %1903 ], [ %1995, %1994 ]
  br label %1998

1998:                                             ; preds = %1996, %1895
  %1999 = phi i32 [ 5, %1895 ], [ %1997, %1996 ]
  br label %2000

2000:                                             ; preds = %1998, %1887
  %2001 = phi i32 [ 4, %1887 ], [ %1999, %1998 ]
  br label %2002

2002:                                             ; preds = %2000, %1879
  %2003 = phi i32 [ 3, %1879 ], [ %2001, %2000 ]
  br label %2004

2004:                                             ; preds = %2002, %1871
  %2005 = phi i32 [ 2, %1871 ], [ %2003, %2002 ]
  br label %2006

2006:                                             ; preds = %2004, %1863
  %2007 = phi i32 [ 1, %1863 ], [ %2005, %2004 ]
  br label %2008

2008:                                             ; preds = %2006, %1855
  %2009 = phi i32 [ 0, %1855 ], [ %2007, %2006 ]
  br label %2016

2010:                                             ; preds = %1841
  %2011 = load ptr, ptr %8, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2011, i32 0, i32 3
  %2013 = load i8, ptr %2012, align 1, !tbaa !20
  %2014 = zext i8 %2013 to i32
  %2015 = ashr i32 %2014, 4
  br label %2016

2016:                                             ; preds = %2010, %2008
  %2017 = phi i32 [ %2009, %2008 ], [ %2015, %2010 ]
  %2018 = icmp eq i32 10, %2017
  br i1 %2018, label %2019, label %2020

2019:                                             ; preds = %2016
  br label %2565

2020:                                             ; preds = %2016
  %2021 = load ptr, ptr %8, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2021, i32 0, i32 3
  %2023 = load i8, ptr %2022, align 1, !tbaa !20
  %2024 = zext i8 %2023 to i32
  %2025 = ashr i32 %2024, 4
  %2026 = icmp eq i32 0, %2025
  br i1 %2026, label %2027, label %2189

2027:                                             ; preds = %2020
  %2028 = load ptr, ptr %8, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2028, i32 0, i32 3
  %2030 = load i8, ptr %2029, align 1, !tbaa !20
  %2031 = zext i8 %2030 to i32
  %2032 = and i32 %2031, 15
  %2033 = icmp eq i32 0, %2032
  br i1 %2033, label %2034, label %2035

2034:                                             ; preds = %2027
  br label %2187

2035:                                             ; preds = %2027
  %2036 = load ptr, ptr %8, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2036, i32 0, i32 3
  %2038 = load i8, ptr %2037, align 1, !tbaa !20
  %2039 = zext i8 %2038 to i32
  %2040 = and i32 %2039, 15
  %2041 = icmp eq i32 1, %2040
  br i1 %2041, label %2042, label %2043

2042:                                             ; preds = %2035
  br label %2185

2043:                                             ; preds = %2035
  %2044 = load ptr, ptr %8, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2044, i32 0, i32 3
  %2046 = load i8, ptr %2045, align 1, !tbaa !20
  %2047 = zext i8 %2046 to i32
  %2048 = and i32 %2047, 15
  %2049 = icmp eq i32 2, %2048
  br i1 %2049, label %2050, label %2051

2050:                                             ; preds = %2043
  br label %2183

2051:                                             ; preds = %2043
  %2052 = load ptr, ptr %8, align 8, !tbaa !5
  %2053 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2052, i32 0, i32 3
  %2054 = load i8, ptr %2053, align 1, !tbaa !20
  %2055 = zext i8 %2054 to i32
  %2056 = and i32 %2055, 15
  %2057 = icmp eq i32 3, %2056
  br i1 %2057, label %2058, label %2059

2058:                                             ; preds = %2051
  br label %2181

2059:                                             ; preds = %2051
  %2060 = load ptr, ptr %8, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2060, i32 0, i32 3
  %2062 = load i8, ptr %2061, align 1, !tbaa !20
  %2063 = zext i8 %2062 to i32
  %2064 = and i32 %2063, 15
  %2065 = icmp eq i32 4, %2064
  br i1 %2065, label %2066, label %2067

2066:                                             ; preds = %2059
  br label %2179

2067:                                             ; preds = %2059
  %2068 = load ptr, ptr %8, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2068, i32 0, i32 3
  %2070 = load i8, ptr %2069, align 1, !tbaa !20
  %2071 = zext i8 %2070 to i32
  %2072 = and i32 %2071, 15
  %2073 = icmp eq i32 5, %2072
  br i1 %2073, label %2074, label %2075

2074:                                             ; preds = %2067
  br label %2177

2075:                                             ; preds = %2067
  %2076 = load ptr, ptr %8, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2076, i32 0, i32 3
  %2078 = load i8, ptr %2077, align 1, !tbaa !20
  %2079 = zext i8 %2078 to i32
  %2080 = and i32 %2079, 15
  %2081 = icmp eq i32 6, %2080
  br i1 %2081, label %2082, label %2083

2082:                                             ; preds = %2075
  br label %2175

2083:                                             ; preds = %2075
  %2084 = load ptr, ptr %8, align 8, !tbaa !5
  %2085 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2084, i32 0, i32 3
  %2086 = load i8, ptr %2085, align 1, !tbaa !20
  %2087 = zext i8 %2086 to i32
  %2088 = and i32 %2087, 15
  %2089 = icmp eq i32 7, %2088
  br i1 %2089, label %2090, label %2091

2090:                                             ; preds = %2083
  br label %2173

2091:                                             ; preds = %2083
  %2092 = load ptr, ptr %8, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2092, i32 0, i32 3
  %2094 = load i8, ptr %2093, align 1, !tbaa !20
  %2095 = zext i8 %2094 to i32
  %2096 = and i32 %2095, 15
  %2097 = icmp eq i32 8, %2096
  br i1 %2097, label %2098, label %2099

2098:                                             ; preds = %2091
  br label %2171

2099:                                             ; preds = %2091
  %2100 = load ptr, ptr %8, align 8, !tbaa !5
  %2101 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2100, i32 0, i32 3
  %2102 = load i8, ptr %2101, align 1, !tbaa !20
  %2103 = zext i8 %2102 to i32
  %2104 = and i32 %2103, 15
  %2105 = icmp eq i32 9, %2104
  br i1 %2105, label %2106, label %2107

2106:                                             ; preds = %2099
  br label %2169

2107:                                             ; preds = %2099
  %2108 = load ptr, ptr %8, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2108, i32 0, i32 3
  %2110 = load i8, ptr %2109, align 1, !tbaa !20
  %2111 = zext i8 %2110 to i32
  %2112 = and i32 %2111, 15
  %2113 = icmp eq i32 10, %2112
  br i1 %2113, label %2114, label %2115

2114:                                             ; preds = %2107
  br label %2167

2115:                                             ; preds = %2107
  %2116 = load ptr, ptr %8, align 8, !tbaa !5
  %2117 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2116, i32 0, i32 3
  %2118 = load i8, ptr %2117, align 1, !tbaa !20
  %2119 = zext i8 %2118 to i32
  %2120 = and i32 %2119, 15
  %2121 = icmp eq i32 11, %2120
  br i1 %2121, label %2122, label %2123

2122:                                             ; preds = %2115
  br label %2165

2123:                                             ; preds = %2115
  %2124 = load ptr, ptr %8, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2124, i32 0, i32 3
  %2126 = load i8, ptr %2125, align 1, !tbaa !20
  %2127 = zext i8 %2126 to i32
  %2128 = and i32 %2127, 15
  %2129 = icmp eq i32 12, %2128
  br i1 %2129, label %2130, label %2131

2130:                                             ; preds = %2123
  br label %2163

2131:                                             ; preds = %2123
  %2132 = load ptr, ptr %8, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2132, i32 0, i32 3
  %2134 = load i8, ptr %2133, align 1, !tbaa !20
  %2135 = zext i8 %2134 to i32
  %2136 = and i32 %2135, 15
  %2137 = icmp eq i32 13, %2136
  br i1 %2137, label %2138, label %2139

2138:                                             ; preds = %2131
  br label %2161

2139:                                             ; preds = %2131
  %2140 = load ptr, ptr %8, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2140, i32 0, i32 3
  %2142 = load i8, ptr %2141, align 1, !tbaa !20
  %2143 = zext i8 %2142 to i32
  %2144 = and i32 %2143, 15
  %2145 = icmp eq i32 14, %2144
  br i1 %2145, label %2146, label %2147

2146:                                             ; preds = %2139
  br label %2159

2147:                                             ; preds = %2139
  %2148 = load ptr, ptr %8, align 8, !tbaa !5
  %2149 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2148, i32 0, i32 3
  %2150 = load i8, ptr %2149, align 1, !tbaa !20
  %2151 = zext i8 %2150 to i32
  %2152 = and i32 %2151, 15
  %2153 = icmp eq i32 15, %2152
  br i1 %2153, label %2154, label %2155

2154:                                             ; preds = %2147
  br label %2157

2155:                                             ; preds = %2147
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

2156:                                             ; No predecessors!
  br label %2157

2157:                                             ; preds = %2156, %2154
  %2158 = phi i32 [ 15, %2154 ], [ 0, %2156 ]
  br label %2159

2159:                                             ; preds = %2157, %2146
  %2160 = phi i32 [ 14, %2146 ], [ %2158, %2157 ]
  br label %2161

2161:                                             ; preds = %2159, %2138
  %2162 = phi i32 [ 12, %2138 ], [ %2160, %2159 ]
  br label %2163

2163:                                             ; preds = %2161, %2130
  %2164 = phi i32 [ 12, %2130 ], [ %2162, %2161 ]
  br label %2165

2165:                                             ; preds = %2163, %2122
  %2166 = phi i32 [ 10, %2122 ], [ %2164, %2163 ]
  br label %2167

2167:                                             ; preds = %2165, %2114
  %2168 = phi i32 [ 10, %2114 ], [ %2166, %2165 ]
  br label %2169

2169:                                             ; preds = %2167, %2106
  %2170 = phi i32 [ 8, %2106 ], [ %2168, %2167 ]
  br label %2171

2171:                                             ; preds = %2169, %2098
  %2172 = phi i32 [ 8, %2098 ], [ %2170, %2169 ]
  br label %2173

2173:                                             ; preds = %2171, %2090
  %2174 = phi i32 [ 6, %2090 ], [ %2172, %2171 ]
  br label %2175

2175:                                             ; preds = %2173, %2082
  %2176 = phi i32 [ 6, %2082 ], [ %2174, %2173 ]
  br label %2177

2177:                                             ; preds = %2175, %2074
  %2178 = phi i32 [ 5, %2074 ], [ %2176, %2175 ]
  br label %2179

2179:                                             ; preds = %2177, %2066
  %2180 = phi i32 [ 4, %2066 ], [ %2178, %2177 ]
  br label %2181

2181:                                             ; preds = %2179, %2058
  %2182 = phi i32 [ 3, %2058 ], [ %2180, %2179 ]
  br label %2183

2183:                                             ; preds = %2181, %2050
  %2184 = phi i32 [ 2, %2050 ], [ %2182, %2181 ]
  br label %2185

2185:                                             ; preds = %2183, %2042
  %2186 = phi i32 [ 1, %2042 ], [ %2184, %2183 ]
  br label %2187

2187:                                             ; preds = %2185, %2034
  %2188 = phi i32 [ 0, %2034 ], [ %2186, %2185 ]
  br label %2195

2189:                                             ; preds = %2020
  %2190 = load ptr, ptr %8, align 8, !tbaa !5
  %2191 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2190, i32 0, i32 3
  %2192 = load i8, ptr %2191, align 1, !tbaa !20
  %2193 = zext i8 %2192 to i32
  %2194 = ashr i32 %2193, 4
  br label %2195

2195:                                             ; preds = %2189, %2187
  %2196 = phi i32 [ %2188, %2187 ], [ %2194, %2189 ]
  %2197 = icmp eq i32 11, %2196
  br i1 %2197, label %2198, label %2199

2198:                                             ; preds = %2195
  br label %2563

2199:                                             ; preds = %2195
  %2200 = load ptr, ptr %8, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2200, i32 0, i32 3
  %2202 = load i8, ptr %2201, align 1, !tbaa !20
  %2203 = zext i8 %2202 to i32
  %2204 = ashr i32 %2203, 4
  %2205 = icmp eq i32 0, %2204
  br i1 %2205, label %2206, label %2368

2206:                                             ; preds = %2199
  %2207 = load ptr, ptr %8, align 8, !tbaa !5
  %2208 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2207, i32 0, i32 3
  %2209 = load i8, ptr %2208, align 1, !tbaa !20
  %2210 = zext i8 %2209 to i32
  %2211 = and i32 %2210, 15
  %2212 = icmp eq i32 0, %2211
  br i1 %2212, label %2213, label %2214

2213:                                             ; preds = %2206
  br label %2366

2214:                                             ; preds = %2206
  %2215 = load ptr, ptr %8, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2215, i32 0, i32 3
  %2217 = load i8, ptr %2216, align 1, !tbaa !20
  %2218 = zext i8 %2217 to i32
  %2219 = and i32 %2218, 15
  %2220 = icmp eq i32 1, %2219
  br i1 %2220, label %2221, label %2222

2221:                                             ; preds = %2214
  br label %2364

2222:                                             ; preds = %2214
  %2223 = load ptr, ptr %8, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2223, i32 0, i32 3
  %2225 = load i8, ptr %2224, align 1, !tbaa !20
  %2226 = zext i8 %2225 to i32
  %2227 = and i32 %2226, 15
  %2228 = icmp eq i32 2, %2227
  br i1 %2228, label %2229, label %2230

2229:                                             ; preds = %2222
  br label %2362

2230:                                             ; preds = %2222
  %2231 = load ptr, ptr %8, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2231, i32 0, i32 3
  %2233 = load i8, ptr %2232, align 1, !tbaa !20
  %2234 = zext i8 %2233 to i32
  %2235 = and i32 %2234, 15
  %2236 = icmp eq i32 3, %2235
  br i1 %2236, label %2237, label %2238

2237:                                             ; preds = %2230
  br label %2360

2238:                                             ; preds = %2230
  %2239 = load ptr, ptr %8, align 8, !tbaa !5
  %2240 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2239, i32 0, i32 3
  %2241 = load i8, ptr %2240, align 1, !tbaa !20
  %2242 = zext i8 %2241 to i32
  %2243 = and i32 %2242, 15
  %2244 = icmp eq i32 4, %2243
  br i1 %2244, label %2245, label %2246

2245:                                             ; preds = %2238
  br label %2358

2246:                                             ; preds = %2238
  %2247 = load ptr, ptr %8, align 8, !tbaa !5
  %2248 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2247, i32 0, i32 3
  %2249 = load i8, ptr %2248, align 1, !tbaa !20
  %2250 = zext i8 %2249 to i32
  %2251 = and i32 %2250, 15
  %2252 = icmp eq i32 5, %2251
  br i1 %2252, label %2253, label %2254

2253:                                             ; preds = %2246
  br label %2356

2254:                                             ; preds = %2246
  %2255 = load ptr, ptr %8, align 8, !tbaa !5
  %2256 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2255, i32 0, i32 3
  %2257 = load i8, ptr %2256, align 1, !tbaa !20
  %2258 = zext i8 %2257 to i32
  %2259 = and i32 %2258, 15
  %2260 = icmp eq i32 6, %2259
  br i1 %2260, label %2261, label %2262

2261:                                             ; preds = %2254
  br label %2354

2262:                                             ; preds = %2254
  %2263 = load ptr, ptr %8, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2263, i32 0, i32 3
  %2265 = load i8, ptr %2264, align 1, !tbaa !20
  %2266 = zext i8 %2265 to i32
  %2267 = and i32 %2266, 15
  %2268 = icmp eq i32 7, %2267
  br i1 %2268, label %2269, label %2270

2269:                                             ; preds = %2262
  br label %2352

2270:                                             ; preds = %2262
  %2271 = load ptr, ptr %8, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2271, i32 0, i32 3
  %2273 = load i8, ptr %2272, align 1, !tbaa !20
  %2274 = zext i8 %2273 to i32
  %2275 = and i32 %2274, 15
  %2276 = icmp eq i32 8, %2275
  br i1 %2276, label %2277, label %2278

2277:                                             ; preds = %2270
  br label %2350

2278:                                             ; preds = %2270
  %2279 = load ptr, ptr %8, align 8, !tbaa !5
  %2280 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2279, i32 0, i32 3
  %2281 = load i8, ptr %2280, align 1, !tbaa !20
  %2282 = zext i8 %2281 to i32
  %2283 = and i32 %2282, 15
  %2284 = icmp eq i32 9, %2283
  br i1 %2284, label %2285, label %2286

2285:                                             ; preds = %2278
  br label %2348

2286:                                             ; preds = %2278
  %2287 = load ptr, ptr %8, align 8, !tbaa !5
  %2288 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2287, i32 0, i32 3
  %2289 = load i8, ptr %2288, align 1, !tbaa !20
  %2290 = zext i8 %2289 to i32
  %2291 = and i32 %2290, 15
  %2292 = icmp eq i32 10, %2291
  br i1 %2292, label %2293, label %2294

2293:                                             ; preds = %2286
  br label %2346

2294:                                             ; preds = %2286
  %2295 = load ptr, ptr %8, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2295, i32 0, i32 3
  %2297 = load i8, ptr %2296, align 1, !tbaa !20
  %2298 = zext i8 %2297 to i32
  %2299 = and i32 %2298, 15
  %2300 = icmp eq i32 11, %2299
  br i1 %2300, label %2301, label %2302

2301:                                             ; preds = %2294
  br label %2344

2302:                                             ; preds = %2294
  %2303 = load ptr, ptr %8, align 8, !tbaa !5
  %2304 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2303, i32 0, i32 3
  %2305 = load i8, ptr %2304, align 1, !tbaa !20
  %2306 = zext i8 %2305 to i32
  %2307 = and i32 %2306, 15
  %2308 = icmp eq i32 12, %2307
  br i1 %2308, label %2309, label %2310

2309:                                             ; preds = %2302
  br label %2342

2310:                                             ; preds = %2302
  %2311 = load ptr, ptr %8, align 8, !tbaa !5
  %2312 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2311, i32 0, i32 3
  %2313 = load i8, ptr %2312, align 1, !tbaa !20
  %2314 = zext i8 %2313 to i32
  %2315 = and i32 %2314, 15
  %2316 = icmp eq i32 13, %2315
  br i1 %2316, label %2317, label %2318

2317:                                             ; preds = %2310
  br label %2340

2318:                                             ; preds = %2310
  %2319 = load ptr, ptr %8, align 8, !tbaa !5
  %2320 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2319, i32 0, i32 3
  %2321 = load i8, ptr %2320, align 1, !tbaa !20
  %2322 = zext i8 %2321 to i32
  %2323 = and i32 %2322, 15
  %2324 = icmp eq i32 14, %2323
  br i1 %2324, label %2325, label %2326

2325:                                             ; preds = %2318
  br label %2338

2326:                                             ; preds = %2318
  %2327 = load ptr, ptr %8, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2327, i32 0, i32 3
  %2329 = load i8, ptr %2328, align 1, !tbaa !20
  %2330 = zext i8 %2329 to i32
  %2331 = and i32 %2330, 15
  %2332 = icmp eq i32 15, %2331
  br i1 %2332, label %2333, label %2334

2333:                                             ; preds = %2326
  br label %2336

2334:                                             ; preds = %2326
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

2335:                                             ; No predecessors!
  br label %2336

2336:                                             ; preds = %2335, %2333
  %2337 = phi i32 [ 15, %2333 ], [ 0, %2335 ]
  br label %2338

2338:                                             ; preds = %2336, %2325
  %2339 = phi i32 [ 14, %2325 ], [ %2337, %2336 ]
  br label %2340

2340:                                             ; preds = %2338, %2317
  %2341 = phi i32 [ 12, %2317 ], [ %2339, %2338 ]
  br label %2342

2342:                                             ; preds = %2340, %2309
  %2343 = phi i32 [ 12, %2309 ], [ %2341, %2340 ]
  br label %2344

2344:                                             ; preds = %2342, %2301
  %2345 = phi i32 [ 10, %2301 ], [ %2343, %2342 ]
  br label %2346

2346:                                             ; preds = %2344, %2293
  %2347 = phi i32 [ 10, %2293 ], [ %2345, %2344 ]
  br label %2348

2348:                                             ; preds = %2346, %2285
  %2349 = phi i32 [ 8, %2285 ], [ %2347, %2346 ]
  br label %2350

2350:                                             ; preds = %2348, %2277
  %2351 = phi i32 [ 8, %2277 ], [ %2349, %2348 ]
  br label %2352

2352:                                             ; preds = %2350, %2269
  %2353 = phi i32 [ 6, %2269 ], [ %2351, %2350 ]
  br label %2354

2354:                                             ; preds = %2352, %2261
  %2355 = phi i32 [ 6, %2261 ], [ %2353, %2352 ]
  br label %2356

2356:                                             ; preds = %2354, %2253
  %2357 = phi i32 [ 5, %2253 ], [ %2355, %2354 ]
  br label %2358

2358:                                             ; preds = %2356, %2245
  %2359 = phi i32 [ 4, %2245 ], [ %2357, %2356 ]
  br label %2360

2360:                                             ; preds = %2358, %2237
  %2361 = phi i32 [ 3, %2237 ], [ %2359, %2358 ]
  br label %2362

2362:                                             ; preds = %2360, %2229
  %2363 = phi i32 [ 2, %2229 ], [ %2361, %2360 ]
  br label %2364

2364:                                             ; preds = %2362, %2221
  %2365 = phi i32 [ 1, %2221 ], [ %2363, %2362 ]
  br label %2366

2366:                                             ; preds = %2364, %2213
  %2367 = phi i32 [ 0, %2213 ], [ %2365, %2364 ]
  br label %2374

2368:                                             ; preds = %2199
  %2369 = load ptr, ptr %8, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2369, i32 0, i32 3
  %2371 = load i8, ptr %2370, align 1, !tbaa !20
  %2372 = zext i8 %2371 to i32
  %2373 = ashr i32 %2372, 4
  br label %2374

2374:                                             ; preds = %2368, %2366
  %2375 = phi i32 [ %2367, %2366 ], [ %2373, %2368 ]
  %2376 = icmp eq i32 12, %2375
  br i1 %2376, label %2377, label %2378

2377:                                             ; preds = %2374
  br label %2561

2378:                                             ; preds = %2374
  %2379 = load ptr, ptr %8, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2379, i32 0, i32 3
  %2381 = load i8, ptr %2380, align 1, !tbaa !20
  %2382 = zext i8 %2381 to i32
  %2383 = ashr i32 %2382, 4
  %2384 = icmp eq i32 0, %2383
  br i1 %2384, label %2385, label %2547

2385:                                             ; preds = %2378
  %2386 = load ptr, ptr %8, align 8, !tbaa !5
  %2387 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2386, i32 0, i32 3
  %2388 = load i8, ptr %2387, align 1, !tbaa !20
  %2389 = zext i8 %2388 to i32
  %2390 = and i32 %2389, 15
  %2391 = icmp eq i32 0, %2390
  br i1 %2391, label %2392, label %2393

2392:                                             ; preds = %2385
  br label %2545

2393:                                             ; preds = %2385
  %2394 = load ptr, ptr %8, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2394, i32 0, i32 3
  %2396 = load i8, ptr %2395, align 1, !tbaa !20
  %2397 = zext i8 %2396 to i32
  %2398 = and i32 %2397, 15
  %2399 = icmp eq i32 1, %2398
  br i1 %2399, label %2400, label %2401

2400:                                             ; preds = %2393
  br label %2543

2401:                                             ; preds = %2393
  %2402 = load ptr, ptr %8, align 8, !tbaa !5
  %2403 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2402, i32 0, i32 3
  %2404 = load i8, ptr %2403, align 1, !tbaa !20
  %2405 = zext i8 %2404 to i32
  %2406 = and i32 %2405, 15
  %2407 = icmp eq i32 2, %2406
  br i1 %2407, label %2408, label %2409

2408:                                             ; preds = %2401
  br label %2541

2409:                                             ; preds = %2401
  %2410 = load ptr, ptr %8, align 8, !tbaa !5
  %2411 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2410, i32 0, i32 3
  %2412 = load i8, ptr %2411, align 1, !tbaa !20
  %2413 = zext i8 %2412 to i32
  %2414 = and i32 %2413, 15
  %2415 = icmp eq i32 3, %2414
  br i1 %2415, label %2416, label %2417

2416:                                             ; preds = %2409
  br label %2539

2417:                                             ; preds = %2409
  %2418 = load ptr, ptr %8, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2418, i32 0, i32 3
  %2420 = load i8, ptr %2419, align 1, !tbaa !20
  %2421 = zext i8 %2420 to i32
  %2422 = and i32 %2421, 15
  %2423 = icmp eq i32 4, %2422
  br i1 %2423, label %2424, label %2425

2424:                                             ; preds = %2417
  br label %2537

2425:                                             ; preds = %2417
  %2426 = load ptr, ptr %8, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2426, i32 0, i32 3
  %2428 = load i8, ptr %2427, align 1, !tbaa !20
  %2429 = zext i8 %2428 to i32
  %2430 = and i32 %2429, 15
  %2431 = icmp eq i32 5, %2430
  br i1 %2431, label %2432, label %2433

2432:                                             ; preds = %2425
  br label %2535

2433:                                             ; preds = %2425
  %2434 = load ptr, ptr %8, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2434, i32 0, i32 3
  %2436 = load i8, ptr %2435, align 1, !tbaa !20
  %2437 = zext i8 %2436 to i32
  %2438 = and i32 %2437, 15
  %2439 = icmp eq i32 6, %2438
  br i1 %2439, label %2440, label %2441

2440:                                             ; preds = %2433
  br label %2533

2441:                                             ; preds = %2433
  %2442 = load ptr, ptr %8, align 8, !tbaa !5
  %2443 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2442, i32 0, i32 3
  %2444 = load i8, ptr %2443, align 1, !tbaa !20
  %2445 = zext i8 %2444 to i32
  %2446 = and i32 %2445, 15
  %2447 = icmp eq i32 7, %2446
  br i1 %2447, label %2448, label %2449

2448:                                             ; preds = %2441
  br label %2531

2449:                                             ; preds = %2441
  %2450 = load ptr, ptr %8, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2450, i32 0, i32 3
  %2452 = load i8, ptr %2451, align 1, !tbaa !20
  %2453 = zext i8 %2452 to i32
  %2454 = and i32 %2453, 15
  %2455 = icmp eq i32 8, %2454
  br i1 %2455, label %2456, label %2457

2456:                                             ; preds = %2449
  br label %2529

2457:                                             ; preds = %2449
  %2458 = load ptr, ptr %8, align 8, !tbaa !5
  %2459 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2458, i32 0, i32 3
  %2460 = load i8, ptr %2459, align 1, !tbaa !20
  %2461 = zext i8 %2460 to i32
  %2462 = and i32 %2461, 15
  %2463 = icmp eq i32 9, %2462
  br i1 %2463, label %2464, label %2465

2464:                                             ; preds = %2457
  br label %2527

2465:                                             ; preds = %2457
  %2466 = load ptr, ptr %8, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2466, i32 0, i32 3
  %2468 = load i8, ptr %2467, align 1, !tbaa !20
  %2469 = zext i8 %2468 to i32
  %2470 = and i32 %2469, 15
  %2471 = icmp eq i32 10, %2470
  br i1 %2471, label %2472, label %2473

2472:                                             ; preds = %2465
  br label %2525

2473:                                             ; preds = %2465
  %2474 = load ptr, ptr %8, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2474, i32 0, i32 3
  %2476 = load i8, ptr %2475, align 1, !tbaa !20
  %2477 = zext i8 %2476 to i32
  %2478 = and i32 %2477, 15
  %2479 = icmp eq i32 11, %2478
  br i1 %2479, label %2480, label %2481

2480:                                             ; preds = %2473
  br label %2523

2481:                                             ; preds = %2473
  %2482 = load ptr, ptr %8, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2482, i32 0, i32 3
  %2484 = load i8, ptr %2483, align 1, !tbaa !20
  %2485 = zext i8 %2484 to i32
  %2486 = and i32 %2485, 15
  %2487 = icmp eq i32 12, %2486
  br i1 %2487, label %2488, label %2489

2488:                                             ; preds = %2481
  br label %2521

2489:                                             ; preds = %2481
  %2490 = load ptr, ptr %8, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2490, i32 0, i32 3
  %2492 = load i8, ptr %2491, align 1, !tbaa !20
  %2493 = zext i8 %2492 to i32
  %2494 = and i32 %2493, 15
  %2495 = icmp eq i32 13, %2494
  br i1 %2495, label %2496, label %2497

2496:                                             ; preds = %2489
  br label %2519

2497:                                             ; preds = %2489
  %2498 = load ptr, ptr %8, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2498, i32 0, i32 3
  %2500 = load i8, ptr %2499, align 1, !tbaa !20
  %2501 = zext i8 %2500 to i32
  %2502 = and i32 %2501, 15
  %2503 = icmp eq i32 14, %2502
  br i1 %2503, label %2504, label %2505

2504:                                             ; preds = %2497
  br label %2517

2505:                                             ; preds = %2497
  %2506 = load ptr, ptr %8, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2506, i32 0, i32 3
  %2508 = load i8, ptr %2507, align 1, !tbaa !20
  %2509 = zext i8 %2508 to i32
  %2510 = and i32 %2509, 15
  %2511 = icmp eq i32 15, %2510
  br i1 %2511, label %2512, label %2513

2512:                                             ; preds = %2505
  br label %2515

2513:                                             ; preds = %2505
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

2514:                                             ; No predecessors!
  br label %2515

2515:                                             ; preds = %2514, %2512
  %2516 = phi i32 [ 15, %2512 ], [ 0, %2514 ]
  br label %2517

2517:                                             ; preds = %2515, %2504
  %2518 = phi i32 [ 14, %2504 ], [ %2516, %2515 ]
  br label %2519

2519:                                             ; preds = %2517, %2496
  %2520 = phi i32 [ 12, %2496 ], [ %2518, %2517 ]
  br label %2521

2521:                                             ; preds = %2519, %2488
  %2522 = phi i32 [ 12, %2488 ], [ %2520, %2519 ]
  br label %2523

2523:                                             ; preds = %2521, %2480
  %2524 = phi i32 [ 10, %2480 ], [ %2522, %2521 ]
  br label %2525

2525:                                             ; preds = %2523, %2472
  %2526 = phi i32 [ 10, %2472 ], [ %2524, %2523 ]
  br label %2527

2527:                                             ; preds = %2525, %2464
  %2528 = phi i32 [ 8, %2464 ], [ %2526, %2525 ]
  br label %2529

2529:                                             ; preds = %2527, %2456
  %2530 = phi i32 [ 8, %2456 ], [ %2528, %2527 ]
  br label %2531

2531:                                             ; preds = %2529, %2448
  %2532 = phi i32 [ 6, %2448 ], [ %2530, %2529 ]
  br label %2533

2533:                                             ; preds = %2531, %2440
  %2534 = phi i32 [ 6, %2440 ], [ %2532, %2531 ]
  br label %2535

2535:                                             ; preds = %2533, %2432
  %2536 = phi i32 [ 5, %2432 ], [ %2534, %2533 ]
  br label %2537

2537:                                             ; preds = %2535, %2424
  %2538 = phi i32 [ 4, %2424 ], [ %2536, %2535 ]
  br label %2539

2539:                                             ; preds = %2537, %2416
  %2540 = phi i32 [ 3, %2416 ], [ %2538, %2537 ]
  br label %2541

2541:                                             ; preds = %2539, %2408
  %2542 = phi i32 [ 2, %2408 ], [ %2540, %2539 ]
  br label %2543

2543:                                             ; preds = %2541, %2400
  %2544 = phi i32 [ 1, %2400 ], [ %2542, %2541 ]
  br label %2545

2545:                                             ; preds = %2543, %2392
  %2546 = phi i32 [ 0, %2392 ], [ %2544, %2543 ]
  br label %2553

2547:                                             ; preds = %2378
  %2548 = load ptr, ptr %8, align 8, !tbaa !5
  %2549 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2548, i32 0, i32 3
  %2550 = load i8, ptr %2549, align 1, !tbaa !20
  %2551 = zext i8 %2550 to i32
  %2552 = ashr i32 %2551, 4
  br label %2553

2553:                                             ; preds = %2547, %2545
  %2554 = phi i32 [ %2546, %2545 ], [ %2552, %2547 ]
  %2555 = icmp eq i32 13, %2554
  br i1 %2555, label %2556, label %2557

2556:                                             ; preds = %2553
  br label %2559

2557:                                             ; preds = %2553
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 669, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

2558:                                             ; No predecessors!
  br label %2559

2559:                                             ; preds = %2558, %2556
  %2560 = phi i32 [ 1, %2556 ], [ 0, %2558 ]
  br label %2561

2561:                                             ; preds = %2559, %2377
  %2562 = phi i32 [ 1, %2377 ], [ %2560, %2559 ]
  br label %2563

2563:                                             ; preds = %2561, %2198
  %2564 = phi i32 [ 2, %2198 ], [ %2562, %2561 ]
  br label %2565

2565:                                             ; preds = %2563, %2019
  %2566 = phi i32 [ 2, %2019 ], [ %2564, %2563 ]
  br label %2567

2567:                                             ; preds = %2565, %1840
  %2568 = phi i32 [ 4, %1840 ], [ %2566, %2565 ]
  br label %2569

2569:                                             ; preds = %2567, %1661
  %2570 = phi i32 [ 4, %1661 ], [ %2568, %2567 ]
  br label %2571

2571:                                             ; preds = %2569, %1482
  %2572 = phi i32 [ 8, %1482 ], [ %2570, %2569 ]
  br label %2573

2573:                                             ; preds = %2571, %1303
  %2574 = phi i32 [ 8, %1303 ], [ %2572, %2571 ]
  br label %2575

2575:                                             ; preds = %2573, %1124
  %2576 = phi i32 [ 1, %1124 ], [ %2574, %2573 ]
  br label %2577

2577:                                             ; preds = %2575, %945
  %2578 = phi i32 [ 1, %945 ], [ %2576, %2575 ]
  br label %2579

2579:                                             ; preds = %2577, %766
  %2580 = phi i32 [ 2, %766 ], [ %2578, %2577 ]
  br label %2581

2581:                                             ; preds = %2579, %587
  %2582 = phi i32 [ 2, %587 ], [ %2580, %2579 ]
  br label %2583

2583:                                             ; preds = %2581, %408
  %2584 = phi i32 [ 4, %408 ], [ %2582, %2581 ]
  br label %2585

2585:                                             ; preds = %2583, %229
  %2586 = phi i32 [ 8, %229 ], [ %2584, %2583 ]
  %2587 = icmp eq i32 %2586, 8
  %2588 = zext i1 %2587 to i64
  %2589 = select i1 %2587, i32 7, i32 5
  call void @libxsmm_generator_hinstrps_aarch64(ptr noundef %47, i32 noundef %48, i32 noundef %51, i32 noundef %2589)
  br label %2590

2590:                                             ; preds = %2585, %33
  %2591 = load ptr, ptr %7, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2591, i32 0, i32 32
  %2593 = load i32, ptr %2592, align 8, !tbaa !22
  %2594 = icmp eq i32 %2593, 1
  br i1 %2594, label %2595, label %5142

2595:                                             ; preds = %2590
  %2596 = load ptr, ptr %5, align 8, !tbaa !5
  %2597 = load ptr, ptr %7, align 8, !tbaa !5
  %2598 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2597, i32 0, i32 45
  %2599 = load i32, ptr %2598, align 4, !tbaa !14
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %2596, i32 noundef %2599, i32 noundef 0)
  %2600 = load ptr, ptr %5, align 8, !tbaa !5
  %2601 = load ptr, ptr %6, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2601, i32 0, i32 5
  %2603 = load i32, ptr %2602, align 4, !tbaa !23
  %2604 = load ptr, ptr %8, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2604, i32 0, i32 3
  %2606 = load i8, ptr %2605, align 1, !tbaa !20
  %2607 = zext i8 %2606 to i32
  %2608 = ashr i32 %2607, 4
  %2609 = icmp eq i32 0, %2608
  br i1 %2609, label %2610, label %2772

2610:                                             ; preds = %2595
  %2611 = load ptr, ptr %8, align 8, !tbaa !5
  %2612 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2611, i32 0, i32 3
  %2613 = load i8, ptr %2612, align 1, !tbaa !20
  %2614 = zext i8 %2613 to i32
  %2615 = and i32 %2614, 15
  %2616 = icmp eq i32 0, %2615
  br i1 %2616, label %2617, label %2618

2617:                                             ; preds = %2610
  br label %2770

2618:                                             ; preds = %2610
  %2619 = load ptr, ptr %8, align 8, !tbaa !5
  %2620 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2619, i32 0, i32 3
  %2621 = load i8, ptr %2620, align 1, !tbaa !20
  %2622 = zext i8 %2621 to i32
  %2623 = and i32 %2622, 15
  %2624 = icmp eq i32 1, %2623
  br i1 %2624, label %2625, label %2626

2625:                                             ; preds = %2618
  br label %2768

2626:                                             ; preds = %2618
  %2627 = load ptr, ptr %8, align 8, !tbaa !5
  %2628 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2627, i32 0, i32 3
  %2629 = load i8, ptr %2628, align 1, !tbaa !20
  %2630 = zext i8 %2629 to i32
  %2631 = and i32 %2630, 15
  %2632 = icmp eq i32 2, %2631
  br i1 %2632, label %2633, label %2634

2633:                                             ; preds = %2626
  br label %2766

2634:                                             ; preds = %2626
  %2635 = load ptr, ptr %8, align 8, !tbaa !5
  %2636 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2635, i32 0, i32 3
  %2637 = load i8, ptr %2636, align 1, !tbaa !20
  %2638 = zext i8 %2637 to i32
  %2639 = and i32 %2638, 15
  %2640 = icmp eq i32 3, %2639
  br i1 %2640, label %2641, label %2642

2641:                                             ; preds = %2634
  br label %2764

2642:                                             ; preds = %2634
  %2643 = load ptr, ptr %8, align 8, !tbaa !5
  %2644 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2643, i32 0, i32 3
  %2645 = load i8, ptr %2644, align 1, !tbaa !20
  %2646 = zext i8 %2645 to i32
  %2647 = and i32 %2646, 15
  %2648 = icmp eq i32 4, %2647
  br i1 %2648, label %2649, label %2650

2649:                                             ; preds = %2642
  br label %2762

2650:                                             ; preds = %2642
  %2651 = load ptr, ptr %8, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2651, i32 0, i32 3
  %2653 = load i8, ptr %2652, align 1, !tbaa !20
  %2654 = zext i8 %2653 to i32
  %2655 = and i32 %2654, 15
  %2656 = icmp eq i32 5, %2655
  br i1 %2656, label %2657, label %2658

2657:                                             ; preds = %2650
  br label %2760

2658:                                             ; preds = %2650
  %2659 = load ptr, ptr %8, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2659, i32 0, i32 3
  %2661 = load i8, ptr %2660, align 1, !tbaa !20
  %2662 = zext i8 %2661 to i32
  %2663 = and i32 %2662, 15
  %2664 = icmp eq i32 6, %2663
  br i1 %2664, label %2665, label %2666

2665:                                             ; preds = %2658
  br label %2758

2666:                                             ; preds = %2658
  %2667 = load ptr, ptr %8, align 8, !tbaa !5
  %2668 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2667, i32 0, i32 3
  %2669 = load i8, ptr %2668, align 1, !tbaa !20
  %2670 = zext i8 %2669 to i32
  %2671 = and i32 %2670, 15
  %2672 = icmp eq i32 7, %2671
  br i1 %2672, label %2673, label %2674

2673:                                             ; preds = %2666
  br label %2756

2674:                                             ; preds = %2666
  %2675 = load ptr, ptr %8, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2675, i32 0, i32 3
  %2677 = load i8, ptr %2676, align 1, !tbaa !20
  %2678 = zext i8 %2677 to i32
  %2679 = and i32 %2678, 15
  %2680 = icmp eq i32 8, %2679
  br i1 %2680, label %2681, label %2682

2681:                                             ; preds = %2674
  br label %2754

2682:                                             ; preds = %2674
  %2683 = load ptr, ptr %8, align 8, !tbaa !5
  %2684 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2683, i32 0, i32 3
  %2685 = load i8, ptr %2684, align 1, !tbaa !20
  %2686 = zext i8 %2685 to i32
  %2687 = and i32 %2686, 15
  %2688 = icmp eq i32 9, %2687
  br i1 %2688, label %2689, label %2690

2689:                                             ; preds = %2682
  br label %2752

2690:                                             ; preds = %2682
  %2691 = load ptr, ptr %8, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2691, i32 0, i32 3
  %2693 = load i8, ptr %2692, align 1, !tbaa !20
  %2694 = zext i8 %2693 to i32
  %2695 = and i32 %2694, 15
  %2696 = icmp eq i32 10, %2695
  br i1 %2696, label %2697, label %2698

2697:                                             ; preds = %2690
  br label %2750

2698:                                             ; preds = %2690
  %2699 = load ptr, ptr %8, align 8, !tbaa !5
  %2700 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2699, i32 0, i32 3
  %2701 = load i8, ptr %2700, align 1, !tbaa !20
  %2702 = zext i8 %2701 to i32
  %2703 = and i32 %2702, 15
  %2704 = icmp eq i32 11, %2703
  br i1 %2704, label %2705, label %2706

2705:                                             ; preds = %2698
  br label %2748

2706:                                             ; preds = %2698
  %2707 = load ptr, ptr %8, align 8, !tbaa !5
  %2708 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2707, i32 0, i32 3
  %2709 = load i8, ptr %2708, align 1, !tbaa !20
  %2710 = zext i8 %2709 to i32
  %2711 = and i32 %2710, 15
  %2712 = icmp eq i32 12, %2711
  br i1 %2712, label %2713, label %2714

2713:                                             ; preds = %2706
  br label %2746

2714:                                             ; preds = %2706
  %2715 = load ptr, ptr %8, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2715, i32 0, i32 3
  %2717 = load i8, ptr %2716, align 1, !tbaa !20
  %2718 = zext i8 %2717 to i32
  %2719 = and i32 %2718, 15
  %2720 = icmp eq i32 13, %2719
  br i1 %2720, label %2721, label %2722

2721:                                             ; preds = %2714
  br label %2744

2722:                                             ; preds = %2714
  %2723 = load ptr, ptr %8, align 8, !tbaa !5
  %2724 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2723, i32 0, i32 3
  %2725 = load i8, ptr %2724, align 1, !tbaa !20
  %2726 = zext i8 %2725 to i32
  %2727 = and i32 %2726, 15
  %2728 = icmp eq i32 14, %2727
  br i1 %2728, label %2729, label %2730

2729:                                             ; preds = %2722
  br label %2742

2730:                                             ; preds = %2722
  %2731 = load ptr, ptr %8, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2731, i32 0, i32 3
  %2733 = load i8, ptr %2732, align 1, !tbaa !20
  %2734 = zext i8 %2733 to i32
  %2735 = and i32 %2734, 15
  %2736 = icmp eq i32 15, %2735
  br i1 %2736, label %2737, label %2738

2737:                                             ; preds = %2730
  br label %2740

2738:                                             ; preds = %2730
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

2739:                                             ; No predecessors!
  br label %2740

2740:                                             ; preds = %2739, %2737
  %2741 = phi i32 [ 15, %2737 ], [ 0, %2739 ]
  br label %2742

2742:                                             ; preds = %2740, %2729
  %2743 = phi i32 [ 14, %2729 ], [ %2741, %2740 ]
  br label %2744

2744:                                             ; preds = %2742, %2721
  %2745 = phi i32 [ 12, %2721 ], [ %2743, %2742 ]
  br label %2746

2746:                                             ; preds = %2744, %2713
  %2747 = phi i32 [ 12, %2713 ], [ %2745, %2744 ]
  br label %2748

2748:                                             ; preds = %2746, %2705
  %2749 = phi i32 [ 10, %2705 ], [ %2747, %2746 ]
  br label %2750

2750:                                             ; preds = %2748, %2697
  %2751 = phi i32 [ 10, %2697 ], [ %2749, %2748 ]
  br label %2752

2752:                                             ; preds = %2750, %2689
  %2753 = phi i32 [ 8, %2689 ], [ %2751, %2750 ]
  br label %2754

2754:                                             ; preds = %2752, %2681
  %2755 = phi i32 [ 8, %2681 ], [ %2753, %2752 ]
  br label %2756

2756:                                             ; preds = %2754, %2673
  %2757 = phi i32 [ 6, %2673 ], [ %2755, %2754 ]
  br label %2758

2758:                                             ; preds = %2756, %2665
  %2759 = phi i32 [ 6, %2665 ], [ %2757, %2756 ]
  br label %2760

2760:                                             ; preds = %2758, %2657
  %2761 = phi i32 [ 5, %2657 ], [ %2759, %2758 ]
  br label %2762

2762:                                             ; preds = %2760, %2649
  %2763 = phi i32 [ 4, %2649 ], [ %2761, %2760 ]
  br label %2764

2764:                                             ; preds = %2762, %2641
  %2765 = phi i32 [ 3, %2641 ], [ %2763, %2762 ]
  br label %2766

2766:                                             ; preds = %2764, %2633
  %2767 = phi i32 [ 2, %2633 ], [ %2765, %2764 ]
  br label %2768

2768:                                             ; preds = %2766, %2625
  %2769 = phi i32 [ 1, %2625 ], [ %2767, %2766 ]
  br label %2770

2770:                                             ; preds = %2768, %2617
  %2771 = phi i32 [ 0, %2617 ], [ %2769, %2768 ]
  br label %2778

2772:                                             ; preds = %2595
  %2773 = load ptr, ptr %8, align 8, !tbaa !5
  %2774 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2773, i32 0, i32 3
  %2775 = load i8, ptr %2774, align 1, !tbaa !20
  %2776 = zext i8 %2775 to i32
  %2777 = ashr i32 %2776, 4
  br label %2778

2778:                                             ; preds = %2772, %2770
  %2779 = phi i32 [ %2771, %2770 ], [ %2777, %2772 ]
  %2780 = icmp eq i32 0, %2779
  br i1 %2780, label %2781, label %2782

2781:                                             ; preds = %2778
  br label %5137

2782:                                             ; preds = %2778
  %2783 = load ptr, ptr %8, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2783, i32 0, i32 3
  %2785 = load i8, ptr %2784, align 1, !tbaa !20
  %2786 = zext i8 %2785 to i32
  %2787 = ashr i32 %2786, 4
  %2788 = icmp eq i32 0, %2787
  br i1 %2788, label %2789, label %2951

2789:                                             ; preds = %2782
  %2790 = load ptr, ptr %8, align 8, !tbaa !5
  %2791 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2790, i32 0, i32 3
  %2792 = load i8, ptr %2791, align 1, !tbaa !20
  %2793 = zext i8 %2792 to i32
  %2794 = and i32 %2793, 15
  %2795 = icmp eq i32 0, %2794
  br i1 %2795, label %2796, label %2797

2796:                                             ; preds = %2789
  br label %2949

2797:                                             ; preds = %2789
  %2798 = load ptr, ptr %8, align 8, !tbaa !5
  %2799 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2798, i32 0, i32 3
  %2800 = load i8, ptr %2799, align 1, !tbaa !20
  %2801 = zext i8 %2800 to i32
  %2802 = and i32 %2801, 15
  %2803 = icmp eq i32 1, %2802
  br i1 %2803, label %2804, label %2805

2804:                                             ; preds = %2797
  br label %2947

2805:                                             ; preds = %2797
  %2806 = load ptr, ptr %8, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2806, i32 0, i32 3
  %2808 = load i8, ptr %2807, align 1, !tbaa !20
  %2809 = zext i8 %2808 to i32
  %2810 = and i32 %2809, 15
  %2811 = icmp eq i32 2, %2810
  br i1 %2811, label %2812, label %2813

2812:                                             ; preds = %2805
  br label %2945

2813:                                             ; preds = %2805
  %2814 = load ptr, ptr %8, align 8, !tbaa !5
  %2815 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2814, i32 0, i32 3
  %2816 = load i8, ptr %2815, align 1, !tbaa !20
  %2817 = zext i8 %2816 to i32
  %2818 = and i32 %2817, 15
  %2819 = icmp eq i32 3, %2818
  br i1 %2819, label %2820, label %2821

2820:                                             ; preds = %2813
  br label %2943

2821:                                             ; preds = %2813
  %2822 = load ptr, ptr %8, align 8, !tbaa !5
  %2823 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2822, i32 0, i32 3
  %2824 = load i8, ptr %2823, align 1, !tbaa !20
  %2825 = zext i8 %2824 to i32
  %2826 = and i32 %2825, 15
  %2827 = icmp eq i32 4, %2826
  br i1 %2827, label %2828, label %2829

2828:                                             ; preds = %2821
  br label %2941

2829:                                             ; preds = %2821
  %2830 = load ptr, ptr %8, align 8, !tbaa !5
  %2831 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2830, i32 0, i32 3
  %2832 = load i8, ptr %2831, align 1, !tbaa !20
  %2833 = zext i8 %2832 to i32
  %2834 = and i32 %2833, 15
  %2835 = icmp eq i32 5, %2834
  br i1 %2835, label %2836, label %2837

2836:                                             ; preds = %2829
  br label %2939

2837:                                             ; preds = %2829
  %2838 = load ptr, ptr %8, align 8, !tbaa !5
  %2839 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2838, i32 0, i32 3
  %2840 = load i8, ptr %2839, align 1, !tbaa !20
  %2841 = zext i8 %2840 to i32
  %2842 = and i32 %2841, 15
  %2843 = icmp eq i32 6, %2842
  br i1 %2843, label %2844, label %2845

2844:                                             ; preds = %2837
  br label %2937

2845:                                             ; preds = %2837
  %2846 = load ptr, ptr %8, align 8, !tbaa !5
  %2847 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2846, i32 0, i32 3
  %2848 = load i8, ptr %2847, align 1, !tbaa !20
  %2849 = zext i8 %2848 to i32
  %2850 = and i32 %2849, 15
  %2851 = icmp eq i32 7, %2850
  br i1 %2851, label %2852, label %2853

2852:                                             ; preds = %2845
  br label %2935

2853:                                             ; preds = %2845
  %2854 = load ptr, ptr %8, align 8, !tbaa !5
  %2855 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2854, i32 0, i32 3
  %2856 = load i8, ptr %2855, align 1, !tbaa !20
  %2857 = zext i8 %2856 to i32
  %2858 = and i32 %2857, 15
  %2859 = icmp eq i32 8, %2858
  br i1 %2859, label %2860, label %2861

2860:                                             ; preds = %2853
  br label %2933

2861:                                             ; preds = %2853
  %2862 = load ptr, ptr %8, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2862, i32 0, i32 3
  %2864 = load i8, ptr %2863, align 1, !tbaa !20
  %2865 = zext i8 %2864 to i32
  %2866 = and i32 %2865, 15
  %2867 = icmp eq i32 9, %2866
  br i1 %2867, label %2868, label %2869

2868:                                             ; preds = %2861
  br label %2931

2869:                                             ; preds = %2861
  %2870 = load ptr, ptr %8, align 8, !tbaa !5
  %2871 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2870, i32 0, i32 3
  %2872 = load i8, ptr %2871, align 1, !tbaa !20
  %2873 = zext i8 %2872 to i32
  %2874 = and i32 %2873, 15
  %2875 = icmp eq i32 10, %2874
  br i1 %2875, label %2876, label %2877

2876:                                             ; preds = %2869
  br label %2929

2877:                                             ; preds = %2869
  %2878 = load ptr, ptr %8, align 8, !tbaa !5
  %2879 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2878, i32 0, i32 3
  %2880 = load i8, ptr %2879, align 1, !tbaa !20
  %2881 = zext i8 %2880 to i32
  %2882 = and i32 %2881, 15
  %2883 = icmp eq i32 11, %2882
  br i1 %2883, label %2884, label %2885

2884:                                             ; preds = %2877
  br label %2927

2885:                                             ; preds = %2877
  %2886 = load ptr, ptr %8, align 8, !tbaa !5
  %2887 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2886, i32 0, i32 3
  %2888 = load i8, ptr %2887, align 1, !tbaa !20
  %2889 = zext i8 %2888 to i32
  %2890 = and i32 %2889, 15
  %2891 = icmp eq i32 12, %2890
  br i1 %2891, label %2892, label %2893

2892:                                             ; preds = %2885
  br label %2925

2893:                                             ; preds = %2885
  %2894 = load ptr, ptr %8, align 8, !tbaa !5
  %2895 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2894, i32 0, i32 3
  %2896 = load i8, ptr %2895, align 1, !tbaa !20
  %2897 = zext i8 %2896 to i32
  %2898 = and i32 %2897, 15
  %2899 = icmp eq i32 13, %2898
  br i1 %2899, label %2900, label %2901

2900:                                             ; preds = %2893
  br label %2923

2901:                                             ; preds = %2893
  %2902 = load ptr, ptr %8, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2902, i32 0, i32 3
  %2904 = load i8, ptr %2903, align 1, !tbaa !20
  %2905 = zext i8 %2904 to i32
  %2906 = and i32 %2905, 15
  %2907 = icmp eq i32 14, %2906
  br i1 %2907, label %2908, label %2909

2908:                                             ; preds = %2901
  br label %2921

2909:                                             ; preds = %2901
  %2910 = load ptr, ptr %8, align 8, !tbaa !5
  %2911 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2910, i32 0, i32 3
  %2912 = load i8, ptr %2911, align 1, !tbaa !20
  %2913 = zext i8 %2912 to i32
  %2914 = and i32 %2913, 15
  %2915 = icmp eq i32 15, %2914
  br i1 %2915, label %2916, label %2917

2916:                                             ; preds = %2909
  br label %2919

2917:                                             ; preds = %2909
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

2918:                                             ; No predecessors!
  br label %2919

2919:                                             ; preds = %2918, %2916
  %2920 = phi i32 [ 15, %2916 ], [ 0, %2918 ]
  br label %2921

2921:                                             ; preds = %2919, %2908
  %2922 = phi i32 [ 14, %2908 ], [ %2920, %2919 ]
  br label %2923

2923:                                             ; preds = %2921, %2900
  %2924 = phi i32 [ 12, %2900 ], [ %2922, %2921 ]
  br label %2925

2925:                                             ; preds = %2923, %2892
  %2926 = phi i32 [ 12, %2892 ], [ %2924, %2923 ]
  br label %2927

2927:                                             ; preds = %2925, %2884
  %2928 = phi i32 [ 10, %2884 ], [ %2926, %2925 ]
  br label %2929

2929:                                             ; preds = %2927, %2876
  %2930 = phi i32 [ 10, %2876 ], [ %2928, %2927 ]
  br label %2931

2931:                                             ; preds = %2929, %2868
  %2932 = phi i32 [ 8, %2868 ], [ %2930, %2929 ]
  br label %2933

2933:                                             ; preds = %2931, %2860
  %2934 = phi i32 [ 8, %2860 ], [ %2932, %2931 ]
  br label %2935

2935:                                             ; preds = %2933, %2852
  %2936 = phi i32 [ 6, %2852 ], [ %2934, %2933 ]
  br label %2937

2937:                                             ; preds = %2935, %2844
  %2938 = phi i32 [ 6, %2844 ], [ %2936, %2935 ]
  br label %2939

2939:                                             ; preds = %2937, %2836
  %2940 = phi i32 [ 5, %2836 ], [ %2938, %2937 ]
  br label %2941

2941:                                             ; preds = %2939, %2828
  %2942 = phi i32 [ 4, %2828 ], [ %2940, %2939 ]
  br label %2943

2943:                                             ; preds = %2941, %2820
  %2944 = phi i32 [ 3, %2820 ], [ %2942, %2941 ]
  br label %2945

2945:                                             ; preds = %2943, %2812
  %2946 = phi i32 [ 2, %2812 ], [ %2944, %2943 ]
  br label %2947

2947:                                             ; preds = %2945, %2804
  %2948 = phi i32 [ 1, %2804 ], [ %2946, %2945 ]
  br label %2949

2949:                                             ; preds = %2947, %2796
  %2950 = phi i32 [ 0, %2796 ], [ %2948, %2947 ]
  br label %2957

2951:                                             ; preds = %2782
  %2952 = load ptr, ptr %8, align 8, !tbaa !5
  %2953 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2952, i32 0, i32 3
  %2954 = load i8, ptr %2953, align 1, !tbaa !20
  %2955 = zext i8 %2954 to i32
  %2956 = ashr i32 %2955, 4
  br label %2957

2957:                                             ; preds = %2951, %2949
  %2958 = phi i32 [ %2950, %2949 ], [ %2956, %2951 ]
  %2959 = icmp eq i32 1, %2958
  br i1 %2959, label %2960, label %2961

2960:                                             ; preds = %2957
  br label %5135

2961:                                             ; preds = %2957
  %2962 = load ptr, ptr %8, align 8, !tbaa !5
  %2963 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2962, i32 0, i32 3
  %2964 = load i8, ptr %2963, align 1, !tbaa !20
  %2965 = zext i8 %2964 to i32
  %2966 = ashr i32 %2965, 4
  %2967 = icmp eq i32 0, %2966
  br i1 %2967, label %2968, label %3130

2968:                                             ; preds = %2961
  %2969 = load ptr, ptr %8, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2969, i32 0, i32 3
  %2971 = load i8, ptr %2970, align 1, !tbaa !20
  %2972 = zext i8 %2971 to i32
  %2973 = and i32 %2972, 15
  %2974 = icmp eq i32 0, %2973
  br i1 %2974, label %2975, label %2976

2975:                                             ; preds = %2968
  br label %3128

2976:                                             ; preds = %2968
  %2977 = load ptr, ptr %8, align 8, !tbaa !5
  %2978 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2977, i32 0, i32 3
  %2979 = load i8, ptr %2978, align 1, !tbaa !20
  %2980 = zext i8 %2979 to i32
  %2981 = and i32 %2980, 15
  %2982 = icmp eq i32 1, %2981
  br i1 %2982, label %2983, label %2984

2983:                                             ; preds = %2976
  br label %3126

2984:                                             ; preds = %2976
  %2985 = load ptr, ptr %8, align 8, !tbaa !5
  %2986 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2985, i32 0, i32 3
  %2987 = load i8, ptr %2986, align 1, !tbaa !20
  %2988 = zext i8 %2987 to i32
  %2989 = and i32 %2988, 15
  %2990 = icmp eq i32 2, %2989
  br i1 %2990, label %2991, label %2992

2991:                                             ; preds = %2984
  br label %3124

2992:                                             ; preds = %2984
  %2993 = load ptr, ptr %8, align 8, !tbaa !5
  %2994 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2993, i32 0, i32 3
  %2995 = load i8, ptr %2994, align 1, !tbaa !20
  %2996 = zext i8 %2995 to i32
  %2997 = and i32 %2996, 15
  %2998 = icmp eq i32 3, %2997
  br i1 %2998, label %2999, label %3000

2999:                                             ; preds = %2992
  br label %3122

3000:                                             ; preds = %2992
  %3001 = load ptr, ptr %8, align 8, !tbaa !5
  %3002 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3001, i32 0, i32 3
  %3003 = load i8, ptr %3002, align 1, !tbaa !20
  %3004 = zext i8 %3003 to i32
  %3005 = and i32 %3004, 15
  %3006 = icmp eq i32 4, %3005
  br i1 %3006, label %3007, label %3008

3007:                                             ; preds = %3000
  br label %3120

3008:                                             ; preds = %3000
  %3009 = load ptr, ptr %8, align 8, !tbaa !5
  %3010 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3009, i32 0, i32 3
  %3011 = load i8, ptr %3010, align 1, !tbaa !20
  %3012 = zext i8 %3011 to i32
  %3013 = and i32 %3012, 15
  %3014 = icmp eq i32 5, %3013
  br i1 %3014, label %3015, label %3016

3015:                                             ; preds = %3008
  br label %3118

3016:                                             ; preds = %3008
  %3017 = load ptr, ptr %8, align 8, !tbaa !5
  %3018 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3017, i32 0, i32 3
  %3019 = load i8, ptr %3018, align 1, !tbaa !20
  %3020 = zext i8 %3019 to i32
  %3021 = and i32 %3020, 15
  %3022 = icmp eq i32 6, %3021
  br i1 %3022, label %3023, label %3024

3023:                                             ; preds = %3016
  br label %3116

3024:                                             ; preds = %3016
  %3025 = load ptr, ptr %8, align 8, !tbaa !5
  %3026 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3025, i32 0, i32 3
  %3027 = load i8, ptr %3026, align 1, !tbaa !20
  %3028 = zext i8 %3027 to i32
  %3029 = and i32 %3028, 15
  %3030 = icmp eq i32 7, %3029
  br i1 %3030, label %3031, label %3032

3031:                                             ; preds = %3024
  br label %3114

3032:                                             ; preds = %3024
  %3033 = load ptr, ptr %8, align 8, !tbaa !5
  %3034 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3033, i32 0, i32 3
  %3035 = load i8, ptr %3034, align 1, !tbaa !20
  %3036 = zext i8 %3035 to i32
  %3037 = and i32 %3036, 15
  %3038 = icmp eq i32 8, %3037
  br i1 %3038, label %3039, label %3040

3039:                                             ; preds = %3032
  br label %3112

3040:                                             ; preds = %3032
  %3041 = load ptr, ptr %8, align 8, !tbaa !5
  %3042 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3041, i32 0, i32 3
  %3043 = load i8, ptr %3042, align 1, !tbaa !20
  %3044 = zext i8 %3043 to i32
  %3045 = and i32 %3044, 15
  %3046 = icmp eq i32 9, %3045
  br i1 %3046, label %3047, label %3048

3047:                                             ; preds = %3040
  br label %3110

3048:                                             ; preds = %3040
  %3049 = load ptr, ptr %8, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3049, i32 0, i32 3
  %3051 = load i8, ptr %3050, align 1, !tbaa !20
  %3052 = zext i8 %3051 to i32
  %3053 = and i32 %3052, 15
  %3054 = icmp eq i32 10, %3053
  br i1 %3054, label %3055, label %3056

3055:                                             ; preds = %3048
  br label %3108

3056:                                             ; preds = %3048
  %3057 = load ptr, ptr %8, align 8, !tbaa !5
  %3058 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3057, i32 0, i32 3
  %3059 = load i8, ptr %3058, align 1, !tbaa !20
  %3060 = zext i8 %3059 to i32
  %3061 = and i32 %3060, 15
  %3062 = icmp eq i32 11, %3061
  br i1 %3062, label %3063, label %3064

3063:                                             ; preds = %3056
  br label %3106

3064:                                             ; preds = %3056
  %3065 = load ptr, ptr %8, align 8, !tbaa !5
  %3066 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3065, i32 0, i32 3
  %3067 = load i8, ptr %3066, align 1, !tbaa !20
  %3068 = zext i8 %3067 to i32
  %3069 = and i32 %3068, 15
  %3070 = icmp eq i32 12, %3069
  br i1 %3070, label %3071, label %3072

3071:                                             ; preds = %3064
  br label %3104

3072:                                             ; preds = %3064
  %3073 = load ptr, ptr %8, align 8, !tbaa !5
  %3074 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3073, i32 0, i32 3
  %3075 = load i8, ptr %3074, align 1, !tbaa !20
  %3076 = zext i8 %3075 to i32
  %3077 = and i32 %3076, 15
  %3078 = icmp eq i32 13, %3077
  br i1 %3078, label %3079, label %3080

3079:                                             ; preds = %3072
  br label %3102

3080:                                             ; preds = %3072
  %3081 = load ptr, ptr %8, align 8, !tbaa !5
  %3082 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3081, i32 0, i32 3
  %3083 = load i8, ptr %3082, align 1, !tbaa !20
  %3084 = zext i8 %3083 to i32
  %3085 = and i32 %3084, 15
  %3086 = icmp eq i32 14, %3085
  br i1 %3086, label %3087, label %3088

3087:                                             ; preds = %3080
  br label %3100

3088:                                             ; preds = %3080
  %3089 = load ptr, ptr %8, align 8, !tbaa !5
  %3090 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3089, i32 0, i32 3
  %3091 = load i8, ptr %3090, align 1, !tbaa !20
  %3092 = zext i8 %3091 to i32
  %3093 = and i32 %3092, 15
  %3094 = icmp eq i32 15, %3093
  br i1 %3094, label %3095, label %3096

3095:                                             ; preds = %3088
  br label %3098

3096:                                             ; preds = %3088
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

3097:                                             ; No predecessors!
  br label %3098

3098:                                             ; preds = %3097, %3095
  %3099 = phi i32 [ 15, %3095 ], [ 0, %3097 ]
  br label %3100

3100:                                             ; preds = %3098, %3087
  %3101 = phi i32 [ 14, %3087 ], [ %3099, %3098 ]
  br label %3102

3102:                                             ; preds = %3100, %3079
  %3103 = phi i32 [ 12, %3079 ], [ %3101, %3100 ]
  br label %3104

3104:                                             ; preds = %3102, %3071
  %3105 = phi i32 [ 12, %3071 ], [ %3103, %3102 ]
  br label %3106

3106:                                             ; preds = %3104, %3063
  %3107 = phi i32 [ 10, %3063 ], [ %3105, %3104 ]
  br label %3108

3108:                                             ; preds = %3106, %3055
  %3109 = phi i32 [ 10, %3055 ], [ %3107, %3106 ]
  br label %3110

3110:                                             ; preds = %3108, %3047
  %3111 = phi i32 [ 8, %3047 ], [ %3109, %3108 ]
  br label %3112

3112:                                             ; preds = %3110, %3039
  %3113 = phi i32 [ 8, %3039 ], [ %3111, %3110 ]
  br label %3114

3114:                                             ; preds = %3112, %3031
  %3115 = phi i32 [ 6, %3031 ], [ %3113, %3112 ]
  br label %3116

3116:                                             ; preds = %3114, %3023
  %3117 = phi i32 [ 6, %3023 ], [ %3115, %3114 ]
  br label %3118

3118:                                             ; preds = %3116, %3015
  %3119 = phi i32 [ 5, %3015 ], [ %3117, %3116 ]
  br label %3120

3120:                                             ; preds = %3118, %3007
  %3121 = phi i32 [ 4, %3007 ], [ %3119, %3118 ]
  br label %3122

3122:                                             ; preds = %3120, %2999
  %3123 = phi i32 [ 3, %2999 ], [ %3121, %3120 ]
  br label %3124

3124:                                             ; preds = %3122, %2991
  %3125 = phi i32 [ 2, %2991 ], [ %3123, %3122 ]
  br label %3126

3126:                                             ; preds = %3124, %2983
  %3127 = phi i32 [ 1, %2983 ], [ %3125, %3124 ]
  br label %3128

3128:                                             ; preds = %3126, %2975
  %3129 = phi i32 [ 0, %2975 ], [ %3127, %3126 ]
  br label %3136

3130:                                             ; preds = %2961
  %3131 = load ptr, ptr %8, align 8, !tbaa !5
  %3132 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3131, i32 0, i32 3
  %3133 = load i8, ptr %3132, align 1, !tbaa !20
  %3134 = zext i8 %3133 to i32
  %3135 = ashr i32 %3134, 4
  br label %3136

3136:                                             ; preds = %3130, %3128
  %3137 = phi i32 [ %3129, %3128 ], [ %3135, %3130 ]
  %3138 = icmp eq i32 2, %3137
  br i1 %3138, label %3139, label %3140

3139:                                             ; preds = %3136
  br label %5133

3140:                                             ; preds = %3136
  %3141 = load ptr, ptr %8, align 8, !tbaa !5
  %3142 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3141, i32 0, i32 3
  %3143 = load i8, ptr %3142, align 1, !tbaa !20
  %3144 = zext i8 %3143 to i32
  %3145 = ashr i32 %3144, 4
  %3146 = icmp eq i32 0, %3145
  br i1 %3146, label %3147, label %3309

3147:                                             ; preds = %3140
  %3148 = load ptr, ptr %8, align 8, !tbaa !5
  %3149 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3148, i32 0, i32 3
  %3150 = load i8, ptr %3149, align 1, !tbaa !20
  %3151 = zext i8 %3150 to i32
  %3152 = and i32 %3151, 15
  %3153 = icmp eq i32 0, %3152
  br i1 %3153, label %3154, label %3155

3154:                                             ; preds = %3147
  br label %3307

3155:                                             ; preds = %3147
  %3156 = load ptr, ptr %8, align 8, !tbaa !5
  %3157 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3156, i32 0, i32 3
  %3158 = load i8, ptr %3157, align 1, !tbaa !20
  %3159 = zext i8 %3158 to i32
  %3160 = and i32 %3159, 15
  %3161 = icmp eq i32 1, %3160
  br i1 %3161, label %3162, label %3163

3162:                                             ; preds = %3155
  br label %3305

3163:                                             ; preds = %3155
  %3164 = load ptr, ptr %8, align 8, !tbaa !5
  %3165 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3164, i32 0, i32 3
  %3166 = load i8, ptr %3165, align 1, !tbaa !20
  %3167 = zext i8 %3166 to i32
  %3168 = and i32 %3167, 15
  %3169 = icmp eq i32 2, %3168
  br i1 %3169, label %3170, label %3171

3170:                                             ; preds = %3163
  br label %3303

3171:                                             ; preds = %3163
  %3172 = load ptr, ptr %8, align 8, !tbaa !5
  %3173 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3172, i32 0, i32 3
  %3174 = load i8, ptr %3173, align 1, !tbaa !20
  %3175 = zext i8 %3174 to i32
  %3176 = and i32 %3175, 15
  %3177 = icmp eq i32 3, %3176
  br i1 %3177, label %3178, label %3179

3178:                                             ; preds = %3171
  br label %3301

3179:                                             ; preds = %3171
  %3180 = load ptr, ptr %8, align 8, !tbaa !5
  %3181 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3180, i32 0, i32 3
  %3182 = load i8, ptr %3181, align 1, !tbaa !20
  %3183 = zext i8 %3182 to i32
  %3184 = and i32 %3183, 15
  %3185 = icmp eq i32 4, %3184
  br i1 %3185, label %3186, label %3187

3186:                                             ; preds = %3179
  br label %3299

3187:                                             ; preds = %3179
  %3188 = load ptr, ptr %8, align 8, !tbaa !5
  %3189 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3188, i32 0, i32 3
  %3190 = load i8, ptr %3189, align 1, !tbaa !20
  %3191 = zext i8 %3190 to i32
  %3192 = and i32 %3191, 15
  %3193 = icmp eq i32 5, %3192
  br i1 %3193, label %3194, label %3195

3194:                                             ; preds = %3187
  br label %3297

3195:                                             ; preds = %3187
  %3196 = load ptr, ptr %8, align 8, !tbaa !5
  %3197 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3196, i32 0, i32 3
  %3198 = load i8, ptr %3197, align 1, !tbaa !20
  %3199 = zext i8 %3198 to i32
  %3200 = and i32 %3199, 15
  %3201 = icmp eq i32 6, %3200
  br i1 %3201, label %3202, label %3203

3202:                                             ; preds = %3195
  br label %3295

3203:                                             ; preds = %3195
  %3204 = load ptr, ptr %8, align 8, !tbaa !5
  %3205 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3204, i32 0, i32 3
  %3206 = load i8, ptr %3205, align 1, !tbaa !20
  %3207 = zext i8 %3206 to i32
  %3208 = and i32 %3207, 15
  %3209 = icmp eq i32 7, %3208
  br i1 %3209, label %3210, label %3211

3210:                                             ; preds = %3203
  br label %3293

3211:                                             ; preds = %3203
  %3212 = load ptr, ptr %8, align 8, !tbaa !5
  %3213 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3212, i32 0, i32 3
  %3214 = load i8, ptr %3213, align 1, !tbaa !20
  %3215 = zext i8 %3214 to i32
  %3216 = and i32 %3215, 15
  %3217 = icmp eq i32 8, %3216
  br i1 %3217, label %3218, label %3219

3218:                                             ; preds = %3211
  br label %3291

3219:                                             ; preds = %3211
  %3220 = load ptr, ptr %8, align 8, !tbaa !5
  %3221 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3220, i32 0, i32 3
  %3222 = load i8, ptr %3221, align 1, !tbaa !20
  %3223 = zext i8 %3222 to i32
  %3224 = and i32 %3223, 15
  %3225 = icmp eq i32 9, %3224
  br i1 %3225, label %3226, label %3227

3226:                                             ; preds = %3219
  br label %3289

3227:                                             ; preds = %3219
  %3228 = load ptr, ptr %8, align 8, !tbaa !5
  %3229 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3228, i32 0, i32 3
  %3230 = load i8, ptr %3229, align 1, !tbaa !20
  %3231 = zext i8 %3230 to i32
  %3232 = and i32 %3231, 15
  %3233 = icmp eq i32 10, %3232
  br i1 %3233, label %3234, label %3235

3234:                                             ; preds = %3227
  br label %3287

3235:                                             ; preds = %3227
  %3236 = load ptr, ptr %8, align 8, !tbaa !5
  %3237 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3236, i32 0, i32 3
  %3238 = load i8, ptr %3237, align 1, !tbaa !20
  %3239 = zext i8 %3238 to i32
  %3240 = and i32 %3239, 15
  %3241 = icmp eq i32 11, %3240
  br i1 %3241, label %3242, label %3243

3242:                                             ; preds = %3235
  br label %3285

3243:                                             ; preds = %3235
  %3244 = load ptr, ptr %8, align 8, !tbaa !5
  %3245 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3244, i32 0, i32 3
  %3246 = load i8, ptr %3245, align 1, !tbaa !20
  %3247 = zext i8 %3246 to i32
  %3248 = and i32 %3247, 15
  %3249 = icmp eq i32 12, %3248
  br i1 %3249, label %3250, label %3251

3250:                                             ; preds = %3243
  br label %3283

3251:                                             ; preds = %3243
  %3252 = load ptr, ptr %8, align 8, !tbaa !5
  %3253 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3252, i32 0, i32 3
  %3254 = load i8, ptr %3253, align 1, !tbaa !20
  %3255 = zext i8 %3254 to i32
  %3256 = and i32 %3255, 15
  %3257 = icmp eq i32 13, %3256
  br i1 %3257, label %3258, label %3259

3258:                                             ; preds = %3251
  br label %3281

3259:                                             ; preds = %3251
  %3260 = load ptr, ptr %8, align 8, !tbaa !5
  %3261 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3260, i32 0, i32 3
  %3262 = load i8, ptr %3261, align 1, !tbaa !20
  %3263 = zext i8 %3262 to i32
  %3264 = and i32 %3263, 15
  %3265 = icmp eq i32 14, %3264
  br i1 %3265, label %3266, label %3267

3266:                                             ; preds = %3259
  br label %3279

3267:                                             ; preds = %3259
  %3268 = load ptr, ptr %8, align 8, !tbaa !5
  %3269 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3268, i32 0, i32 3
  %3270 = load i8, ptr %3269, align 1, !tbaa !20
  %3271 = zext i8 %3270 to i32
  %3272 = and i32 %3271, 15
  %3273 = icmp eq i32 15, %3272
  br i1 %3273, label %3274, label %3275

3274:                                             ; preds = %3267
  br label %3277

3275:                                             ; preds = %3267
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

3276:                                             ; No predecessors!
  br label %3277

3277:                                             ; preds = %3276, %3274
  %3278 = phi i32 [ 15, %3274 ], [ 0, %3276 ]
  br label %3279

3279:                                             ; preds = %3277, %3266
  %3280 = phi i32 [ 14, %3266 ], [ %3278, %3277 ]
  br label %3281

3281:                                             ; preds = %3279, %3258
  %3282 = phi i32 [ 12, %3258 ], [ %3280, %3279 ]
  br label %3283

3283:                                             ; preds = %3281, %3250
  %3284 = phi i32 [ 12, %3250 ], [ %3282, %3281 ]
  br label %3285

3285:                                             ; preds = %3283, %3242
  %3286 = phi i32 [ 10, %3242 ], [ %3284, %3283 ]
  br label %3287

3287:                                             ; preds = %3285, %3234
  %3288 = phi i32 [ 10, %3234 ], [ %3286, %3285 ]
  br label %3289

3289:                                             ; preds = %3287, %3226
  %3290 = phi i32 [ 8, %3226 ], [ %3288, %3287 ]
  br label %3291

3291:                                             ; preds = %3289, %3218
  %3292 = phi i32 [ 8, %3218 ], [ %3290, %3289 ]
  br label %3293

3293:                                             ; preds = %3291, %3210
  %3294 = phi i32 [ 6, %3210 ], [ %3292, %3291 ]
  br label %3295

3295:                                             ; preds = %3293, %3202
  %3296 = phi i32 [ 6, %3202 ], [ %3294, %3293 ]
  br label %3297

3297:                                             ; preds = %3295, %3194
  %3298 = phi i32 [ 5, %3194 ], [ %3296, %3295 ]
  br label %3299

3299:                                             ; preds = %3297, %3186
  %3300 = phi i32 [ 4, %3186 ], [ %3298, %3297 ]
  br label %3301

3301:                                             ; preds = %3299, %3178
  %3302 = phi i32 [ 3, %3178 ], [ %3300, %3299 ]
  br label %3303

3303:                                             ; preds = %3301, %3170
  %3304 = phi i32 [ 2, %3170 ], [ %3302, %3301 ]
  br label %3305

3305:                                             ; preds = %3303, %3162
  %3306 = phi i32 [ 1, %3162 ], [ %3304, %3303 ]
  br label %3307

3307:                                             ; preds = %3305, %3154
  %3308 = phi i32 [ 0, %3154 ], [ %3306, %3305 ]
  br label %3315

3309:                                             ; preds = %3140
  %3310 = load ptr, ptr %8, align 8, !tbaa !5
  %3311 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3310, i32 0, i32 3
  %3312 = load i8, ptr %3311, align 1, !tbaa !20
  %3313 = zext i8 %3312 to i32
  %3314 = ashr i32 %3313, 4
  br label %3315

3315:                                             ; preds = %3309, %3307
  %3316 = phi i32 [ %3308, %3307 ], [ %3314, %3309 ]
  %3317 = icmp eq i32 3, %3316
  br i1 %3317, label %3318, label %3319

3318:                                             ; preds = %3315
  br label %5131

3319:                                             ; preds = %3315
  %3320 = load ptr, ptr %8, align 8, !tbaa !5
  %3321 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3320, i32 0, i32 3
  %3322 = load i8, ptr %3321, align 1, !tbaa !20
  %3323 = zext i8 %3322 to i32
  %3324 = ashr i32 %3323, 4
  %3325 = icmp eq i32 0, %3324
  br i1 %3325, label %3326, label %3488

3326:                                             ; preds = %3319
  %3327 = load ptr, ptr %8, align 8, !tbaa !5
  %3328 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3327, i32 0, i32 3
  %3329 = load i8, ptr %3328, align 1, !tbaa !20
  %3330 = zext i8 %3329 to i32
  %3331 = and i32 %3330, 15
  %3332 = icmp eq i32 0, %3331
  br i1 %3332, label %3333, label %3334

3333:                                             ; preds = %3326
  br label %3486

3334:                                             ; preds = %3326
  %3335 = load ptr, ptr %8, align 8, !tbaa !5
  %3336 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3335, i32 0, i32 3
  %3337 = load i8, ptr %3336, align 1, !tbaa !20
  %3338 = zext i8 %3337 to i32
  %3339 = and i32 %3338, 15
  %3340 = icmp eq i32 1, %3339
  br i1 %3340, label %3341, label %3342

3341:                                             ; preds = %3334
  br label %3484

3342:                                             ; preds = %3334
  %3343 = load ptr, ptr %8, align 8, !tbaa !5
  %3344 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3343, i32 0, i32 3
  %3345 = load i8, ptr %3344, align 1, !tbaa !20
  %3346 = zext i8 %3345 to i32
  %3347 = and i32 %3346, 15
  %3348 = icmp eq i32 2, %3347
  br i1 %3348, label %3349, label %3350

3349:                                             ; preds = %3342
  br label %3482

3350:                                             ; preds = %3342
  %3351 = load ptr, ptr %8, align 8, !tbaa !5
  %3352 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3351, i32 0, i32 3
  %3353 = load i8, ptr %3352, align 1, !tbaa !20
  %3354 = zext i8 %3353 to i32
  %3355 = and i32 %3354, 15
  %3356 = icmp eq i32 3, %3355
  br i1 %3356, label %3357, label %3358

3357:                                             ; preds = %3350
  br label %3480

3358:                                             ; preds = %3350
  %3359 = load ptr, ptr %8, align 8, !tbaa !5
  %3360 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3359, i32 0, i32 3
  %3361 = load i8, ptr %3360, align 1, !tbaa !20
  %3362 = zext i8 %3361 to i32
  %3363 = and i32 %3362, 15
  %3364 = icmp eq i32 4, %3363
  br i1 %3364, label %3365, label %3366

3365:                                             ; preds = %3358
  br label %3478

3366:                                             ; preds = %3358
  %3367 = load ptr, ptr %8, align 8, !tbaa !5
  %3368 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3367, i32 0, i32 3
  %3369 = load i8, ptr %3368, align 1, !tbaa !20
  %3370 = zext i8 %3369 to i32
  %3371 = and i32 %3370, 15
  %3372 = icmp eq i32 5, %3371
  br i1 %3372, label %3373, label %3374

3373:                                             ; preds = %3366
  br label %3476

3374:                                             ; preds = %3366
  %3375 = load ptr, ptr %8, align 8, !tbaa !5
  %3376 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3375, i32 0, i32 3
  %3377 = load i8, ptr %3376, align 1, !tbaa !20
  %3378 = zext i8 %3377 to i32
  %3379 = and i32 %3378, 15
  %3380 = icmp eq i32 6, %3379
  br i1 %3380, label %3381, label %3382

3381:                                             ; preds = %3374
  br label %3474

3382:                                             ; preds = %3374
  %3383 = load ptr, ptr %8, align 8, !tbaa !5
  %3384 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3383, i32 0, i32 3
  %3385 = load i8, ptr %3384, align 1, !tbaa !20
  %3386 = zext i8 %3385 to i32
  %3387 = and i32 %3386, 15
  %3388 = icmp eq i32 7, %3387
  br i1 %3388, label %3389, label %3390

3389:                                             ; preds = %3382
  br label %3472

3390:                                             ; preds = %3382
  %3391 = load ptr, ptr %8, align 8, !tbaa !5
  %3392 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3391, i32 0, i32 3
  %3393 = load i8, ptr %3392, align 1, !tbaa !20
  %3394 = zext i8 %3393 to i32
  %3395 = and i32 %3394, 15
  %3396 = icmp eq i32 8, %3395
  br i1 %3396, label %3397, label %3398

3397:                                             ; preds = %3390
  br label %3470

3398:                                             ; preds = %3390
  %3399 = load ptr, ptr %8, align 8, !tbaa !5
  %3400 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3399, i32 0, i32 3
  %3401 = load i8, ptr %3400, align 1, !tbaa !20
  %3402 = zext i8 %3401 to i32
  %3403 = and i32 %3402, 15
  %3404 = icmp eq i32 9, %3403
  br i1 %3404, label %3405, label %3406

3405:                                             ; preds = %3398
  br label %3468

3406:                                             ; preds = %3398
  %3407 = load ptr, ptr %8, align 8, !tbaa !5
  %3408 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3407, i32 0, i32 3
  %3409 = load i8, ptr %3408, align 1, !tbaa !20
  %3410 = zext i8 %3409 to i32
  %3411 = and i32 %3410, 15
  %3412 = icmp eq i32 10, %3411
  br i1 %3412, label %3413, label %3414

3413:                                             ; preds = %3406
  br label %3466

3414:                                             ; preds = %3406
  %3415 = load ptr, ptr %8, align 8, !tbaa !5
  %3416 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3415, i32 0, i32 3
  %3417 = load i8, ptr %3416, align 1, !tbaa !20
  %3418 = zext i8 %3417 to i32
  %3419 = and i32 %3418, 15
  %3420 = icmp eq i32 11, %3419
  br i1 %3420, label %3421, label %3422

3421:                                             ; preds = %3414
  br label %3464

3422:                                             ; preds = %3414
  %3423 = load ptr, ptr %8, align 8, !tbaa !5
  %3424 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3423, i32 0, i32 3
  %3425 = load i8, ptr %3424, align 1, !tbaa !20
  %3426 = zext i8 %3425 to i32
  %3427 = and i32 %3426, 15
  %3428 = icmp eq i32 12, %3427
  br i1 %3428, label %3429, label %3430

3429:                                             ; preds = %3422
  br label %3462

3430:                                             ; preds = %3422
  %3431 = load ptr, ptr %8, align 8, !tbaa !5
  %3432 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3431, i32 0, i32 3
  %3433 = load i8, ptr %3432, align 1, !tbaa !20
  %3434 = zext i8 %3433 to i32
  %3435 = and i32 %3434, 15
  %3436 = icmp eq i32 13, %3435
  br i1 %3436, label %3437, label %3438

3437:                                             ; preds = %3430
  br label %3460

3438:                                             ; preds = %3430
  %3439 = load ptr, ptr %8, align 8, !tbaa !5
  %3440 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3439, i32 0, i32 3
  %3441 = load i8, ptr %3440, align 1, !tbaa !20
  %3442 = zext i8 %3441 to i32
  %3443 = and i32 %3442, 15
  %3444 = icmp eq i32 14, %3443
  br i1 %3444, label %3445, label %3446

3445:                                             ; preds = %3438
  br label %3458

3446:                                             ; preds = %3438
  %3447 = load ptr, ptr %8, align 8, !tbaa !5
  %3448 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3447, i32 0, i32 3
  %3449 = load i8, ptr %3448, align 1, !tbaa !20
  %3450 = zext i8 %3449 to i32
  %3451 = and i32 %3450, 15
  %3452 = icmp eq i32 15, %3451
  br i1 %3452, label %3453, label %3454

3453:                                             ; preds = %3446
  br label %3456

3454:                                             ; preds = %3446
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

3455:                                             ; No predecessors!
  br label %3456

3456:                                             ; preds = %3455, %3453
  %3457 = phi i32 [ 15, %3453 ], [ 0, %3455 ]
  br label %3458

3458:                                             ; preds = %3456, %3445
  %3459 = phi i32 [ 14, %3445 ], [ %3457, %3456 ]
  br label %3460

3460:                                             ; preds = %3458, %3437
  %3461 = phi i32 [ 12, %3437 ], [ %3459, %3458 ]
  br label %3462

3462:                                             ; preds = %3460, %3429
  %3463 = phi i32 [ 12, %3429 ], [ %3461, %3460 ]
  br label %3464

3464:                                             ; preds = %3462, %3421
  %3465 = phi i32 [ 10, %3421 ], [ %3463, %3462 ]
  br label %3466

3466:                                             ; preds = %3464, %3413
  %3467 = phi i32 [ 10, %3413 ], [ %3465, %3464 ]
  br label %3468

3468:                                             ; preds = %3466, %3405
  %3469 = phi i32 [ 8, %3405 ], [ %3467, %3466 ]
  br label %3470

3470:                                             ; preds = %3468, %3397
  %3471 = phi i32 [ 8, %3397 ], [ %3469, %3468 ]
  br label %3472

3472:                                             ; preds = %3470, %3389
  %3473 = phi i32 [ 6, %3389 ], [ %3471, %3470 ]
  br label %3474

3474:                                             ; preds = %3472, %3381
  %3475 = phi i32 [ 6, %3381 ], [ %3473, %3472 ]
  br label %3476

3476:                                             ; preds = %3474, %3373
  %3477 = phi i32 [ 5, %3373 ], [ %3475, %3474 ]
  br label %3478

3478:                                             ; preds = %3476, %3365
  %3479 = phi i32 [ 4, %3365 ], [ %3477, %3476 ]
  br label %3480

3480:                                             ; preds = %3478, %3357
  %3481 = phi i32 [ 3, %3357 ], [ %3479, %3478 ]
  br label %3482

3482:                                             ; preds = %3480, %3349
  %3483 = phi i32 [ 2, %3349 ], [ %3481, %3480 ]
  br label %3484

3484:                                             ; preds = %3482, %3341
  %3485 = phi i32 [ 1, %3341 ], [ %3483, %3482 ]
  br label %3486

3486:                                             ; preds = %3484, %3333
  %3487 = phi i32 [ 0, %3333 ], [ %3485, %3484 ]
  br label %3494

3488:                                             ; preds = %3319
  %3489 = load ptr, ptr %8, align 8, !tbaa !5
  %3490 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3489, i32 0, i32 3
  %3491 = load i8, ptr %3490, align 1, !tbaa !20
  %3492 = zext i8 %3491 to i32
  %3493 = ashr i32 %3492, 4
  br label %3494

3494:                                             ; preds = %3488, %3486
  %3495 = phi i32 [ %3487, %3486 ], [ %3493, %3488 ]
  %3496 = icmp eq i32 4, %3495
  br i1 %3496, label %3497, label %3498

3497:                                             ; preds = %3494
  br label %5129

3498:                                             ; preds = %3494
  %3499 = load ptr, ptr %8, align 8, !tbaa !5
  %3500 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3499, i32 0, i32 3
  %3501 = load i8, ptr %3500, align 1, !tbaa !20
  %3502 = zext i8 %3501 to i32
  %3503 = ashr i32 %3502, 4
  %3504 = icmp eq i32 0, %3503
  br i1 %3504, label %3505, label %3667

3505:                                             ; preds = %3498
  %3506 = load ptr, ptr %8, align 8, !tbaa !5
  %3507 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3506, i32 0, i32 3
  %3508 = load i8, ptr %3507, align 1, !tbaa !20
  %3509 = zext i8 %3508 to i32
  %3510 = and i32 %3509, 15
  %3511 = icmp eq i32 0, %3510
  br i1 %3511, label %3512, label %3513

3512:                                             ; preds = %3505
  br label %3665

3513:                                             ; preds = %3505
  %3514 = load ptr, ptr %8, align 8, !tbaa !5
  %3515 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3514, i32 0, i32 3
  %3516 = load i8, ptr %3515, align 1, !tbaa !20
  %3517 = zext i8 %3516 to i32
  %3518 = and i32 %3517, 15
  %3519 = icmp eq i32 1, %3518
  br i1 %3519, label %3520, label %3521

3520:                                             ; preds = %3513
  br label %3663

3521:                                             ; preds = %3513
  %3522 = load ptr, ptr %8, align 8, !tbaa !5
  %3523 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3522, i32 0, i32 3
  %3524 = load i8, ptr %3523, align 1, !tbaa !20
  %3525 = zext i8 %3524 to i32
  %3526 = and i32 %3525, 15
  %3527 = icmp eq i32 2, %3526
  br i1 %3527, label %3528, label %3529

3528:                                             ; preds = %3521
  br label %3661

3529:                                             ; preds = %3521
  %3530 = load ptr, ptr %8, align 8, !tbaa !5
  %3531 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3530, i32 0, i32 3
  %3532 = load i8, ptr %3531, align 1, !tbaa !20
  %3533 = zext i8 %3532 to i32
  %3534 = and i32 %3533, 15
  %3535 = icmp eq i32 3, %3534
  br i1 %3535, label %3536, label %3537

3536:                                             ; preds = %3529
  br label %3659

3537:                                             ; preds = %3529
  %3538 = load ptr, ptr %8, align 8, !tbaa !5
  %3539 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3538, i32 0, i32 3
  %3540 = load i8, ptr %3539, align 1, !tbaa !20
  %3541 = zext i8 %3540 to i32
  %3542 = and i32 %3541, 15
  %3543 = icmp eq i32 4, %3542
  br i1 %3543, label %3544, label %3545

3544:                                             ; preds = %3537
  br label %3657

3545:                                             ; preds = %3537
  %3546 = load ptr, ptr %8, align 8, !tbaa !5
  %3547 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3546, i32 0, i32 3
  %3548 = load i8, ptr %3547, align 1, !tbaa !20
  %3549 = zext i8 %3548 to i32
  %3550 = and i32 %3549, 15
  %3551 = icmp eq i32 5, %3550
  br i1 %3551, label %3552, label %3553

3552:                                             ; preds = %3545
  br label %3655

3553:                                             ; preds = %3545
  %3554 = load ptr, ptr %8, align 8, !tbaa !5
  %3555 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3554, i32 0, i32 3
  %3556 = load i8, ptr %3555, align 1, !tbaa !20
  %3557 = zext i8 %3556 to i32
  %3558 = and i32 %3557, 15
  %3559 = icmp eq i32 6, %3558
  br i1 %3559, label %3560, label %3561

3560:                                             ; preds = %3553
  br label %3653

3561:                                             ; preds = %3553
  %3562 = load ptr, ptr %8, align 8, !tbaa !5
  %3563 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3562, i32 0, i32 3
  %3564 = load i8, ptr %3563, align 1, !tbaa !20
  %3565 = zext i8 %3564 to i32
  %3566 = and i32 %3565, 15
  %3567 = icmp eq i32 7, %3566
  br i1 %3567, label %3568, label %3569

3568:                                             ; preds = %3561
  br label %3651

3569:                                             ; preds = %3561
  %3570 = load ptr, ptr %8, align 8, !tbaa !5
  %3571 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3570, i32 0, i32 3
  %3572 = load i8, ptr %3571, align 1, !tbaa !20
  %3573 = zext i8 %3572 to i32
  %3574 = and i32 %3573, 15
  %3575 = icmp eq i32 8, %3574
  br i1 %3575, label %3576, label %3577

3576:                                             ; preds = %3569
  br label %3649

3577:                                             ; preds = %3569
  %3578 = load ptr, ptr %8, align 8, !tbaa !5
  %3579 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3578, i32 0, i32 3
  %3580 = load i8, ptr %3579, align 1, !tbaa !20
  %3581 = zext i8 %3580 to i32
  %3582 = and i32 %3581, 15
  %3583 = icmp eq i32 9, %3582
  br i1 %3583, label %3584, label %3585

3584:                                             ; preds = %3577
  br label %3647

3585:                                             ; preds = %3577
  %3586 = load ptr, ptr %8, align 8, !tbaa !5
  %3587 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3586, i32 0, i32 3
  %3588 = load i8, ptr %3587, align 1, !tbaa !20
  %3589 = zext i8 %3588 to i32
  %3590 = and i32 %3589, 15
  %3591 = icmp eq i32 10, %3590
  br i1 %3591, label %3592, label %3593

3592:                                             ; preds = %3585
  br label %3645

3593:                                             ; preds = %3585
  %3594 = load ptr, ptr %8, align 8, !tbaa !5
  %3595 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3594, i32 0, i32 3
  %3596 = load i8, ptr %3595, align 1, !tbaa !20
  %3597 = zext i8 %3596 to i32
  %3598 = and i32 %3597, 15
  %3599 = icmp eq i32 11, %3598
  br i1 %3599, label %3600, label %3601

3600:                                             ; preds = %3593
  br label %3643

3601:                                             ; preds = %3593
  %3602 = load ptr, ptr %8, align 8, !tbaa !5
  %3603 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3602, i32 0, i32 3
  %3604 = load i8, ptr %3603, align 1, !tbaa !20
  %3605 = zext i8 %3604 to i32
  %3606 = and i32 %3605, 15
  %3607 = icmp eq i32 12, %3606
  br i1 %3607, label %3608, label %3609

3608:                                             ; preds = %3601
  br label %3641

3609:                                             ; preds = %3601
  %3610 = load ptr, ptr %8, align 8, !tbaa !5
  %3611 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3610, i32 0, i32 3
  %3612 = load i8, ptr %3611, align 1, !tbaa !20
  %3613 = zext i8 %3612 to i32
  %3614 = and i32 %3613, 15
  %3615 = icmp eq i32 13, %3614
  br i1 %3615, label %3616, label %3617

3616:                                             ; preds = %3609
  br label %3639

3617:                                             ; preds = %3609
  %3618 = load ptr, ptr %8, align 8, !tbaa !5
  %3619 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3618, i32 0, i32 3
  %3620 = load i8, ptr %3619, align 1, !tbaa !20
  %3621 = zext i8 %3620 to i32
  %3622 = and i32 %3621, 15
  %3623 = icmp eq i32 14, %3622
  br i1 %3623, label %3624, label %3625

3624:                                             ; preds = %3617
  br label %3637

3625:                                             ; preds = %3617
  %3626 = load ptr, ptr %8, align 8, !tbaa !5
  %3627 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3626, i32 0, i32 3
  %3628 = load i8, ptr %3627, align 1, !tbaa !20
  %3629 = zext i8 %3628 to i32
  %3630 = and i32 %3629, 15
  %3631 = icmp eq i32 15, %3630
  br i1 %3631, label %3632, label %3633

3632:                                             ; preds = %3625
  br label %3635

3633:                                             ; preds = %3625
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

3634:                                             ; No predecessors!
  br label %3635

3635:                                             ; preds = %3634, %3632
  %3636 = phi i32 [ 15, %3632 ], [ 0, %3634 ]
  br label %3637

3637:                                             ; preds = %3635, %3624
  %3638 = phi i32 [ 14, %3624 ], [ %3636, %3635 ]
  br label %3639

3639:                                             ; preds = %3637, %3616
  %3640 = phi i32 [ 12, %3616 ], [ %3638, %3637 ]
  br label %3641

3641:                                             ; preds = %3639, %3608
  %3642 = phi i32 [ 12, %3608 ], [ %3640, %3639 ]
  br label %3643

3643:                                             ; preds = %3641, %3600
  %3644 = phi i32 [ 10, %3600 ], [ %3642, %3641 ]
  br label %3645

3645:                                             ; preds = %3643, %3592
  %3646 = phi i32 [ 10, %3592 ], [ %3644, %3643 ]
  br label %3647

3647:                                             ; preds = %3645, %3584
  %3648 = phi i32 [ 8, %3584 ], [ %3646, %3645 ]
  br label %3649

3649:                                             ; preds = %3647, %3576
  %3650 = phi i32 [ 8, %3576 ], [ %3648, %3647 ]
  br label %3651

3651:                                             ; preds = %3649, %3568
  %3652 = phi i32 [ 6, %3568 ], [ %3650, %3649 ]
  br label %3653

3653:                                             ; preds = %3651, %3560
  %3654 = phi i32 [ 6, %3560 ], [ %3652, %3651 ]
  br label %3655

3655:                                             ; preds = %3653, %3552
  %3656 = phi i32 [ 5, %3552 ], [ %3654, %3653 ]
  br label %3657

3657:                                             ; preds = %3655, %3544
  %3658 = phi i32 [ 4, %3544 ], [ %3656, %3655 ]
  br label %3659

3659:                                             ; preds = %3657, %3536
  %3660 = phi i32 [ 3, %3536 ], [ %3658, %3657 ]
  br label %3661

3661:                                             ; preds = %3659, %3528
  %3662 = phi i32 [ 2, %3528 ], [ %3660, %3659 ]
  br label %3663

3663:                                             ; preds = %3661, %3520
  %3664 = phi i32 [ 1, %3520 ], [ %3662, %3661 ]
  br label %3665

3665:                                             ; preds = %3663, %3512
  %3666 = phi i32 [ 0, %3512 ], [ %3664, %3663 ]
  br label %3673

3667:                                             ; preds = %3498
  %3668 = load ptr, ptr %8, align 8, !tbaa !5
  %3669 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3668, i32 0, i32 3
  %3670 = load i8, ptr %3669, align 1, !tbaa !20
  %3671 = zext i8 %3670 to i32
  %3672 = ashr i32 %3671, 4
  br label %3673

3673:                                             ; preds = %3667, %3665
  %3674 = phi i32 [ %3666, %3665 ], [ %3672, %3667 ]
  %3675 = icmp eq i32 5, %3674
  br i1 %3675, label %3676, label %3677

3676:                                             ; preds = %3673
  br label %5127

3677:                                             ; preds = %3673
  %3678 = load ptr, ptr %8, align 8, !tbaa !5
  %3679 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3678, i32 0, i32 3
  %3680 = load i8, ptr %3679, align 1, !tbaa !20
  %3681 = zext i8 %3680 to i32
  %3682 = ashr i32 %3681, 4
  %3683 = icmp eq i32 0, %3682
  br i1 %3683, label %3684, label %3846

3684:                                             ; preds = %3677
  %3685 = load ptr, ptr %8, align 8, !tbaa !5
  %3686 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3685, i32 0, i32 3
  %3687 = load i8, ptr %3686, align 1, !tbaa !20
  %3688 = zext i8 %3687 to i32
  %3689 = and i32 %3688, 15
  %3690 = icmp eq i32 0, %3689
  br i1 %3690, label %3691, label %3692

3691:                                             ; preds = %3684
  br label %3844

3692:                                             ; preds = %3684
  %3693 = load ptr, ptr %8, align 8, !tbaa !5
  %3694 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3693, i32 0, i32 3
  %3695 = load i8, ptr %3694, align 1, !tbaa !20
  %3696 = zext i8 %3695 to i32
  %3697 = and i32 %3696, 15
  %3698 = icmp eq i32 1, %3697
  br i1 %3698, label %3699, label %3700

3699:                                             ; preds = %3692
  br label %3842

3700:                                             ; preds = %3692
  %3701 = load ptr, ptr %8, align 8, !tbaa !5
  %3702 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3701, i32 0, i32 3
  %3703 = load i8, ptr %3702, align 1, !tbaa !20
  %3704 = zext i8 %3703 to i32
  %3705 = and i32 %3704, 15
  %3706 = icmp eq i32 2, %3705
  br i1 %3706, label %3707, label %3708

3707:                                             ; preds = %3700
  br label %3840

3708:                                             ; preds = %3700
  %3709 = load ptr, ptr %8, align 8, !tbaa !5
  %3710 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3709, i32 0, i32 3
  %3711 = load i8, ptr %3710, align 1, !tbaa !20
  %3712 = zext i8 %3711 to i32
  %3713 = and i32 %3712, 15
  %3714 = icmp eq i32 3, %3713
  br i1 %3714, label %3715, label %3716

3715:                                             ; preds = %3708
  br label %3838

3716:                                             ; preds = %3708
  %3717 = load ptr, ptr %8, align 8, !tbaa !5
  %3718 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3717, i32 0, i32 3
  %3719 = load i8, ptr %3718, align 1, !tbaa !20
  %3720 = zext i8 %3719 to i32
  %3721 = and i32 %3720, 15
  %3722 = icmp eq i32 4, %3721
  br i1 %3722, label %3723, label %3724

3723:                                             ; preds = %3716
  br label %3836

3724:                                             ; preds = %3716
  %3725 = load ptr, ptr %8, align 8, !tbaa !5
  %3726 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3725, i32 0, i32 3
  %3727 = load i8, ptr %3726, align 1, !tbaa !20
  %3728 = zext i8 %3727 to i32
  %3729 = and i32 %3728, 15
  %3730 = icmp eq i32 5, %3729
  br i1 %3730, label %3731, label %3732

3731:                                             ; preds = %3724
  br label %3834

3732:                                             ; preds = %3724
  %3733 = load ptr, ptr %8, align 8, !tbaa !5
  %3734 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3733, i32 0, i32 3
  %3735 = load i8, ptr %3734, align 1, !tbaa !20
  %3736 = zext i8 %3735 to i32
  %3737 = and i32 %3736, 15
  %3738 = icmp eq i32 6, %3737
  br i1 %3738, label %3739, label %3740

3739:                                             ; preds = %3732
  br label %3832

3740:                                             ; preds = %3732
  %3741 = load ptr, ptr %8, align 8, !tbaa !5
  %3742 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3741, i32 0, i32 3
  %3743 = load i8, ptr %3742, align 1, !tbaa !20
  %3744 = zext i8 %3743 to i32
  %3745 = and i32 %3744, 15
  %3746 = icmp eq i32 7, %3745
  br i1 %3746, label %3747, label %3748

3747:                                             ; preds = %3740
  br label %3830

3748:                                             ; preds = %3740
  %3749 = load ptr, ptr %8, align 8, !tbaa !5
  %3750 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3749, i32 0, i32 3
  %3751 = load i8, ptr %3750, align 1, !tbaa !20
  %3752 = zext i8 %3751 to i32
  %3753 = and i32 %3752, 15
  %3754 = icmp eq i32 8, %3753
  br i1 %3754, label %3755, label %3756

3755:                                             ; preds = %3748
  br label %3828

3756:                                             ; preds = %3748
  %3757 = load ptr, ptr %8, align 8, !tbaa !5
  %3758 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3757, i32 0, i32 3
  %3759 = load i8, ptr %3758, align 1, !tbaa !20
  %3760 = zext i8 %3759 to i32
  %3761 = and i32 %3760, 15
  %3762 = icmp eq i32 9, %3761
  br i1 %3762, label %3763, label %3764

3763:                                             ; preds = %3756
  br label %3826

3764:                                             ; preds = %3756
  %3765 = load ptr, ptr %8, align 8, !tbaa !5
  %3766 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3765, i32 0, i32 3
  %3767 = load i8, ptr %3766, align 1, !tbaa !20
  %3768 = zext i8 %3767 to i32
  %3769 = and i32 %3768, 15
  %3770 = icmp eq i32 10, %3769
  br i1 %3770, label %3771, label %3772

3771:                                             ; preds = %3764
  br label %3824

3772:                                             ; preds = %3764
  %3773 = load ptr, ptr %8, align 8, !tbaa !5
  %3774 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3773, i32 0, i32 3
  %3775 = load i8, ptr %3774, align 1, !tbaa !20
  %3776 = zext i8 %3775 to i32
  %3777 = and i32 %3776, 15
  %3778 = icmp eq i32 11, %3777
  br i1 %3778, label %3779, label %3780

3779:                                             ; preds = %3772
  br label %3822

3780:                                             ; preds = %3772
  %3781 = load ptr, ptr %8, align 8, !tbaa !5
  %3782 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3781, i32 0, i32 3
  %3783 = load i8, ptr %3782, align 1, !tbaa !20
  %3784 = zext i8 %3783 to i32
  %3785 = and i32 %3784, 15
  %3786 = icmp eq i32 12, %3785
  br i1 %3786, label %3787, label %3788

3787:                                             ; preds = %3780
  br label %3820

3788:                                             ; preds = %3780
  %3789 = load ptr, ptr %8, align 8, !tbaa !5
  %3790 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3789, i32 0, i32 3
  %3791 = load i8, ptr %3790, align 1, !tbaa !20
  %3792 = zext i8 %3791 to i32
  %3793 = and i32 %3792, 15
  %3794 = icmp eq i32 13, %3793
  br i1 %3794, label %3795, label %3796

3795:                                             ; preds = %3788
  br label %3818

3796:                                             ; preds = %3788
  %3797 = load ptr, ptr %8, align 8, !tbaa !5
  %3798 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3797, i32 0, i32 3
  %3799 = load i8, ptr %3798, align 1, !tbaa !20
  %3800 = zext i8 %3799 to i32
  %3801 = and i32 %3800, 15
  %3802 = icmp eq i32 14, %3801
  br i1 %3802, label %3803, label %3804

3803:                                             ; preds = %3796
  br label %3816

3804:                                             ; preds = %3796
  %3805 = load ptr, ptr %8, align 8, !tbaa !5
  %3806 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3805, i32 0, i32 3
  %3807 = load i8, ptr %3806, align 1, !tbaa !20
  %3808 = zext i8 %3807 to i32
  %3809 = and i32 %3808, 15
  %3810 = icmp eq i32 15, %3809
  br i1 %3810, label %3811, label %3812

3811:                                             ; preds = %3804
  br label %3814

3812:                                             ; preds = %3804
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

3813:                                             ; No predecessors!
  br label %3814

3814:                                             ; preds = %3813, %3811
  %3815 = phi i32 [ 15, %3811 ], [ 0, %3813 ]
  br label %3816

3816:                                             ; preds = %3814, %3803
  %3817 = phi i32 [ 14, %3803 ], [ %3815, %3814 ]
  br label %3818

3818:                                             ; preds = %3816, %3795
  %3819 = phi i32 [ 12, %3795 ], [ %3817, %3816 ]
  br label %3820

3820:                                             ; preds = %3818, %3787
  %3821 = phi i32 [ 12, %3787 ], [ %3819, %3818 ]
  br label %3822

3822:                                             ; preds = %3820, %3779
  %3823 = phi i32 [ 10, %3779 ], [ %3821, %3820 ]
  br label %3824

3824:                                             ; preds = %3822, %3771
  %3825 = phi i32 [ 10, %3771 ], [ %3823, %3822 ]
  br label %3826

3826:                                             ; preds = %3824, %3763
  %3827 = phi i32 [ 8, %3763 ], [ %3825, %3824 ]
  br label %3828

3828:                                             ; preds = %3826, %3755
  %3829 = phi i32 [ 8, %3755 ], [ %3827, %3826 ]
  br label %3830

3830:                                             ; preds = %3828, %3747
  %3831 = phi i32 [ 6, %3747 ], [ %3829, %3828 ]
  br label %3832

3832:                                             ; preds = %3830, %3739
  %3833 = phi i32 [ 6, %3739 ], [ %3831, %3830 ]
  br label %3834

3834:                                             ; preds = %3832, %3731
  %3835 = phi i32 [ 5, %3731 ], [ %3833, %3832 ]
  br label %3836

3836:                                             ; preds = %3834, %3723
  %3837 = phi i32 [ 4, %3723 ], [ %3835, %3834 ]
  br label %3838

3838:                                             ; preds = %3836, %3715
  %3839 = phi i32 [ 3, %3715 ], [ %3837, %3836 ]
  br label %3840

3840:                                             ; preds = %3838, %3707
  %3841 = phi i32 [ 2, %3707 ], [ %3839, %3838 ]
  br label %3842

3842:                                             ; preds = %3840, %3699
  %3843 = phi i32 [ 1, %3699 ], [ %3841, %3840 ]
  br label %3844

3844:                                             ; preds = %3842, %3691
  %3845 = phi i32 [ 0, %3691 ], [ %3843, %3842 ]
  br label %3852

3846:                                             ; preds = %3677
  %3847 = load ptr, ptr %8, align 8, !tbaa !5
  %3848 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3847, i32 0, i32 3
  %3849 = load i8, ptr %3848, align 1, !tbaa !20
  %3850 = zext i8 %3849 to i32
  %3851 = ashr i32 %3850, 4
  br label %3852

3852:                                             ; preds = %3846, %3844
  %3853 = phi i32 [ %3845, %3844 ], [ %3851, %3846 ]
  %3854 = icmp eq i32 6, %3853
  br i1 %3854, label %3855, label %3856

3855:                                             ; preds = %3852
  br label %5125

3856:                                             ; preds = %3852
  %3857 = load ptr, ptr %8, align 8, !tbaa !5
  %3858 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3857, i32 0, i32 3
  %3859 = load i8, ptr %3858, align 1, !tbaa !20
  %3860 = zext i8 %3859 to i32
  %3861 = ashr i32 %3860, 4
  %3862 = icmp eq i32 0, %3861
  br i1 %3862, label %3863, label %4025

3863:                                             ; preds = %3856
  %3864 = load ptr, ptr %8, align 8, !tbaa !5
  %3865 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3864, i32 0, i32 3
  %3866 = load i8, ptr %3865, align 1, !tbaa !20
  %3867 = zext i8 %3866 to i32
  %3868 = and i32 %3867, 15
  %3869 = icmp eq i32 0, %3868
  br i1 %3869, label %3870, label %3871

3870:                                             ; preds = %3863
  br label %4023

3871:                                             ; preds = %3863
  %3872 = load ptr, ptr %8, align 8, !tbaa !5
  %3873 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3872, i32 0, i32 3
  %3874 = load i8, ptr %3873, align 1, !tbaa !20
  %3875 = zext i8 %3874 to i32
  %3876 = and i32 %3875, 15
  %3877 = icmp eq i32 1, %3876
  br i1 %3877, label %3878, label %3879

3878:                                             ; preds = %3871
  br label %4021

3879:                                             ; preds = %3871
  %3880 = load ptr, ptr %8, align 8, !tbaa !5
  %3881 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3880, i32 0, i32 3
  %3882 = load i8, ptr %3881, align 1, !tbaa !20
  %3883 = zext i8 %3882 to i32
  %3884 = and i32 %3883, 15
  %3885 = icmp eq i32 2, %3884
  br i1 %3885, label %3886, label %3887

3886:                                             ; preds = %3879
  br label %4019

3887:                                             ; preds = %3879
  %3888 = load ptr, ptr %8, align 8, !tbaa !5
  %3889 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3888, i32 0, i32 3
  %3890 = load i8, ptr %3889, align 1, !tbaa !20
  %3891 = zext i8 %3890 to i32
  %3892 = and i32 %3891, 15
  %3893 = icmp eq i32 3, %3892
  br i1 %3893, label %3894, label %3895

3894:                                             ; preds = %3887
  br label %4017

3895:                                             ; preds = %3887
  %3896 = load ptr, ptr %8, align 8, !tbaa !5
  %3897 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3896, i32 0, i32 3
  %3898 = load i8, ptr %3897, align 1, !tbaa !20
  %3899 = zext i8 %3898 to i32
  %3900 = and i32 %3899, 15
  %3901 = icmp eq i32 4, %3900
  br i1 %3901, label %3902, label %3903

3902:                                             ; preds = %3895
  br label %4015

3903:                                             ; preds = %3895
  %3904 = load ptr, ptr %8, align 8, !tbaa !5
  %3905 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3904, i32 0, i32 3
  %3906 = load i8, ptr %3905, align 1, !tbaa !20
  %3907 = zext i8 %3906 to i32
  %3908 = and i32 %3907, 15
  %3909 = icmp eq i32 5, %3908
  br i1 %3909, label %3910, label %3911

3910:                                             ; preds = %3903
  br label %4013

3911:                                             ; preds = %3903
  %3912 = load ptr, ptr %8, align 8, !tbaa !5
  %3913 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3912, i32 0, i32 3
  %3914 = load i8, ptr %3913, align 1, !tbaa !20
  %3915 = zext i8 %3914 to i32
  %3916 = and i32 %3915, 15
  %3917 = icmp eq i32 6, %3916
  br i1 %3917, label %3918, label %3919

3918:                                             ; preds = %3911
  br label %4011

3919:                                             ; preds = %3911
  %3920 = load ptr, ptr %8, align 8, !tbaa !5
  %3921 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3920, i32 0, i32 3
  %3922 = load i8, ptr %3921, align 1, !tbaa !20
  %3923 = zext i8 %3922 to i32
  %3924 = and i32 %3923, 15
  %3925 = icmp eq i32 7, %3924
  br i1 %3925, label %3926, label %3927

3926:                                             ; preds = %3919
  br label %4009

3927:                                             ; preds = %3919
  %3928 = load ptr, ptr %8, align 8, !tbaa !5
  %3929 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3928, i32 0, i32 3
  %3930 = load i8, ptr %3929, align 1, !tbaa !20
  %3931 = zext i8 %3930 to i32
  %3932 = and i32 %3931, 15
  %3933 = icmp eq i32 8, %3932
  br i1 %3933, label %3934, label %3935

3934:                                             ; preds = %3927
  br label %4007

3935:                                             ; preds = %3927
  %3936 = load ptr, ptr %8, align 8, !tbaa !5
  %3937 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3936, i32 0, i32 3
  %3938 = load i8, ptr %3937, align 1, !tbaa !20
  %3939 = zext i8 %3938 to i32
  %3940 = and i32 %3939, 15
  %3941 = icmp eq i32 9, %3940
  br i1 %3941, label %3942, label %3943

3942:                                             ; preds = %3935
  br label %4005

3943:                                             ; preds = %3935
  %3944 = load ptr, ptr %8, align 8, !tbaa !5
  %3945 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3944, i32 0, i32 3
  %3946 = load i8, ptr %3945, align 1, !tbaa !20
  %3947 = zext i8 %3946 to i32
  %3948 = and i32 %3947, 15
  %3949 = icmp eq i32 10, %3948
  br i1 %3949, label %3950, label %3951

3950:                                             ; preds = %3943
  br label %4003

3951:                                             ; preds = %3943
  %3952 = load ptr, ptr %8, align 8, !tbaa !5
  %3953 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3952, i32 0, i32 3
  %3954 = load i8, ptr %3953, align 1, !tbaa !20
  %3955 = zext i8 %3954 to i32
  %3956 = and i32 %3955, 15
  %3957 = icmp eq i32 11, %3956
  br i1 %3957, label %3958, label %3959

3958:                                             ; preds = %3951
  br label %4001

3959:                                             ; preds = %3951
  %3960 = load ptr, ptr %8, align 8, !tbaa !5
  %3961 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3960, i32 0, i32 3
  %3962 = load i8, ptr %3961, align 1, !tbaa !20
  %3963 = zext i8 %3962 to i32
  %3964 = and i32 %3963, 15
  %3965 = icmp eq i32 12, %3964
  br i1 %3965, label %3966, label %3967

3966:                                             ; preds = %3959
  br label %3999

3967:                                             ; preds = %3959
  %3968 = load ptr, ptr %8, align 8, !tbaa !5
  %3969 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3968, i32 0, i32 3
  %3970 = load i8, ptr %3969, align 1, !tbaa !20
  %3971 = zext i8 %3970 to i32
  %3972 = and i32 %3971, 15
  %3973 = icmp eq i32 13, %3972
  br i1 %3973, label %3974, label %3975

3974:                                             ; preds = %3967
  br label %3997

3975:                                             ; preds = %3967
  %3976 = load ptr, ptr %8, align 8, !tbaa !5
  %3977 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3976, i32 0, i32 3
  %3978 = load i8, ptr %3977, align 1, !tbaa !20
  %3979 = zext i8 %3978 to i32
  %3980 = and i32 %3979, 15
  %3981 = icmp eq i32 14, %3980
  br i1 %3981, label %3982, label %3983

3982:                                             ; preds = %3975
  br label %3995

3983:                                             ; preds = %3975
  %3984 = load ptr, ptr %8, align 8, !tbaa !5
  %3985 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %3984, i32 0, i32 3
  %3986 = load i8, ptr %3985, align 1, !tbaa !20
  %3987 = zext i8 %3986 to i32
  %3988 = and i32 %3987, 15
  %3989 = icmp eq i32 15, %3988
  br i1 %3989, label %3990, label %3991

3990:                                             ; preds = %3983
  br label %3993

3991:                                             ; preds = %3983
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

3992:                                             ; No predecessors!
  br label %3993

3993:                                             ; preds = %3992, %3990
  %3994 = phi i32 [ 15, %3990 ], [ 0, %3992 ]
  br label %3995

3995:                                             ; preds = %3993, %3982
  %3996 = phi i32 [ 14, %3982 ], [ %3994, %3993 ]
  br label %3997

3997:                                             ; preds = %3995, %3974
  %3998 = phi i32 [ 12, %3974 ], [ %3996, %3995 ]
  br label %3999

3999:                                             ; preds = %3997, %3966
  %4000 = phi i32 [ 12, %3966 ], [ %3998, %3997 ]
  br label %4001

4001:                                             ; preds = %3999, %3958
  %4002 = phi i32 [ 10, %3958 ], [ %4000, %3999 ]
  br label %4003

4003:                                             ; preds = %4001, %3950
  %4004 = phi i32 [ 10, %3950 ], [ %4002, %4001 ]
  br label %4005

4005:                                             ; preds = %4003, %3942
  %4006 = phi i32 [ 8, %3942 ], [ %4004, %4003 ]
  br label %4007

4007:                                             ; preds = %4005, %3934
  %4008 = phi i32 [ 8, %3934 ], [ %4006, %4005 ]
  br label %4009

4009:                                             ; preds = %4007, %3926
  %4010 = phi i32 [ 6, %3926 ], [ %4008, %4007 ]
  br label %4011

4011:                                             ; preds = %4009, %3918
  %4012 = phi i32 [ 6, %3918 ], [ %4010, %4009 ]
  br label %4013

4013:                                             ; preds = %4011, %3910
  %4014 = phi i32 [ 5, %3910 ], [ %4012, %4011 ]
  br label %4015

4015:                                             ; preds = %4013, %3902
  %4016 = phi i32 [ 4, %3902 ], [ %4014, %4013 ]
  br label %4017

4017:                                             ; preds = %4015, %3894
  %4018 = phi i32 [ 3, %3894 ], [ %4016, %4015 ]
  br label %4019

4019:                                             ; preds = %4017, %3886
  %4020 = phi i32 [ 2, %3886 ], [ %4018, %4017 ]
  br label %4021

4021:                                             ; preds = %4019, %3878
  %4022 = phi i32 [ 1, %3878 ], [ %4020, %4019 ]
  br label %4023

4023:                                             ; preds = %4021, %3870
  %4024 = phi i32 [ 0, %3870 ], [ %4022, %4021 ]
  br label %4031

4025:                                             ; preds = %3856
  %4026 = load ptr, ptr %8, align 8, !tbaa !5
  %4027 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4026, i32 0, i32 3
  %4028 = load i8, ptr %4027, align 1, !tbaa !20
  %4029 = zext i8 %4028 to i32
  %4030 = ashr i32 %4029, 4
  br label %4031

4031:                                             ; preds = %4025, %4023
  %4032 = phi i32 [ %4024, %4023 ], [ %4030, %4025 ]
  %4033 = icmp eq i32 7, %4032
  br i1 %4033, label %4034, label %4035

4034:                                             ; preds = %4031
  br label %5123

4035:                                             ; preds = %4031
  %4036 = load ptr, ptr %8, align 8, !tbaa !5
  %4037 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4036, i32 0, i32 3
  %4038 = load i8, ptr %4037, align 1, !tbaa !20
  %4039 = zext i8 %4038 to i32
  %4040 = ashr i32 %4039, 4
  %4041 = icmp eq i32 0, %4040
  br i1 %4041, label %4042, label %4204

4042:                                             ; preds = %4035
  %4043 = load ptr, ptr %8, align 8, !tbaa !5
  %4044 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4043, i32 0, i32 3
  %4045 = load i8, ptr %4044, align 1, !tbaa !20
  %4046 = zext i8 %4045 to i32
  %4047 = and i32 %4046, 15
  %4048 = icmp eq i32 0, %4047
  br i1 %4048, label %4049, label %4050

4049:                                             ; preds = %4042
  br label %4202

4050:                                             ; preds = %4042
  %4051 = load ptr, ptr %8, align 8, !tbaa !5
  %4052 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4051, i32 0, i32 3
  %4053 = load i8, ptr %4052, align 1, !tbaa !20
  %4054 = zext i8 %4053 to i32
  %4055 = and i32 %4054, 15
  %4056 = icmp eq i32 1, %4055
  br i1 %4056, label %4057, label %4058

4057:                                             ; preds = %4050
  br label %4200

4058:                                             ; preds = %4050
  %4059 = load ptr, ptr %8, align 8, !tbaa !5
  %4060 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4059, i32 0, i32 3
  %4061 = load i8, ptr %4060, align 1, !tbaa !20
  %4062 = zext i8 %4061 to i32
  %4063 = and i32 %4062, 15
  %4064 = icmp eq i32 2, %4063
  br i1 %4064, label %4065, label %4066

4065:                                             ; preds = %4058
  br label %4198

4066:                                             ; preds = %4058
  %4067 = load ptr, ptr %8, align 8, !tbaa !5
  %4068 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4067, i32 0, i32 3
  %4069 = load i8, ptr %4068, align 1, !tbaa !20
  %4070 = zext i8 %4069 to i32
  %4071 = and i32 %4070, 15
  %4072 = icmp eq i32 3, %4071
  br i1 %4072, label %4073, label %4074

4073:                                             ; preds = %4066
  br label %4196

4074:                                             ; preds = %4066
  %4075 = load ptr, ptr %8, align 8, !tbaa !5
  %4076 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4075, i32 0, i32 3
  %4077 = load i8, ptr %4076, align 1, !tbaa !20
  %4078 = zext i8 %4077 to i32
  %4079 = and i32 %4078, 15
  %4080 = icmp eq i32 4, %4079
  br i1 %4080, label %4081, label %4082

4081:                                             ; preds = %4074
  br label %4194

4082:                                             ; preds = %4074
  %4083 = load ptr, ptr %8, align 8, !tbaa !5
  %4084 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4083, i32 0, i32 3
  %4085 = load i8, ptr %4084, align 1, !tbaa !20
  %4086 = zext i8 %4085 to i32
  %4087 = and i32 %4086, 15
  %4088 = icmp eq i32 5, %4087
  br i1 %4088, label %4089, label %4090

4089:                                             ; preds = %4082
  br label %4192

4090:                                             ; preds = %4082
  %4091 = load ptr, ptr %8, align 8, !tbaa !5
  %4092 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4091, i32 0, i32 3
  %4093 = load i8, ptr %4092, align 1, !tbaa !20
  %4094 = zext i8 %4093 to i32
  %4095 = and i32 %4094, 15
  %4096 = icmp eq i32 6, %4095
  br i1 %4096, label %4097, label %4098

4097:                                             ; preds = %4090
  br label %4190

4098:                                             ; preds = %4090
  %4099 = load ptr, ptr %8, align 8, !tbaa !5
  %4100 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4099, i32 0, i32 3
  %4101 = load i8, ptr %4100, align 1, !tbaa !20
  %4102 = zext i8 %4101 to i32
  %4103 = and i32 %4102, 15
  %4104 = icmp eq i32 7, %4103
  br i1 %4104, label %4105, label %4106

4105:                                             ; preds = %4098
  br label %4188

4106:                                             ; preds = %4098
  %4107 = load ptr, ptr %8, align 8, !tbaa !5
  %4108 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4107, i32 0, i32 3
  %4109 = load i8, ptr %4108, align 1, !tbaa !20
  %4110 = zext i8 %4109 to i32
  %4111 = and i32 %4110, 15
  %4112 = icmp eq i32 8, %4111
  br i1 %4112, label %4113, label %4114

4113:                                             ; preds = %4106
  br label %4186

4114:                                             ; preds = %4106
  %4115 = load ptr, ptr %8, align 8, !tbaa !5
  %4116 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4115, i32 0, i32 3
  %4117 = load i8, ptr %4116, align 1, !tbaa !20
  %4118 = zext i8 %4117 to i32
  %4119 = and i32 %4118, 15
  %4120 = icmp eq i32 9, %4119
  br i1 %4120, label %4121, label %4122

4121:                                             ; preds = %4114
  br label %4184

4122:                                             ; preds = %4114
  %4123 = load ptr, ptr %8, align 8, !tbaa !5
  %4124 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4123, i32 0, i32 3
  %4125 = load i8, ptr %4124, align 1, !tbaa !20
  %4126 = zext i8 %4125 to i32
  %4127 = and i32 %4126, 15
  %4128 = icmp eq i32 10, %4127
  br i1 %4128, label %4129, label %4130

4129:                                             ; preds = %4122
  br label %4182

4130:                                             ; preds = %4122
  %4131 = load ptr, ptr %8, align 8, !tbaa !5
  %4132 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4131, i32 0, i32 3
  %4133 = load i8, ptr %4132, align 1, !tbaa !20
  %4134 = zext i8 %4133 to i32
  %4135 = and i32 %4134, 15
  %4136 = icmp eq i32 11, %4135
  br i1 %4136, label %4137, label %4138

4137:                                             ; preds = %4130
  br label %4180

4138:                                             ; preds = %4130
  %4139 = load ptr, ptr %8, align 8, !tbaa !5
  %4140 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4139, i32 0, i32 3
  %4141 = load i8, ptr %4140, align 1, !tbaa !20
  %4142 = zext i8 %4141 to i32
  %4143 = and i32 %4142, 15
  %4144 = icmp eq i32 12, %4143
  br i1 %4144, label %4145, label %4146

4145:                                             ; preds = %4138
  br label %4178

4146:                                             ; preds = %4138
  %4147 = load ptr, ptr %8, align 8, !tbaa !5
  %4148 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4147, i32 0, i32 3
  %4149 = load i8, ptr %4148, align 1, !tbaa !20
  %4150 = zext i8 %4149 to i32
  %4151 = and i32 %4150, 15
  %4152 = icmp eq i32 13, %4151
  br i1 %4152, label %4153, label %4154

4153:                                             ; preds = %4146
  br label %4176

4154:                                             ; preds = %4146
  %4155 = load ptr, ptr %8, align 8, !tbaa !5
  %4156 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4155, i32 0, i32 3
  %4157 = load i8, ptr %4156, align 1, !tbaa !20
  %4158 = zext i8 %4157 to i32
  %4159 = and i32 %4158, 15
  %4160 = icmp eq i32 14, %4159
  br i1 %4160, label %4161, label %4162

4161:                                             ; preds = %4154
  br label %4174

4162:                                             ; preds = %4154
  %4163 = load ptr, ptr %8, align 8, !tbaa !5
  %4164 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4163, i32 0, i32 3
  %4165 = load i8, ptr %4164, align 1, !tbaa !20
  %4166 = zext i8 %4165 to i32
  %4167 = and i32 %4166, 15
  %4168 = icmp eq i32 15, %4167
  br i1 %4168, label %4169, label %4170

4169:                                             ; preds = %4162
  br label %4172

4170:                                             ; preds = %4162
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

4171:                                             ; No predecessors!
  br label %4172

4172:                                             ; preds = %4171, %4169
  %4173 = phi i32 [ 15, %4169 ], [ 0, %4171 ]
  br label %4174

4174:                                             ; preds = %4172, %4161
  %4175 = phi i32 [ 14, %4161 ], [ %4173, %4172 ]
  br label %4176

4176:                                             ; preds = %4174, %4153
  %4177 = phi i32 [ 12, %4153 ], [ %4175, %4174 ]
  br label %4178

4178:                                             ; preds = %4176, %4145
  %4179 = phi i32 [ 12, %4145 ], [ %4177, %4176 ]
  br label %4180

4180:                                             ; preds = %4178, %4137
  %4181 = phi i32 [ 10, %4137 ], [ %4179, %4178 ]
  br label %4182

4182:                                             ; preds = %4180, %4129
  %4183 = phi i32 [ 10, %4129 ], [ %4181, %4180 ]
  br label %4184

4184:                                             ; preds = %4182, %4121
  %4185 = phi i32 [ 8, %4121 ], [ %4183, %4182 ]
  br label %4186

4186:                                             ; preds = %4184, %4113
  %4187 = phi i32 [ 8, %4113 ], [ %4185, %4184 ]
  br label %4188

4188:                                             ; preds = %4186, %4105
  %4189 = phi i32 [ 6, %4105 ], [ %4187, %4186 ]
  br label %4190

4190:                                             ; preds = %4188, %4097
  %4191 = phi i32 [ 6, %4097 ], [ %4189, %4188 ]
  br label %4192

4192:                                             ; preds = %4190, %4089
  %4193 = phi i32 [ 5, %4089 ], [ %4191, %4190 ]
  br label %4194

4194:                                             ; preds = %4192, %4081
  %4195 = phi i32 [ 4, %4081 ], [ %4193, %4192 ]
  br label %4196

4196:                                             ; preds = %4194, %4073
  %4197 = phi i32 [ 3, %4073 ], [ %4195, %4194 ]
  br label %4198

4198:                                             ; preds = %4196, %4065
  %4199 = phi i32 [ 2, %4065 ], [ %4197, %4196 ]
  br label %4200

4200:                                             ; preds = %4198, %4057
  %4201 = phi i32 [ 1, %4057 ], [ %4199, %4198 ]
  br label %4202

4202:                                             ; preds = %4200, %4049
  %4203 = phi i32 [ 0, %4049 ], [ %4201, %4200 ]
  br label %4210

4204:                                             ; preds = %4035
  %4205 = load ptr, ptr %8, align 8, !tbaa !5
  %4206 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4205, i32 0, i32 3
  %4207 = load i8, ptr %4206, align 1, !tbaa !20
  %4208 = zext i8 %4207 to i32
  %4209 = ashr i32 %4208, 4
  br label %4210

4210:                                             ; preds = %4204, %4202
  %4211 = phi i32 [ %4203, %4202 ], [ %4209, %4204 ]
  %4212 = icmp eq i32 8, %4211
  br i1 %4212, label %4213, label %4214

4213:                                             ; preds = %4210
  br label %5121

4214:                                             ; preds = %4210
  %4215 = load ptr, ptr %8, align 8, !tbaa !5
  %4216 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4215, i32 0, i32 3
  %4217 = load i8, ptr %4216, align 1, !tbaa !20
  %4218 = zext i8 %4217 to i32
  %4219 = ashr i32 %4218, 4
  %4220 = icmp eq i32 0, %4219
  br i1 %4220, label %4221, label %4383

4221:                                             ; preds = %4214
  %4222 = load ptr, ptr %8, align 8, !tbaa !5
  %4223 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4222, i32 0, i32 3
  %4224 = load i8, ptr %4223, align 1, !tbaa !20
  %4225 = zext i8 %4224 to i32
  %4226 = and i32 %4225, 15
  %4227 = icmp eq i32 0, %4226
  br i1 %4227, label %4228, label %4229

4228:                                             ; preds = %4221
  br label %4381

4229:                                             ; preds = %4221
  %4230 = load ptr, ptr %8, align 8, !tbaa !5
  %4231 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4230, i32 0, i32 3
  %4232 = load i8, ptr %4231, align 1, !tbaa !20
  %4233 = zext i8 %4232 to i32
  %4234 = and i32 %4233, 15
  %4235 = icmp eq i32 1, %4234
  br i1 %4235, label %4236, label %4237

4236:                                             ; preds = %4229
  br label %4379

4237:                                             ; preds = %4229
  %4238 = load ptr, ptr %8, align 8, !tbaa !5
  %4239 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4238, i32 0, i32 3
  %4240 = load i8, ptr %4239, align 1, !tbaa !20
  %4241 = zext i8 %4240 to i32
  %4242 = and i32 %4241, 15
  %4243 = icmp eq i32 2, %4242
  br i1 %4243, label %4244, label %4245

4244:                                             ; preds = %4237
  br label %4377

4245:                                             ; preds = %4237
  %4246 = load ptr, ptr %8, align 8, !tbaa !5
  %4247 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4246, i32 0, i32 3
  %4248 = load i8, ptr %4247, align 1, !tbaa !20
  %4249 = zext i8 %4248 to i32
  %4250 = and i32 %4249, 15
  %4251 = icmp eq i32 3, %4250
  br i1 %4251, label %4252, label %4253

4252:                                             ; preds = %4245
  br label %4375

4253:                                             ; preds = %4245
  %4254 = load ptr, ptr %8, align 8, !tbaa !5
  %4255 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4254, i32 0, i32 3
  %4256 = load i8, ptr %4255, align 1, !tbaa !20
  %4257 = zext i8 %4256 to i32
  %4258 = and i32 %4257, 15
  %4259 = icmp eq i32 4, %4258
  br i1 %4259, label %4260, label %4261

4260:                                             ; preds = %4253
  br label %4373

4261:                                             ; preds = %4253
  %4262 = load ptr, ptr %8, align 8, !tbaa !5
  %4263 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4262, i32 0, i32 3
  %4264 = load i8, ptr %4263, align 1, !tbaa !20
  %4265 = zext i8 %4264 to i32
  %4266 = and i32 %4265, 15
  %4267 = icmp eq i32 5, %4266
  br i1 %4267, label %4268, label %4269

4268:                                             ; preds = %4261
  br label %4371

4269:                                             ; preds = %4261
  %4270 = load ptr, ptr %8, align 8, !tbaa !5
  %4271 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4270, i32 0, i32 3
  %4272 = load i8, ptr %4271, align 1, !tbaa !20
  %4273 = zext i8 %4272 to i32
  %4274 = and i32 %4273, 15
  %4275 = icmp eq i32 6, %4274
  br i1 %4275, label %4276, label %4277

4276:                                             ; preds = %4269
  br label %4369

4277:                                             ; preds = %4269
  %4278 = load ptr, ptr %8, align 8, !tbaa !5
  %4279 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4278, i32 0, i32 3
  %4280 = load i8, ptr %4279, align 1, !tbaa !20
  %4281 = zext i8 %4280 to i32
  %4282 = and i32 %4281, 15
  %4283 = icmp eq i32 7, %4282
  br i1 %4283, label %4284, label %4285

4284:                                             ; preds = %4277
  br label %4367

4285:                                             ; preds = %4277
  %4286 = load ptr, ptr %8, align 8, !tbaa !5
  %4287 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4286, i32 0, i32 3
  %4288 = load i8, ptr %4287, align 1, !tbaa !20
  %4289 = zext i8 %4288 to i32
  %4290 = and i32 %4289, 15
  %4291 = icmp eq i32 8, %4290
  br i1 %4291, label %4292, label %4293

4292:                                             ; preds = %4285
  br label %4365

4293:                                             ; preds = %4285
  %4294 = load ptr, ptr %8, align 8, !tbaa !5
  %4295 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4294, i32 0, i32 3
  %4296 = load i8, ptr %4295, align 1, !tbaa !20
  %4297 = zext i8 %4296 to i32
  %4298 = and i32 %4297, 15
  %4299 = icmp eq i32 9, %4298
  br i1 %4299, label %4300, label %4301

4300:                                             ; preds = %4293
  br label %4363

4301:                                             ; preds = %4293
  %4302 = load ptr, ptr %8, align 8, !tbaa !5
  %4303 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4302, i32 0, i32 3
  %4304 = load i8, ptr %4303, align 1, !tbaa !20
  %4305 = zext i8 %4304 to i32
  %4306 = and i32 %4305, 15
  %4307 = icmp eq i32 10, %4306
  br i1 %4307, label %4308, label %4309

4308:                                             ; preds = %4301
  br label %4361

4309:                                             ; preds = %4301
  %4310 = load ptr, ptr %8, align 8, !tbaa !5
  %4311 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4310, i32 0, i32 3
  %4312 = load i8, ptr %4311, align 1, !tbaa !20
  %4313 = zext i8 %4312 to i32
  %4314 = and i32 %4313, 15
  %4315 = icmp eq i32 11, %4314
  br i1 %4315, label %4316, label %4317

4316:                                             ; preds = %4309
  br label %4359

4317:                                             ; preds = %4309
  %4318 = load ptr, ptr %8, align 8, !tbaa !5
  %4319 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4318, i32 0, i32 3
  %4320 = load i8, ptr %4319, align 1, !tbaa !20
  %4321 = zext i8 %4320 to i32
  %4322 = and i32 %4321, 15
  %4323 = icmp eq i32 12, %4322
  br i1 %4323, label %4324, label %4325

4324:                                             ; preds = %4317
  br label %4357

4325:                                             ; preds = %4317
  %4326 = load ptr, ptr %8, align 8, !tbaa !5
  %4327 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4326, i32 0, i32 3
  %4328 = load i8, ptr %4327, align 1, !tbaa !20
  %4329 = zext i8 %4328 to i32
  %4330 = and i32 %4329, 15
  %4331 = icmp eq i32 13, %4330
  br i1 %4331, label %4332, label %4333

4332:                                             ; preds = %4325
  br label %4355

4333:                                             ; preds = %4325
  %4334 = load ptr, ptr %8, align 8, !tbaa !5
  %4335 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4334, i32 0, i32 3
  %4336 = load i8, ptr %4335, align 1, !tbaa !20
  %4337 = zext i8 %4336 to i32
  %4338 = and i32 %4337, 15
  %4339 = icmp eq i32 14, %4338
  br i1 %4339, label %4340, label %4341

4340:                                             ; preds = %4333
  br label %4353

4341:                                             ; preds = %4333
  %4342 = load ptr, ptr %8, align 8, !tbaa !5
  %4343 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4342, i32 0, i32 3
  %4344 = load i8, ptr %4343, align 1, !tbaa !20
  %4345 = zext i8 %4344 to i32
  %4346 = and i32 %4345, 15
  %4347 = icmp eq i32 15, %4346
  br i1 %4347, label %4348, label %4349

4348:                                             ; preds = %4341
  br label %4351

4349:                                             ; preds = %4341
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

4350:                                             ; No predecessors!
  br label %4351

4351:                                             ; preds = %4350, %4348
  %4352 = phi i32 [ 15, %4348 ], [ 0, %4350 ]
  br label %4353

4353:                                             ; preds = %4351, %4340
  %4354 = phi i32 [ 14, %4340 ], [ %4352, %4351 ]
  br label %4355

4355:                                             ; preds = %4353, %4332
  %4356 = phi i32 [ 12, %4332 ], [ %4354, %4353 ]
  br label %4357

4357:                                             ; preds = %4355, %4324
  %4358 = phi i32 [ 12, %4324 ], [ %4356, %4355 ]
  br label %4359

4359:                                             ; preds = %4357, %4316
  %4360 = phi i32 [ 10, %4316 ], [ %4358, %4357 ]
  br label %4361

4361:                                             ; preds = %4359, %4308
  %4362 = phi i32 [ 10, %4308 ], [ %4360, %4359 ]
  br label %4363

4363:                                             ; preds = %4361, %4300
  %4364 = phi i32 [ 8, %4300 ], [ %4362, %4361 ]
  br label %4365

4365:                                             ; preds = %4363, %4292
  %4366 = phi i32 [ 8, %4292 ], [ %4364, %4363 ]
  br label %4367

4367:                                             ; preds = %4365, %4284
  %4368 = phi i32 [ 6, %4284 ], [ %4366, %4365 ]
  br label %4369

4369:                                             ; preds = %4367, %4276
  %4370 = phi i32 [ 6, %4276 ], [ %4368, %4367 ]
  br label %4371

4371:                                             ; preds = %4369, %4268
  %4372 = phi i32 [ 5, %4268 ], [ %4370, %4369 ]
  br label %4373

4373:                                             ; preds = %4371, %4260
  %4374 = phi i32 [ 4, %4260 ], [ %4372, %4371 ]
  br label %4375

4375:                                             ; preds = %4373, %4252
  %4376 = phi i32 [ 3, %4252 ], [ %4374, %4373 ]
  br label %4377

4377:                                             ; preds = %4375, %4244
  %4378 = phi i32 [ 2, %4244 ], [ %4376, %4375 ]
  br label %4379

4379:                                             ; preds = %4377, %4236
  %4380 = phi i32 [ 1, %4236 ], [ %4378, %4377 ]
  br label %4381

4381:                                             ; preds = %4379, %4228
  %4382 = phi i32 [ 0, %4228 ], [ %4380, %4379 ]
  br label %4389

4383:                                             ; preds = %4214
  %4384 = load ptr, ptr %8, align 8, !tbaa !5
  %4385 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4384, i32 0, i32 3
  %4386 = load i8, ptr %4385, align 1, !tbaa !20
  %4387 = zext i8 %4386 to i32
  %4388 = ashr i32 %4387, 4
  br label %4389

4389:                                             ; preds = %4383, %4381
  %4390 = phi i32 [ %4382, %4381 ], [ %4388, %4383 ]
  %4391 = icmp eq i32 9, %4390
  br i1 %4391, label %4392, label %4393

4392:                                             ; preds = %4389
  br label %5119

4393:                                             ; preds = %4389
  %4394 = load ptr, ptr %8, align 8, !tbaa !5
  %4395 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4394, i32 0, i32 3
  %4396 = load i8, ptr %4395, align 1, !tbaa !20
  %4397 = zext i8 %4396 to i32
  %4398 = ashr i32 %4397, 4
  %4399 = icmp eq i32 0, %4398
  br i1 %4399, label %4400, label %4562

4400:                                             ; preds = %4393
  %4401 = load ptr, ptr %8, align 8, !tbaa !5
  %4402 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4401, i32 0, i32 3
  %4403 = load i8, ptr %4402, align 1, !tbaa !20
  %4404 = zext i8 %4403 to i32
  %4405 = and i32 %4404, 15
  %4406 = icmp eq i32 0, %4405
  br i1 %4406, label %4407, label %4408

4407:                                             ; preds = %4400
  br label %4560

4408:                                             ; preds = %4400
  %4409 = load ptr, ptr %8, align 8, !tbaa !5
  %4410 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4409, i32 0, i32 3
  %4411 = load i8, ptr %4410, align 1, !tbaa !20
  %4412 = zext i8 %4411 to i32
  %4413 = and i32 %4412, 15
  %4414 = icmp eq i32 1, %4413
  br i1 %4414, label %4415, label %4416

4415:                                             ; preds = %4408
  br label %4558

4416:                                             ; preds = %4408
  %4417 = load ptr, ptr %8, align 8, !tbaa !5
  %4418 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4417, i32 0, i32 3
  %4419 = load i8, ptr %4418, align 1, !tbaa !20
  %4420 = zext i8 %4419 to i32
  %4421 = and i32 %4420, 15
  %4422 = icmp eq i32 2, %4421
  br i1 %4422, label %4423, label %4424

4423:                                             ; preds = %4416
  br label %4556

4424:                                             ; preds = %4416
  %4425 = load ptr, ptr %8, align 8, !tbaa !5
  %4426 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4425, i32 0, i32 3
  %4427 = load i8, ptr %4426, align 1, !tbaa !20
  %4428 = zext i8 %4427 to i32
  %4429 = and i32 %4428, 15
  %4430 = icmp eq i32 3, %4429
  br i1 %4430, label %4431, label %4432

4431:                                             ; preds = %4424
  br label %4554

4432:                                             ; preds = %4424
  %4433 = load ptr, ptr %8, align 8, !tbaa !5
  %4434 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4433, i32 0, i32 3
  %4435 = load i8, ptr %4434, align 1, !tbaa !20
  %4436 = zext i8 %4435 to i32
  %4437 = and i32 %4436, 15
  %4438 = icmp eq i32 4, %4437
  br i1 %4438, label %4439, label %4440

4439:                                             ; preds = %4432
  br label %4552

4440:                                             ; preds = %4432
  %4441 = load ptr, ptr %8, align 8, !tbaa !5
  %4442 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4441, i32 0, i32 3
  %4443 = load i8, ptr %4442, align 1, !tbaa !20
  %4444 = zext i8 %4443 to i32
  %4445 = and i32 %4444, 15
  %4446 = icmp eq i32 5, %4445
  br i1 %4446, label %4447, label %4448

4447:                                             ; preds = %4440
  br label %4550

4448:                                             ; preds = %4440
  %4449 = load ptr, ptr %8, align 8, !tbaa !5
  %4450 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4449, i32 0, i32 3
  %4451 = load i8, ptr %4450, align 1, !tbaa !20
  %4452 = zext i8 %4451 to i32
  %4453 = and i32 %4452, 15
  %4454 = icmp eq i32 6, %4453
  br i1 %4454, label %4455, label %4456

4455:                                             ; preds = %4448
  br label %4548

4456:                                             ; preds = %4448
  %4457 = load ptr, ptr %8, align 8, !tbaa !5
  %4458 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4457, i32 0, i32 3
  %4459 = load i8, ptr %4458, align 1, !tbaa !20
  %4460 = zext i8 %4459 to i32
  %4461 = and i32 %4460, 15
  %4462 = icmp eq i32 7, %4461
  br i1 %4462, label %4463, label %4464

4463:                                             ; preds = %4456
  br label %4546

4464:                                             ; preds = %4456
  %4465 = load ptr, ptr %8, align 8, !tbaa !5
  %4466 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4465, i32 0, i32 3
  %4467 = load i8, ptr %4466, align 1, !tbaa !20
  %4468 = zext i8 %4467 to i32
  %4469 = and i32 %4468, 15
  %4470 = icmp eq i32 8, %4469
  br i1 %4470, label %4471, label %4472

4471:                                             ; preds = %4464
  br label %4544

4472:                                             ; preds = %4464
  %4473 = load ptr, ptr %8, align 8, !tbaa !5
  %4474 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4473, i32 0, i32 3
  %4475 = load i8, ptr %4474, align 1, !tbaa !20
  %4476 = zext i8 %4475 to i32
  %4477 = and i32 %4476, 15
  %4478 = icmp eq i32 9, %4477
  br i1 %4478, label %4479, label %4480

4479:                                             ; preds = %4472
  br label %4542

4480:                                             ; preds = %4472
  %4481 = load ptr, ptr %8, align 8, !tbaa !5
  %4482 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4481, i32 0, i32 3
  %4483 = load i8, ptr %4482, align 1, !tbaa !20
  %4484 = zext i8 %4483 to i32
  %4485 = and i32 %4484, 15
  %4486 = icmp eq i32 10, %4485
  br i1 %4486, label %4487, label %4488

4487:                                             ; preds = %4480
  br label %4540

4488:                                             ; preds = %4480
  %4489 = load ptr, ptr %8, align 8, !tbaa !5
  %4490 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4489, i32 0, i32 3
  %4491 = load i8, ptr %4490, align 1, !tbaa !20
  %4492 = zext i8 %4491 to i32
  %4493 = and i32 %4492, 15
  %4494 = icmp eq i32 11, %4493
  br i1 %4494, label %4495, label %4496

4495:                                             ; preds = %4488
  br label %4538

4496:                                             ; preds = %4488
  %4497 = load ptr, ptr %8, align 8, !tbaa !5
  %4498 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4497, i32 0, i32 3
  %4499 = load i8, ptr %4498, align 1, !tbaa !20
  %4500 = zext i8 %4499 to i32
  %4501 = and i32 %4500, 15
  %4502 = icmp eq i32 12, %4501
  br i1 %4502, label %4503, label %4504

4503:                                             ; preds = %4496
  br label %4536

4504:                                             ; preds = %4496
  %4505 = load ptr, ptr %8, align 8, !tbaa !5
  %4506 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4505, i32 0, i32 3
  %4507 = load i8, ptr %4506, align 1, !tbaa !20
  %4508 = zext i8 %4507 to i32
  %4509 = and i32 %4508, 15
  %4510 = icmp eq i32 13, %4509
  br i1 %4510, label %4511, label %4512

4511:                                             ; preds = %4504
  br label %4534

4512:                                             ; preds = %4504
  %4513 = load ptr, ptr %8, align 8, !tbaa !5
  %4514 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4513, i32 0, i32 3
  %4515 = load i8, ptr %4514, align 1, !tbaa !20
  %4516 = zext i8 %4515 to i32
  %4517 = and i32 %4516, 15
  %4518 = icmp eq i32 14, %4517
  br i1 %4518, label %4519, label %4520

4519:                                             ; preds = %4512
  br label %4532

4520:                                             ; preds = %4512
  %4521 = load ptr, ptr %8, align 8, !tbaa !5
  %4522 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4521, i32 0, i32 3
  %4523 = load i8, ptr %4522, align 1, !tbaa !20
  %4524 = zext i8 %4523 to i32
  %4525 = and i32 %4524, 15
  %4526 = icmp eq i32 15, %4525
  br i1 %4526, label %4527, label %4528

4527:                                             ; preds = %4520
  br label %4530

4528:                                             ; preds = %4520
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

4529:                                             ; No predecessors!
  br label %4530

4530:                                             ; preds = %4529, %4527
  %4531 = phi i32 [ 15, %4527 ], [ 0, %4529 ]
  br label %4532

4532:                                             ; preds = %4530, %4519
  %4533 = phi i32 [ 14, %4519 ], [ %4531, %4530 ]
  br label %4534

4534:                                             ; preds = %4532, %4511
  %4535 = phi i32 [ 12, %4511 ], [ %4533, %4532 ]
  br label %4536

4536:                                             ; preds = %4534, %4503
  %4537 = phi i32 [ 12, %4503 ], [ %4535, %4534 ]
  br label %4538

4538:                                             ; preds = %4536, %4495
  %4539 = phi i32 [ 10, %4495 ], [ %4537, %4536 ]
  br label %4540

4540:                                             ; preds = %4538, %4487
  %4541 = phi i32 [ 10, %4487 ], [ %4539, %4538 ]
  br label %4542

4542:                                             ; preds = %4540, %4479
  %4543 = phi i32 [ 8, %4479 ], [ %4541, %4540 ]
  br label %4544

4544:                                             ; preds = %4542, %4471
  %4545 = phi i32 [ 8, %4471 ], [ %4543, %4542 ]
  br label %4546

4546:                                             ; preds = %4544, %4463
  %4547 = phi i32 [ 6, %4463 ], [ %4545, %4544 ]
  br label %4548

4548:                                             ; preds = %4546, %4455
  %4549 = phi i32 [ 6, %4455 ], [ %4547, %4546 ]
  br label %4550

4550:                                             ; preds = %4548, %4447
  %4551 = phi i32 [ 5, %4447 ], [ %4549, %4548 ]
  br label %4552

4552:                                             ; preds = %4550, %4439
  %4553 = phi i32 [ 4, %4439 ], [ %4551, %4550 ]
  br label %4554

4554:                                             ; preds = %4552, %4431
  %4555 = phi i32 [ 3, %4431 ], [ %4553, %4552 ]
  br label %4556

4556:                                             ; preds = %4554, %4423
  %4557 = phi i32 [ 2, %4423 ], [ %4555, %4554 ]
  br label %4558

4558:                                             ; preds = %4556, %4415
  %4559 = phi i32 [ 1, %4415 ], [ %4557, %4556 ]
  br label %4560

4560:                                             ; preds = %4558, %4407
  %4561 = phi i32 [ 0, %4407 ], [ %4559, %4558 ]
  br label %4568

4562:                                             ; preds = %4393
  %4563 = load ptr, ptr %8, align 8, !tbaa !5
  %4564 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4563, i32 0, i32 3
  %4565 = load i8, ptr %4564, align 1, !tbaa !20
  %4566 = zext i8 %4565 to i32
  %4567 = ashr i32 %4566, 4
  br label %4568

4568:                                             ; preds = %4562, %4560
  %4569 = phi i32 [ %4561, %4560 ], [ %4567, %4562 ]
  %4570 = icmp eq i32 10, %4569
  br i1 %4570, label %4571, label %4572

4571:                                             ; preds = %4568
  br label %5117

4572:                                             ; preds = %4568
  %4573 = load ptr, ptr %8, align 8, !tbaa !5
  %4574 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4573, i32 0, i32 3
  %4575 = load i8, ptr %4574, align 1, !tbaa !20
  %4576 = zext i8 %4575 to i32
  %4577 = ashr i32 %4576, 4
  %4578 = icmp eq i32 0, %4577
  br i1 %4578, label %4579, label %4741

4579:                                             ; preds = %4572
  %4580 = load ptr, ptr %8, align 8, !tbaa !5
  %4581 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4580, i32 0, i32 3
  %4582 = load i8, ptr %4581, align 1, !tbaa !20
  %4583 = zext i8 %4582 to i32
  %4584 = and i32 %4583, 15
  %4585 = icmp eq i32 0, %4584
  br i1 %4585, label %4586, label %4587

4586:                                             ; preds = %4579
  br label %4739

4587:                                             ; preds = %4579
  %4588 = load ptr, ptr %8, align 8, !tbaa !5
  %4589 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4588, i32 0, i32 3
  %4590 = load i8, ptr %4589, align 1, !tbaa !20
  %4591 = zext i8 %4590 to i32
  %4592 = and i32 %4591, 15
  %4593 = icmp eq i32 1, %4592
  br i1 %4593, label %4594, label %4595

4594:                                             ; preds = %4587
  br label %4737

4595:                                             ; preds = %4587
  %4596 = load ptr, ptr %8, align 8, !tbaa !5
  %4597 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4596, i32 0, i32 3
  %4598 = load i8, ptr %4597, align 1, !tbaa !20
  %4599 = zext i8 %4598 to i32
  %4600 = and i32 %4599, 15
  %4601 = icmp eq i32 2, %4600
  br i1 %4601, label %4602, label %4603

4602:                                             ; preds = %4595
  br label %4735

4603:                                             ; preds = %4595
  %4604 = load ptr, ptr %8, align 8, !tbaa !5
  %4605 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4604, i32 0, i32 3
  %4606 = load i8, ptr %4605, align 1, !tbaa !20
  %4607 = zext i8 %4606 to i32
  %4608 = and i32 %4607, 15
  %4609 = icmp eq i32 3, %4608
  br i1 %4609, label %4610, label %4611

4610:                                             ; preds = %4603
  br label %4733

4611:                                             ; preds = %4603
  %4612 = load ptr, ptr %8, align 8, !tbaa !5
  %4613 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4612, i32 0, i32 3
  %4614 = load i8, ptr %4613, align 1, !tbaa !20
  %4615 = zext i8 %4614 to i32
  %4616 = and i32 %4615, 15
  %4617 = icmp eq i32 4, %4616
  br i1 %4617, label %4618, label %4619

4618:                                             ; preds = %4611
  br label %4731

4619:                                             ; preds = %4611
  %4620 = load ptr, ptr %8, align 8, !tbaa !5
  %4621 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4620, i32 0, i32 3
  %4622 = load i8, ptr %4621, align 1, !tbaa !20
  %4623 = zext i8 %4622 to i32
  %4624 = and i32 %4623, 15
  %4625 = icmp eq i32 5, %4624
  br i1 %4625, label %4626, label %4627

4626:                                             ; preds = %4619
  br label %4729

4627:                                             ; preds = %4619
  %4628 = load ptr, ptr %8, align 8, !tbaa !5
  %4629 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4628, i32 0, i32 3
  %4630 = load i8, ptr %4629, align 1, !tbaa !20
  %4631 = zext i8 %4630 to i32
  %4632 = and i32 %4631, 15
  %4633 = icmp eq i32 6, %4632
  br i1 %4633, label %4634, label %4635

4634:                                             ; preds = %4627
  br label %4727

4635:                                             ; preds = %4627
  %4636 = load ptr, ptr %8, align 8, !tbaa !5
  %4637 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4636, i32 0, i32 3
  %4638 = load i8, ptr %4637, align 1, !tbaa !20
  %4639 = zext i8 %4638 to i32
  %4640 = and i32 %4639, 15
  %4641 = icmp eq i32 7, %4640
  br i1 %4641, label %4642, label %4643

4642:                                             ; preds = %4635
  br label %4725

4643:                                             ; preds = %4635
  %4644 = load ptr, ptr %8, align 8, !tbaa !5
  %4645 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4644, i32 0, i32 3
  %4646 = load i8, ptr %4645, align 1, !tbaa !20
  %4647 = zext i8 %4646 to i32
  %4648 = and i32 %4647, 15
  %4649 = icmp eq i32 8, %4648
  br i1 %4649, label %4650, label %4651

4650:                                             ; preds = %4643
  br label %4723

4651:                                             ; preds = %4643
  %4652 = load ptr, ptr %8, align 8, !tbaa !5
  %4653 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4652, i32 0, i32 3
  %4654 = load i8, ptr %4653, align 1, !tbaa !20
  %4655 = zext i8 %4654 to i32
  %4656 = and i32 %4655, 15
  %4657 = icmp eq i32 9, %4656
  br i1 %4657, label %4658, label %4659

4658:                                             ; preds = %4651
  br label %4721

4659:                                             ; preds = %4651
  %4660 = load ptr, ptr %8, align 8, !tbaa !5
  %4661 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4660, i32 0, i32 3
  %4662 = load i8, ptr %4661, align 1, !tbaa !20
  %4663 = zext i8 %4662 to i32
  %4664 = and i32 %4663, 15
  %4665 = icmp eq i32 10, %4664
  br i1 %4665, label %4666, label %4667

4666:                                             ; preds = %4659
  br label %4719

4667:                                             ; preds = %4659
  %4668 = load ptr, ptr %8, align 8, !tbaa !5
  %4669 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4668, i32 0, i32 3
  %4670 = load i8, ptr %4669, align 1, !tbaa !20
  %4671 = zext i8 %4670 to i32
  %4672 = and i32 %4671, 15
  %4673 = icmp eq i32 11, %4672
  br i1 %4673, label %4674, label %4675

4674:                                             ; preds = %4667
  br label %4717

4675:                                             ; preds = %4667
  %4676 = load ptr, ptr %8, align 8, !tbaa !5
  %4677 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4676, i32 0, i32 3
  %4678 = load i8, ptr %4677, align 1, !tbaa !20
  %4679 = zext i8 %4678 to i32
  %4680 = and i32 %4679, 15
  %4681 = icmp eq i32 12, %4680
  br i1 %4681, label %4682, label %4683

4682:                                             ; preds = %4675
  br label %4715

4683:                                             ; preds = %4675
  %4684 = load ptr, ptr %8, align 8, !tbaa !5
  %4685 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4684, i32 0, i32 3
  %4686 = load i8, ptr %4685, align 1, !tbaa !20
  %4687 = zext i8 %4686 to i32
  %4688 = and i32 %4687, 15
  %4689 = icmp eq i32 13, %4688
  br i1 %4689, label %4690, label %4691

4690:                                             ; preds = %4683
  br label %4713

4691:                                             ; preds = %4683
  %4692 = load ptr, ptr %8, align 8, !tbaa !5
  %4693 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4692, i32 0, i32 3
  %4694 = load i8, ptr %4693, align 1, !tbaa !20
  %4695 = zext i8 %4694 to i32
  %4696 = and i32 %4695, 15
  %4697 = icmp eq i32 14, %4696
  br i1 %4697, label %4698, label %4699

4698:                                             ; preds = %4691
  br label %4711

4699:                                             ; preds = %4691
  %4700 = load ptr, ptr %8, align 8, !tbaa !5
  %4701 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4700, i32 0, i32 3
  %4702 = load i8, ptr %4701, align 1, !tbaa !20
  %4703 = zext i8 %4702 to i32
  %4704 = and i32 %4703, 15
  %4705 = icmp eq i32 15, %4704
  br i1 %4705, label %4706, label %4707

4706:                                             ; preds = %4699
  br label %4709

4707:                                             ; preds = %4699
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

4708:                                             ; No predecessors!
  br label %4709

4709:                                             ; preds = %4708, %4706
  %4710 = phi i32 [ 15, %4706 ], [ 0, %4708 ]
  br label %4711

4711:                                             ; preds = %4709, %4698
  %4712 = phi i32 [ 14, %4698 ], [ %4710, %4709 ]
  br label %4713

4713:                                             ; preds = %4711, %4690
  %4714 = phi i32 [ 12, %4690 ], [ %4712, %4711 ]
  br label %4715

4715:                                             ; preds = %4713, %4682
  %4716 = phi i32 [ 12, %4682 ], [ %4714, %4713 ]
  br label %4717

4717:                                             ; preds = %4715, %4674
  %4718 = phi i32 [ 10, %4674 ], [ %4716, %4715 ]
  br label %4719

4719:                                             ; preds = %4717, %4666
  %4720 = phi i32 [ 10, %4666 ], [ %4718, %4717 ]
  br label %4721

4721:                                             ; preds = %4719, %4658
  %4722 = phi i32 [ 8, %4658 ], [ %4720, %4719 ]
  br label %4723

4723:                                             ; preds = %4721, %4650
  %4724 = phi i32 [ 8, %4650 ], [ %4722, %4721 ]
  br label %4725

4725:                                             ; preds = %4723, %4642
  %4726 = phi i32 [ 6, %4642 ], [ %4724, %4723 ]
  br label %4727

4727:                                             ; preds = %4725, %4634
  %4728 = phi i32 [ 6, %4634 ], [ %4726, %4725 ]
  br label %4729

4729:                                             ; preds = %4727, %4626
  %4730 = phi i32 [ 5, %4626 ], [ %4728, %4727 ]
  br label %4731

4731:                                             ; preds = %4729, %4618
  %4732 = phi i32 [ 4, %4618 ], [ %4730, %4729 ]
  br label %4733

4733:                                             ; preds = %4731, %4610
  %4734 = phi i32 [ 3, %4610 ], [ %4732, %4731 ]
  br label %4735

4735:                                             ; preds = %4733, %4602
  %4736 = phi i32 [ 2, %4602 ], [ %4734, %4733 ]
  br label %4737

4737:                                             ; preds = %4735, %4594
  %4738 = phi i32 [ 1, %4594 ], [ %4736, %4735 ]
  br label %4739

4739:                                             ; preds = %4737, %4586
  %4740 = phi i32 [ 0, %4586 ], [ %4738, %4737 ]
  br label %4747

4741:                                             ; preds = %4572
  %4742 = load ptr, ptr %8, align 8, !tbaa !5
  %4743 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4742, i32 0, i32 3
  %4744 = load i8, ptr %4743, align 1, !tbaa !20
  %4745 = zext i8 %4744 to i32
  %4746 = ashr i32 %4745, 4
  br label %4747

4747:                                             ; preds = %4741, %4739
  %4748 = phi i32 [ %4740, %4739 ], [ %4746, %4741 ]
  %4749 = icmp eq i32 11, %4748
  br i1 %4749, label %4750, label %4751

4750:                                             ; preds = %4747
  br label %5115

4751:                                             ; preds = %4747
  %4752 = load ptr, ptr %8, align 8, !tbaa !5
  %4753 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4752, i32 0, i32 3
  %4754 = load i8, ptr %4753, align 1, !tbaa !20
  %4755 = zext i8 %4754 to i32
  %4756 = ashr i32 %4755, 4
  %4757 = icmp eq i32 0, %4756
  br i1 %4757, label %4758, label %4920

4758:                                             ; preds = %4751
  %4759 = load ptr, ptr %8, align 8, !tbaa !5
  %4760 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4759, i32 0, i32 3
  %4761 = load i8, ptr %4760, align 1, !tbaa !20
  %4762 = zext i8 %4761 to i32
  %4763 = and i32 %4762, 15
  %4764 = icmp eq i32 0, %4763
  br i1 %4764, label %4765, label %4766

4765:                                             ; preds = %4758
  br label %4918

4766:                                             ; preds = %4758
  %4767 = load ptr, ptr %8, align 8, !tbaa !5
  %4768 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4767, i32 0, i32 3
  %4769 = load i8, ptr %4768, align 1, !tbaa !20
  %4770 = zext i8 %4769 to i32
  %4771 = and i32 %4770, 15
  %4772 = icmp eq i32 1, %4771
  br i1 %4772, label %4773, label %4774

4773:                                             ; preds = %4766
  br label %4916

4774:                                             ; preds = %4766
  %4775 = load ptr, ptr %8, align 8, !tbaa !5
  %4776 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4775, i32 0, i32 3
  %4777 = load i8, ptr %4776, align 1, !tbaa !20
  %4778 = zext i8 %4777 to i32
  %4779 = and i32 %4778, 15
  %4780 = icmp eq i32 2, %4779
  br i1 %4780, label %4781, label %4782

4781:                                             ; preds = %4774
  br label %4914

4782:                                             ; preds = %4774
  %4783 = load ptr, ptr %8, align 8, !tbaa !5
  %4784 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4783, i32 0, i32 3
  %4785 = load i8, ptr %4784, align 1, !tbaa !20
  %4786 = zext i8 %4785 to i32
  %4787 = and i32 %4786, 15
  %4788 = icmp eq i32 3, %4787
  br i1 %4788, label %4789, label %4790

4789:                                             ; preds = %4782
  br label %4912

4790:                                             ; preds = %4782
  %4791 = load ptr, ptr %8, align 8, !tbaa !5
  %4792 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4791, i32 0, i32 3
  %4793 = load i8, ptr %4792, align 1, !tbaa !20
  %4794 = zext i8 %4793 to i32
  %4795 = and i32 %4794, 15
  %4796 = icmp eq i32 4, %4795
  br i1 %4796, label %4797, label %4798

4797:                                             ; preds = %4790
  br label %4910

4798:                                             ; preds = %4790
  %4799 = load ptr, ptr %8, align 8, !tbaa !5
  %4800 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4799, i32 0, i32 3
  %4801 = load i8, ptr %4800, align 1, !tbaa !20
  %4802 = zext i8 %4801 to i32
  %4803 = and i32 %4802, 15
  %4804 = icmp eq i32 5, %4803
  br i1 %4804, label %4805, label %4806

4805:                                             ; preds = %4798
  br label %4908

4806:                                             ; preds = %4798
  %4807 = load ptr, ptr %8, align 8, !tbaa !5
  %4808 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4807, i32 0, i32 3
  %4809 = load i8, ptr %4808, align 1, !tbaa !20
  %4810 = zext i8 %4809 to i32
  %4811 = and i32 %4810, 15
  %4812 = icmp eq i32 6, %4811
  br i1 %4812, label %4813, label %4814

4813:                                             ; preds = %4806
  br label %4906

4814:                                             ; preds = %4806
  %4815 = load ptr, ptr %8, align 8, !tbaa !5
  %4816 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4815, i32 0, i32 3
  %4817 = load i8, ptr %4816, align 1, !tbaa !20
  %4818 = zext i8 %4817 to i32
  %4819 = and i32 %4818, 15
  %4820 = icmp eq i32 7, %4819
  br i1 %4820, label %4821, label %4822

4821:                                             ; preds = %4814
  br label %4904

4822:                                             ; preds = %4814
  %4823 = load ptr, ptr %8, align 8, !tbaa !5
  %4824 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4823, i32 0, i32 3
  %4825 = load i8, ptr %4824, align 1, !tbaa !20
  %4826 = zext i8 %4825 to i32
  %4827 = and i32 %4826, 15
  %4828 = icmp eq i32 8, %4827
  br i1 %4828, label %4829, label %4830

4829:                                             ; preds = %4822
  br label %4902

4830:                                             ; preds = %4822
  %4831 = load ptr, ptr %8, align 8, !tbaa !5
  %4832 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4831, i32 0, i32 3
  %4833 = load i8, ptr %4832, align 1, !tbaa !20
  %4834 = zext i8 %4833 to i32
  %4835 = and i32 %4834, 15
  %4836 = icmp eq i32 9, %4835
  br i1 %4836, label %4837, label %4838

4837:                                             ; preds = %4830
  br label %4900

4838:                                             ; preds = %4830
  %4839 = load ptr, ptr %8, align 8, !tbaa !5
  %4840 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4839, i32 0, i32 3
  %4841 = load i8, ptr %4840, align 1, !tbaa !20
  %4842 = zext i8 %4841 to i32
  %4843 = and i32 %4842, 15
  %4844 = icmp eq i32 10, %4843
  br i1 %4844, label %4845, label %4846

4845:                                             ; preds = %4838
  br label %4898

4846:                                             ; preds = %4838
  %4847 = load ptr, ptr %8, align 8, !tbaa !5
  %4848 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4847, i32 0, i32 3
  %4849 = load i8, ptr %4848, align 1, !tbaa !20
  %4850 = zext i8 %4849 to i32
  %4851 = and i32 %4850, 15
  %4852 = icmp eq i32 11, %4851
  br i1 %4852, label %4853, label %4854

4853:                                             ; preds = %4846
  br label %4896

4854:                                             ; preds = %4846
  %4855 = load ptr, ptr %8, align 8, !tbaa !5
  %4856 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4855, i32 0, i32 3
  %4857 = load i8, ptr %4856, align 1, !tbaa !20
  %4858 = zext i8 %4857 to i32
  %4859 = and i32 %4858, 15
  %4860 = icmp eq i32 12, %4859
  br i1 %4860, label %4861, label %4862

4861:                                             ; preds = %4854
  br label %4894

4862:                                             ; preds = %4854
  %4863 = load ptr, ptr %8, align 8, !tbaa !5
  %4864 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4863, i32 0, i32 3
  %4865 = load i8, ptr %4864, align 1, !tbaa !20
  %4866 = zext i8 %4865 to i32
  %4867 = and i32 %4866, 15
  %4868 = icmp eq i32 13, %4867
  br i1 %4868, label %4869, label %4870

4869:                                             ; preds = %4862
  br label %4892

4870:                                             ; preds = %4862
  %4871 = load ptr, ptr %8, align 8, !tbaa !5
  %4872 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4871, i32 0, i32 3
  %4873 = load i8, ptr %4872, align 1, !tbaa !20
  %4874 = zext i8 %4873 to i32
  %4875 = and i32 %4874, 15
  %4876 = icmp eq i32 14, %4875
  br i1 %4876, label %4877, label %4878

4877:                                             ; preds = %4870
  br label %4890

4878:                                             ; preds = %4870
  %4879 = load ptr, ptr %8, align 8, !tbaa !5
  %4880 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4879, i32 0, i32 3
  %4881 = load i8, ptr %4880, align 1, !tbaa !20
  %4882 = zext i8 %4881 to i32
  %4883 = and i32 %4882, 15
  %4884 = icmp eq i32 15, %4883
  br i1 %4884, label %4885, label %4886

4885:                                             ; preds = %4878
  br label %4888

4886:                                             ; preds = %4878
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

4887:                                             ; No predecessors!
  br label %4888

4888:                                             ; preds = %4887, %4885
  %4889 = phi i32 [ 15, %4885 ], [ 0, %4887 ]
  br label %4890

4890:                                             ; preds = %4888, %4877
  %4891 = phi i32 [ 14, %4877 ], [ %4889, %4888 ]
  br label %4892

4892:                                             ; preds = %4890, %4869
  %4893 = phi i32 [ 12, %4869 ], [ %4891, %4890 ]
  br label %4894

4894:                                             ; preds = %4892, %4861
  %4895 = phi i32 [ 12, %4861 ], [ %4893, %4892 ]
  br label %4896

4896:                                             ; preds = %4894, %4853
  %4897 = phi i32 [ 10, %4853 ], [ %4895, %4894 ]
  br label %4898

4898:                                             ; preds = %4896, %4845
  %4899 = phi i32 [ 10, %4845 ], [ %4897, %4896 ]
  br label %4900

4900:                                             ; preds = %4898, %4837
  %4901 = phi i32 [ 8, %4837 ], [ %4899, %4898 ]
  br label %4902

4902:                                             ; preds = %4900, %4829
  %4903 = phi i32 [ 8, %4829 ], [ %4901, %4900 ]
  br label %4904

4904:                                             ; preds = %4902, %4821
  %4905 = phi i32 [ 6, %4821 ], [ %4903, %4902 ]
  br label %4906

4906:                                             ; preds = %4904, %4813
  %4907 = phi i32 [ 6, %4813 ], [ %4905, %4904 ]
  br label %4908

4908:                                             ; preds = %4906, %4805
  %4909 = phi i32 [ 5, %4805 ], [ %4907, %4906 ]
  br label %4910

4910:                                             ; preds = %4908, %4797
  %4911 = phi i32 [ 4, %4797 ], [ %4909, %4908 ]
  br label %4912

4912:                                             ; preds = %4910, %4789
  %4913 = phi i32 [ 3, %4789 ], [ %4911, %4910 ]
  br label %4914

4914:                                             ; preds = %4912, %4781
  %4915 = phi i32 [ 2, %4781 ], [ %4913, %4912 ]
  br label %4916

4916:                                             ; preds = %4914, %4773
  %4917 = phi i32 [ 1, %4773 ], [ %4915, %4914 ]
  br label %4918

4918:                                             ; preds = %4916, %4765
  %4919 = phi i32 [ 0, %4765 ], [ %4917, %4916 ]
  br label %4926

4920:                                             ; preds = %4751
  %4921 = load ptr, ptr %8, align 8, !tbaa !5
  %4922 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4921, i32 0, i32 3
  %4923 = load i8, ptr %4922, align 1, !tbaa !20
  %4924 = zext i8 %4923 to i32
  %4925 = ashr i32 %4924, 4
  br label %4926

4926:                                             ; preds = %4920, %4918
  %4927 = phi i32 [ %4919, %4918 ], [ %4925, %4920 ]
  %4928 = icmp eq i32 12, %4927
  br i1 %4928, label %4929, label %4930

4929:                                             ; preds = %4926
  br label %5113

4930:                                             ; preds = %4926
  %4931 = load ptr, ptr %8, align 8, !tbaa !5
  %4932 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4931, i32 0, i32 3
  %4933 = load i8, ptr %4932, align 1, !tbaa !20
  %4934 = zext i8 %4933 to i32
  %4935 = ashr i32 %4934, 4
  %4936 = icmp eq i32 0, %4935
  br i1 %4936, label %4937, label %5099

4937:                                             ; preds = %4930
  %4938 = load ptr, ptr %8, align 8, !tbaa !5
  %4939 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4938, i32 0, i32 3
  %4940 = load i8, ptr %4939, align 1, !tbaa !20
  %4941 = zext i8 %4940 to i32
  %4942 = and i32 %4941, 15
  %4943 = icmp eq i32 0, %4942
  br i1 %4943, label %4944, label %4945

4944:                                             ; preds = %4937
  br label %5097

4945:                                             ; preds = %4937
  %4946 = load ptr, ptr %8, align 8, !tbaa !5
  %4947 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4946, i32 0, i32 3
  %4948 = load i8, ptr %4947, align 1, !tbaa !20
  %4949 = zext i8 %4948 to i32
  %4950 = and i32 %4949, 15
  %4951 = icmp eq i32 1, %4950
  br i1 %4951, label %4952, label %4953

4952:                                             ; preds = %4945
  br label %5095

4953:                                             ; preds = %4945
  %4954 = load ptr, ptr %8, align 8, !tbaa !5
  %4955 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4954, i32 0, i32 3
  %4956 = load i8, ptr %4955, align 1, !tbaa !20
  %4957 = zext i8 %4956 to i32
  %4958 = and i32 %4957, 15
  %4959 = icmp eq i32 2, %4958
  br i1 %4959, label %4960, label %4961

4960:                                             ; preds = %4953
  br label %5093

4961:                                             ; preds = %4953
  %4962 = load ptr, ptr %8, align 8, !tbaa !5
  %4963 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4962, i32 0, i32 3
  %4964 = load i8, ptr %4963, align 1, !tbaa !20
  %4965 = zext i8 %4964 to i32
  %4966 = and i32 %4965, 15
  %4967 = icmp eq i32 3, %4966
  br i1 %4967, label %4968, label %4969

4968:                                             ; preds = %4961
  br label %5091

4969:                                             ; preds = %4961
  %4970 = load ptr, ptr %8, align 8, !tbaa !5
  %4971 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4970, i32 0, i32 3
  %4972 = load i8, ptr %4971, align 1, !tbaa !20
  %4973 = zext i8 %4972 to i32
  %4974 = and i32 %4973, 15
  %4975 = icmp eq i32 4, %4974
  br i1 %4975, label %4976, label %4977

4976:                                             ; preds = %4969
  br label %5089

4977:                                             ; preds = %4969
  %4978 = load ptr, ptr %8, align 8, !tbaa !5
  %4979 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4978, i32 0, i32 3
  %4980 = load i8, ptr %4979, align 1, !tbaa !20
  %4981 = zext i8 %4980 to i32
  %4982 = and i32 %4981, 15
  %4983 = icmp eq i32 5, %4982
  br i1 %4983, label %4984, label %4985

4984:                                             ; preds = %4977
  br label %5087

4985:                                             ; preds = %4977
  %4986 = load ptr, ptr %8, align 8, !tbaa !5
  %4987 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4986, i32 0, i32 3
  %4988 = load i8, ptr %4987, align 1, !tbaa !20
  %4989 = zext i8 %4988 to i32
  %4990 = and i32 %4989, 15
  %4991 = icmp eq i32 6, %4990
  br i1 %4991, label %4992, label %4993

4992:                                             ; preds = %4985
  br label %5085

4993:                                             ; preds = %4985
  %4994 = load ptr, ptr %8, align 8, !tbaa !5
  %4995 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %4994, i32 0, i32 3
  %4996 = load i8, ptr %4995, align 1, !tbaa !20
  %4997 = zext i8 %4996 to i32
  %4998 = and i32 %4997, 15
  %4999 = icmp eq i32 7, %4998
  br i1 %4999, label %5000, label %5001

5000:                                             ; preds = %4993
  br label %5083

5001:                                             ; preds = %4993
  %5002 = load ptr, ptr %8, align 8, !tbaa !5
  %5003 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5002, i32 0, i32 3
  %5004 = load i8, ptr %5003, align 1, !tbaa !20
  %5005 = zext i8 %5004 to i32
  %5006 = and i32 %5005, 15
  %5007 = icmp eq i32 8, %5006
  br i1 %5007, label %5008, label %5009

5008:                                             ; preds = %5001
  br label %5081

5009:                                             ; preds = %5001
  %5010 = load ptr, ptr %8, align 8, !tbaa !5
  %5011 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5010, i32 0, i32 3
  %5012 = load i8, ptr %5011, align 1, !tbaa !20
  %5013 = zext i8 %5012 to i32
  %5014 = and i32 %5013, 15
  %5015 = icmp eq i32 9, %5014
  br i1 %5015, label %5016, label %5017

5016:                                             ; preds = %5009
  br label %5079

5017:                                             ; preds = %5009
  %5018 = load ptr, ptr %8, align 8, !tbaa !5
  %5019 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5018, i32 0, i32 3
  %5020 = load i8, ptr %5019, align 1, !tbaa !20
  %5021 = zext i8 %5020 to i32
  %5022 = and i32 %5021, 15
  %5023 = icmp eq i32 10, %5022
  br i1 %5023, label %5024, label %5025

5024:                                             ; preds = %5017
  br label %5077

5025:                                             ; preds = %5017
  %5026 = load ptr, ptr %8, align 8, !tbaa !5
  %5027 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5026, i32 0, i32 3
  %5028 = load i8, ptr %5027, align 1, !tbaa !20
  %5029 = zext i8 %5028 to i32
  %5030 = and i32 %5029, 15
  %5031 = icmp eq i32 11, %5030
  br i1 %5031, label %5032, label %5033

5032:                                             ; preds = %5025
  br label %5075

5033:                                             ; preds = %5025
  %5034 = load ptr, ptr %8, align 8, !tbaa !5
  %5035 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5034, i32 0, i32 3
  %5036 = load i8, ptr %5035, align 1, !tbaa !20
  %5037 = zext i8 %5036 to i32
  %5038 = and i32 %5037, 15
  %5039 = icmp eq i32 12, %5038
  br i1 %5039, label %5040, label %5041

5040:                                             ; preds = %5033
  br label %5073

5041:                                             ; preds = %5033
  %5042 = load ptr, ptr %8, align 8, !tbaa !5
  %5043 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5042, i32 0, i32 3
  %5044 = load i8, ptr %5043, align 1, !tbaa !20
  %5045 = zext i8 %5044 to i32
  %5046 = and i32 %5045, 15
  %5047 = icmp eq i32 13, %5046
  br i1 %5047, label %5048, label %5049

5048:                                             ; preds = %5041
  br label %5071

5049:                                             ; preds = %5041
  %5050 = load ptr, ptr %8, align 8, !tbaa !5
  %5051 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5050, i32 0, i32 3
  %5052 = load i8, ptr %5051, align 1, !tbaa !20
  %5053 = zext i8 %5052 to i32
  %5054 = and i32 %5053, 15
  %5055 = icmp eq i32 14, %5054
  br i1 %5055, label %5056, label %5057

5056:                                             ; preds = %5049
  br label %5069

5057:                                             ; preds = %5049
  %5058 = load ptr, ptr %8, align 8, !tbaa !5
  %5059 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5058, i32 0, i32 3
  %5060 = load i8, ptr %5059, align 1, !tbaa !20
  %5061 = zext i8 %5060 to i32
  %5062 = and i32 %5061, 15
  %5063 = icmp eq i32 15, %5062
  br i1 %5063, label %5064, label %5065

5064:                                             ; preds = %5057
  br label %5067

5065:                                             ; preds = %5057
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

5066:                                             ; No predecessors!
  br label %5067

5067:                                             ; preds = %5066, %5064
  %5068 = phi i32 [ 15, %5064 ], [ 0, %5066 ]
  br label %5069

5069:                                             ; preds = %5067, %5056
  %5070 = phi i32 [ 14, %5056 ], [ %5068, %5067 ]
  br label %5071

5071:                                             ; preds = %5069, %5048
  %5072 = phi i32 [ 12, %5048 ], [ %5070, %5069 ]
  br label %5073

5073:                                             ; preds = %5071, %5040
  %5074 = phi i32 [ 12, %5040 ], [ %5072, %5071 ]
  br label %5075

5075:                                             ; preds = %5073, %5032
  %5076 = phi i32 [ 10, %5032 ], [ %5074, %5073 ]
  br label %5077

5077:                                             ; preds = %5075, %5024
  %5078 = phi i32 [ 10, %5024 ], [ %5076, %5075 ]
  br label %5079

5079:                                             ; preds = %5077, %5016
  %5080 = phi i32 [ 8, %5016 ], [ %5078, %5077 ]
  br label %5081

5081:                                             ; preds = %5079, %5008
  %5082 = phi i32 [ 8, %5008 ], [ %5080, %5079 ]
  br label %5083

5083:                                             ; preds = %5081, %5000
  %5084 = phi i32 [ 6, %5000 ], [ %5082, %5081 ]
  br label %5085

5085:                                             ; preds = %5083, %4992
  %5086 = phi i32 [ 6, %4992 ], [ %5084, %5083 ]
  br label %5087

5087:                                             ; preds = %5085, %4984
  %5088 = phi i32 [ 5, %4984 ], [ %5086, %5085 ]
  br label %5089

5089:                                             ; preds = %5087, %4976
  %5090 = phi i32 [ 4, %4976 ], [ %5088, %5087 ]
  br label %5091

5091:                                             ; preds = %5089, %4968
  %5092 = phi i32 [ 3, %4968 ], [ %5090, %5089 ]
  br label %5093

5093:                                             ; preds = %5091, %4960
  %5094 = phi i32 [ 2, %4960 ], [ %5092, %5091 ]
  br label %5095

5095:                                             ; preds = %5093, %4952
  %5096 = phi i32 [ 1, %4952 ], [ %5094, %5093 ]
  br label %5097

5097:                                             ; preds = %5095, %4944
  %5098 = phi i32 [ 0, %4944 ], [ %5096, %5095 ]
  br label %5105

5099:                                             ; preds = %4930
  %5100 = load ptr, ptr %8, align 8, !tbaa !5
  %5101 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5100, i32 0, i32 3
  %5102 = load i8, ptr %5101, align 1, !tbaa !20
  %5103 = zext i8 %5102 to i32
  %5104 = ashr i32 %5103, 4
  br label %5105

5105:                                             ; preds = %5099, %5097
  %5106 = phi i32 [ %5098, %5097 ], [ %5104, %5099 ]
  %5107 = icmp eq i32 13, %5106
  br i1 %5107, label %5108, label %5109

5108:                                             ; preds = %5105
  br label %5111

5109:                                             ; preds = %5105
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 675, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

5110:                                             ; No predecessors!
  br label %5111

5111:                                             ; preds = %5110, %5108
  %5112 = phi i32 [ 1, %5108 ], [ 0, %5110 ]
  br label %5113

5113:                                             ; preds = %5111, %4929
  %5114 = phi i32 [ 1, %4929 ], [ %5112, %5111 ]
  br label %5115

5115:                                             ; preds = %5113, %4750
  %5116 = phi i32 [ 2, %4750 ], [ %5114, %5113 ]
  br label %5117

5117:                                             ; preds = %5115, %4571
  %5118 = phi i32 [ 2, %4571 ], [ %5116, %5115 ]
  br label %5119

5119:                                             ; preds = %5117, %4392
  %5120 = phi i32 [ 4, %4392 ], [ %5118, %5117 ]
  br label %5121

5121:                                             ; preds = %5119, %4213
  %5122 = phi i32 [ 4, %4213 ], [ %5120, %5119 ]
  br label %5123

5123:                                             ; preds = %5121, %4034
  %5124 = phi i32 [ 8, %4034 ], [ %5122, %5121 ]
  br label %5125

5125:                                             ; preds = %5123, %3855
  %5126 = phi i32 [ 8, %3855 ], [ %5124, %5123 ]
  br label %5127

5127:                                             ; preds = %5125, %3676
  %5128 = phi i32 [ 1, %3676 ], [ %5126, %5125 ]
  br label %5129

5129:                                             ; preds = %5127, %3497
  %5130 = phi i32 [ 1, %3497 ], [ %5128, %5127 ]
  br label %5131

5131:                                             ; preds = %5129, %3318
  %5132 = phi i32 [ 2, %3318 ], [ %5130, %5129 ]
  br label %5133

5133:                                             ; preds = %5131, %3139
  %5134 = phi i32 [ 2, %3139 ], [ %5132, %5131 ]
  br label %5135

5135:                                             ; preds = %5133, %2960
  %5136 = phi i32 [ 4, %2960 ], [ %5134, %5133 ]
  br label %5137

5137:                                             ; preds = %5135, %2781
  %5138 = phi i32 [ 8, %2781 ], [ %5136, %5135 ]
  %5139 = load ptr, ptr %7, align 8, !tbaa !5
  %5140 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %5139, i32 0, i32 45
  %5141 = load i32, ptr %5140, align 4, !tbaa !14
  call void @libxsmm_aarch64_instruction_asimd_move(ptr noundef %2600, i32 noundef 1006633990, i32 noundef %2603, i32 noundef 127, i32 noundef %5138, i32 noundef %5141, i32 noundef 2)
  br label %7685

5142:                                             ; preds = %2590
  %5143 = load ptr, ptr %5, align 8, !tbaa !5
  %5144 = load ptr, ptr %6, align 8, !tbaa !5
  %5145 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %5144, i32 0, i32 5
  %5146 = load i32, ptr %5145, align 4, !tbaa !23
  %5147 = load ptr, ptr %8, align 8, !tbaa !5
  %5148 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5147, i32 0, i32 3
  %5149 = load i8, ptr %5148, align 1, !tbaa !20
  %5150 = zext i8 %5149 to i32
  %5151 = ashr i32 %5150, 4
  %5152 = icmp eq i32 0, %5151
  br i1 %5152, label %5153, label %5315

5153:                                             ; preds = %5142
  %5154 = load ptr, ptr %8, align 8, !tbaa !5
  %5155 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5154, i32 0, i32 3
  %5156 = load i8, ptr %5155, align 1, !tbaa !20
  %5157 = zext i8 %5156 to i32
  %5158 = and i32 %5157, 15
  %5159 = icmp eq i32 0, %5158
  br i1 %5159, label %5160, label %5161

5160:                                             ; preds = %5153
  br label %5313

5161:                                             ; preds = %5153
  %5162 = load ptr, ptr %8, align 8, !tbaa !5
  %5163 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5162, i32 0, i32 3
  %5164 = load i8, ptr %5163, align 1, !tbaa !20
  %5165 = zext i8 %5164 to i32
  %5166 = and i32 %5165, 15
  %5167 = icmp eq i32 1, %5166
  br i1 %5167, label %5168, label %5169

5168:                                             ; preds = %5161
  br label %5311

5169:                                             ; preds = %5161
  %5170 = load ptr, ptr %8, align 8, !tbaa !5
  %5171 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5170, i32 0, i32 3
  %5172 = load i8, ptr %5171, align 1, !tbaa !20
  %5173 = zext i8 %5172 to i32
  %5174 = and i32 %5173, 15
  %5175 = icmp eq i32 2, %5174
  br i1 %5175, label %5176, label %5177

5176:                                             ; preds = %5169
  br label %5309

5177:                                             ; preds = %5169
  %5178 = load ptr, ptr %8, align 8, !tbaa !5
  %5179 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5178, i32 0, i32 3
  %5180 = load i8, ptr %5179, align 1, !tbaa !20
  %5181 = zext i8 %5180 to i32
  %5182 = and i32 %5181, 15
  %5183 = icmp eq i32 3, %5182
  br i1 %5183, label %5184, label %5185

5184:                                             ; preds = %5177
  br label %5307

5185:                                             ; preds = %5177
  %5186 = load ptr, ptr %8, align 8, !tbaa !5
  %5187 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5186, i32 0, i32 3
  %5188 = load i8, ptr %5187, align 1, !tbaa !20
  %5189 = zext i8 %5188 to i32
  %5190 = and i32 %5189, 15
  %5191 = icmp eq i32 4, %5190
  br i1 %5191, label %5192, label %5193

5192:                                             ; preds = %5185
  br label %5305

5193:                                             ; preds = %5185
  %5194 = load ptr, ptr %8, align 8, !tbaa !5
  %5195 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5194, i32 0, i32 3
  %5196 = load i8, ptr %5195, align 1, !tbaa !20
  %5197 = zext i8 %5196 to i32
  %5198 = and i32 %5197, 15
  %5199 = icmp eq i32 5, %5198
  br i1 %5199, label %5200, label %5201

5200:                                             ; preds = %5193
  br label %5303

5201:                                             ; preds = %5193
  %5202 = load ptr, ptr %8, align 8, !tbaa !5
  %5203 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5202, i32 0, i32 3
  %5204 = load i8, ptr %5203, align 1, !tbaa !20
  %5205 = zext i8 %5204 to i32
  %5206 = and i32 %5205, 15
  %5207 = icmp eq i32 6, %5206
  br i1 %5207, label %5208, label %5209

5208:                                             ; preds = %5201
  br label %5301

5209:                                             ; preds = %5201
  %5210 = load ptr, ptr %8, align 8, !tbaa !5
  %5211 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5210, i32 0, i32 3
  %5212 = load i8, ptr %5211, align 1, !tbaa !20
  %5213 = zext i8 %5212 to i32
  %5214 = and i32 %5213, 15
  %5215 = icmp eq i32 7, %5214
  br i1 %5215, label %5216, label %5217

5216:                                             ; preds = %5209
  br label %5299

5217:                                             ; preds = %5209
  %5218 = load ptr, ptr %8, align 8, !tbaa !5
  %5219 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5218, i32 0, i32 3
  %5220 = load i8, ptr %5219, align 1, !tbaa !20
  %5221 = zext i8 %5220 to i32
  %5222 = and i32 %5221, 15
  %5223 = icmp eq i32 8, %5222
  br i1 %5223, label %5224, label %5225

5224:                                             ; preds = %5217
  br label %5297

5225:                                             ; preds = %5217
  %5226 = load ptr, ptr %8, align 8, !tbaa !5
  %5227 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5226, i32 0, i32 3
  %5228 = load i8, ptr %5227, align 1, !tbaa !20
  %5229 = zext i8 %5228 to i32
  %5230 = and i32 %5229, 15
  %5231 = icmp eq i32 9, %5230
  br i1 %5231, label %5232, label %5233

5232:                                             ; preds = %5225
  br label %5295

5233:                                             ; preds = %5225
  %5234 = load ptr, ptr %8, align 8, !tbaa !5
  %5235 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5234, i32 0, i32 3
  %5236 = load i8, ptr %5235, align 1, !tbaa !20
  %5237 = zext i8 %5236 to i32
  %5238 = and i32 %5237, 15
  %5239 = icmp eq i32 10, %5238
  br i1 %5239, label %5240, label %5241

5240:                                             ; preds = %5233
  br label %5293

5241:                                             ; preds = %5233
  %5242 = load ptr, ptr %8, align 8, !tbaa !5
  %5243 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5242, i32 0, i32 3
  %5244 = load i8, ptr %5243, align 1, !tbaa !20
  %5245 = zext i8 %5244 to i32
  %5246 = and i32 %5245, 15
  %5247 = icmp eq i32 11, %5246
  br i1 %5247, label %5248, label %5249

5248:                                             ; preds = %5241
  br label %5291

5249:                                             ; preds = %5241
  %5250 = load ptr, ptr %8, align 8, !tbaa !5
  %5251 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5250, i32 0, i32 3
  %5252 = load i8, ptr %5251, align 1, !tbaa !20
  %5253 = zext i8 %5252 to i32
  %5254 = and i32 %5253, 15
  %5255 = icmp eq i32 12, %5254
  br i1 %5255, label %5256, label %5257

5256:                                             ; preds = %5249
  br label %5289

5257:                                             ; preds = %5249
  %5258 = load ptr, ptr %8, align 8, !tbaa !5
  %5259 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5258, i32 0, i32 3
  %5260 = load i8, ptr %5259, align 1, !tbaa !20
  %5261 = zext i8 %5260 to i32
  %5262 = and i32 %5261, 15
  %5263 = icmp eq i32 13, %5262
  br i1 %5263, label %5264, label %5265

5264:                                             ; preds = %5257
  br label %5287

5265:                                             ; preds = %5257
  %5266 = load ptr, ptr %8, align 8, !tbaa !5
  %5267 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5266, i32 0, i32 3
  %5268 = load i8, ptr %5267, align 1, !tbaa !20
  %5269 = zext i8 %5268 to i32
  %5270 = and i32 %5269, 15
  %5271 = icmp eq i32 14, %5270
  br i1 %5271, label %5272, label %5273

5272:                                             ; preds = %5265
  br label %5285

5273:                                             ; preds = %5265
  %5274 = load ptr, ptr %8, align 8, !tbaa !5
  %5275 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5274, i32 0, i32 3
  %5276 = load i8, ptr %5275, align 1, !tbaa !20
  %5277 = zext i8 %5276 to i32
  %5278 = and i32 %5277, 15
  %5279 = icmp eq i32 15, %5278
  br i1 %5279, label %5280, label %5281

5280:                                             ; preds = %5273
  br label %5283

5281:                                             ; preds = %5273
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

5282:                                             ; No predecessors!
  br label %5283

5283:                                             ; preds = %5282, %5280
  %5284 = phi i32 [ 15, %5280 ], [ 0, %5282 ]
  br label %5285

5285:                                             ; preds = %5283, %5272
  %5286 = phi i32 [ 14, %5272 ], [ %5284, %5283 ]
  br label %5287

5287:                                             ; preds = %5285, %5264
  %5288 = phi i32 [ 12, %5264 ], [ %5286, %5285 ]
  br label %5289

5289:                                             ; preds = %5287, %5256
  %5290 = phi i32 [ 12, %5256 ], [ %5288, %5287 ]
  br label %5291

5291:                                             ; preds = %5289, %5248
  %5292 = phi i32 [ 10, %5248 ], [ %5290, %5289 ]
  br label %5293

5293:                                             ; preds = %5291, %5240
  %5294 = phi i32 [ 10, %5240 ], [ %5292, %5291 ]
  br label %5295

5295:                                             ; preds = %5293, %5232
  %5296 = phi i32 [ 8, %5232 ], [ %5294, %5293 ]
  br label %5297

5297:                                             ; preds = %5295, %5224
  %5298 = phi i32 [ 8, %5224 ], [ %5296, %5295 ]
  br label %5299

5299:                                             ; preds = %5297, %5216
  %5300 = phi i32 [ 6, %5216 ], [ %5298, %5297 ]
  br label %5301

5301:                                             ; preds = %5299, %5208
  %5302 = phi i32 [ 6, %5208 ], [ %5300, %5299 ]
  br label %5303

5303:                                             ; preds = %5301, %5200
  %5304 = phi i32 [ 5, %5200 ], [ %5302, %5301 ]
  br label %5305

5305:                                             ; preds = %5303, %5192
  %5306 = phi i32 [ 4, %5192 ], [ %5304, %5303 ]
  br label %5307

5307:                                             ; preds = %5305, %5184
  %5308 = phi i32 [ 3, %5184 ], [ %5306, %5305 ]
  br label %5309

5309:                                             ; preds = %5307, %5176
  %5310 = phi i32 [ 2, %5176 ], [ %5308, %5307 ]
  br label %5311

5311:                                             ; preds = %5309, %5168
  %5312 = phi i32 [ 1, %5168 ], [ %5310, %5309 ]
  br label %5313

5313:                                             ; preds = %5311, %5160
  %5314 = phi i32 [ 0, %5160 ], [ %5312, %5311 ]
  br label %5321

5315:                                             ; preds = %5142
  %5316 = load ptr, ptr %8, align 8, !tbaa !5
  %5317 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5316, i32 0, i32 3
  %5318 = load i8, ptr %5317, align 1, !tbaa !20
  %5319 = zext i8 %5318 to i32
  %5320 = ashr i32 %5319, 4
  br label %5321

5321:                                             ; preds = %5315, %5313
  %5322 = phi i32 [ %5314, %5313 ], [ %5320, %5315 ]
  %5323 = icmp eq i32 0, %5322
  br i1 %5323, label %5324, label %5325

5324:                                             ; preds = %5321
  br label %7680

5325:                                             ; preds = %5321
  %5326 = load ptr, ptr %8, align 8, !tbaa !5
  %5327 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5326, i32 0, i32 3
  %5328 = load i8, ptr %5327, align 1, !tbaa !20
  %5329 = zext i8 %5328 to i32
  %5330 = ashr i32 %5329, 4
  %5331 = icmp eq i32 0, %5330
  br i1 %5331, label %5332, label %5494

5332:                                             ; preds = %5325
  %5333 = load ptr, ptr %8, align 8, !tbaa !5
  %5334 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5333, i32 0, i32 3
  %5335 = load i8, ptr %5334, align 1, !tbaa !20
  %5336 = zext i8 %5335 to i32
  %5337 = and i32 %5336, 15
  %5338 = icmp eq i32 0, %5337
  br i1 %5338, label %5339, label %5340

5339:                                             ; preds = %5332
  br label %5492

5340:                                             ; preds = %5332
  %5341 = load ptr, ptr %8, align 8, !tbaa !5
  %5342 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5341, i32 0, i32 3
  %5343 = load i8, ptr %5342, align 1, !tbaa !20
  %5344 = zext i8 %5343 to i32
  %5345 = and i32 %5344, 15
  %5346 = icmp eq i32 1, %5345
  br i1 %5346, label %5347, label %5348

5347:                                             ; preds = %5340
  br label %5490

5348:                                             ; preds = %5340
  %5349 = load ptr, ptr %8, align 8, !tbaa !5
  %5350 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5349, i32 0, i32 3
  %5351 = load i8, ptr %5350, align 1, !tbaa !20
  %5352 = zext i8 %5351 to i32
  %5353 = and i32 %5352, 15
  %5354 = icmp eq i32 2, %5353
  br i1 %5354, label %5355, label %5356

5355:                                             ; preds = %5348
  br label %5488

5356:                                             ; preds = %5348
  %5357 = load ptr, ptr %8, align 8, !tbaa !5
  %5358 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5357, i32 0, i32 3
  %5359 = load i8, ptr %5358, align 1, !tbaa !20
  %5360 = zext i8 %5359 to i32
  %5361 = and i32 %5360, 15
  %5362 = icmp eq i32 3, %5361
  br i1 %5362, label %5363, label %5364

5363:                                             ; preds = %5356
  br label %5486

5364:                                             ; preds = %5356
  %5365 = load ptr, ptr %8, align 8, !tbaa !5
  %5366 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5365, i32 0, i32 3
  %5367 = load i8, ptr %5366, align 1, !tbaa !20
  %5368 = zext i8 %5367 to i32
  %5369 = and i32 %5368, 15
  %5370 = icmp eq i32 4, %5369
  br i1 %5370, label %5371, label %5372

5371:                                             ; preds = %5364
  br label %5484

5372:                                             ; preds = %5364
  %5373 = load ptr, ptr %8, align 8, !tbaa !5
  %5374 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5373, i32 0, i32 3
  %5375 = load i8, ptr %5374, align 1, !tbaa !20
  %5376 = zext i8 %5375 to i32
  %5377 = and i32 %5376, 15
  %5378 = icmp eq i32 5, %5377
  br i1 %5378, label %5379, label %5380

5379:                                             ; preds = %5372
  br label %5482

5380:                                             ; preds = %5372
  %5381 = load ptr, ptr %8, align 8, !tbaa !5
  %5382 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5381, i32 0, i32 3
  %5383 = load i8, ptr %5382, align 1, !tbaa !20
  %5384 = zext i8 %5383 to i32
  %5385 = and i32 %5384, 15
  %5386 = icmp eq i32 6, %5385
  br i1 %5386, label %5387, label %5388

5387:                                             ; preds = %5380
  br label %5480

5388:                                             ; preds = %5380
  %5389 = load ptr, ptr %8, align 8, !tbaa !5
  %5390 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5389, i32 0, i32 3
  %5391 = load i8, ptr %5390, align 1, !tbaa !20
  %5392 = zext i8 %5391 to i32
  %5393 = and i32 %5392, 15
  %5394 = icmp eq i32 7, %5393
  br i1 %5394, label %5395, label %5396

5395:                                             ; preds = %5388
  br label %5478

5396:                                             ; preds = %5388
  %5397 = load ptr, ptr %8, align 8, !tbaa !5
  %5398 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5397, i32 0, i32 3
  %5399 = load i8, ptr %5398, align 1, !tbaa !20
  %5400 = zext i8 %5399 to i32
  %5401 = and i32 %5400, 15
  %5402 = icmp eq i32 8, %5401
  br i1 %5402, label %5403, label %5404

5403:                                             ; preds = %5396
  br label %5476

5404:                                             ; preds = %5396
  %5405 = load ptr, ptr %8, align 8, !tbaa !5
  %5406 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5405, i32 0, i32 3
  %5407 = load i8, ptr %5406, align 1, !tbaa !20
  %5408 = zext i8 %5407 to i32
  %5409 = and i32 %5408, 15
  %5410 = icmp eq i32 9, %5409
  br i1 %5410, label %5411, label %5412

5411:                                             ; preds = %5404
  br label %5474

5412:                                             ; preds = %5404
  %5413 = load ptr, ptr %8, align 8, !tbaa !5
  %5414 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5413, i32 0, i32 3
  %5415 = load i8, ptr %5414, align 1, !tbaa !20
  %5416 = zext i8 %5415 to i32
  %5417 = and i32 %5416, 15
  %5418 = icmp eq i32 10, %5417
  br i1 %5418, label %5419, label %5420

5419:                                             ; preds = %5412
  br label %5472

5420:                                             ; preds = %5412
  %5421 = load ptr, ptr %8, align 8, !tbaa !5
  %5422 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5421, i32 0, i32 3
  %5423 = load i8, ptr %5422, align 1, !tbaa !20
  %5424 = zext i8 %5423 to i32
  %5425 = and i32 %5424, 15
  %5426 = icmp eq i32 11, %5425
  br i1 %5426, label %5427, label %5428

5427:                                             ; preds = %5420
  br label %5470

5428:                                             ; preds = %5420
  %5429 = load ptr, ptr %8, align 8, !tbaa !5
  %5430 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5429, i32 0, i32 3
  %5431 = load i8, ptr %5430, align 1, !tbaa !20
  %5432 = zext i8 %5431 to i32
  %5433 = and i32 %5432, 15
  %5434 = icmp eq i32 12, %5433
  br i1 %5434, label %5435, label %5436

5435:                                             ; preds = %5428
  br label %5468

5436:                                             ; preds = %5428
  %5437 = load ptr, ptr %8, align 8, !tbaa !5
  %5438 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5437, i32 0, i32 3
  %5439 = load i8, ptr %5438, align 1, !tbaa !20
  %5440 = zext i8 %5439 to i32
  %5441 = and i32 %5440, 15
  %5442 = icmp eq i32 13, %5441
  br i1 %5442, label %5443, label %5444

5443:                                             ; preds = %5436
  br label %5466

5444:                                             ; preds = %5436
  %5445 = load ptr, ptr %8, align 8, !tbaa !5
  %5446 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5445, i32 0, i32 3
  %5447 = load i8, ptr %5446, align 1, !tbaa !20
  %5448 = zext i8 %5447 to i32
  %5449 = and i32 %5448, 15
  %5450 = icmp eq i32 14, %5449
  br i1 %5450, label %5451, label %5452

5451:                                             ; preds = %5444
  br label %5464

5452:                                             ; preds = %5444
  %5453 = load ptr, ptr %8, align 8, !tbaa !5
  %5454 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5453, i32 0, i32 3
  %5455 = load i8, ptr %5454, align 1, !tbaa !20
  %5456 = zext i8 %5455 to i32
  %5457 = and i32 %5456, 15
  %5458 = icmp eq i32 15, %5457
  br i1 %5458, label %5459, label %5460

5459:                                             ; preds = %5452
  br label %5462

5460:                                             ; preds = %5452
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

5461:                                             ; No predecessors!
  br label %5462

5462:                                             ; preds = %5461, %5459
  %5463 = phi i32 [ 15, %5459 ], [ 0, %5461 ]
  br label %5464

5464:                                             ; preds = %5462, %5451
  %5465 = phi i32 [ 14, %5451 ], [ %5463, %5462 ]
  br label %5466

5466:                                             ; preds = %5464, %5443
  %5467 = phi i32 [ 12, %5443 ], [ %5465, %5464 ]
  br label %5468

5468:                                             ; preds = %5466, %5435
  %5469 = phi i32 [ 12, %5435 ], [ %5467, %5466 ]
  br label %5470

5470:                                             ; preds = %5468, %5427
  %5471 = phi i32 [ 10, %5427 ], [ %5469, %5468 ]
  br label %5472

5472:                                             ; preds = %5470, %5419
  %5473 = phi i32 [ 10, %5419 ], [ %5471, %5470 ]
  br label %5474

5474:                                             ; preds = %5472, %5411
  %5475 = phi i32 [ 8, %5411 ], [ %5473, %5472 ]
  br label %5476

5476:                                             ; preds = %5474, %5403
  %5477 = phi i32 [ 8, %5403 ], [ %5475, %5474 ]
  br label %5478

5478:                                             ; preds = %5476, %5395
  %5479 = phi i32 [ 6, %5395 ], [ %5477, %5476 ]
  br label %5480

5480:                                             ; preds = %5478, %5387
  %5481 = phi i32 [ 6, %5387 ], [ %5479, %5478 ]
  br label %5482

5482:                                             ; preds = %5480, %5379
  %5483 = phi i32 [ 5, %5379 ], [ %5481, %5480 ]
  br label %5484

5484:                                             ; preds = %5482, %5371
  %5485 = phi i32 [ 4, %5371 ], [ %5483, %5482 ]
  br label %5486

5486:                                             ; preds = %5484, %5363
  %5487 = phi i32 [ 3, %5363 ], [ %5485, %5484 ]
  br label %5488

5488:                                             ; preds = %5486, %5355
  %5489 = phi i32 [ 2, %5355 ], [ %5487, %5486 ]
  br label %5490

5490:                                             ; preds = %5488, %5347
  %5491 = phi i32 [ 1, %5347 ], [ %5489, %5488 ]
  br label %5492

5492:                                             ; preds = %5490, %5339
  %5493 = phi i32 [ 0, %5339 ], [ %5491, %5490 ]
  br label %5500

5494:                                             ; preds = %5325
  %5495 = load ptr, ptr %8, align 8, !tbaa !5
  %5496 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5495, i32 0, i32 3
  %5497 = load i8, ptr %5496, align 1, !tbaa !20
  %5498 = zext i8 %5497 to i32
  %5499 = ashr i32 %5498, 4
  br label %5500

5500:                                             ; preds = %5494, %5492
  %5501 = phi i32 [ %5493, %5492 ], [ %5499, %5494 ]
  %5502 = icmp eq i32 1, %5501
  br i1 %5502, label %5503, label %5504

5503:                                             ; preds = %5500
  br label %7678

5504:                                             ; preds = %5500
  %5505 = load ptr, ptr %8, align 8, !tbaa !5
  %5506 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5505, i32 0, i32 3
  %5507 = load i8, ptr %5506, align 1, !tbaa !20
  %5508 = zext i8 %5507 to i32
  %5509 = ashr i32 %5508, 4
  %5510 = icmp eq i32 0, %5509
  br i1 %5510, label %5511, label %5673

5511:                                             ; preds = %5504
  %5512 = load ptr, ptr %8, align 8, !tbaa !5
  %5513 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5512, i32 0, i32 3
  %5514 = load i8, ptr %5513, align 1, !tbaa !20
  %5515 = zext i8 %5514 to i32
  %5516 = and i32 %5515, 15
  %5517 = icmp eq i32 0, %5516
  br i1 %5517, label %5518, label %5519

5518:                                             ; preds = %5511
  br label %5671

5519:                                             ; preds = %5511
  %5520 = load ptr, ptr %8, align 8, !tbaa !5
  %5521 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5520, i32 0, i32 3
  %5522 = load i8, ptr %5521, align 1, !tbaa !20
  %5523 = zext i8 %5522 to i32
  %5524 = and i32 %5523, 15
  %5525 = icmp eq i32 1, %5524
  br i1 %5525, label %5526, label %5527

5526:                                             ; preds = %5519
  br label %5669

5527:                                             ; preds = %5519
  %5528 = load ptr, ptr %8, align 8, !tbaa !5
  %5529 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5528, i32 0, i32 3
  %5530 = load i8, ptr %5529, align 1, !tbaa !20
  %5531 = zext i8 %5530 to i32
  %5532 = and i32 %5531, 15
  %5533 = icmp eq i32 2, %5532
  br i1 %5533, label %5534, label %5535

5534:                                             ; preds = %5527
  br label %5667

5535:                                             ; preds = %5527
  %5536 = load ptr, ptr %8, align 8, !tbaa !5
  %5537 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5536, i32 0, i32 3
  %5538 = load i8, ptr %5537, align 1, !tbaa !20
  %5539 = zext i8 %5538 to i32
  %5540 = and i32 %5539, 15
  %5541 = icmp eq i32 3, %5540
  br i1 %5541, label %5542, label %5543

5542:                                             ; preds = %5535
  br label %5665

5543:                                             ; preds = %5535
  %5544 = load ptr, ptr %8, align 8, !tbaa !5
  %5545 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5544, i32 0, i32 3
  %5546 = load i8, ptr %5545, align 1, !tbaa !20
  %5547 = zext i8 %5546 to i32
  %5548 = and i32 %5547, 15
  %5549 = icmp eq i32 4, %5548
  br i1 %5549, label %5550, label %5551

5550:                                             ; preds = %5543
  br label %5663

5551:                                             ; preds = %5543
  %5552 = load ptr, ptr %8, align 8, !tbaa !5
  %5553 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5552, i32 0, i32 3
  %5554 = load i8, ptr %5553, align 1, !tbaa !20
  %5555 = zext i8 %5554 to i32
  %5556 = and i32 %5555, 15
  %5557 = icmp eq i32 5, %5556
  br i1 %5557, label %5558, label %5559

5558:                                             ; preds = %5551
  br label %5661

5559:                                             ; preds = %5551
  %5560 = load ptr, ptr %8, align 8, !tbaa !5
  %5561 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5560, i32 0, i32 3
  %5562 = load i8, ptr %5561, align 1, !tbaa !20
  %5563 = zext i8 %5562 to i32
  %5564 = and i32 %5563, 15
  %5565 = icmp eq i32 6, %5564
  br i1 %5565, label %5566, label %5567

5566:                                             ; preds = %5559
  br label %5659

5567:                                             ; preds = %5559
  %5568 = load ptr, ptr %8, align 8, !tbaa !5
  %5569 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5568, i32 0, i32 3
  %5570 = load i8, ptr %5569, align 1, !tbaa !20
  %5571 = zext i8 %5570 to i32
  %5572 = and i32 %5571, 15
  %5573 = icmp eq i32 7, %5572
  br i1 %5573, label %5574, label %5575

5574:                                             ; preds = %5567
  br label %5657

5575:                                             ; preds = %5567
  %5576 = load ptr, ptr %8, align 8, !tbaa !5
  %5577 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5576, i32 0, i32 3
  %5578 = load i8, ptr %5577, align 1, !tbaa !20
  %5579 = zext i8 %5578 to i32
  %5580 = and i32 %5579, 15
  %5581 = icmp eq i32 8, %5580
  br i1 %5581, label %5582, label %5583

5582:                                             ; preds = %5575
  br label %5655

5583:                                             ; preds = %5575
  %5584 = load ptr, ptr %8, align 8, !tbaa !5
  %5585 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5584, i32 0, i32 3
  %5586 = load i8, ptr %5585, align 1, !tbaa !20
  %5587 = zext i8 %5586 to i32
  %5588 = and i32 %5587, 15
  %5589 = icmp eq i32 9, %5588
  br i1 %5589, label %5590, label %5591

5590:                                             ; preds = %5583
  br label %5653

5591:                                             ; preds = %5583
  %5592 = load ptr, ptr %8, align 8, !tbaa !5
  %5593 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5592, i32 0, i32 3
  %5594 = load i8, ptr %5593, align 1, !tbaa !20
  %5595 = zext i8 %5594 to i32
  %5596 = and i32 %5595, 15
  %5597 = icmp eq i32 10, %5596
  br i1 %5597, label %5598, label %5599

5598:                                             ; preds = %5591
  br label %5651

5599:                                             ; preds = %5591
  %5600 = load ptr, ptr %8, align 8, !tbaa !5
  %5601 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5600, i32 0, i32 3
  %5602 = load i8, ptr %5601, align 1, !tbaa !20
  %5603 = zext i8 %5602 to i32
  %5604 = and i32 %5603, 15
  %5605 = icmp eq i32 11, %5604
  br i1 %5605, label %5606, label %5607

5606:                                             ; preds = %5599
  br label %5649

5607:                                             ; preds = %5599
  %5608 = load ptr, ptr %8, align 8, !tbaa !5
  %5609 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5608, i32 0, i32 3
  %5610 = load i8, ptr %5609, align 1, !tbaa !20
  %5611 = zext i8 %5610 to i32
  %5612 = and i32 %5611, 15
  %5613 = icmp eq i32 12, %5612
  br i1 %5613, label %5614, label %5615

5614:                                             ; preds = %5607
  br label %5647

5615:                                             ; preds = %5607
  %5616 = load ptr, ptr %8, align 8, !tbaa !5
  %5617 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5616, i32 0, i32 3
  %5618 = load i8, ptr %5617, align 1, !tbaa !20
  %5619 = zext i8 %5618 to i32
  %5620 = and i32 %5619, 15
  %5621 = icmp eq i32 13, %5620
  br i1 %5621, label %5622, label %5623

5622:                                             ; preds = %5615
  br label %5645

5623:                                             ; preds = %5615
  %5624 = load ptr, ptr %8, align 8, !tbaa !5
  %5625 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5624, i32 0, i32 3
  %5626 = load i8, ptr %5625, align 1, !tbaa !20
  %5627 = zext i8 %5626 to i32
  %5628 = and i32 %5627, 15
  %5629 = icmp eq i32 14, %5628
  br i1 %5629, label %5630, label %5631

5630:                                             ; preds = %5623
  br label %5643

5631:                                             ; preds = %5623
  %5632 = load ptr, ptr %8, align 8, !tbaa !5
  %5633 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5632, i32 0, i32 3
  %5634 = load i8, ptr %5633, align 1, !tbaa !20
  %5635 = zext i8 %5634 to i32
  %5636 = and i32 %5635, 15
  %5637 = icmp eq i32 15, %5636
  br i1 %5637, label %5638, label %5639

5638:                                             ; preds = %5631
  br label %5641

5639:                                             ; preds = %5631
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

5640:                                             ; No predecessors!
  br label %5641

5641:                                             ; preds = %5640, %5638
  %5642 = phi i32 [ 15, %5638 ], [ 0, %5640 ]
  br label %5643

5643:                                             ; preds = %5641, %5630
  %5644 = phi i32 [ 14, %5630 ], [ %5642, %5641 ]
  br label %5645

5645:                                             ; preds = %5643, %5622
  %5646 = phi i32 [ 12, %5622 ], [ %5644, %5643 ]
  br label %5647

5647:                                             ; preds = %5645, %5614
  %5648 = phi i32 [ 12, %5614 ], [ %5646, %5645 ]
  br label %5649

5649:                                             ; preds = %5647, %5606
  %5650 = phi i32 [ 10, %5606 ], [ %5648, %5647 ]
  br label %5651

5651:                                             ; preds = %5649, %5598
  %5652 = phi i32 [ 10, %5598 ], [ %5650, %5649 ]
  br label %5653

5653:                                             ; preds = %5651, %5590
  %5654 = phi i32 [ 8, %5590 ], [ %5652, %5651 ]
  br label %5655

5655:                                             ; preds = %5653, %5582
  %5656 = phi i32 [ 8, %5582 ], [ %5654, %5653 ]
  br label %5657

5657:                                             ; preds = %5655, %5574
  %5658 = phi i32 [ 6, %5574 ], [ %5656, %5655 ]
  br label %5659

5659:                                             ; preds = %5657, %5566
  %5660 = phi i32 [ 6, %5566 ], [ %5658, %5657 ]
  br label %5661

5661:                                             ; preds = %5659, %5558
  %5662 = phi i32 [ 5, %5558 ], [ %5660, %5659 ]
  br label %5663

5663:                                             ; preds = %5661, %5550
  %5664 = phi i32 [ 4, %5550 ], [ %5662, %5661 ]
  br label %5665

5665:                                             ; preds = %5663, %5542
  %5666 = phi i32 [ 3, %5542 ], [ %5664, %5663 ]
  br label %5667

5667:                                             ; preds = %5665, %5534
  %5668 = phi i32 [ 2, %5534 ], [ %5666, %5665 ]
  br label %5669

5669:                                             ; preds = %5667, %5526
  %5670 = phi i32 [ 1, %5526 ], [ %5668, %5667 ]
  br label %5671

5671:                                             ; preds = %5669, %5518
  %5672 = phi i32 [ 0, %5518 ], [ %5670, %5669 ]
  br label %5679

5673:                                             ; preds = %5504
  %5674 = load ptr, ptr %8, align 8, !tbaa !5
  %5675 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5674, i32 0, i32 3
  %5676 = load i8, ptr %5675, align 1, !tbaa !20
  %5677 = zext i8 %5676 to i32
  %5678 = ashr i32 %5677, 4
  br label %5679

5679:                                             ; preds = %5673, %5671
  %5680 = phi i32 [ %5672, %5671 ], [ %5678, %5673 ]
  %5681 = icmp eq i32 2, %5680
  br i1 %5681, label %5682, label %5683

5682:                                             ; preds = %5679
  br label %7676

5683:                                             ; preds = %5679
  %5684 = load ptr, ptr %8, align 8, !tbaa !5
  %5685 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5684, i32 0, i32 3
  %5686 = load i8, ptr %5685, align 1, !tbaa !20
  %5687 = zext i8 %5686 to i32
  %5688 = ashr i32 %5687, 4
  %5689 = icmp eq i32 0, %5688
  br i1 %5689, label %5690, label %5852

5690:                                             ; preds = %5683
  %5691 = load ptr, ptr %8, align 8, !tbaa !5
  %5692 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5691, i32 0, i32 3
  %5693 = load i8, ptr %5692, align 1, !tbaa !20
  %5694 = zext i8 %5693 to i32
  %5695 = and i32 %5694, 15
  %5696 = icmp eq i32 0, %5695
  br i1 %5696, label %5697, label %5698

5697:                                             ; preds = %5690
  br label %5850

5698:                                             ; preds = %5690
  %5699 = load ptr, ptr %8, align 8, !tbaa !5
  %5700 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5699, i32 0, i32 3
  %5701 = load i8, ptr %5700, align 1, !tbaa !20
  %5702 = zext i8 %5701 to i32
  %5703 = and i32 %5702, 15
  %5704 = icmp eq i32 1, %5703
  br i1 %5704, label %5705, label %5706

5705:                                             ; preds = %5698
  br label %5848

5706:                                             ; preds = %5698
  %5707 = load ptr, ptr %8, align 8, !tbaa !5
  %5708 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5707, i32 0, i32 3
  %5709 = load i8, ptr %5708, align 1, !tbaa !20
  %5710 = zext i8 %5709 to i32
  %5711 = and i32 %5710, 15
  %5712 = icmp eq i32 2, %5711
  br i1 %5712, label %5713, label %5714

5713:                                             ; preds = %5706
  br label %5846

5714:                                             ; preds = %5706
  %5715 = load ptr, ptr %8, align 8, !tbaa !5
  %5716 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5715, i32 0, i32 3
  %5717 = load i8, ptr %5716, align 1, !tbaa !20
  %5718 = zext i8 %5717 to i32
  %5719 = and i32 %5718, 15
  %5720 = icmp eq i32 3, %5719
  br i1 %5720, label %5721, label %5722

5721:                                             ; preds = %5714
  br label %5844

5722:                                             ; preds = %5714
  %5723 = load ptr, ptr %8, align 8, !tbaa !5
  %5724 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5723, i32 0, i32 3
  %5725 = load i8, ptr %5724, align 1, !tbaa !20
  %5726 = zext i8 %5725 to i32
  %5727 = and i32 %5726, 15
  %5728 = icmp eq i32 4, %5727
  br i1 %5728, label %5729, label %5730

5729:                                             ; preds = %5722
  br label %5842

5730:                                             ; preds = %5722
  %5731 = load ptr, ptr %8, align 8, !tbaa !5
  %5732 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5731, i32 0, i32 3
  %5733 = load i8, ptr %5732, align 1, !tbaa !20
  %5734 = zext i8 %5733 to i32
  %5735 = and i32 %5734, 15
  %5736 = icmp eq i32 5, %5735
  br i1 %5736, label %5737, label %5738

5737:                                             ; preds = %5730
  br label %5840

5738:                                             ; preds = %5730
  %5739 = load ptr, ptr %8, align 8, !tbaa !5
  %5740 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5739, i32 0, i32 3
  %5741 = load i8, ptr %5740, align 1, !tbaa !20
  %5742 = zext i8 %5741 to i32
  %5743 = and i32 %5742, 15
  %5744 = icmp eq i32 6, %5743
  br i1 %5744, label %5745, label %5746

5745:                                             ; preds = %5738
  br label %5838

5746:                                             ; preds = %5738
  %5747 = load ptr, ptr %8, align 8, !tbaa !5
  %5748 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5747, i32 0, i32 3
  %5749 = load i8, ptr %5748, align 1, !tbaa !20
  %5750 = zext i8 %5749 to i32
  %5751 = and i32 %5750, 15
  %5752 = icmp eq i32 7, %5751
  br i1 %5752, label %5753, label %5754

5753:                                             ; preds = %5746
  br label %5836

5754:                                             ; preds = %5746
  %5755 = load ptr, ptr %8, align 8, !tbaa !5
  %5756 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5755, i32 0, i32 3
  %5757 = load i8, ptr %5756, align 1, !tbaa !20
  %5758 = zext i8 %5757 to i32
  %5759 = and i32 %5758, 15
  %5760 = icmp eq i32 8, %5759
  br i1 %5760, label %5761, label %5762

5761:                                             ; preds = %5754
  br label %5834

5762:                                             ; preds = %5754
  %5763 = load ptr, ptr %8, align 8, !tbaa !5
  %5764 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5763, i32 0, i32 3
  %5765 = load i8, ptr %5764, align 1, !tbaa !20
  %5766 = zext i8 %5765 to i32
  %5767 = and i32 %5766, 15
  %5768 = icmp eq i32 9, %5767
  br i1 %5768, label %5769, label %5770

5769:                                             ; preds = %5762
  br label %5832

5770:                                             ; preds = %5762
  %5771 = load ptr, ptr %8, align 8, !tbaa !5
  %5772 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5771, i32 0, i32 3
  %5773 = load i8, ptr %5772, align 1, !tbaa !20
  %5774 = zext i8 %5773 to i32
  %5775 = and i32 %5774, 15
  %5776 = icmp eq i32 10, %5775
  br i1 %5776, label %5777, label %5778

5777:                                             ; preds = %5770
  br label %5830

5778:                                             ; preds = %5770
  %5779 = load ptr, ptr %8, align 8, !tbaa !5
  %5780 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5779, i32 0, i32 3
  %5781 = load i8, ptr %5780, align 1, !tbaa !20
  %5782 = zext i8 %5781 to i32
  %5783 = and i32 %5782, 15
  %5784 = icmp eq i32 11, %5783
  br i1 %5784, label %5785, label %5786

5785:                                             ; preds = %5778
  br label %5828

5786:                                             ; preds = %5778
  %5787 = load ptr, ptr %8, align 8, !tbaa !5
  %5788 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5787, i32 0, i32 3
  %5789 = load i8, ptr %5788, align 1, !tbaa !20
  %5790 = zext i8 %5789 to i32
  %5791 = and i32 %5790, 15
  %5792 = icmp eq i32 12, %5791
  br i1 %5792, label %5793, label %5794

5793:                                             ; preds = %5786
  br label %5826

5794:                                             ; preds = %5786
  %5795 = load ptr, ptr %8, align 8, !tbaa !5
  %5796 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5795, i32 0, i32 3
  %5797 = load i8, ptr %5796, align 1, !tbaa !20
  %5798 = zext i8 %5797 to i32
  %5799 = and i32 %5798, 15
  %5800 = icmp eq i32 13, %5799
  br i1 %5800, label %5801, label %5802

5801:                                             ; preds = %5794
  br label %5824

5802:                                             ; preds = %5794
  %5803 = load ptr, ptr %8, align 8, !tbaa !5
  %5804 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5803, i32 0, i32 3
  %5805 = load i8, ptr %5804, align 1, !tbaa !20
  %5806 = zext i8 %5805 to i32
  %5807 = and i32 %5806, 15
  %5808 = icmp eq i32 14, %5807
  br i1 %5808, label %5809, label %5810

5809:                                             ; preds = %5802
  br label %5822

5810:                                             ; preds = %5802
  %5811 = load ptr, ptr %8, align 8, !tbaa !5
  %5812 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5811, i32 0, i32 3
  %5813 = load i8, ptr %5812, align 1, !tbaa !20
  %5814 = zext i8 %5813 to i32
  %5815 = and i32 %5814, 15
  %5816 = icmp eq i32 15, %5815
  br i1 %5816, label %5817, label %5818

5817:                                             ; preds = %5810
  br label %5820

5818:                                             ; preds = %5810
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

5819:                                             ; No predecessors!
  br label %5820

5820:                                             ; preds = %5819, %5817
  %5821 = phi i32 [ 15, %5817 ], [ 0, %5819 ]
  br label %5822

5822:                                             ; preds = %5820, %5809
  %5823 = phi i32 [ 14, %5809 ], [ %5821, %5820 ]
  br label %5824

5824:                                             ; preds = %5822, %5801
  %5825 = phi i32 [ 12, %5801 ], [ %5823, %5822 ]
  br label %5826

5826:                                             ; preds = %5824, %5793
  %5827 = phi i32 [ 12, %5793 ], [ %5825, %5824 ]
  br label %5828

5828:                                             ; preds = %5826, %5785
  %5829 = phi i32 [ 10, %5785 ], [ %5827, %5826 ]
  br label %5830

5830:                                             ; preds = %5828, %5777
  %5831 = phi i32 [ 10, %5777 ], [ %5829, %5828 ]
  br label %5832

5832:                                             ; preds = %5830, %5769
  %5833 = phi i32 [ 8, %5769 ], [ %5831, %5830 ]
  br label %5834

5834:                                             ; preds = %5832, %5761
  %5835 = phi i32 [ 8, %5761 ], [ %5833, %5832 ]
  br label %5836

5836:                                             ; preds = %5834, %5753
  %5837 = phi i32 [ 6, %5753 ], [ %5835, %5834 ]
  br label %5838

5838:                                             ; preds = %5836, %5745
  %5839 = phi i32 [ 6, %5745 ], [ %5837, %5836 ]
  br label %5840

5840:                                             ; preds = %5838, %5737
  %5841 = phi i32 [ 5, %5737 ], [ %5839, %5838 ]
  br label %5842

5842:                                             ; preds = %5840, %5729
  %5843 = phi i32 [ 4, %5729 ], [ %5841, %5840 ]
  br label %5844

5844:                                             ; preds = %5842, %5721
  %5845 = phi i32 [ 3, %5721 ], [ %5843, %5842 ]
  br label %5846

5846:                                             ; preds = %5844, %5713
  %5847 = phi i32 [ 2, %5713 ], [ %5845, %5844 ]
  br label %5848

5848:                                             ; preds = %5846, %5705
  %5849 = phi i32 [ 1, %5705 ], [ %5847, %5846 ]
  br label %5850

5850:                                             ; preds = %5848, %5697
  %5851 = phi i32 [ 0, %5697 ], [ %5849, %5848 ]
  br label %5858

5852:                                             ; preds = %5683
  %5853 = load ptr, ptr %8, align 8, !tbaa !5
  %5854 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5853, i32 0, i32 3
  %5855 = load i8, ptr %5854, align 1, !tbaa !20
  %5856 = zext i8 %5855 to i32
  %5857 = ashr i32 %5856, 4
  br label %5858

5858:                                             ; preds = %5852, %5850
  %5859 = phi i32 [ %5851, %5850 ], [ %5857, %5852 ]
  %5860 = icmp eq i32 3, %5859
  br i1 %5860, label %5861, label %5862

5861:                                             ; preds = %5858
  br label %7674

5862:                                             ; preds = %5858
  %5863 = load ptr, ptr %8, align 8, !tbaa !5
  %5864 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5863, i32 0, i32 3
  %5865 = load i8, ptr %5864, align 1, !tbaa !20
  %5866 = zext i8 %5865 to i32
  %5867 = ashr i32 %5866, 4
  %5868 = icmp eq i32 0, %5867
  br i1 %5868, label %5869, label %6031

5869:                                             ; preds = %5862
  %5870 = load ptr, ptr %8, align 8, !tbaa !5
  %5871 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5870, i32 0, i32 3
  %5872 = load i8, ptr %5871, align 1, !tbaa !20
  %5873 = zext i8 %5872 to i32
  %5874 = and i32 %5873, 15
  %5875 = icmp eq i32 0, %5874
  br i1 %5875, label %5876, label %5877

5876:                                             ; preds = %5869
  br label %6029

5877:                                             ; preds = %5869
  %5878 = load ptr, ptr %8, align 8, !tbaa !5
  %5879 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5878, i32 0, i32 3
  %5880 = load i8, ptr %5879, align 1, !tbaa !20
  %5881 = zext i8 %5880 to i32
  %5882 = and i32 %5881, 15
  %5883 = icmp eq i32 1, %5882
  br i1 %5883, label %5884, label %5885

5884:                                             ; preds = %5877
  br label %6027

5885:                                             ; preds = %5877
  %5886 = load ptr, ptr %8, align 8, !tbaa !5
  %5887 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5886, i32 0, i32 3
  %5888 = load i8, ptr %5887, align 1, !tbaa !20
  %5889 = zext i8 %5888 to i32
  %5890 = and i32 %5889, 15
  %5891 = icmp eq i32 2, %5890
  br i1 %5891, label %5892, label %5893

5892:                                             ; preds = %5885
  br label %6025

5893:                                             ; preds = %5885
  %5894 = load ptr, ptr %8, align 8, !tbaa !5
  %5895 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5894, i32 0, i32 3
  %5896 = load i8, ptr %5895, align 1, !tbaa !20
  %5897 = zext i8 %5896 to i32
  %5898 = and i32 %5897, 15
  %5899 = icmp eq i32 3, %5898
  br i1 %5899, label %5900, label %5901

5900:                                             ; preds = %5893
  br label %6023

5901:                                             ; preds = %5893
  %5902 = load ptr, ptr %8, align 8, !tbaa !5
  %5903 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5902, i32 0, i32 3
  %5904 = load i8, ptr %5903, align 1, !tbaa !20
  %5905 = zext i8 %5904 to i32
  %5906 = and i32 %5905, 15
  %5907 = icmp eq i32 4, %5906
  br i1 %5907, label %5908, label %5909

5908:                                             ; preds = %5901
  br label %6021

5909:                                             ; preds = %5901
  %5910 = load ptr, ptr %8, align 8, !tbaa !5
  %5911 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5910, i32 0, i32 3
  %5912 = load i8, ptr %5911, align 1, !tbaa !20
  %5913 = zext i8 %5912 to i32
  %5914 = and i32 %5913, 15
  %5915 = icmp eq i32 5, %5914
  br i1 %5915, label %5916, label %5917

5916:                                             ; preds = %5909
  br label %6019

5917:                                             ; preds = %5909
  %5918 = load ptr, ptr %8, align 8, !tbaa !5
  %5919 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5918, i32 0, i32 3
  %5920 = load i8, ptr %5919, align 1, !tbaa !20
  %5921 = zext i8 %5920 to i32
  %5922 = and i32 %5921, 15
  %5923 = icmp eq i32 6, %5922
  br i1 %5923, label %5924, label %5925

5924:                                             ; preds = %5917
  br label %6017

5925:                                             ; preds = %5917
  %5926 = load ptr, ptr %8, align 8, !tbaa !5
  %5927 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5926, i32 0, i32 3
  %5928 = load i8, ptr %5927, align 1, !tbaa !20
  %5929 = zext i8 %5928 to i32
  %5930 = and i32 %5929, 15
  %5931 = icmp eq i32 7, %5930
  br i1 %5931, label %5932, label %5933

5932:                                             ; preds = %5925
  br label %6015

5933:                                             ; preds = %5925
  %5934 = load ptr, ptr %8, align 8, !tbaa !5
  %5935 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5934, i32 0, i32 3
  %5936 = load i8, ptr %5935, align 1, !tbaa !20
  %5937 = zext i8 %5936 to i32
  %5938 = and i32 %5937, 15
  %5939 = icmp eq i32 8, %5938
  br i1 %5939, label %5940, label %5941

5940:                                             ; preds = %5933
  br label %6013

5941:                                             ; preds = %5933
  %5942 = load ptr, ptr %8, align 8, !tbaa !5
  %5943 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5942, i32 0, i32 3
  %5944 = load i8, ptr %5943, align 1, !tbaa !20
  %5945 = zext i8 %5944 to i32
  %5946 = and i32 %5945, 15
  %5947 = icmp eq i32 9, %5946
  br i1 %5947, label %5948, label %5949

5948:                                             ; preds = %5941
  br label %6011

5949:                                             ; preds = %5941
  %5950 = load ptr, ptr %8, align 8, !tbaa !5
  %5951 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5950, i32 0, i32 3
  %5952 = load i8, ptr %5951, align 1, !tbaa !20
  %5953 = zext i8 %5952 to i32
  %5954 = and i32 %5953, 15
  %5955 = icmp eq i32 10, %5954
  br i1 %5955, label %5956, label %5957

5956:                                             ; preds = %5949
  br label %6009

5957:                                             ; preds = %5949
  %5958 = load ptr, ptr %8, align 8, !tbaa !5
  %5959 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5958, i32 0, i32 3
  %5960 = load i8, ptr %5959, align 1, !tbaa !20
  %5961 = zext i8 %5960 to i32
  %5962 = and i32 %5961, 15
  %5963 = icmp eq i32 11, %5962
  br i1 %5963, label %5964, label %5965

5964:                                             ; preds = %5957
  br label %6007

5965:                                             ; preds = %5957
  %5966 = load ptr, ptr %8, align 8, !tbaa !5
  %5967 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5966, i32 0, i32 3
  %5968 = load i8, ptr %5967, align 1, !tbaa !20
  %5969 = zext i8 %5968 to i32
  %5970 = and i32 %5969, 15
  %5971 = icmp eq i32 12, %5970
  br i1 %5971, label %5972, label %5973

5972:                                             ; preds = %5965
  br label %6005

5973:                                             ; preds = %5965
  %5974 = load ptr, ptr %8, align 8, !tbaa !5
  %5975 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5974, i32 0, i32 3
  %5976 = load i8, ptr %5975, align 1, !tbaa !20
  %5977 = zext i8 %5976 to i32
  %5978 = and i32 %5977, 15
  %5979 = icmp eq i32 13, %5978
  br i1 %5979, label %5980, label %5981

5980:                                             ; preds = %5973
  br label %6003

5981:                                             ; preds = %5973
  %5982 = load ptr, ptr %8, align 8, !tbaa !5
  %5983 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5982, i32 0, i32 3
  %5984 = load i8, ptr %5983, align 1, !tbaa !20
  %5985 = zext i8 %5984 to i32
  %5986 = and i32 %5985, 15
  %5987 = icmp eq i32 14, %5986
  br i1 %5987, label %5988, label %5989

5988:                                             ; preds = %5981
  br label %6001

5989:                                             ; preds = %5981
  %5990 = load ptr, ptr %8, align 8, !tbaa !5
  %5991 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %5990, i32 0, i32 3
  %5992 = load i8, ptr %5991, align 1, !tbaa !20
  %5993 = zext i8 %5992 to i32
  %5994 = and i32 %5993, 15
  %5995 = icmp eq i32 15, %5994
  br i1 %5995, label %5996, label %5997

5996:                                             ; preds = %5989
  br label %5999

5997:                                             ; preds = %5989
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

5998:                                             ; No predecessors!
  br label %5999

5999:                                             ; preds = %5998, %5996
  %6000 = phi i32 [ 15, %5996 ], [ 0, %5998 ]
  br label %6001

6001:                                             ; preds = %5999, %5988
  %6002 = phi i32 [ 14, %5988 ], [ %6000, %5999 ]
  br label %6003

6003:                                             ; preds = %6001, %5980
  %6004 = phi i32 [ 12, %5980 ], [ %6002, %6001 ]
  br label %6005

6005:                                             ; preds = %6003, %5972
  %6006 = phi i32 [ 12, %5972 ], [ %6004, %6003 ]
  br label %6007

6007:                                             ; preds = %6005, %5964
  %6008 = phi i32 [ 10, %5964 ], [ %6006, %6005 ]
  br label %6009

6009:                                             ; preds = %6007, %5956
  %6010 = phi i32 [ 10, %5956 ], [ %6008, %6007 ]
  br label %6011

6011:                                             ; preds = %6009, %5948
  %6012 = phi i32 [ 8, %5948 ], [ %6010, %6009 ]
  br label %6013

6013:                                             ; preds = %6011, %5940
  %6014 = phi i32 [ 8, %5940 ], [ %6012, %6011 ]
  br label %6015

6015:                                             ; preds = %6013, %5932
  %6016 = phi i32 [ 6, %5932 ], [ %6014, %6013 ]
  br label %6017

6017:                                             ; preds = %6015, %5924
  %6018 = phi i32 [ 6, %5924 ], [ %6016, %6015 ]
  br label %6019

6019:                                             ; preds = %6017, %5916
  %6020 = phi i32 [ 5, %5916 ], [ %6018, %6017 ]
  br label %6021

6021:                                             ; preds = %6019, %5908
  %6022 = phi i32 [ 4, %5908 ], [ %6020, %6019 ]
  br label %6023

6023:                                             ; preds = %6021, %5900
  %6024 = phi i32 [ 3, %5900 ], [ %6022, %6021 ]
  br label %6025

6025:                                             ; preds = %6023, %5892
  %6026 = phi i32 [ 2, %5892 ], [ %6024, %6023 ]
  br label %6027

6027:                                             ; preds = %6025, %5884
  %6028 = phi i32 [ 1, %5884 ], [ %6026, %6025 ]
  br label %6029

6029:                                             ; preds = %6027, %5876
  %6030 = phi i32 [ 0, %5876 ], [ %6028, %6027 ]
  br label %6037

6031:                                             ; preds = %5862
  %6032 = load ptr, ptr %8, align 8, !tbaa !5
  %6033 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6032, i32 0, i32 3
  %6034 = load i8, ptr %6033, align 1, !tbaa !20
  %6035 = zext i8 %6034 to i32
  %6036 = ashr i32 %6035, 4
  br label %6037

6037:                                             ; preds = %6031, %6029
  %6038 = phi i32 [ %6030, %6029 ], [ %6036, %6031 ]
  %6039 = icmp eq i32 4, %6038
  br i1 %6039, label %6040, label %6041

6040:                                             ; preds = %6037
  br label %7672

6041:                                             ; preds = %6037
  %6042 = load ptr, ptr %8, align 8, !tbaa !5
  %6043 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6042, i32 0, i32 3
  %6044 = load i8, ptr %6043, align 1, !tbaa !20
  %6045 = zext i8 %6044 to i32
  %6046 = ashr i32 %6045, 4
  %6047 = icmp eq i32 0, %6046
  br i1 %6047, label %6048, label %6210

6048:                                             ; preds = %6041
  %6049 = load ptr, ptr %8, align 8, !tbaa !5
  %6050 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6049, i32 0, i32 3
  %6051 = load i8, ptr %6050, align 1, !tbaa !20
  %6052 = zext i8 %6051 to i32
  %6053 = and i32 %6052, 15
  %6054 = icmp eq i32 0, %6053
  br i1 %6054, label %6055, label %6056

6055:                                             ; preds = %6048
  br label %6208

6056:                                             ; preds = %6048
  %6057 = load ptr, ptr %8, align 8, !tbaa !5
  %6058 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6057, i32 0, i32 3
  %6059 = load i8, ptr %6058, align 1, !tbaa !20
  %6060 = zext i8 %6059 to i32
  %6061 = and i32 %6060, 15
  %6062 = icmp eq i32 1, %6061
  br i1 %6062, label %6063, label %6064

6063:                                             ; preds = %6056
  br label %6206

6064:                                             ; preds = %6056
  %6065 = load ptr, ptr %8, align 8, !tbaa !5
  %6066 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6065, i32 0, i32 3
  %6067 = load i8, ptr %6066, align 1, !tbaa !20
  %6068 = zext i8 %6067 to i32
  %6069 = and i32 %6068, 15
  %6070 = icmp eq i32 2, %6069
  br i1 %6070, label %6071, label %6072

6071:                                             ; preds = %6064
  br label %6204

6072:                                             ; preds = %6064
  %6073 = load ptr, ptr %8, align 8, !tbaa !5
  %6074 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6073, i32 0, i32 3
  %6075 = load i8, ptr %6074, align 1, !tbaa !20
  %6076 = zext i8 %6075 to i32
  %6077 = and i32 %6076, 15
  %6078 = icmp eq i32 3, %6077
  br i1 %6078, label %6079, label %6080

6079:                                             ; preds = %6072
  br label %6202

6080:                                             ; preds = %6072
  %6081 = load ptr, ptr %8, align 8, !tbaa !5
  %6082 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6081, i32 0, i32 3
  %6083 = load i8, ptr %6082, align 1, !tbaa !20
  %6084 = zext i8 %6083 to i32
  %6085 = and i32 %6084, 15
  %6086 = icmp eq i32 4, %6085
  br i1 %6086, label %6087, label %6088

6087:                                             ; preds = %6080
  br label %6200

6088:                                             ; preds = %6080
  %6089 = load ptr, ptr %8, align 8, !tbaa !5
  %6090 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6089, i32 0, i32 3
  %6091 = load i8, ptr %6090, align 1, !tbaa !20
  %6092 = zext i8 %6091 to i32
  %6093 = and i32 %6092, 15
  %6094 = icmp eq i32 5, %6093
  br i1 %6094, label %6095, label %6096

6095:                                             ; preds = %6088
  br label %6198

6096:                                             ; preds = %6088
  %6097 = load ptr, ptr %8, align 8, !tbaa !5
  %6098 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6097, i32 0, i32 3
  %6099 = load i8, ptr %6098, align 1, !tbaa !20
  %6100 = zext i8 %6099 to i32
  %6101 = and i32 %6100, 15
  %6102 = icmp eq i32 6, %6101
  br i1 %6102, label %6103, label %6104

6103:                                             ; preds = %6096
  br label %6196

6104:                                             ; preds = %6096
  %6105 = load ptr, ptr %8, align 8, !tbaa !5
  %6106 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6105, i32 0, i32 3
  %6107 = load i8, ptr %6106, align 1, !tbaa !20
  %6108 = zext i8 %6107 to i32
  %6109 = and i32 %6108, 15
  %6110 = icmp eq i32 7, %6109
  br i1 %6110, label %6111, label %6112

6111:                                             ; preds = %6104
  br label %6194

6112:                                             ; preds = %6104
  %6113 = load ptr, ptr %8, align 8, !tbaa !5
  %6114 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6113, i32 0, i32 3
  %6115 = load i8, ptr %6114, align 1, !tbaa !20
  %6116 = zext i8 %6115 to i32
  %6117 = and i32 %6116, 15
  %6118 = icmp eq i32 8, %6117
  br i1 %6118, label %6119, label %6120

6119:                                             ; preds = %6112
  br label %6192

6120:                                             ; preds = %6112
  %6121 = load ptr, ptr %8, align 8, !tbaa !5
  %6122 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6121, i32 0, i32 3
  %6123 = load i8, ptr %6122, align 1, !tbaa !20
  %6124 = zext i8 %6123 to i32
  %6125 = and i32 %6124, 15
  %6126 = icmp eq i32 9, %6125
  br i1 %6126, label %6127, label %6128

6127:                                             ; preds = %6120
  br label %6190

6128:                                             ; preds = %6120
  %6129 = load ptr, ptr %8, align 8, !tbaa !5
  %6130 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6129, i32 0, i32 3
  %6131 = load i8, ptr %6130, align 1, !tbaa !20
  %6132 = zext i8 %6131 to i32
  %6133 = and i32 %6132, 15
  %6134 = icmp eq i32 10, %6133
  br i1 %6134, label %6135, label %6136

6135:                                             ; preds = %6128
  br label %6188

6136:                                             ; preds = %6128
  %6137 = load ptr, ptr %8, align 8, !tbaa !5
  %6138 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6137, i32 0, i32 3
  %6139 = load i8, ptr %6138, align 1, !tbaa !20
  %6140 = zext i8 %6139 to i32
  %6141 = and i32 %6140, 15
  %6142 = icmp eq i32 11, %6141
  br i1 %6142, label %6143, label %6144

6143:                                             ; preds = %6136
  br label %6186

6144:                                             ; preds = %6136
  %6145 = load ptr, ptr %8, align 8, !tbaa !5
  %6146 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6145, i32 0, i32 3
  %6147 = load i8, ptr %6146, align 1, !tbaa !20
  %6148 = zext i8 %6147 to i32
  %6149 = and i32 %6148, 15
  %6150 = icmp eq i32 12, %6149
  br i1 %6150, label %6151, label %6152

6151:                                             ; preds = %6144
  br label %6184

6152:                                             ; preds = %6144
  %6153 = load ptr, ptr %8, align 8, !tbaa !5
  %6154 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6153, i32 0, i32 3
  %6155 = load i8, ptr %6154, align 1, !tbaa !20
  %6156 = zext i8 %6155 to i32
  %6157 = and i32 %6156, 15
  %6158 = icmp eq i32 13, %6157
  br i1 %6158, label %6159, label %6160

6159:                                             ; preds = %6152
  br label %6182

6160:                                             ; preds = %6152
  %6161 = load ptr, ptr %8, align 8, !tbaa !5
  %6162 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6161, i32 0, i32 3
  %6163 = load i8, ptr %6162, align 1, !tbaa !20
  %6164 = zext i8 %6163 to i32
  %6165 = and i32 %6164, 15
  %6166 = icmp eq i32 14, %6165
  br i1 %6166, label %6167, label %6168

6167:                                             ; preds = %6160
  br label %6180

6168:                                             ; preds = %6160
  %6169 = load ptr, ptr %8, align 8, !tbaa !5
  %6170 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6169, i32 0, i32 3
  %6171 = load i8, ptr %6170, align 1, !tbaa !20
  %6172 = zext i8 %6171 to i32
  %6173 = and i32 %6172, 15
  %6174 = icmp eq i32 15, %6173
  br i1 %6174, label %6175, label %6176

6175:                                             ; preds = %6168
  br label %6178

6176:                                             ; preds = %6168
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

6177:                                             ; No predecessors!
  br label %6178

6178:                                             ; preds = %6177, %6175
  %6179 = phi i32 [ 15, %6175 ], [ 0, %6177 ]
  br label %6180

6180:                                             ; preds = %6178, %6167
  %6181 = phi i32 [ 14, %6167 ], [ %6179, %6178 ]
  br label %6182

6182:                                             ; preds = %6180, %6159
  %6183 = phi i32 [ 12, %6159 ], [ %6181, %6180 ]
  br label %6184

6184:                                             ; preds = %6182, %6151
  %6185 = phi i32 [ 12, %6151 ], [ %6183, %6182 ]
  br label %6186

6186:                                             ; preds = %6184, %6143
  %6187 = phi i32 [ 10, %6143 ], [ %6185, %6184 ]
  br label %6188

6188:                                             ; preds = %6186, %6135
  %6189 = phi i32 [ 10, %6135 ], [ %6187, %6186 ]
  br label %6190

6190:                                             ; preds = %6188, %6127
  %6191 = phi i32 [ 8, %6127 ], [ %6189, %6188 ]
  br label %6192

6192:                                             ; preds = %6190, %6119
  %6193 = phi i32 [ 8, %6119 ], [ %6191, %6190 ]
  br label %6194

6194:                                             ; preds = %6192, %6111
  %6195 = phi i32 [ 6, %6111 ], [ %6193, %6192 ]
  br label %6196

6196:                                             ; preds = %6194, %6103
  %6197 = phi i32 [ 6, %6103 ], [ %6195, %6194 ]
  br label %6198

6198:                                             ; preds = %6196, %6095
  %6199 = phi i32 [ 5, %6095 ], [ %6197, %6196 ]
  br label %6200

6200:                                             ; preds = %6198, %6087
  %6201 = phi i32 [ 4, %6087 ], [ %6199, %6198 ]
  br label %6202

6202:                                             ; preds = %6200, %6079
  %6203 = phi i32 [ 3, %6079 ], [ %6201, %6200 ]
  br label %6204

6204:                                             ; preds = %6202, %6071
  %6205 = phi i32 [ 2, %6071 ], [ %6203, %6202 ]
  br label %6206

6206:                                             ; preds = %6204, %6063
  %6207 = phi i32 [ 1, %6063 ], [ %6205, %6204 ]
  br label %6208

6208:                                             ; preds = %6206, %6055
  %6209 = phi i32 [ 0, %6055 ], [ %6207, %6206 ]
  br label %6216

6210:                                             ; preds = %6041
  %6211 = load ptr, ptr %8, align 8, !tbaa !5
  %6212 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6211, i32 0, i32 3
  %6213 = load i8, ptr %6212, align 1, !tbaa !20
  %6214 = zext i8 %6213 to i32
  %6215 = ashr i32 %6214, 4
  br label %6216

6216:                                             ; preds = %6210, %6208
  %6217 = phi i32 [ %6209, %6208 ], [ %6215, %6210 ]
  %6218 = icmp eq i32 5, %6217
  br i1 %6218, label %6219, label %6220

6219:                                             ; preds = %6216
  br label %7670

6220:                                             ; preds = %6216
  %6221 = load ptr, ptr %8, align 8, !tbaa !5
  %6222 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6221, i32 0, i32 3
  %6223 = load i8, ptr %6222, align 1, !tbaa !20
  %6224 = zext i8 %6223 to i32
  %6225 = ashr i32 %6224, 4
  %6226 = icmp eq i32 0, %6225
  br i1 %6226, label %6227, label %6389

6227:                                             ; preds = %6220
  %6228 = load ptr, ptr %8, align 8, !tbaa !5
  %6229 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6228, i32 0, i32 3
  %6230 = load i8, ptr %6229, align 1, !tbaa !20
  %6231 = zext i8 %6230 to i32
  %6232 = and i32 %6231, 15
  %6233 = icmp eq i32 0, %6232
  br i1 %6233, label %6234, label %6235

6234:                                             ; preds = %6227
  br label %6387

6235:                                             ; preds = %6227
  %6236 = load ptr, ptr %8, align 8, !tbaa !5
  %6237 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6236, i32 0, i32 3
  %6238 = load i8, ptr %6237, align 1, !tbaa !20
  %6239 = zext i8 %6238 to i32
  %6240 = and i32 %6239, 15
  %6241 = icmp eq i32 1, %6240
  br i1 %6241, label %6242, label %6243

6242:                                             ; preds = %6235
  br label %6385

6243:                                             ; preds = %6235
  %6244 = load ptr, ptr %8, align 8, !tbaa !5
  %6245 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6244, i32 0, i32 3
  %6246 = load i8, ptr %6245, align 1, !tbaa !20
  %6247 = zext i8 %6246 to i32
  %6248 = and i32 %6247, 15
  %6249 = icmp eq i32 2, %6248
  br i1 %6249, label %6250, label %6251

6250:                                             ; preds = %6243
  br label %6383

6251:                                             ; preds = %6243
  %6252 = load ptr, ptr %8, align 8, !tbaa !5
  %6253 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6252, i32 0, i32 3
  %6254 = load i8, ptr %6253, align 1, !tbaa !20
  %6255 = zext i8 %6254 to i32
  %6256 = and i32 %6255, 15
  %6257 = icmp eq i32 3, %6256
  br i1 %6257, label %6258, label %6259

6258:                                             ; preds = %6251
  br label %6381

6259:                                             ; preds = %6251
  %6260 = load ptr, ptr %8, align 8, !tbaa !5
  %6261 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6260, i32 0, i32 3
  %6262 = load i8, ptr %6261, align 1, !tbaa !20
  %6263 = zext i8 %6262 to i32
  %6264 = and i32 %6263, 15
  %6265 = icmp eq i32 4, %6264
  br i1 %6265, label %6266, label %6267

6266:                                             ; preds = %6259
  br label %6379

6267:                                             ; preds = %6259
  %6268 = load ptr, ptr %8, align 8, !tbaa !5
  %6269 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6268, i32 0, i32 3
  %6270 = load i8, ptr %6269, align 1, !tbaa !20
  %6271 = zext i8 %6270 to i32
  %6272 = and i32 %6271, 15
  %6273 = icmp eq i32 5, %6272
  br i1 %6273, label %6274, label %6275

6274:                                             ; preds = %6267
  br label %6377

6275:                                             ; preds = %6267
  %6276 = load ptr, ptr %8, align 8, !tbaa !5
  %6277 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6276, i32 0, i32 3
  %6278 = load i8, ptr %6277, align 1, !tbaa !20
  %6279 = zext i8 %6278 to i32
  %6280 = and i32 %6279, 15
  %6281 = icmp eq i32 6, %6280
  br i1 %6281, label %6282, label %6283

6282:                                             ; preds = %6275
  br label %6375

6283:                                             ; preds = %6275
  %6284 = load ptr, ptr %8, align 8, !tbaa !5
  %6285 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6284, i32 0, i32 3
  %6286 = load i8, ptr %6285, align 1, !tbaa !20
  %6287 = zext i8 %6286 to i32
  %6288 = and i32 %6287, 15
  %6289 = icmp eq i32 7, %6288
  br i1 %6289, label %6290, label %6291

6290:                                             ; preds = %6283
  br label %6373

6291:                                             ; preds = %6283
  %6292 = load ptr, ptr %8, align 8, !tbaa !5
  %6293 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6292, i32 0, i32 3
  %6294 = load i8, ptr %6293, align 1, !tbaa !20
  %6295 = zext i8 %6294 to i32
  %6296 = and i32 %6295, 15
  %6297 = icmp eq i32 8, %6296
  br i1 %6297, label %6298, label %6299

6298:                                             ; preds = %6291
  br label %6371

6299:                                             ; preds = %6291
  %6300 = load ptr, ptr %8, align 8, !tbaa !5
  %6301 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6300, i32 0, i32 3
  %6302 = load i8, ptr %6301, align 1, !tbaa !20
  %6303 = zext i8 %6302 to i32
  %6304 = and i32 %6303, 15
  %6305 = icmp eq i32 9, %6304
  br i1 %6305, label %6306, label %6307

6306:                                             ; preds = %6299
  br label %6369

6307:                                             ; preds = %6299
  %6308 = load ptr, ptr %8, align 8, !tbaa !5
  %6309 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6308, i32 0, i32 3
  %6310 = load i8, ptr %6309, align 1, !tbaa !20
  %6311 = zext i8 %6310 to i32
  %6312 = and i32 %6311, 15
  %6313 = icmp eq i32 10, %6312
  br i1 %6313, label %6314, label %6315

6314:                                             ; preds = %6307
  br label %6367

6315:                                             ; preds = %6307
  %6316 = load ptr, ptr %8, align 8, !tbaa !5
  %6317 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6316, i32 0, i32 3
  %6318 = load i8, ptr %6317, align 1, !tbaa !20
  %6319 = zext i8 %6318 to i32
  %6320 = and i32 %6319, 15
  %6321 = icmp eq i32 11, %6320
  br i1 %6321, label %6322, label %6323

6322:                                             ; preds = %6315
  br label %6365

6323:                                             ; preds = %6315
  %6324 = load ptr, ptr %8, align 8, !tbaa !5
  %6325 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6324, i32 0, i32 3
  %6326 = load i8, ptr %6325, align 1, !tbaa !20
  %6327 = zext i8 %6326 to i32
  %6328 = and i32 %6327, 15
  %6329 = icmp eq i32 12, %6328
  br i1 %6329, label %6330, label %6331

6330:                                             ; preds = %6323
  br label %6363

6331:                                             ; preds = %6323
  %6332 = load ptr, ptr %8, align 8, !tbaa !5
  %6333 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6332, i32 0, i32 3
  %6334 = load i8, ptr %6333, align 1, !tbaa !20
  %6335 = zext i8 %6334 to i32
  %6336 = and i32 %6335, 15
  %6337 = icmp eq i32 13, %6336
  br i1 %6337, label %6338, label %6339

6338:                                             ; preds = %6331
  br label %6361

6339:                                             ; preds = %6331
  %6340 = load ptr, ptr %8, align 8, !tbaa !5
  %6341 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6340, i32 0, i32 3
  %6342 = load i8, ptr %6341, align 1, !tbaa !20
  %6343 = zext i8 %6342 to i32
  %6344 = and i32 %6343, 15
  %6345 = icmp eq i32 14, %6344
  br i1 %6345, label %6346, label %6347

6346:                                             ; preds = %6339
  br label %6359

6347:                                             ; preds = %6339
  %6348 = load ptr, ptr %8, align 8, !tbaa !5
  %6349 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6348, i32 0, i32 3
  %6350 = load i8, ptr %6349, align 1, !tbaa !20
  %6351 = zext i8 %6350 to i32
  %6352 = and i32 %6351, 15
  %6353 = icmp eq i32 15, %6352
  br i1 %6353, label %6354, label %6355

6354:                                             ; preds = %6347
  br label %6357

6355:                                             ; preds = %6347
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

6356:                                             ; No predecessors!
  br label %6357

6357:                                             ; preds = %6356, %6354
  %6358 = phi i32 [ 15, %6354 ], [ 0, %6356 ]
  br label %6359

6359:                                             ; preds = %6357, %6346
  %6360 = phi i32 [ 14, %6346 ], [ %6358, %6357 ]
  br label %6361

6361:                                             ; preds = %6359, %6338
  %6362 = phi i32 [ 12, %6338 ], [ %6360, %6359 ]
  br label %6363

6363:                                             ; preds = %6361, %6330
  %6364 = phi i32 [ 12, %6330 ], [ %6362, %6361 ]
  br label %6365

6365:                                             ; preds = %6363, %6322
  %6366 = phi i32 [ 10, %6322 ], [ %6364, %6363 ]
  br label %6367

6367:                                             ; preds = %6365, %6314
  %6368 = phi i32 [ 10, %6314 ], [ %6366, %6365 ]
  br label %6369

6369:                                             ; preds = %6367, %6306
  %6370 = phi i32 [ 8, %6306 ], [ %6368, %6367 ]
  br label %6371

6371:                                             ; preds = %6369, %6298
  %6372 = phi i32 [ 8, %6298 ], [ %6370, %6369 ]
  br label %6373

6373:                                             ; preds = %6371, %6290
  %6374 = phi i32 [ 6, %6290 ], [ %6372, %6371 ]
  br label %6375

6375:                                             ; preds = %6373, %6282
  %6376 = phi i32 [ 6, %6282 ], [ %6374, %6373 ]
  br label %6377

6377:                                             ; preds = %6375, %6274
  %6378 = phi i32 [ 5, %6274 ], [ %6376, %6375 ]
  br label %6379

6379:                                             ; preds = %6377, %6266
  %6380 = phi i32 [ 4, %6266 ], [ %6378, %6377 ]
  br label %6381

6381:                                             ; preds = %6379, %6258
  %6382 = phi i32 [ 3, %6258 ], [ %6380, %6379 ]
  br label %6383

6383:                                             ; preds = %6381, %6250
  %6384 = phi i32 [ 2, %6250 ], [ %6382, %6381 ]
  br label %6385

6385:                                             ; preds = %6383, %6242
  %6386 = phi i32 [ 1, %6242 ], [ %6384, %6383 ]
  br label %6387

6387:                                             ; preds = %6385, %6234
  %6388 = phi i32 [ 0, %6234 ], [ %6386, %6385 ]
  br label %6395

6389:                                             ; preds = %6220
  %6390 = load ptr, ptr %8, align 8, !tbaa !5
  %6391 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6390, i32 0, i32 3
  %6392 = load i8, ptr %6391, align 1, !tbaa !20
  %6393 = zext i8 %6392 to i32
  %6394 = ashr i32 %6393, 4
  br label %6395

6395:                                             ; preds = %6389, %6387
  %6396 = phi i32 [ %6388, %6387 ], [ %6394, %6389 ]
  %6397 = icmp eq i32 6, %6396
  br i1 %6397, label %6398, label %6399

6398:                                             ; preds = %6395
  br label %7668

6399:                                             ; preds = %6395
  %6400 = load ptr, ptr %8, align 8, !tbaa !5
  %6401 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6400, i32 0, i32 3
  %6402 = load i8, ptr %6401, align 1, !tbaa !20
  %6403 = zext i8 %6402 to i32
  %6404 = ashr i32 %6403, 4
  %6405 = icmp eq i32 0, %6404
  br i1 %6405, label %6406, label %6568

6406:                                             ; preds = %6399
  %6407 = load ptr, ptr %8, align 8, !tbaa !5
  %6408 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6407, i32 0, i32 3
  %6409 = load i8, ptr %6408, align 1, !tbaa !20
  %6410 = zext i8 %6409 to i32
  %6411 = and i32 %6410, 15
  %6412 = icmp eq i32 0, %6411
  br i1 %6412, label %6413, label %6414

6413:                                             ; preds = %6406
  br label %6566

6414:                                             ; preds = %6406
  %6415 = load ptr, ptr %8, align 8, !tbaa !5
  %6416 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6415, i32 0, i32 3
  %6417 = load i8, ptr %6416, align 1, !tbaa !20
  %6418 = zext i8 %6417 to i32
  %6419 = and i32 %6418, 15
  %6420 = icmp eq i32 1, %6419
  br i1 %6420, label %6421, label %6422

6421:                                             ; preds = %6414
  br label %6564

6422:                                             ; preds = %6414
  %6423 = load ptr, ptr %8, align 8, !tbaa !5
  %6424 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6423, i32 0, i32 3
  %6425 = load i8, ptr %6424, align 1, !tbaa !20
  %6426 = zext i8 %6425 to i32
  %6427 = and i32 %6426, 15
  %6428 = icmp eq i32 2, %6427
  br i1 %6428, label %6429, label %6430

6429:                                             ; preds = %6422
  br label %6562

6430:                                             ; preds = %6422
  %6431 = load ptr, ptr %8, align 8, !tbaa !5
  %6432 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6431, i32 0, i32 3
  %6433 = load i8, ptr %6432, align 1, !tbaa !20
  %6434 = zext i8 %6433 to i32
  %6435 = and i32 %6434, 15
  %6436 = icmp eq i32 3, %6435
  br i1 %6436, label %6437, label %6438

6437:                                             ; preds = %6430
  br label %6560

6438:                                             ; preds = %6430
  %6439 = load ptr, ptr %8, align 8, !tbaa !5
  %6440 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6439, i32 0, i32 3
  %6441 = load i8, ptr %6440, align 1, !tbaa !20
  %6442 = zext i8 %6441 to i32
  %6443 = and i32 %6442, 15
  %6444 = icmp eq i32 4, %6443
  br i1 %6444, label %6445, label %6446

6445:                                             ; preds = %6438
  br label %6558

6446:                                             ; preds = %6438
  %6447 = load ptr, ptr %8, align 8, !tbaa !5
  %6448 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6447, i32 0, i32 3
  %6449 = load i8, ptr %6448, align 1, !tbaa !20
  %6450 = zext i8 %6449 to i32
  %6451 = and i32 %6450, 15
  %6452 = icmp eq i32 5, %6451
  br i1 %6452, label %6453, label %6454

6453:                                             ; preds = %6446
  br label %6556

6454:                                             ; preds = %6446
  %6455 = load ptr, ptr %8, align 8, !tbaa !5
  %6456 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6455, i32 0, i32 3
  %6457 = load i8, ptr %6456, align 1, !tbaa !20
  %6458 = zext i8 %6457 to i32
  %6459 = and i32 %6458, 15
  %6460 = icmp eq i32 6, %6459
  br i1 %6460, label %6461, label %6462

6461:                                             ; preds = %6454
  br label %6554

6462:                                             ; preds = %6454
  %6463 = load ptr, ptr %8, align 8, !tbaa !5
  %6464 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6463, i32 0, i32 3
  %6465 = load i8, ptr %6464, align 1, !tbaa !20
  %6466 = zext i8 %6465 to i32
  %6467 = and i32 %6466, 15
  %6468 = icmp eq i32 7, %6467
  br i1 %6468, label %6469, label %6470

6469:                                             ; preds = %6462
  br label %6552

6470:                                             ; preds = %6462
  %6471 = load ptr, ptr %8, align 8, !tbaa !5
  %6472 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6471, i32 0, i32 3
  %6473 = load i8, ptr %6472, align 1, !tbaa !20
  %6474 = zext i8 %6473 to i32
  %6475 = and i32 %6474, 15
  %6476 = icmp eq i32 8, %6475
  br i1 %6476, label %6477, label %6478

6477:                                             ; preds = %6470
  br label %6550

6478:                                             ; preds = %6470
  %6479 = load ptr, ptr %8, align 8, !tbaa !5
  %6480 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6479, i32 0, i32 3
  %6481 = load i8, ptr %6480, align 1, !tbaa !20
  %6482 = zext i8 %6481 to i32
  %6483 = and i32 %6482, 15
  %6484 = icmp eq i32 9, %6483
  br i1 %6484, label %6485, label %6486

6485:                                             ; preds = %6478
  br label %6548

6486:                                             ; preds = %6478
  %6487 = load ptr, ptr %8, align 8, !tbaa !5
  %6488 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6487, i32 0, i32 3
  %6489 = load i8, ptr %6488, align 1, !tbaa !20
  %6490 = zext i8 %6489 to i32
  %6491 = and i32 %6490, 15
  %6492 = icmp eq i32 10, %6491
  br i1 %6492, label %6493, label %6494

6493:                                             ; preds = %6486
  br label %6546

6494:                                             ; preds = %6486
  %6495 = load ptr, ptr %8, align 8, !tbaa !5
  %6496 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6495, i32 0, i32 3
  %6497 = load i8, ptr %6496, align 1, !tbaa !20
  %6498 = zext i8 %6497 to i32
  %6499 = and i32 %6498, 15
  %6500 = icmp eq i32 11, %6499
  br i1 %6500, label %6501, label %6502

6501:                                             ; preds = %6494
  br label %6544

6502:                                             ; preds = %6494
  %6503 = load ptr, ptr %8, align 8, !tbaa !5
  %6504 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6503, i32 0, i32 3
  %6505 = load i8, ptr %6504, align 1, !tbaa !20
  %6506 = zext i8 %6505 to i32
  %6507 = and i32 %6506, 15
  %6508 = icmp eq i32 12, %6507
  br i1 %6508, label %6509, label %6510

6509:                                             ; preds = %6502
  br label %6542

6510:                                             ; preds = %6502
  %6511 = load ptr, ptr %8, align 8, !tbaa !5
  %6512 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6511, i32 0, i32 3
  %6513 = load i8, ptr %6512, align 1, !tbaa !20
  %6514 = zext i8 %6513 to i32
  %6515 = and i32 %6514, 15
  %6516 = icmp eq i32 13, %6515
  br i1 %6516, label %6517, label %6518

6517:                                             ; preds = %6510
  br label %6540

6518:                                             ; preds = %6510
  %6519 = load ptr, ptr %8, align 8, !tbaa !5
  %6520 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6519, i32 0, i32 3
  %6521 = load i8, ptr %6520, align 1, !tbaa !20
  %6522 = zext i8 %6521 to i32
  %6523 = and i32 %6522, 15
  %6524 = icmp eq i32 14, %6523
  br i1 %6524, label %6525, label %6526

6525:                                             ; preds = %6518
  br label %6538

6526:                                             ; preds = %6518
  %6527 = load ptr, ptr %8, align 8, !tbaa !5
  %6528 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6527, i32 0, i32 3
  %6529 = load i8, ptr %6528, align 1, !tbaa !20
  %6530 = zext i8 %6529 to i32
  %6531 = and i32 %6530, 15
  %6532 = icmp eq i32 15, %6531
  br i1 %6532, label %6533, label %6534

6533:                                             ; preds = %6526
  br label %6536

6534:                                             ; preds = %6526
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

6535:                                             ; No predecessors!
  br label %6536

6536:                                             ; preds = %6535, %6533
  %6537 = phi i32 [ 15, %6533 ], [ 0, %6535 ]
  br label %6538

6538:                                             ; preds = %6536, %6525
  %6539 = phi i32 [ 14, %6525 ], [ %6537, %6536 ]
  br label %6540

6540:                                             ; preds = %6538, %6517
  %6541 = phi i32 [ 12, %6517 ], [ %6539, %6538 ]
  br label %6542

6542:                                             ; preds = %6540, %6509
  %6543 = phi i32 [ 12, %6509 ], [ %6541, %6540 ]
  br label %6544

6544:                                             ; preds = %6542, %6501
  %6545 = phi i32 [ 10, %6501 ], [ %6543, %6542 ]
  br label %6546

6546:                                             ; preds = %6544, %6493
  %6547 = phi i32 [ 10, %6493 ], [ %6545, %6544 ]
  br label %6548

6548:                                             ; preds = %6546, %6485
  %6549 = phi i32 [ 8, %6485 ], [ %6547, %6546 ]
  br label %6550

6550:                                             ; preds = %6548, %6477
  %6551 = phi i32 [ 8, %6477 ], [ %6549, %6548 ]
  br label %6552

6552:                                             ; preds = %6550, %6469
  %6553 = phi i32 [ 6, %6469 ], [ %6551, %6550 ]
  br label %6554

6554:                                             ; preds = %6552, %6461
  %6555 = phi i32 [ 6, %6461 ], [ %6553, %6552 ]
  br label %6556

6556:                                             ; preds = %6554, %6453
  %6557 = phi i32 [ 5, %6453 ], [ %6555, %6554 ]
  br label %6558

6558:                                             ; preds = %6556, %6445
  %6559 = phi i32 [ 4, %6445 ], [ %6557, %6556 ]
  br label %6560

6560:                                             ; preds = %6558, %6437
  %6561 = phi i32 [ 3, %6437 ], [ %6559, %6558 ]
  br label %6562

6562:                                             ; preds = %6560, %6429
  %6563 = phi i32 [ 2, %6429 ], [ %6561, %6560 ]
  br label %6564

6564:                                             ; preds = %6562, %6421
  %6565 = phi i32 [ 1, %6421 ], [ %6563, %6562 ]
  br label %6566

6566:                                             ; preds = %6564, %6413
  %6567 = phi i32 [ 0, %6413 ], [ %6565, %6564 ]
  br label %6574

6568:                                             ; preds = %6399
  %6569 = load ptr, ptr %8, align 8, !tbaa !5
  %6570 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6569, i32 0, i32 3
  %6571 = load i8, ptr %6570, align 1, !tbaa !20
  %6572 = zext i8 %6571 to i32
  %6573 = ashr i32 %6572, 4
  br label %6574

6574:                                             ; preds = %6568, %6566
  %6575 = phi i32 [ %6567, %6566 ], [ %6573, %6568 ]
  %6576 = icmp eq i32 7, %6575
  br i1 %6576, label %6577, label %6578

6577:                                             ; preds = %6574
  br label %7666

6578:                                             ; preds = %6574
  %6579 = load ptr, ptr %8, align 8, !tbaa !5
  %6580 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6579, i32 0, i32 3
  %6581 = load i8, ptr %6580, align 1, !tbaa !20
  %6582 = zext i8 %6581 to i32
  %6583 = ashr i32 %6582, 4
  %6584 = icmp eq i32 0, %6583
  br i1 %6584, label %6585, label %6747

6585:                                             ; preds = %6578
  %6586 = load ptr, ptr %8, align 8, !tbaa !5
  %6587 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6586, i32 0, i32 3
  %6588 = load i8, ptr %6587, align 1, !tbaa !20
  %6589 = zext i8 %6588 to i32
  %6590 = and i32 %6589, 15
  %6591 = icmp eq i32 0, %6590
  br i1 %6591, label %6592, label %6593

6592:                                             ; preds = %6585
  br label %6745

6593:                                             ; preds = %6585
  %6594 = load ptr, ptr %8, align 8, !tbaa !5
  %6595 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6594, i32 0, i32 3
  %6596 = load i8, ptr %6595, align 1, !tbaa !20
  %6597 = zext i8 %6596 to i32
  %6598 = and i32 %6597, 15
  %6599 = icmp eq i32 1, %6598
  br i1 %6599, label %6600, label %6601

6600:                                             ; preds = %6593
  br label %6743

6601:                                             ; preds = %6593
  %6602 = load ptr, ptr %8, align 8, !tbaa !5
  %6603 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6602, i32 0, i32 3
  %6604 = load i8, ptr %6603, align 1, !tbaa !20
  %6605 = zext i8 %6604 to i32
  %6606 = and i32 %6605, 15
  %6607 = icmp eq i32 2, %6606
  br i1 %6607, label %6608, label %6609

6608:                                             ; preds = %6601
  br label %6741

6609:                                             ; preds = %6601
  %6610 = load ptr, ptr %8, align 8, !tbaa !5
  %6611 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6610, i32 0, i32 3
  %6612 = load i8, ptr %6611, align 1, !tbaa !20
  %6613 = zext i8 %6612 to i32
  %6614 = and i32 %6613, 15
  %6615 = icmp eq i32 3, %6614
  br i1 %6615, label %6616, label %6617

6616:                                             ; preds = %6609
  br label %6739

6617:                                             ; preds = %6609
  %6618 = load ptr, ptr %8, align 8, !tbaa !5
  %6619 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6618, i32 0, i32 3
  %6620 = load i8, ptr %6619, align 1, !tbaa !20
  %6621 = zext i8 %6620 to i32
  %6622 = and i32 %6621, 15
  %6623 = icmp eq i32 4, %6622
  br i1 %6623, label %6624, label %6625

6624:                                             ; preds = %6617
  br label %6737

6625:                                             ; preds = %6617
  %6626 = load ptr, ptr %8, align 8, !tbaa !5
  %6627 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6626, i32 0, i32 3
  %6628 = load i8, ptr %6627, align 1, !tbaa !20
  %6629 = zext i8 %6628 to i32
  %6630 = and i32 %6629, 15
  %6631 = icmp eq i32 5, %6630
  br i1 %6631, label %6632, label %6633

6632:                                             ; preds = %6625
  br label %6735

6633:                                             ; preds = %6625
  %6634 = load ptr, ptr %8, align 8, !tbaa !5
  %6635 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6634, i32 0, i32 3
  %6636 = load i8, ptr %6635, align 1, !tbaa !20
  %6637 = zext i8 %6636 to i32
  %6638 = and i32 %6637, 15
  %6639 = icmp eq i32 6, %6638
  br i1 %6639, label %6640, label %6641

6640:                                             ; preds = %6633
  br label %6733

6641:                                             ; preds = %6633
  %6642 = load ptr, ptr %8, align 8, !tbaa !5
  %6643 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6642, i32 0, i32 3
  %6644 = load i8, ptr %6643, align 1, !tbaa !20
  %6645 = zext i8 %6644 to i32
  %6646 = and i32 %6645, 15
  %6647 = icmp eq i32 7, %6646
  br i1 %6647, label %6648, label %6649

6648:                                             ; preds = %6641
  br label %6731

6649:                                             ; preds = %6641
  %6650 = load ptr, ptr %8, align 8, !tbaa !5
  %6651 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6650, i32 0, i32 3
  %6652 = load i8, ptr %6651, align 1, !tbaa !20
  %6653 = zext i8 %6652 to i32
  %6654 = and i32 %6653, 15
  %6655 = icmp eq i32 8, %6654
  br i1 %6655, label %6656, label %6657

6656:                                             ; preds = %6649
  br label %6729

6657:                                             ; preds = %6649
  %6658 = load ptr, ptr %8, align 8, !tbaa !5
  %6659 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6658, i32 0, i32 3
  %6660 = load i8, ptr %6659, align 1, !tbaa !20
  %6661 = zext i8 %6660 to i32
  %6662 = and i32 %6661, 15
  %6663 = icmp eq i32 9, %6662
  br i1 %6663, label %6664, label %6665

6664:                                             ; preds = %6657
  br label %6727

6665:                                             ; preds = %6657
  %6666 = load ptr, ptr %8, align 8, !tbaa !5
  %6667 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6666, i32 0, i32 3
  %6668 = load i8, ptr %6667, align 1, !tbaa !20
  %6669 = zext i8 %6668 to i32
  %6670 = and i32 %6669, 15
  %6671 = icmp eq i32 10, %6670
  br i1 %6671, label %6672, label %6673

6672:                                             ; preds = %6665
  br label %6725

6673:                                             ; preds = %6665
  %6674 = load ptr, ptr %8, align 8, !tbaa !5
  %6675 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6674, i32 0, i32 3
  %6676 = load i8, ptr %6675, align 1, !tbaa !20
  %6677 = zext i8 %6676 to i32
  %6678 = and i32 %6677, 15
  %6679 = icmp eq i32 11, %6678
  br i1 %6679, label %6680, label %6681

6680:                                             ; preds = %6673
  br label %6723

6681:                                             ; preds = %6673
  %6682 = load ptr, ptr %8, align 8, !tbaa !5
  %6683 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6682, i32 0, i32 3
  %6684 = load i8, ptr %6683, align 1, !tbaa !20
  %6685 = zext i8 %6684 to i32
  %6686 = and i32 %6685, 15
  %6687 = icmp eq i32 12, %6686
  br i1 %6687, label %6688, label %6689

6688:                                             ; preds = %6681
  br label %6721

6689:                                             ; preds = %6681
  %6690 = load ptr, ptr %8, align 8, !tbaa !5
  %6691 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6690, i32 0, i32 3
  %6692 = load i8, ptr %6691, align 1, !tbaa !20
  %6693 = zext i8 %6692 to i32
  %6694 = and i32 %6693, 15
  %6695 = icmp eq i32 13, %6694
  br i1 %6695, label %6696, label %6697

6696:                                             ; preds = %6689
  br label %6719

6697:                                             ; preds = %6689
  %6698 = load ptr, ptr %8, align 8, !tbaa !5
  %6699 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6698, i32 0, i32 3
  %6700 = load i8, ptr %6699, align 1, !tbaa !20
  %6701 = zext i8 %6700 to i32
  %6702 = and i32 %6701, 15
  %6703 = icmp eq i32 14, %6702
  br i1 %6703, label %6704, label %6705

6704:                                             ; preds = %6697
  br label %6717

6705:                                             ; preds = %6697
  %6706 = load ptr, ptr %8, align 8, !tbaa !5
  %6707 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6706, i32 0, i32 3
  %6708 = load i8, ptr %6707, align 1, !tbaa !20
  %6709 = zext i8 %6708 to i32
  %6710 = and i32 %6709, 15
  %6711 = icmp eq i32 15, %6710
  br i1 %6711, label %6712, label %6713

6712:                                             ; preds = %6705
  br label %6715

6713:                                             ; preds = %6705
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

6714:                                             ; No predecessors!
  br label %6715

6715:                                             ; preds = %6714, %6712
  %6716 = phi i32 [ 15, %6712 ], [ 0, %6714 ]
  br label %6717

6717:                                             ; preds = %6715, %6704
  %6718 = phi i32 [ 14, %6704 ], [ %6716, %6715 ]
  br label %6719

6719:                                             ; preds = %6717, %6696
  %6720 = phi i32 [ 12, %6696 ], [ %6718, %6717 ]
  br label %6721

6721:                                             ; preds = %6719, %6688
  %6722 = phi i32 [ 12, %6688 ], [ %6720, %6719 ]
  br label %6723

6723:                                             ; preds = %6721, %6680
  %6724 = phi i32 [ 10, %6680 ], [ %6722, %6721 ]
  br label %6725

6725:                                             ; preds = %6723, %6672
  %6726 = phi i32 [ 10, %6672 ], [ %6724, %6723 ]
  br label %6727

6727:                                             ; preds = %6725, %6664
  %6728 = phi i32 [ 8, %6664 ], [ %6726, %6725 ]
  br label %6729

6729:                                             ; preds = %6727, %6656
  %6730 = phi i32 [ 8, %6656 ], [ %6728, %6727 ]
  br label %6731

6731:                                             ; preds = %6729, %6648
  %6732 = phi i32 [ 6, %6648 ], [ %6730, %6729 ]
  br label %6733

6733:                                             ; preds = %6731, %6640
  %6734 = phi i32 [ 6, %6640 ], [ %6732, %6731 ]
  br label %6735

6735:                                             ; preds = %6733, %6632
  %6736 = phi i32 [ 5, %6632 ], [ %6734, %6733 ]
  br label %6737

6737:                                             ; preds = %6735, %6624
  %6738 = phi i32 [ 4, %6624 ], [ %6736, %6735 ]
  br label %6739

6739:                                             ; preds = %6737, %6616
  %6740 = phi i32 [ 3, %6616 ], [ %6738, %6737 ]
  br label %6741

6741:                                             ; preds = %6739, %6608
  %6742 = phi i32 [ 2, %6608 ], [ %6740, %6739 ]
  br label %6743

6743:                                             ; preds = %6741, %6600
  %6744 = phi i32 [ 1, %6600 ], [ %6742, %6741 ]
  br label %6745

6745:                                             ; preds = %6743, %6592
  %6746 = phi i32 [ 0, %6592 ], [ %6744, %6743 ]
  br label %6753

6747:                                             ; preds = %6578
  %6748 = load ptr, ptr %8, align 8, !tbaa !5
  %6749 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6748, i32 0, i32 3
  %6750 = load i8, ptr %6749, align 1, !tbaa !20
  %6751 = zext i8 %6750 to i32
  %6752 = ashr i32 %6751, 4
  br label %6753

6753:                                             ; preds = %6747, %6745
  %6754 = phi i32 [ %6746, %6745 ], [ %6752, %6747 ]
  %6755 = icmp eq i32 8, %6754
  br i1 %6755, label %6756, label %6757

6756:                                             ; preds = %6753
  br label %7664

6757:                                             ; preds = %6753
  %6758 = load ptr, ptr %8, align 8, !tbaa !5
  %6759 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6758, i32 0, i32 3
  %6760 = load i8, ptr %6759, align 1, !tbaa !20
  %6761 = zext i8 %6760 to i32
  %6762 = ashr i32 %6761, 4
  %6763 = icmp eq i32 0, %6762
  br i1 %6763, label %6764, label %6926

6764:                                             ; preds = %6757
  %6765 = load ptr, ptr %8, align 8, !tbaa !5
  %6766 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6765, i32 0, i32 3
  %6767 = load i8, ptr %6766, align 1, !tbaa !20
  %6768 = zext i8 %6767 to i32
  %6769 = and i32 %6768, 15
  %6770 = icmp eq i32 0, %6769
  br i1 %6770, label %6771, label %6772

6771:                                             ; preds = %6764
  br label %6924

6772:                                             ; preds = %6764
  %6773 = load ptr, ptr %8, align 8, !tbaa !5
  %6774 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6773, i32 0, i32 3
  %6775 = load i8, ptr %6774, align 1, !tbaa !20
  %6776 = zext i8 %6775 to i32
  %6777 = and i32 %6776, 15
  %6778 = icmp eq i32 1, %6777
  br i1 %6778, label %6779, label %6780

6779:                                             ; preds = %6772
  br label %6922

6780:                                             ; preds = %6772
  %6781 = load ptr, ptr %8, align 8, !tbaa !5
  %6782 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6781, i32 0, i32 3
  %6783 = load i8, ptr %6782, align 1, !tbaa !20
  %6784 = zext i8 %6783 to i32
  %6785 = and i32 %6784, 15
  %6786 = icmp eq i32 2, %6785
  br i1 %6786, label %6787, label %6788

6787:                                             ; preds = %6780
  br label %6920

6788:                                             ; preds = %6780
  %6789 = load ptr, ptr %8, align 8, !tbaa !5
  %6790 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6789, i32 0, i32 3
  %6791 = load i8, ptr %6790, align 1, !tbaa !20
  %6792 = zext i8 %6791 to i32
  %6793 = and i32 %6792, 15
  %6794 = icmp eq i32 3, %6793
  br i1 %6794, label %6795, label %6796

6795:                                             ; preds = %6788
  br label %6918

6796:                                             ; preds = %6788
  %6797 = load ptr, ptr %8, align 8, !tbaa !5
  %6798 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6797, i32 0, i32 3
  %6799 = load i8, ptr %6798, align 1, !tbaa !20
  %6800 = zext i8 %6799 to i32
  %6801 = and i32 %6800, 15
  %6802 = icmp eq i32 4, %6801
  br i1 %6802, label %6803, label %6804

6803:                                             ; preds = %6796
  br label %6916

6804:                                             ; preds = %6796
  %6805 = load ptr, ptr %8, align 8, !tbaa !5
  %6806 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6805, i32 0, i32 3
  %6807 = load i8, ptr %6806, align 1, !tbaa !20
  %6808 = zext i8 %6807 to i32
  %6809 = and i32 %6808, 15
  %6810 = icmp eq i32 5, %6809
  br i1 %6810, label %6811, label %6812

6811:                                             ; preds = %6804
  br label %6914

6812:                                             ; preds = %6804
  %6813 = load ptr, ptr %8, align 8, !tbaa !5
  %6814 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6813, i32 0, i32 3
  %6815 = load i8, ptr %6814, align 1, !tbaa !20
  %6816 = zext i8 %6815 to i32
  %6817 = and i32 %6816, 15
  %6818 = icmp eq i32 6, %6817
  br i1 %6818, label %6819, label %6820

6819:                                             ; preds = %6812
  br label %6912

6820:                                             ; preds = %6812
  %6821 = load ptr, ptr %8, align 8, !tbaa !5
  %6822 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6821, i32 0, i32 3
  %6823 = load i8, ptr %6822, align 1, !tbaa !20
  %6824 = zext i8 %6823 to i32
  %6825 = and i32 %6824, 15
  %6826 = icmp eq i32 7, %6825
  br i1 %6826, label %6827, label %6828

6827:                                             ; preds = %6820
  br label %6910

6828:                                             ; preds = %6820
  %6829 = load ptr, ptr %8, align 8, !tbaa !5
  %6830 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6829, i32 0, i32 3
  %6831 = load i8, ptr %6830, align 1, !tbaa !20
  %6832 = zext i8 %6831 to i32
  %6833 = and i32 %6832, 15
  %6834 = icmp eq i32 8, %6833
  br i1 %6834, label %6835, label %6836

6835:                                             ; preds = %6828
  br label %6908

6836:                                             ; preds = %6828
  %6837 = load ptr, ptr %8, align 8, !tbaa !5
  %6838 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6837, i32 0, i32 3
  %6839 = load i8, ptr %6838, align 1, !tbaa !20
  %6840 = zext i8 %6839 to i32
  %6841 = and i32 %6840, 15
  %6842 = icmp eq i32 9, %6841
  br i1 %6842, label %6843, label %6844

6843:                                             ; preds = %6836
  br label %6906

6844:                                             ; preds = %6836
  %6845 = load ptr, ptr %8, align 8, !tbaa !5
  %6846 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6845, i32 0, i32 3
  %6847 = load i8, ptr %6846, align 1, !tbaa !20
  %6848 = zext i8 %6847 to i32
  %6849 = and i32 %6848, 15
  %6850 = icmp eq i32 10, %6849
  br i1 %6850, label %6851, label %6852

6851:                                             ; preds = %6844
  br label %6904

6852:                                             ; preds = %6844
  %6853 = load ptr, ptr %8, align 8, !tbaa !5
  %6854 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6853, i32 0, i32 3
  %6855 = load i8, ptr %6854, align 1, !tbaa !20
  %6856 = zext i8 %6855 to i32
  %6857 = and i32 %6856, 15
  %6858 = icmp eq i32 11, %6857
  br i1 %6858, label %6859, label %6860

6859:                                             ; preds = %6852
  br label %6902

6860:                                             ; preds = %6852
  %6861 = load ptr, ptr %8, align 8, !tbaa !5
  %6862 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6861, i32 0, i32 3
  %6863 = load i8, ptr %6862, align 1, !tbaa !20
  %6864 = zext i8 %6863 to i32
  %6865 = and i32 %6864, 15
  %6866 = icmp eq i32 12, %6865
  br i1 %6866, label %6867, label %6868

6867:                                             ; preds = %6860
  br label %6900

6868:                                             ; preds = %6860
  %6869 = load ptr, ptr %8, align 8, !tbaa !5
  %6870 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6869, i32 0, i32 3
  %6871 = load i8, ptr %6870, align 1, !tbaa !20
  %6872 = zext i8 %6871 to i32
  %6873 = and i32 %6872, 15
  %6874 = icmp eq i32 13, %6873
  br i1 %6874, label %6875, label %6876

6875:                                             ; preds = %6868
  br label %6898

6876:                                             ; preds = %6868
  %6877 = load ptr, ptr %8, align 8, !tbaa !5
  %6878 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6877, i32 0, i32 3
  %6879 = load i8, ptr %6878, align 1, !tbaa !20
  %6880 = zext i8 %6879 to i32
  %6881 = and i32 %6880, 15
  %6882 = icmp eq i32 14, %6881
  br i1 %6882, label %6883, label %6884

6883:                                             ; preds = %6876
  br label %6896

6884:                                             ; preds = %6876
  %6885 = load ptr, ptr %8, align 8, !tbaa !5
  %6886 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6885, i32 0, i32 3
  %6887 = load i8, ptr %6886, align 1, !tbaa !20
  %6888 = zext i8 %6887 to i32
  %6889 = and i32 %6888, 15
  %6890 = icmp eq i32 15, %6889
  br i1 %6890, label %6891, label %6892

6891:                                             ; preds = %6884
  br label %6894

6892:                                             ; preds = %6884
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

6893:                                             ; No predecessors!
  br label %6894

6894:                                             ; preds = %6893, %6891
  %6895 = phi i32 [ 15, %6891 ], [ 0, %6893 ]
  br label %6896

6896:                                             ; preds = %6894, %6883
  %6897 = phi i32 [ 14, %6883 ], [ %6895, %6894 ]
  br label %6898

6898:                                             ; preds = %6896, %6875
  %6899 = phi i32 [ 12, %6875 ], [ %6897, %6896 ]
  br label %6900

6900:                                             ; preds = %6898, %6867
  %6901 = phi i32 [ 12, %6867 ], [ %6899, %6898 ]
  br label %6902

6902:                                             ; preds = %6900, %6859
  %6903 = phi i32 [ 10, %6859 ], [ %6901, %6900 ]
  br label %6904

6904:                                             ; preds = %6902, %6851
  %6905 = phi i32 [ 10, %6851 ], [ %6903, %6902 ]
  br label %6906

6906:                                             ; preds = %6904, %6843
  %6907 = phi i32 [ 8, %6843 ], [ %6905, %6904 ]
  br label %6908

6908:                                             ; preds = %6906, %6835
  %6909 = phi i32 [ 8, %6835 ], [ %6907, %6906 ]
  br label %6910

6910:                                             ; preds = %6908, %6827
  %6911 = phi i32 [ 6, %6827 ], [ %6909, %6908 ]
  br label %6912

6912:                                             ; preds = %6910, %6819
  %6913 = phi i32 [ 6, %6819 ], [ %6911, %6910 ]
  br label %6914

6914:                                             ; preds = %6912, %6811
  %6915 = phi i32 [ 5, %6811 ], [ %6913, %6912 ]
  br label %6916

6916:                                             ; preds = %6914, %6803
  %6917 = phi i32 [ 4, %6803 ], [ %6915, %6914 ]
  br label %6918

6918:                                             ; preds = %6916, %6795
  %6919 = phi i32 [ 3, %6795 ], [ %6917, %6916 ]
  br label %6920

6920:                                             ; preds = %6918, %6787
  %6921 = phi i32 [ 2, %6787 ], [ %6919, %6918 ]
  br label %6922

6922:                                             ; preds = %6920, %6779
  %6923 = phi i32 [ 1, %6779 ], [ %6921, %6920 ]
  br label %6924

6924:                                             ; preds = %6922, %6771
  %6925 = phi i32 [ 0, %6771 ], [ %6923, %6922 ]
  br label %6932

6926:                                             ; preds = %6757
  %6927 = load ptr, ptr %8, align 8, !tbaa !5
  %6928 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6927, i32 0, i32 3
  %6929 = load i8, ptr %6928, align 1, !tbaa !20
  %6930 = zext i8 %6929 to i32
  %6931 = ashr i32 %6930, 4
  br label %6932

6932:                                             ; preds = %6926, %6924
  %6933 = phi i32 [ %6925, %6924 ], [ %6931, %6926 ]
  %6934 = icmp eq i32 9, %6933
  br i1 %6934, label %6935, label %6936

6935:                                             ; preds = %6932
  br label %7662

6936:                                             ; preds = %6932
  %6937 = load ptr, ptr %8, align 8, !tbaa !5
  %6938 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6937, i32 0, i32 3
  %6939 = load i8, ptr %6938, align 1, !tbaa !20
  %6940 = zext i8 %6939 to i32
  %6941 = ashr i32 %6940, 4
  %6942 = icmp eq i32 0, %6941
  br i1 %6942, label %6943, label %7105

6943:                                             ; preds = %6936
  %6944 = load ptr, ptr %8, align 8, !tbaa !5
  %6945 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6944, i32 0, i32 3
  %6946 = load i8, ptr %6945, align 1, !tbaa !20
  %6947 = zext i8 %6946 to i32
  %6948 = and i32 %6947, 15
  %6949 = icmp eq i32 0, %6948
  br i1 %6949, label %6950, label %6951

6950:                                             ; preds = %6943
  br label %7103

6951:                                             ; preds = %6943
  %6952 = load ptr, ptr %8, align 8, !tbaa !5
  %6953 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6952, i32 0, i32 3
  %6954 = load i8, ptr %6953, align 1, !tbaa !20
  %6955 = zext i8 %6954 to i32
  %6956 = and i32 %6955, 15
  %6957 = icmp eq i32 1, %6956
  br i1 %6957, label %6958, label %6959

6958:                                             ; preds = %6951
  br label %7101

6959:                                             ; preds = %6951
  %6960 = load ptr, ptr %8, align 8, !tbaa !5
  %6961 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6960, i32 0, i32 3
  %6962 = load i8, ptr %6961, align 1, !tbaa !20
  %6963 = zext i8 %6962 to i32
  %6964 = and i32 %6963, 15
  %6965 = icmp eq i32 2, %6964
  br i1 %6965, label %6966, label %6967

6966:                                             ; preds = %6959
  br label %7099

6967:                                             ; preds = %6959
  %6968 = load ptr, ptr %8, align 8, !tbaa !5
  %6969 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6968, i32 0, i32 3
  %6970 = load i8, ptr %6969, align 1, !tbaa !20
  %6971 = zext i8 %6970 to i32
  %6972 = and i32 %6971, 15
  %6973 = icmp eq i32 3, %6972
  br i1 %6973, label %6974, label %6975

6974:                                             ; preds = %6967
  br label %7097

6975:                                             ; preds = %6967
  %6976 = load ptr, ptr %8, align 8, !tbaa !5
  %6977 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6976, i32 0, i32 3
  %6978 = load i8, ptr %6977, align 1, !tbaa !20
  %6979 = zext i8 %6978 to i32
  %6980 = and i32 %6979, 15
  %6981 = icmp eq i32 4, %6980
  br i1 %6981, label %6982, label %6983

6982:                                             ; preds = %6975
  br label %7095

6983:                                             ; preds = %6975
  %6984 = load ptr, ptr %8, align 8, !tbaa !5
  %6985 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6984, i32 0, i32 3
  %6986 = load i8, ptr %6985, align 1, !tbaa !20
  %6987 = zext i8 %6986 to i32
  %6988 = and i32 %6987, 15
  %6989 = icmp eq i32 5, %6988
  br i1 %6989, label %6990, label %6991

6990:                                             ; preds = %6983
  br label %7093

6991:                                             ; preds = %6983
  %6992 = load ptr, ptr %8, align 8, !tbaa !5
  %6993 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %6992, i32 0, i32 3
  %6994 = load i8, ptr %6993, align 1, !tbaa !20
  %6995 = zext i8 %6994 to i32
  %6996 = and i32 %6995, 15
  %6997 = icmp eq i32 6, %6996
  br i1 %6997, label %6998, label %6999

6998:                                             ; preds = %6991
  br label %7091

6999:                                             ; preds = %6991
  %7000 = load ptr, ptr %8, align 8, !tbaa !5
  %7001 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7000, i32 0, i32 3
  %7002 = load i8, ptr %7001, align 1, !tbaa !20
  %7003 = zext i8 %7002 to i32
  %7004 = and i32 %7003, 15
  %7005 = icmp eq i32 7, %7004
  br i1 %7005, label %7006, label %7007

7006:                                             ; preds = %6999
  br label %7089

7007:                                             ; preds = %6999
  %7008 = load ptr, ptr %8, align 8, !tbaa !5
  %7009 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7008, i32 0, i32 3
  %7010 = load i8, ptr %7009, align 1, !tbaa !20
  %7011 = zext i8 %7010 to i32
  %7012 = and i32 %7011, 15
  %7013 = icmp eq i32 8, %7012
  br i1 %7013, label %7014, label %7015

7014:                                             ; preds = %7007
  br label %7087

7015:                                             ; preds = %7007
  %7016 = load ptr, ptr %8, align 8, !tbaa !5
  %7017 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7016, i32 0, i32 3
  %7018 = load i8, ptr %7017, align 1, !tbaa !20
  %7019 = zext i8 %7018 to i32
  %7020 = and i32 %7019, 15
  %7021 = icmp eq i32 9, %7020
  br i1 %7021, label %7022, label %7023

7022:                                             ; preds = %7015
  br label %7085

7023:                                             ; preds = %7015
  %7024 = load ptr, ptr %8, align 8, !tbaa !5
  %7025 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7024, i32 0, i32 3
  %7026 = load i8, ptr %7025, align 1, !tbaa !20
  %7027 = zext i8 %7026 to i32
  %7028 = and i32 %7027, 15
  %7029 = icmp eq i32 10, %7028
  br i1 %7029, label %7030, label %7031

7030:                                             ; preds = %7023
  br label %7083

7031:                                             ; preds = %7023
  %7032 = load ptr, ptr %8, align 8, !tbaa !5
  %7033 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7032, i32 0, i32 3
  %7034 = load i8, ptr %7033, align 1, !tbaa !20
  %7035 = zext i8 %7034 to i32
  %7036 = and i32 %7035, 15
  %7037 = icmp eq i32 11, %7036
  br i1 %7037, label %7038, label %7039

7038:                                             ; preds = %7031
  br label %7081

7039:                                             ; preds = %7031
  %7040 = load ptr, ptr %8, align 8, !tbaa !5
  %7041 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7040, i32 0, i32 3
  %7042 = load i8, ptr %7041, align 1, !tbaa !20
  %7043 = zext i8 %7042 to i32
  %7044 = and i32 %7043, 15
  %7045 = icmp eq i32 12, %7044
  br i1 %7045, label %7046, label %7047

7046:                                             ; preds = %7039
  br label %7079

7047:                                             ; preds = %7039
  %7048 = load ptr, ptr %8, align 8, !tbaa !5
  %7049 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7048, i32 0, i32 3
  %7050 = load i8, ptr %7049, align 1, !tbaa !20
  %7051 = zext i8 %7050 to i32
  %7052 = and i32 %7051, 15
  %7053 = icmp eq i32 13, %7052
  br i1 %7053, label %7054, label %7055

7054:                                             ; preds = %7047
  br label %7077

7055:                                             ; preds = %7047
  %7056 = load ptr, ptr %8, align 8, !tbaa !5
  %7057 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7056, i32 0, i32 3
  %7058 = load i8, ptr %7057, align 1, !tbaa !20
  %7059 = zext i8 %7058 to i32
  %7060 = and i32 %7059, 15
  %7061 = icmp eq i32 14, %7060
  br i1 %7061, label %7062, label %7063

7062:                                             ; preds = %7055
  br label %7075

7063:                                             ; preds = %7055
  %7064 = load ptr, ptr %8, align 8, !tbaa !5
  %7065 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7064, i32 0, i32 3
  %7066 = load i8, ptr %7065, align 1, !tbaa !20
  %7067 = zext i8 %7066 to i32
  %7068 = and i32 %7067, 15
  %7069 = icmp eq i32 15, %7068
  br i1 %7069, label %7070, label %7071

7070:                                             ; preds = %7063
  br label %7073

7071:                                             ; preds = %7063
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

7072:                                             ; No predecessors!
  br label %7073

7073:                                             ; preds = %7072, %7070
  %7074 = phi i32 [ 15, %7070 ], [ 0, %7072 ]
  br label %7075

7075:                                             ; preds = %7073, %7062
  %7076 = phi i32 [ 14, %7062 ], [ %7074, %7073 ]
  br label %7077

7077:                                             ; preds = %7075, %7054
  %7078 = phi i32 [ 12, %7054 ], [ %7076, %7075 ]
  br label %7079

7079:                                             ; preds = %7077, %7046
  %7080 = phi i32 [ 12, %7046 ], [ %7078, %7077 ]
  br label %7081

7081:                                             ; preds = %7079, %7038
  %7082 = phi i32 [ 10, %7038 ], [ %7080, %7079 ]
  br label %7083

7083:                                             ; preds = %7081, %7030
  %7084 = phi i32 [ 10, %7030 ], [ %7082, %7081 ]
  br label %7085

7085:                                             ; preds = %7083, %7022
  %7086 = phi i32 [ 8, %7022 ], [ %7084, %7083 ]
  br label %7087

7087:                                             ; preds = %7085, %7014
  %7088 = phi i32 [ 8, %7014 ], [ %7086, %7085 ]
  br label %7089

7089:                                             ; preds = %7087, %7006
  %7090 = phi i32 [ 6, %7006 ], [ %7088, %7087 ]
  br label %7091

7091:                                             ; preds = %7089, %6998
  %7092 = phi i32 [ 6, %6998 ], [ %7090, %7089 ]
  br label %7093

7093:                                             ; preds = %7091, %6990
  %7094 = phi i32 [ 5, %6990 ], [ %7092, %7091 ]
  br label %7095

7095:                                             ; preds = %7093, %6982
  %7096 = phi i32 [ 4, %6982 ], [ %7094, %7093 ]
  br label %7097

7097:                                             ; preds = %7095, %6974
  %7098 = phi i32 [ 3, %6974 ], [ %7096, %7095 ]
  br label %7099

7099:                                             ; preds = %7097, %6966
  %7100 = phi i32 [ 2, %6966 ], [ %7098, %7097 ]
  br label %7101

7101:                                             ; preds = %7099, %6958
  %7102 = phi i32 [ 1, %6958 ], [ %7100, %7099 ]
  br label %7103

7103:                                             ; preds = %7101, %6950
  %7104 = phi i32 [ 0, %6950 ], [ %7102, %7101 ]
  br label %7111

7105:                                             ; preds = %6936
  %7106 = load ptr, ptr %8, align 8, !tbaa !5
  %7107 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7106, i32 0, i32 3
  %7108 = load i8, ptr %7107, align 1, !tbaa !20
  %7109 = zext i8 %7108 to i32
  %7110 = ashr i32 %7109, 4
  br label %7111

7111:                                             ; preds = %7105, %7103
  %7112 = phi i32 [ %7104, %7103 ], [ %7110, %7105 ]
  %7113 = icmp eq i32 10, %7112
  br i1 %7113, label %7114, label %7115

7114:                                             ; preds = %7111
  br label %7660

7115:                                             ; preds = %7111
  %7116 = load ptr, ptr %8, align 8, !tbaa !5
  %7117 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7116, i32 0, i32 3
  %7118 = load i8, ptr %7117, align 1, !tbaa !20
  %7119 = zext i8 %7118 to i32
  %7120 = ashr i32 %7119, 4
  %7121 = icmp eq i32 0, %7120
  br i1 %7121, label %7122, label %7284

7122:                                             ; preds = %7115
  %7123 = load ptr, ptr %8, align 8, !tbaa !5
  %7124 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7123, i32 0, i32 3
  %7125 = load i8, ptr %7124, align 1, !tbaa !20
  %7126 = zext i8 %7125 to i32
  %7127 = and i32 %7126, 15
  %7128 = icmp eq i32 0, %7127
  br i1 %7128, label %7129, label %7130

7129:                                             ; preds = %7122
  br label %7282

7130:                                             ; preds = %7122
  %7131 = load ptr, ptr %8, align 8, !tbaa !5
  %7132 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7131, i32 0, i32 3
  %7133 = load i8, ptr %7132, align 1, !tbaa !20
  %7134 = zext i8 %7133 to i32
  %7135 = and i32 %7134, 15
  %7136 = icmp eq i32 1, %7135
  br i1 %7136, label %7137, label %7138

7137:                                             ; preds = %7130
  br label %7280

7138:                                             ; preds = %7130
  %7139 = load ptr, ptr %8, align 8, !tbaa !5
  %7140 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7139, i32 0, i32 3
  %7141 = load i8, ptr %7140, align 1, !tbaa !20
  %7142 = zext i8 %7141 to i32
  %7143 = and i32 %7142, 15
  %7144 = icmp eq i32 2, %7143
  br i1 %7144, label %7145, label %7146

7145:                                             ; preds = %7138
  br label %7278

7146:                                             ; preds = %7138
  %7147 = load ptr, ptr %8, align 8, !tbaa !5
  %7148 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7147, i32 0, i32 3
  %7149 = load i8, ptr %7148, align 1, !tbaa !20
  %7150 = zext i8 %7149 to i32
  %7151 = and i32 %7150, 15
  %7152 = icmp eq i32 3, %7151
  br i1 %7152, label %7153, label %7154

7153:                                             ; preds = %7146
  br label %7276

7154:                                             ; preds = %7146
  %7155 = load ptr, ptr %8, align 8, !tbaa !5
  %7156 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7155, i32 0, i32 3
  %7157 = load i8, ptr %7156, align 1, !tbaa !20
  %7158 = zext i8 %7157 to i32
  %7159 = and i32 %7158, 15
  %7160 = icmp eq i32 4, %7159
  br i1 %7160, label %7161, label %7162

7161:                                             ; preds = %7154
  br label %7274

7162:                                             ; preds = %7154
  %7163 = load ptr, ptr %8, align 8, !tbaa !5
  %7164 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7163, i32 0, i32 3
  %7165 = load i8, ptr %7164, align 1, !tbaa !20
  %7166 = zext i8 %7165 to i32
  %7167 = and i32 %7166, 15
  %7168 = icmp eq i32 5, %7167
  br i1 %7168, label %7169, label %7170

7169:                                             ; preds = %7162
  br label %7272

7170:                                             ; preds = %7162
  %7171 = load ptr, ptr %8, align 8, !tbaa !5
  %7172 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7171, i32 0, i32 3
  %7173 = load i8, ptr %7172, align 1, !tbaa !20
  %7174 = zext i8 %7173 to i32
  %7175 = and i32 %7174, 15
  %7176 = icmp eq i32 6, %7175
  br i1 %7176, label %7177, label %7178

7177:                                             ; preds = %7170
  br label %7270

7178:                                             ; preds = %7170
  %7179 = load ptr, ptr %8, align 8, !tbaa !5
  %7180 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7179, i32 0, i32 3
  %7181 = load i8, ptr %7180, align 1, !tbaa !20
  %7182 = zext i8 %7181 to i32
  %7183 = and i32 %7182, 15
  %7184 = icmp eq i32 7, %7183
  br i1 %7184, label %7185, label %7186

7185:                                             ; preds = %7178
  br label %7268

7186:                                             ; preds = %7178
  %7187 = load ptr, ptr %8, align 8, !tbaa !5
  %7188 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7187, i32 0, i32 3
  %7189 = load i8, ptr %7188, align 1, !tbaa !20
  %7190 = zext i8 %7189 to i32
  %7191 = and i32 %7190, 15
  %7192 = icmp eq i32 8, %7191
  br i1 %7192, label %7193, label %7194

7193:                                             ; preds = %7186
  br label %7266

7194:                                             ; preds = %7186
  %7195 = load ptr, ptr %8, align 8, !tbaa !5
  %7196 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7195, i32 0, i32 3
  %7197 = load i8, ptr %7196, align 1, !tbaa !20
  %7198 = zext i8 %7197 to i32
  %7199 = and i32 %7198, 15
  %7200 = icmp eq i32 9, %7199
  br i1 %7200, label %7201, label %7202

7201:                                             ; preds = %7194
  br label %7264

7202:                                             ; preds = %7194
  %7203 = load ptr, ptr %8, align 8, !tbaa !5
  %7204 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7203, i32 0, i32 3
  %7205 = load i8, ptr %7204, align 1, !tbaa !20
  %7206 = zext i8 %7205 to i32
  %7207 = and i32 %7206, 15
  %7208 = icmp eq i32 10, %7207
  br i1 %7208, label %7209, label %7210

7209:                                             ; preds = %7202
  br label %7262

7210:                                             ; preds = %7202
  %7211 = load ptr, ptr %8, align 8, !tbaa !5
  %7212 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7211, i32 0, i32 3
  %7213 = load i8, ptr %7212, align 1, !tbaa !20
  %7214 = zext i8 %7213 to i32
  %7215 = and i32 %7214, 15
  %7216 = icmp eq i32 11, %7215
  br i1 %7216, label %7217, label %7218

7217:                                             ; preds = %7210
  br label %7260

7218:                                             ; preds = %7210
  %7219 = load ptr, ptr %8, align 8, !tbaa !5
  %7220 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7219, i32 0, i32 3
  %7221 = load i8, ptr %7220, align 1, !tbaa !20
  %7222 = zext i8 %7221 to i32
  %7223 = and i32 %7222, 15
  %7224 = icmp eq i32 12, %7223
  br i1 %7224, label %7225, label %7226

7225:                                             ; preds = %7218
  br label %7258

7226:                                             ; preds = %7218
  %7227 = load ptr, ptr %8, align 8, !tbaa !5
  %7228 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7227, i32 0, i32 3
  %7229 = load i8, ptr %7228, align 1, !tbaa !20
  %7230 = zext i8 %7229 to i32
  %7231 = and i32 %7230, 15
  %7232 = icmp eq i32 13, %7231
  br i1 %7232, label %7233, label %7234

7233:                                             ; preds = %7226
  br label %7256

7234:                                             ; preds = %7226
  %7235 = load ptr, ptr %8, align 8, !tbaa !5
  %7236 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7235, i32 0, i32 3
  %7237 = load i8, ptr %7236, align 1, !tbaa !20
  %7238 = zext i8 %7237 to i32
  %7239 = and i32 %7238, 15
  %7240 = icmp eq i32 14, %7239
  br i1 %7240, label %7241, label %7242

7241:                                             ; preds = %7234
  br label %7254

7242:                                             ; preds = %7234
  %7243 = load ptr, ptr %8, align 8, !tbaa !5
  %7244 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7243, i32 0, i32 3
  %7245 = load i8, ptr %7244, align 1, !tbaa !20
  %7246 = zext i8 %7245 to i32
  %7247 = and i32 %7246, 15
  %7248 = icmp eq i32 15, %7247
  br i1 %7248, label %7249, label %7250

7249:                                             ; preds = %7242
  br label %7252

7250:                                             ; preds = %7242
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

7251:                                             ; No predecessors!
  br label %7252

7252:                                             ; preds = %7251, %7249
  %7253 = phi i32 [ 15, %7249 ], [ 0, %7251 ]
  br label %7254

7254:                                             ; preds = %7252, %7241
  %7255 = phi i32 [ 14, %7241 ], [ %7253, %7252 ]
  br label %7256

7256:                                             ; preds = %7254, %7233
  %7257 = phi i32 [ 12, %7233 ], [ %7255, %7254 ]
  br label %7258

7258:                                             ; preds = %7256, %7225
  %7259 = phi i32 [ 12, %7225 ], [ %7257, %7256 ]
  br label %7260

7260:                                             ; preds = %7258, %7217
  %7261 = phi i32 [ 10, %7217 ], [ %7259, %7258 ]
  br label %7262

7262:                                             ; preds = %7260, %7209
  %7263 = phi i32 [ 10, %7209 ], [ %7261, %7260 ]
  br label %7264

7264:                                             ; preds = %7262, %7201
  %7265 = phi i32 [ 8, %7201 ], [ %7263, %7262 ]
  br label %7266

7266:                                             ; preds = %7264, %7193
  %7267 = phi i32 [ 8, %7193 ], [ %7265, %7264 ]
  br label %7268

7268:                                             ; preds = %7266, %7185
  %7269 = phi i32 [ 6, %7185 ], [ %7267, %7266 ]
  br label %7270

7270:                                             ; preds = %7268, %7177
  %7271 = phi i32 [ 6, %7177 ], [ %7269, %7268 ]
  br label %7272

7272:                                             ; preds = %7270, %7169
  %7273 = phi i32 [ 5, %7169 ], [ %7271, %7270 ]
  br label %7274

7274:                                             ; preds = %7272, %7161
  %7275 = phi i32 [ 4, %7161 ], [ %7273, %7272 ]
  br label %7276

7276:                                             ; preds = %7274, %7153
  %7277 = phi i32 [ 3, %7153 ], [ %7275, %7274 ]
  br label %7278

7278:                                             ; preds = %7276, %7145
  %7279 = phi i32 [ 2, %7145 ], [ %7277, %7276 ]
  br label %7280

7280:                                             ; preds = %7278, %7137
  %7281 = phi i32 [ 1, %7137 ], [ %7279, %7278 ]
  br label %7282

7282:                                             ; preds = %7280, %7129
  %7283 = phi i32 [ 0, %7129 ], [ %7281, %7280 ]
  br label %7290

7284:                                             ; preds = %7115
  %7285 = load ptr, ptr %8, align 8, !tbaa !5
  %7286 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7285, i32 0, i32 3
  %7287 = load i8, ptr %7286, align 1, !tbaa !20
  %7288 = zext i8 %7287 to i32
  %7289 = ashr i32 %7288, 4
  br label %7290

7290:                                             ; preds = %7284, %7282
  %7291 = phi i32 [ %7283, %7282 ], [ %7289, %7284 ]
  %7292 = icmp eq i32 11, %7291
  br i1 %7292, label %7293, label %7294

7293:                                             ; preds = %7290
  br label %7658

7294:                                             ; preds = %7290
  %7295 = load ptr, ptr %8, align 8, !tbaa !5
  %7296 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7295, i32 0, i32 3
  %7297 = load i8, ptr %7296, align 1, !tbaa !20
  %7298 = zext i8 %7297 to i32
  %7299 = ashr i32 %7298, 4
  %7300 = icmp eq i32 0, %7299
  br i1 %7300, label %7301, label %7463

7301:                                             ; preds = %7294
  %7302 = load ptr, ptr %8, align 8, !tbaa !5
  %7303 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7302, i32 0, i32 3
  %7304 = load i8, ptr %7303, align 1, !tbaa !20
  %7305 = zext i8 %7304 to i32
  %7306 = and i32 %7305, 15
  %7307 = icmp eq i32 0, %7306
  br i1 %7307, label %7308, label %7309

7308:                                             ; preds = %7301
  br label %7461

7309:                                             ; preds = %7301
  %7310 = load ptr, ptr %8, align 8, !tbaa !5
  %7311 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7310, i32 0, i32 3
  %7312 = load i8, ptr %7311, align 1, !tbaa !20
  %7313 = zext i8 %7312 to i32
  %7314 = and i32 %7313, 15
  %7315 = icmp eq i32 1, %7314
  br i1 %7315, label %7316, label %7317

7316:                                             ; preds = %7309
  br label %7459

7317:                                             ; preds = %7309
  %7318 = load ptr, ptr %8, align 8, !tbaa !5
  %7319 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7318, i32 0, i32 3
  %7320 = load i8, ptr %7319, align 1, !tbaa !20
  %7321 = zext i8 %7320 to i32
  %7322 = and i32 %7321, 15
  %7323 = icmp eq i32 2, %7322
  br i1 %7323, label %7324, label %7325

7324:                                             ; preds = %7317
  br label %7457

7325:                                             ; preds = %7317
  %7326 = load ptr, ptr %8, align 8, !tbaa !5
  %7327 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7326, i32 0, i32 3
  %7328 = load i8, ptr %7327, align 1, !tbaa !20
  %7329 = zext i8 %7328 to i32
  %7330 = and i32 %7329, 15
  %7331 = icmp eq i32 3, %7330
  br i1 %7331, label %7332, label %7333

7332:                                             ; preds = %7325
  br label %7455

7333:                                             ; preds = %7325
  %7334 = load ptr, ptr %8, align 8, !tbaa !5
  %7335 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7334, i32 0, i32 3
  %7336 = load i8, ptr %7335, align 1, !tbaa !20
  %7337 = zext i8 %7336 to i32
  %7338 = and i32 %7337, 15
  %7339 = icmp eq i32 4, %7338
  br i1 %7339, label %7340, label %7341

7340:                                             ; preds = %7333
  br label %7453

7341:                                             ; preds = %7333
  %7342 = load ptr, ptr %8, align 8, !tbaa !5
  %7343 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7342, i32 0, i32 3
  %7344 = load i8, ptr %7343, align 1, !tbaa !20
  %7345 = zext i8 %7344 to i32
  %7346 = and i32 %7345, 15
  %7347 = icmp eq i32 5, %7346
  br i1 %7347, label %7348, label %7349

7348:                                             ; preds = %7341
  br label %7451

7349:                                             ; preds = %7341
  %7350 = load ptr, ptr %8, align 8, !tbaa !5
  %7351 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7350, i32 0, i32 3
  %7352 = load i8, ptr %7351, align 1, !tbaa !20
  %7353 = zext i8 %7352 to i32
  %7354 = and i32 %7353, 15
  %7355 = icmp eq i32 6, %7354
  br i1 %7355, label %7356, label %7357

7356:                                             ; preds = %7349
  br label %7449

7357:                                             ; preds = %7349
  %7358 = load ptr, ptr %8, align 8, !tbaa !5
  %7359 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7358, i32 0, i32 3
  %7360 = load i8, ptr %7359, align 1, !tbaa !20
  %7361 = zext i8 %7360 to i32
  %7362 = and i32 %7361, 15
  %7363 = icmp eq i32 7, %7362
  br i1 %7363, label %7364, label %7365

7364:                                             ; preds = %7357
  br label %7447

7365:                                             ; preds = %7357
  %7366 = load ptr, ptr %8, align 8, !tbaa !5
  %7367 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7366, i32 0, i32 3
  %7368 = load i8, ptr %7367, align 1, !tbaa !20
  %7369 = zext i8 %7368 to i32
  %7370 = and i32 %7369, 15
  %7371 = icmp eq i32 8, %7370
  br i1 %7371, label %7372, label %7373

7372:                                             ; preds = %7365
  br label %7445

7373:                                             ; preds = %7365
  %7374 = load ptr, ptr %8, align 8, !tbaa !5
  %7375 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7374, i32 0, i32 3
  %7376 = load i8, ptr %7375, align 1, !tbaa !20
  %7377 = zext i8 %7376 to i32
  %7378 = and i32 %7377, 15
  %7379 = icmp eq i32 9, %7378
  br i1 %7379, label %7380, label %7381

7380:                                             ; preds = %7373
  br label %7443

7381:                                             ; preds = %7373
  %7382 = load ptr, ptr %8, align 8, !tbaa !5
  %7383 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7382, i32 0, i32 3
  %7384 = load i8, ptr %7383, align 1, !tbaa !20
  %7385 = zext i8 %7384 to i32
  %7386 = and i32 %7385, 15
  %7387 = icmp eq i32 10, %7386
  br i1 %7387, label %7388, label %7389

7388:                                             ; preds = %7381
  br label %7441

7389:                                             ; preds = %7381
  %7390 = load ptr, ptr %8, align 8, !tbaa !5
  %7391 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7390, i32 0, i32 3
  %7392 = load i8, ptr %7391, align 1, !tbaa !20
  %7393 = zext i8 %7392 to i32
  %7394 = and i32 %7393, 15
  %7395 = icmp eq i32 11, %7394
  br i1 %7395, label %7396, label %7397

7396:                                             ; preds = %7389
  br label %7439

7397:                                             ; preds = %7389
  %7398 = load ptr, ptr %8, align 8, !tbaa !5
  %7399 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7398, i32 0, i32 3
  %7400 = load i8, ptr %7399, align 1, !tbaa !20
  %7401 = zext i8 %7400 to i32
  %7402 = and i32 %7401, 15
  %7403 = icmp eq i32 12, %7402
  br i1 %7403, label %7404, label %7405

7404:                                             ; preds = %7397
  br label %7437

7405:                                             ; preds = %7397
  %7406 = load ptr, ptr %8, align 8, !tbaa !5
  %7407 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7406, i32 0, i32 3
  %7408 = load i8, ptr %7407, align 1, !tbaa !20
  %7409 = zext i8 %7408 to i32
  %7410 = and i32 %7409, 15
  %7411 = icmp eq i32 13, %7410
  br i1 %7411, label %7412, label %7413

7412:                                             ; preds = %7405
  br label %7435

7413:                                             ; preds = %7405
  %7414 = load ptr, ptr %8, align 8, !tbaa !5
  %7415 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7414, i32 0, i32 3
  %7416 = load i8, ptr %7415, align 1, !tbaa !20
  %7417 = zext i8 %7416 to i32
  %7418 = and i32 %7417, 15
  %7419 = icmp eq i32 14, %7418
  br i1 %7419, label %7420, label %7421

7420:                                             ; preds = %7413
  br label %7433

7421:                                             ; preds = %7413
  %7422 = load ptr, ptr %8, align 8, !tbaa !5
  %7423 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7422, i32 0, i32 3
  %7424 = load i8, ptr %7423, align 1, !tbaa !20
  %7425 = zext i8 %7424 to i32
  %7426 = and i32 %7425, 15
  %7427 = icmp eq i32 15, %7426
  br i1 %7427, label %7428, label %7429

7428:                                             ; preds = %7421
  br label %7431

7429:                                             ; preds = %7421
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

7430:                                             ; No predecessors!
  br label %7431

7431:                                             ; preds = %7430, %7428
  %7432 = phi i32 [ 15, %7428 ], [ 0, %7430 ]
  br label %7433

7433:                                             ; preds = %7431, %7420
  %7434 = phi i32 [ 14, %7420 ], [ %7432, %7431 ]
  br label %7435

7435:                                             ; preds = %7433, %7412
  %7436 = phi i32 [ 12, %7412 ], [ %7434, %7433 ]
  br label %7437

7437:                                             ; preds = %7435, %7404
  %7438 = phi i32 [ 12, %7404 ], [ %7436, %7435 ]
  br label %7439

7439:                                             ; preds = %7437, %7396
  %7440 = phi i32 [ 10, %7396 ], [ %7438, %7437 ]
  br label %7441

7441:                                             ; preds = %7439, %7388
  %7442 = phi i32 [ 10, %7388 ], [ %7440, %7439 ]
  br label %7443

7443:                                             ; preds = %7441, %7380
  %7444 = phi i32 [ 8, %7380 ], [ %7442, %7441 ]
  br label %7445

7445:                                             ; preds = %7443, %7372
  %7446 = phi i32 [ 8, %7372 ], [ %7444, %7443 ]
  br label %7447

7447:                                             ; preds = %7445, %7364
  %7448 = phi i32 [ 6, %7364 ], [ %7446, %7445 ]
  br label %7449

7449:                                             ; preds = %7447, %7356
  %7450 = phi i32 [ 6, %7356 ], [ %7448, %7447 ]
  br label %7451

7451:                                             ; preds = %7449, %7348
  %7452 = phi i32 [ 5, %7348 ], [ %7450, %7449 ]
  br label %7453

7453:                                             ; preds = %7451, %7340
  %7454 = phi i32 [ 4, %7340 ], [ %7452, %7451 ]
  br label %7455

7455:                                             ; preds = %7453, %7332
  %7456 = phi i32 [ 3, %7332 ], [ %7454, %7453 ]
  br label %7457

7457:                                             ; preds = %7455, %7324
  %7458 = phi i32 [ 2, %7324 ], [ %7456, %7455 ]
  br label %7459

7459:                                             ; preds = %7457, %7316
  %7460 = phi i32 [ 1, %7316 ], [ %7458, %7457 ]
  br label %7461

7461:                                             ; preds = %7459, %7308
  %7462 = phi i32 [ 0, %7308 ], [ %7460, %7459 ]
  br label %7469

7463:                                             ; preds = %7294
  %7464 = load ptr, ptr %8, align 8, !tbaa !5
  %7465 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7464, i32 0, i32 3
  %7466 = load i8, ptr %7465, align 1, !tbaa !20
  %7467 = zext i8 %7466 to i32
  %7468 = ashr i32 %7467, 4
  br label %7469

7469:                                             ; preds = %7463, %7461
  %7470 = phi i32 [ %7462, %7461 ], [ %7468, %7463 ]
  %7471 = icmp eq i32 12, %7470
  br i1 %7471, label %7472, label %7473

7472:                                             ; preds = %7469
  br label %7656

7473:                                             ; preds = %7469
  %7474 = load ptr, ptr %8, align 8, !tbaa !5
  %7475 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7474, i32 0, i32 3
  %7476 = load i8, ptr %7475, align 1, !tbaa !20
  %7477 = zext i8 %7476 to i32
  %7478 = ashr i32 %7477, 4
  %7479 = icmp eq i32 0, %7478
  br i1 %7479, label %7480, label %7642

7480:                                             ; preds = %7473
  %7481 = load ptr, ptr %8, align 8, !tbaa !5
  %7482 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7481, i32 0, i32 3
  %7483 = load i8, ptr %7482, align 1, !tbaa !20
  %7484 = zext i8 %7483 to i32
  %7485 = and i32 %7484, 15
  %7486 = icmp eq i32 0, %7485
  br i1 %7486, label %7487, label %7488

7487:                                             ; preds = %7480
  br label %7640

7488:                                             ; preds = %7480
  %7489 = load ptr, ptr %8, align 8, !tbaa !5
  %7490 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7489, i32 0, i32 3
  %7491 = load i8, ptr %7490, align 1, !tbaa !20
  %7492 = zext i8 %7491 to i32
  %7493 = and i32 %7492, 15
  %7494 = icmp eq i32 1, %7493
  br i1 %7494, label %7495, label %7496

7495:                                             ; preds = %7488
  br label %7638

7496:                                             ; preds = %7488
  %7497 = load ptr, ptr %8, align 8, !tbaa !5
  %7498 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7497, i32 0, i32 3
  %7499 = load i8, ptr %7498, align 1, !tbaa !20
  %7500 = zext i8 %7499 to i32
  %7501 = and i32 %7500, 15
  %7502 = icmp eq i32 2, %7501
  br i1 %7502, label %7503, label %7504

7503:                                             ; preds = %7496
  br label %7636

7504:                                             ; preds = %7496
  %7505 = load ptr, ptr %8, align 8, !tbaa !5
  %7506 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7505, i32 0, i32 3
  %7507 = load i8, ptr %7506, align 1, !tbaa !20
  %7508 = zext i8 %7507 to i32
  %7509 = and i32 %7508, 15
  %7510 = icmp eq i32 3, %7509
  br i1 %7510, label %7511, label %7512

7511:                                             ; preds = %7504
  br label %7634

7512:                                             ; preds = %7504
  %7513 = load ptr, ptr %8, align 8, !tbaa !5
  %7514 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7513, i32 0, i32 3
  %7515 = load i8, ptr %7514, align 1, !tbaa !20
  %7516 = zext i8 %7515 to i32
  %7517 = and i32 %7516, 15
  %7518 = icmp eq i32 4, %7517
  br i1 %7518, label %7519, label %7520

7519:                                             ; preds = %7512
  br label %7632

7520:                                             ; preds = %7512
  %7521 = load ptr, ptr %8, align 8, !tbaa !5
  %7522 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7521, i32 0, i32 3
  %7523 = load i8, ptr %7522, align 1, !tbaa !20
  %7524 = zext i8 %7523 to i32
  %7525 = and i32 %7524, 15
  %7526 = icmp eq i32 5, %7525
  br i1 %7526, label %7527, label %7528

7527:                                             ; preds = %7520
  br label %7630

7528:                                             ; preds = %7520
  %7529 = load ptr, ptr %8, align 8, !tbaa !5
  %7530 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7529, i32 0, i32 3
  %7531 = load i8, ptr %7530, align 1, !tbaa !20
  %7532 = zext i8 %7531 to i32
  %7533 = and i32 %7532, 15
  %7534 = icmp eq i32 6, %7533
  br i1 %7534, label %7535, label %7536

7535:                                             ; preds = %7528
  br label %7628

7536:                                             ; preds = %7528
  %7537 = load ptr, ptr %8, align 8, !tbaa !5
  %7538 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7537, i32 0, i32 3
  %7539 = load i8, ptr %7538, align 1, !tbaa !20
  %7540 = zext i8 %7539 to i32
  %7541 = and i32 %7540, 15
  %7542 = icmp eq i32 7, %7541
  br i1 %7542, label %7543, label %7544

7543:                                             ; preds = %7536
  br label %7626

7544:                                             ; preds = %7536
  %7545 = load ptr, ptr %8, align 8, !tbaa !5
  %7546 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7545, i32 0, i32 3
  %7547 = load i8, ptr %7546, align 1, !tbaa !20
  %7548 = zext i8 %7547 to i32
  %7549 = and i32 %7548, 15
  %7550 = icmp eq i32 8, %7549
  br i1 %7550, label %7551, label %7552

7551:                                             ; preds = %7544
  br label %7624

7552:                                             ; preds = %7544
  %7553 = load ptr, ptr %8, align 8, !tbaa !5
  %7554 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7553, i32 0, i32 3
  %7555 = load i8, ptr %7554, align 1, !tbaa !20
  %7556 = zext i8 %7555 to i32
  %7557 = and i32 %7556, 15
  %7558 = icmp eq i32 9, %7557
  br i1 %7558, label %7559, label %7560

7559:                                             ; preds = %7552
  br label %7622

7560:                                             ; preds = %7552
  %7561 = load ptr, ptr %8, align 8, !tbaa !5
  %7562 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7561, i32 0, i32 3
  %7563 = load i8, ptr %7562, align 1, !tbaa !20
  %7564 = zext i8 %7563 to i32
  %7565 = and i32 %7564, 15
  %7566 = icmp eq i32 10, %7565
  br i1 %7566, label %7567, label %7568

7567:                                             ; preds = %7560
  br label %7620

7568:                                             ; preds = %7560
  %7569 = load ptr, ptr %8, align 8, !tbaa !5
  %7570 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7569, i32 0, i32 3
  %7571 = load i8, ptr %7570, align 1, !tbaa !20
  %7572 = zext i8 %7571 to i32
  %7573 = and i32 %7572, 15
  %7574 = icmp eq i32 11, %7573
  br i1 %7574, label %7575, label %7576

7575:                                             ; preds = %7568
  br label %7618

7576:                                             ; preds = %7568
  %7577 = load ptr, ptr %8, align 8, !tbaa !5
  %7578 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7577, i32 0, i32 3
  %7579 = load i8, ptr %7578, align 1, !tbaa !20
  %7580 = zext i8 %7579 to i32
  %7581 = and i32 %7580, 15
  %7582 = icmp eq i32 12, %7581
  br i1 %7582, label %7583, label %7584

7583:                                             ; preds = %7576
  br label %7616

7584:                                             ; preds = %7576
  %7585 = load ptr, ptr %8, align 8, !tbaa !5
  %7586 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7585, i32 0, i32 3
  %7587 = load i8, ptr %7586, align 1, !tbaa !20
  %7588 = zext i8 %7587 to i32
  %7589 = and i32 %7588, 15
  %7590 = icmp eq i32 13, %7589
  br i1 %7590, label %7591, label %7592

7591:                                             ; preds = %7584
  br label %7614

7592:                                             ; preds = %7584
  %7593 = load ptr, ptr %8, align 8, !tbaa !5
  %7594 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7593, i32 0, i32 3
  %7595 = load i8, ptr %7594, align 1, !tbaa !20
  %7596 = zext i8 %7595 to i32
  %7597 = and i32 %7596, 15
  %7598 = icmp eq i32 14, %7597
  br i1 %7598, label %7599, label %7600

7599:                                             ; preds = %7592
  br label %7612

7600:                                             ; preds = %7592
  %7601 = load ptr, ptr %8, align 8, !tbaa !5
  %7602 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7601, i32 0, i32 3
  %7603 = load i8, ptr %7602, align 1, !tbaa !20
  %7604 = zext i8 %7603 to i32
  %7605 = and i32 %7604, 15
  %7606 = icmp eq i32 15, %7605
  br i1 %7606, label %7607, label %7608

7607:                                             ; preds = %7600
  br label %7610

7608:                                             ; preds = %7600
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

7609:                                             ; No predecessors!
  br label %7610

7610:                                             ; preds = %7609, %7607
  %7611 = phi i32 [ 15, %7607 ], [ 0, %7609 ]
  br label %7612

7612:                                             ; preds = %7610, %7599
  %7613 = phi i32 [ 14, %7599 ], [ %7611, %7610 ]
  br label %7614

7614:                                             ; preds = %7612, %7591
  %7615 = phi i32 [ 12, %7591 ], [ %7613, %7612 ]
  br label %7616

7616:                                             ; preds = %7614, %7583
  %7617 = phi i32 [ 12, %7583 ], [ %7615, %7614 ]
  br label %7618

7618:                                             ; preds = %7616, %7575
  %7619 = phi i32 [ 10, %7575 ], [ %7617, %7616 ]
  br label %7620

7620:                                             ; preds = %7618, %7567
  %7621 = phi i32 [ 10, %7567 ], [ %7619, %7618 ]
  br label %7622

7622:                                             ; preds = %7620, %7559
  %7623 = phi i32 [ 8, %7559 ], [ %7621, %7620 ]
  br label %7624

7624:                                             ; preds = %7622, %7551
  %7625 = phi i32 [ 8, %7551 ], [ %7623, %7622 ]
  br label %7626

7626:                                             ; preds = %7624, %7543
  %7627 = phi i32 [ 6, %7543 ], [ %7625, %7624 ]
  br label %7628

7628:                                             ; preds = %7626, %7535
  %7629 = phi i32 [ 6, %7535 ], [ %7627, %7626 ]
  br label %7630

7630:                                             ; preds = %7628, %7527
  %7631 = phi i32 [ 5, %7527 ], [ %7629, %7628 ]
  br label %7632

7632:                                             ; preds = %7630, %7519
  %7633 = phi i32 [ 4, %7519 ], [ %7631, %7630 ]
  br label %7634

7634:                                             ; preds = %7632, %7511
  %7635 = phi i32 [ 3, %7511 ], [ %7633, %7632 ]
  br label %7636

7636:                                             ; preds = %7634, %7503
  %7637 = phi i32 [ 2, %7503 ], [ %7635, %7634 ]
  br label %7638

7638:                                             ; preds = %7636, %7495
  %7639 = phi i32 [ 1, %7495 ], [ %7637, %7636 ]
  br label %7640

7640:                                             ; preds = %7638, %7487
  %7641 = phi i32 [ 0, %7487 ], [ %7639, %7638 ]
  br label %7648

7642:                                             ; preds = %7473
  %7643 = load ptr, ptr %8, align 8, !tbaa !5
  %7644 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %7643, i32 0, i32 3
  %7645 = load i8, ptr %7644, align 1, !tbaa !20
  %7646 = zext i8 %7645 to i32
  %7647 = ashr i32 %7646, 4
  br label %7648

7648:                                             ; preds = %7642, %7640
  %7649 = phi i32 [ %7641, %7640 ], [ %7647, %7642 ]
  %7650 = icmp eq i32 13, %7649
  br i1 %7650, label %7651, label %7652

7651:                                             ; preds = %7648
  br label %7654

7652:                                             ; preds = %7648
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #5
  unreachable

7653:                                             ; No predecessors!
  br label %7654

7654:                                             ; preds = %7653, %7651
  %7655 = phi i32 [ 1, %7651 ], [ 0, %7653 ]
  br label %7656

7656:                                             ; preds = %7654, %7472
  %7657 = phi i32 [ 1, %7472 ], [ %7655, %7654 ]
  br label %7658

7658:                                             ; preds = %7656, %7293
  %7659 = phi i32 [ 2, %7293 ], [ %7657, %7656 ]
  br label %7660

7660:                                             ; preds = %7658, %7114
  %7661 = phi i32 [ 2, %7114 ], [ %7659, %7658 ]
  br label %7662

7662:                                             ; preds = %7660, %6935
  %7663 = phi i32 [ 4, %6935 ], [ %7661, %7660 ]
  br label %7664

7664:                                             ; preds = %7662, %6756
  %7665 = phi i32 [ 4, %6756 ], [ %7663, %7662 ]
  br label %7666

7666:                                             ; preds = %7664, %6577
  %7667 = phi i32 [ 8, %6577 ], [ %7665, %7664 ]
  br label %7668

7668:                                             ; preds = %7666, %6398
  %7669 = phi i32 [ 8, %6398 ], [ %7667, %7666 ]
  br label %7670

7670:                                             ; preds = %7668, %6219
  %7671 = phi i32 [ 1, %6219 ], [ %7669, %7668 ]
  br label %7672

7672:                                             ; preds = %7670, %6040
  %7673 = phi i32 [ 1, %6040 ], [ %7671, %7670 ]
  br label %7674

7674:                                             ; preds = %7672, %5861
  %7675 = phi i32 [ 2, %5861 ], [ %7673, %7672 ]
  br label %7676

7676:                                             ; preds = %7674, %5682
  %7677 = phi i32 [ 2, %5682 ], [ %7675, %7674 ]
  br label %7678

7678:                                             ; preds = %7676, %5503
  %7679 = phi i32 [ 4, %5503 ], [ %7677, %7676 ]
  br label %7680

7680:                                             ; preds = %7678, %5324
  %7681 = phi i32 [ 8, %5324 ], [ %7679, %7678 ]
  %7682 = load ptr, ptr %7, align 8, !tbaa !5
  %7683 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %7682, i32 0, i32 45
  %7684 = load i32, ptr %7683, align 4, !tbaa !14
  call void @libxsmm_aarch64_instruction_asimd_move(ptr noundef %5143, i32 noundef 1006633990, i32 noundef %5146, i32 noundef 127, i32 noundef %7681, i32 noundef %7684, i32 noundef 4)
  br label %7685

7685:                                             ; preds = %7680, %5137
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  ret void
}

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

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

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

!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 28}
!12 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !10, i64 180}
!15 = !{!"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, !16, i64 876, !17, i64 1392}
!16 = !{!"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}
!17 = !{!"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, !18, 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}
!18 = !{!"libxsmm_tile_config", !7, i64 0, !19, i64 2, !7, i64 4, !19, i64 6, !7, i64 8, !19, i64 10, !7, i64 12, !19, i64 14, !7, i64 16, !19, i64 18, !7, i64 20, !19, i64 22, !7, i64 24, !19, i64 26, !7, i64 28, !19, i64 30, !7, i64 32}
!19 = !{!"short", !7, i64 0}
!20 = !{!21, !7, i64 12}
!21 = !{!"libxsmm_meqn_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 13}
!22 = !{!15, !10, i64 128}
!23 = !{!24, !10, i64 20}
!24 = !{!"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, !25, i64 72, !26, i64 220}
!25 = !{!"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}
!26 = !{!"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}


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

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64 = external hidden unnamed_addr constant [202 x i8], align 1
@switch.table.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64 = private unnamed_addr constant [14 x i32] [i32 7, i32 5, i32 5, i32 5, i32 5, i32 5, i32 7, i32 7, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5], align 4
@switch.table.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64.2 = 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3) local_unnamed_addr #2 {
  %5 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  %6 = getelementptr inbounds i8, ptr %0, i64 28
  %7 = load i32, ptr %6, align 4, !tbaa !5
  %8 = add i32 %7, -2201
  %spec.select = icmp ult i32 %8, 799
  %9 = getelementptr inbounds i8, ptr %2, i64 180
  %10 = load i32, ptr %9, align 4, !tbaa !11
  br i1 %spec.select, label %11, label %12

11:                                               ; preds = %4
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef nonnull %0, i32 noundef 1694507138, i32 noundef %10, i32 noundef %10, i8 noundef zeroext 0, i32 noundef %10, i32 noundef 0, i32 noundef %5) #3
  br label %34

12:                                               ; preds = %4
  %13 = getelementptr inbounds i8, ptr %3, i64 12
  %14 = load i8, ptr %13, align 1, !tbaa !17
  %15 = icmp ult i8 %14, 16
  br i1 %15, label %16, label %18

16:                                               ; preds = %12
  %17 = icmp ult i8 %14, 14
  br i1 %17, label %switch.lookup, label %.thread1564

18:                                               ; preds = %12
  %.mask1865 = and i8 %14, -16
  %19 = icmp eq i8 %.mask1865, 32
  %20 = and i8 %14, -48
  %21 = icmp eq i8 %20, 16
  %or.cond1900 = or i1 %21, %19
  %22 = and i8 %14, -32
  %23 = icmp eq i8 %22, 64
  %or.cond1902 = or i1 %23, %or.cond1900
  br i1 %or.cond1902, label %.thread1506, label %24

24:                                               ; preds = %18
  %25 = and i8 %14, -32
  %or.cond1903 = icmp eq i8 %25, 96
  br i1 %or.cond1903, label %.thread1506, label %26

26:                                               ; preds = %24
  %27 = and i8 %14, -32
  %or.cond1904 = icmp eq i8 %27, -128
  %28 = and i8 %14, -32
  %29 = icmp eq i8 %28, -96
  %or.cond1906 = or i1 %29, %or.cond1904
  %30 = and i8 %14, -32
  %31 = icmp eq i8 %30, -64
  %or.cond1908 = or i1 %31, %or.cond1906
  br i1 %or.cond1908, label %.thread1506, label %.thread1564

.thread1564:                                      ; preds = %16, %26
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 669, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #4
  unreachable

switch.lookup:                                    ; preds = %16
  %32 = zext nneg i8 %14 to i64
  %switch.gep = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64, i64 0, i64 %32
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %.thread1506

.thread1506:                                      ; preds = %switch.lookup, %18, %26, %24
  %33 = phi i32 [ 5, %18 ], [ 7, %24 ], [ 5, %26 ], [ %switch.load, %switch.lookup ]
  tail call void @libxsmm_generator_hinstrps_aarch64(ptr noundef nonnull %0, i32 noundef 773903371, i32 noundef %10, i32 noundef %33) #3
  br label %34

34:                                               ; preds = %.thread1506, %11
  %35 = getelementptr inbounds i8, ptr %2, i64 128
  %36 = load i32, ptr %35, align 8, !tbaa !19
  %37 = icmp eq i32 %36, 1
  br i1 %37, label %38, label %65

38:                                               ; preds = %34
  %39 = getelementptr inbounds i8, ptr %2, i64 180
  %40 = load i32, ptr %39, align 4, !tbaa !11
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef nonnull %0, i32 noundef %40, i32 noundef 0) #3
  %41 = getelementptr inbounds i8, ptr %1, i64 20
  %42 = load i32, ptr %41, align 4, !tbaa !20
  %43 = getelementptr inbounds i8, ptr %3, i64 12
  %44 = load i8, ptr %43, align 1, !tbaa !17
  %45 = icmp ult i8 %44, 16
  br i1 %45, label %46, label %48

46:                                               ; preds = %38
  %47 = icmp ult i8 %44, 14
  br i1 %47, label %switch.lookup1921, label %.critedge1232

48:                                               ; preds = %38
  %.mask1889 = and i8 %44, -16
  %49 = icmp eq i8 %.mask1889, 16
  br i1 %49, label %.critedge1230, label %50

50:                                               ; preds = %48
  %51 = and i8 %44, -32
  %or.cond1909 = icmp eq i8 %51, 32
  br i1 %or.cond1909, label %.critedge1230, label %52

52:                                               ; preds = %50
  %53 = and i8 %44, -32
  %or.cond1910 = icmp eq i8 %53, 64
  br i1 %or.cond1910, label %.critedge1230, label %54

54:                                               ; preds = %52
  %55 = and i8 %44, -32
  %or.cond1911 = icmp eq i8 %55, 96
  br i1 %or.cond1911, label %.critedge1230, label %56

56:                                               ; preds = %54
  %57 = and i8 %44, -32
  %or.cond1912 = icmp eq i8 %57, -128
  br i1 %or.cond1912, label %.critedge1230, label %58

58:                                               ; preds = %56
  %59 = and i8 %44, -32
  %or.cond1913 = icmp eq i8 %59, -96
  br i1 %or.cond1913, label %.critedge1230, label %60

60:                                               ; preds = %58
  %61 = and i8 %44, -32
  %or.cond1914 = icmp eq i8 %61, -64
  br i1 %or.cond1914, label %.critedge1230, label %.critedge1232

.critedge1232:                                    ; preds = %46, %60
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 675, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #4
  unreachable

switch.lookup1921:                                ; preds = %46
  %62 = zext nneg i8 %44 to i64
  %switch.gep1922 = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64.2, i64 0, i64 %62
  %switch.load1923 = load i32, ptr %switch.gep1922, align 4
  br label %.critedge1230

.critedge1230:                                    ; preds = %switch.lookup1921, %48, %60, %58, %56, %54, %52, %50
  %63 = phi i32 [ 4, %48 ], [ 2, %50 ], [ 1, %52 ], [ 8, %54 ], [ 4, %56 ], [ 2, %58 ], [ 1, %60 ], [ %switch.load1923, %switch.lookup1921 ]
  %64 = load i32, ptr %39, align 4, !tbaa !11
  tail call void @libxsmm_aarch64_instruction_asimd_move(ptr noundef nonnull %0, i32 noundef 1006633990, i32 noundef %42, i32 noundef 127, i32 noundef %63, i32 noundef %64, i32 noundef 2) #3
  br label %91

65:                                               ; preds = %34
  %66 = getelementptr inbounds i8, ptr %1, i64 20
  %67 = load i32, ptr %66, align 4, !tbaa !20
  %68 = getelementptr inbounds i8, ptr %3, i64 12
  %69 = load i8, ptr %68, align 1, !tbaa !17
  %70 = icmp ult i8 %69, 16
  br i1 %70, label %71, label %73

71:                                               ; preds = %65
  %72 = icmp ult i8 %69, 14
  br i1 %72, label %switch.lookup1924, label %.critedge1408

73:                                               ; preds = %65
  %.mask1878 = and i8 %69, -16
  %74 = icmp eq i8 %.mask1878, 16
  br i1 %74, label %.critedge1406, label %75

75:                                               ; preds = %73
  %76 = and i8 %69, -32
  %or.cond1915 = icmp eq i8 %76, 32
  br i1 %or.cond1915, label %.critedge1406, label %77

77:                                               ; preds = %75
  %78 = and i8 %69, -32
  %or.cond1916 = icmp eq i8 %78, 64
  br i1 %or.cond1916, label %.critedge1406, label %79

79:                                               ; preds = %77
  %80 = and i8 %69, -32
  %or.cond1917 = icmp eq i8 %80, 96
  br i1 %or.cond1917, label %.critedge1406, label %81

81:                                               ; preds = %79
  %82 = and i8 %69, -32
  %or.cond1918 = icmp eq i8 %82, -128
  br i1 %or.cond1918, label %.critedge1406, label %83

83:                                               ; preds = %81
  %84 = and i8 %69, -32
  %or.cond1919 = icmp eq i8 %84, -96
  br i1 %or.cond1919, label %.critedge1406, label %85

85:                                               ; preds = %83
  %86 = and i8 %69, -32
  %or.cond1920 = icmp eq i8 %86, -64
  br i1 %or.cond1920, label %.critedge1406, label %.critedge1408

.critedge1408:                                    ; preds = %71, %85
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 678, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64) #4
  unreachable

switch.lookup1924:                                ; preds = %71
  %87 = zext nneg i8 %69 to i64
  %switch.gep1925 = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_store_reduce_to_scalar_output_aarch64.2, i64 0, i64 %87
  %switch.load1926 = load i32, ptr %switch.gep1925, align 4
  br label %.critedge1406

.critedge1406:                                    ; preds = %switch.lookup1924, %73, %85, %83, %81, %79, %77, %75
  %88 = phi i32 [ 4, %73 ], [ 2, %75 ], [ 1, %77 ], [ 8, %79 ], [ 4, %81 ], [ 2, %83 ], [ 1, %85 ], [ %switch.load1926, %switch.lookup1924 ]
  %89 = getelementptr inbounds i8, ptr %2, i64 180
  %90 = load i32, ptr %89, align 4, !tbaa !11
  tail call void @libxsmm_aarch64_instruction_asimd_move(ptr noundef nonnull %0, i32 noundef 1006633990, i32 noundef %67, i32 noundef 127, i32 noundef %88, i32 noundef %90, i32 noundef 4) #3
  br label %91

91:                                               ; preds = %.critedge1406, %.critedge1230
  ret void
}

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

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

attributes #0 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 = { 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 #3 = { nounwind }
attributes #4 = { 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, !10, i64 28}
!6 = !{!"libxsmm_generated_code", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !10, i64 180}
!12 = !{!"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, !8, 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, !8, i64 188, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !7, i64 336, !7, i64 344, !10, i64 352, !10, i64 356, !10, i64 360, !8, i64 364, !8, i64 620, !13, i64 876, !14, i64 1392}
!13 = !{!"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, !8, i64 512}
!14 = !{!"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, !8, 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, !8, i64 364, !8, i64 380, !8, i64 396, !8, i64 412, !8, i64 428, !8, i64 444, !10, i64 460, !8, i64 464, !15, 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, !7, i64 592, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !7, 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}
!15 = !{!"libxsmm_tile_config", !8, i64 0, !16, i64 2, !8, i64 4, !16, i64 6, !8, i64 8, !16, i64 10, !8, i64 12, !16, i64 14, !8, i64 16, !16, i64 18, !8, i64 20, !16, i64 22, !8, i64 24, !16, i64 26, !8, i64 28, !16, i64 30, !8, i64 32}
!16 = !{!"short", !8, i64 0}
!17 = !{!18, !8, i64 12}
!18 = !{!"libxsmm_meqn_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !10, i64 13}
!19 = !{!12, !10, i64 128}
!20 = !{!21, !10, i64 20}
!21 = !{!"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, !22, i64 72, !23, i64 220}
!22 = !{!"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}
!23 = !{!"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}


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