; LLVM IR from libxsmm/libxsmm :: src (generator_mateltwise_unary_binary_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_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%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_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%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 }

@.str = external hidden unnamed_addr constant [97 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [291 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block = external hidden unnamed_addr constant [263 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

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) #1

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

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

declare i32 @libxsmm_meltw_getenum_precision(ptr noundef, i32 noundef) #1

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

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) #1

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

declare void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext) #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) #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_store_aarch64_2d_reg_block(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) #3 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i8, align 1
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store i32 %4, ptr %15, align 4, !tbaa !9
  store i32 %5, ptr %16, align 4, !tbaa !9
  store i32 %6, ptr %17, align 4, !tbaa !9
  store i32 %7, ptr %18, align 4, !tbaa !9
  store i32 %8, ptr %19, align 4, !tbaa !9
  store i32 %9, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %44 = load ptr, ptr %14, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %44, i32 0, i32 11
  %46 = load i8, ptr %45, align 1, !tbaa !11
  %47 = zext i8 %46 to i32
  %48 = icmp eq i32 %47, 1
  br i1 %48, label %49, label %56

49:                                               ; preds = %10
  %50 = load ptr, ptr %14, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %50, i32 0, i32 9
  %52 = load i16, ptr %51, align 1, !tbaa !14
  %53 = zext i16 %52 to i32
  %54 = and i32 %53, 2
  %55 = icmp sgt i32 %54, 0
  br label %56

56:                                               ; preds = %49, %10
  %57 = phi i1 [ false, %10 ], [ %55, %49 ]
  %58 = zext i1 %57 to i64
  %59 = select i1 %57, i32 1, i32 0
  store i32 %59, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %60 = load ptr, ptr %14, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %60, i32 0, i32 11
  %62 = load i8, ptr %61, align 1, !tbaa !11
  %63 = zext i8 %62 to i32
  %64 = icmp eq i32 %63, 1
  br i1 %64, label %65, label %72

65:                                               ; preds = %56
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %66, i32 0, i32 9
  %68 = load i16, ptr %67, align 1, !tbaa !14
  %69 = zext i16 %68 to i32
  %70 = and i32 %69, 4
  %71 = icmp sgt i32 %70, 0
  br label %72

72:                                               ; preds = %65, %56
  %73 = phi i1 [ false, %56 ], [ %71, %65 ]
  %74 = zext i1 %73 to i64
  %75 = select i1 %73, i32 1, i32 0
  store i32 %75, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %76 = load ptr, ptr %14, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %76, i32 0, i32 11
  %78 = load i8, ptr %77, align 1, !tbaa !11
  %79 = zext i8 %78 to i32
  %80 = icmp eq i32 %79, 1
  br i1 %80, label %81, label %88

81:                                               ; preds = %72
  %82 = load ptr, ptr %14, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %82, i32 0, i32 9
  %84 = load i16, ptr %83, align 1, !tbaa !14
  %85 = zext i16 %84 to i32
  %86 = and i32 %85, 8
  %87 = icmp sgt i32 %86, 0
  br label %88

88:                                               ; preds = %81, %72
  %89 = phi i1 [ false, %72 ], [ %87, %81 ]
  %90 = zext i1 %89 to i64
  %91 = select i1 %89, i32 1, i32 0
  store i32 %91, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %92 = load ptr, ptr %14, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %92, i32 0, i32 3
  %94 = load i32, ptr %93, align 1, !tbaa !15
  %95 = load ptr, ptr %13, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %95, i32 0, i32 5
  %97 = load i32, ptr %96, align 4, !tbaa !16
  %98 = mul i32 %94, %97
  store i32 %98, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %99 = load i32, ptr %19, align 4, !tbaa !9
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %101, label %109

101:                                              ; preds = %88
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %102, i32 0, i32 5
  %104 = load i32, ptr %103, align 4, !tbaa !16
  %105 = load i32, ptr %15, align 4, !tbaa !9
  %106 = mul i32 %104, %105
  %107 = load i32, ptr %17, align 4, !tbaa !9
  %108 = mul i32 %106, %107
  br label %120

109:                                              ; preds = %88
  %110 = load ptr, ptr %13, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %110, i32 0, i32 5
  %112 = load i32, ptr %111, align 4, !tbaa !16
  %113 = load i32, ptr %15, align 4, !tbaa !9
  %114 = load i32, ptr %17, align 4, !tbaa !9
  %115 = sub i32 %114, 1
  %116 = mul i32 %113, %115
  %117 = load i32, ptr %19, align 4, !tbaa !9
  %118 = add i32 %116, %117
  %119 = mul i32 %112, %118
  br label %120

120:                                              ; preds = %109, %101
  %121 = phi i32 [ %108, %101 ], [ %119, %109 ]
  store i32 %121, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #4
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %122, i32 0, i32 6
  %124 = load i32, ptr %123, align 4, !tbaa !18
  %125 = icmp uge i32 %124, 2201
  br i1 %125, label %126, label %131

126:                                              ; preds = %120
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %127, i32 0, i32 6
  %129 = load i32, ptr %128, align 4, !tbaa !18
  %130 = icmp ule i32 %129, 2999
  br label %131

131:                                              ; preds = %126, %120
  %132 = phi i1 [ false, %120 ], [ %130, %126 ]
  %133 = zext i1 %132 to i32
  %134 = trunc i32 %133 to i8
  store i8 %134, ptr %30, align 1, !tbaa !20
  %135 = load i32, ptr %20, align 4, !tbaa !9
  %136 = load ptr, ptr %14, align 8, !tbaa !5
  %137 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %136)
  %138 = icmp ugt i32 %137, 0
  br i1 %138, label %139, label %140

139:                                              ; preds = %131
  store i32 1, ptr %31, align 4
  br label %1571

140:                                              ; preds = %131
  %141 = load i8, ptr %30, align 1, !tbaa !20
  %142 = icmp ne i8 %141, 0
  br i1 %142, label %143, label %175

143:                                              ; preds = %140
  %144 = load ptr, ptr %11, align 8, !tbaa !5
  %145 = load ptr, ptr %12, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %145, i32 0, i32 35
  %147 = load i32, ptr %146, align 4, !tbaa !21
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %144, i32 noundef 0, i32 noundef -1, i32 noundef %147)
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = load i32, ptr %19, align 4, !tbaa !9
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %150, i32 0, i32 5
  %152 = load i32, ptr %151, align 4, !tbaa !16
  %153 = mul i32 %149, %152
  %154 = load ptr, ptr %12, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %154, i32 0, i32 35
  %156 = load i32, ptr %155, align 4, !tbaa !21
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %148, i32 noundef 1, i32 noundef %153, i32 noundef %156)
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %157, i32 noundef 3)
  %159 = icmp eq i32 2, %158
  br i1 %159, label %164, label %160

160:                                              ; preds = %143
  %161 = load ptr, ptr %14, align 8, !tbaa !5
  %162 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %161, i32 noundef 3)
  %163 = icmp eq i32 12, %162
  br i1 %163, label %164, label %174

164:                                              ; preds = %160, %143
  %165 = load ptr, ptr %11, align 8, !tbaa !5
  %166 = load i32, ptr %15, align 4, !tbaa !9
  %167 = load ptr, ptr %13, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %167, i32 0, i32 5
  %169 = load i32, ptr %168, align 4, !tbaa !16
  %170 = mul i32 %166, %169
  %171 = load ptr, ptr %12, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %171, i32 0, i32 35
  %173 = load i32, ptr %172, align 4, !tbaa !21
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %165, i32 noundef 2, i32 noundef %170, i32 noundef %173)
  br label %174

174:                                              ; preds = %164, %160
  br label %175

175:                                              ; preds = %174, %140
  %176 = load ptr, ptr %14, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %176, i32 0, i32 11
  %178 = load i8, ptr %177, align 1, !tbaa !11
  %179 = zext i8 %178 to i32
  %180 = icmp eq i32 %179, 1
  br i1 %180, label %181, label %695

181:                                              ; preds = %175
  %182 = load ptr, ptr %14, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %182, i32 0, i32 10
  %184 = load i16, ptr %183, align 1, !tbaa !23
  %185 = zext i16 %184 to i32
  %186 = icmp eq i32 %185, 33
  br i1 %186, label %187, label %695

187:                                              ; preds = %181
  %188 = load ptr, ptr %11, align 8, !tbaa !5
  %189 = load i32, ptr %15, align 4, !tbaa !9
  %190 = load ptr, ptr %13, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %190, i32 0, i32 5
  %192 = load i32, ptr %191, align 4, !tbaa !16
  %193 = mul i32 %189, %192
  %194 = load ptr, ptr %12, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %194, i32 0, i32 35
  %196 = load i32, ptr %195, align 4, !tbaa !21
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %188, i32 noundef 2, i32 noundef %193, i32 noundef %196)
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %197

197:                                              ; preds = %417, %187
  %198 = load i32, ptr %22, align 4, !tbaa !9
  %199 = load i32, ptr %18, align 4, !tbaa !9
  %200 = icmp ult i32 %198, %199
  br i1 %200, label %201, label %420

201:                                              ; preds = %197
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %393, %201
  %203 = load i32, ptr %21, align 4, !tbaa !9
  %204 = load i32, ptr %17, align 4, !tbaa !9
  %205 = icmp ult i32 %203, %204
  br i1 %205, label %206, label %396

206:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  %208 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %207, i32 noundef 3)
  %209 = icmp eq i32 1, %208
  br i1 %209, label %214, label %210

210:                                              ; preds = %206
  %211 = load ptr, ptr %14, align 8, !tbaa !5
  %212 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %211, i32 noundef 3)
  %213 = icmp eq i32 0, %212
  br label %214

214:                                              ; preds = %210, %206
  %215 = phi i1 [ true, %206 ], [ %213, %210 ]
  %216 = zext i1 %215 to i64
  %217 = select i1 %215, i32 1, i32 0
  store i32 %217, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  %218 = load i32, ptr %32, align 4, !tbaa !9
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %230

220:                                              ; preds = %214
  %221 = load i32, ptr %21, align 4, !tbaa !9
  %222 = load i32, ptr %17, align 4, !tbaa !9
  %223 = sub i32 %222, 1
  %224 = icmp eq i32 %221, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %220
  %226 = load i32, ptr %19, align 4, !tbaa !9
  br label %228

227:                                              ; preds = %220
  br label %228

228:                                              ; preds = %227, %225
  %229 = phi i32 [ %226, %225 ], [ 0, %227 ]
  br label %248

230:                                              ; preds = %214
  %231 = load i32, ptr %21, align 4, !tbaa !9
  %232 = load i32, ptr %17, align 4, !tbaa !9
  %233 = sub i32 %232, 1
  %234 = icmp eq i32 %231, %233
  br i1 %234, label %235, label %244

235:                                              ; preds = %230
  %236 = load i32, ptr %19, align 4, !tbaa !9
  %237 = icmp ugt i32 %236, 0
  br i1 %237, label %238, label %240

238:                                              ; preds = %235
  %239 = load i32, ptr %19, align 4, !tbaa !9
  br label %242

240:                                              ; preds = %235
  %241 = load i32, ptr %15, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %238
  %243 = phi i32 [ %239, %238 ], [ %241, %240 ]
  br label %246

244:                                              ; preds = %230
  %245 = load i32, ptr %15, align 4, !tbaa !9
  br label %246

246:                                              ; preds = %244, %242
  %247 = phi i32 [ %243, %242 ], [ %245, %244 ]
  br label %248

248:                                              ; preds = %246, %228
  %249 = phi i32 [ %229, %228 ], [ %247, %246 ]
  store i32 %249, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  %250 = load i32, ptr %32, align 4, !tbaa !9
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %265

252:                                              ; preds = %248
  %253 = load i32, ptr %21, align 4, !tbaa !9
  %254 = load i32, ptr %17, align 4, !tbaa !9
  %255 = sub i32 %254, 1
  %256 = icmp eq i32 %253, %255
  br i1 %256, label %257, label %262

257:                                              ; preds = %252
  %258 = load i32, ptr %19, align 4, !tbaa !9
  %259 = icmp ugt i32 %258, 0
  %260 = zext i1 %259 to i64
  %261 = select i1 %259, i32 1, i32 0
  br label %263

262:                                              ; preds = %252
  br label %263

263:                                              ; preds = %262, %257
  %264 = phi i32 [ %261, %257 ], [ 0, %262 ]
  br label %278

265:                                              ; preds = %248
  %266 = load i32, ptr %21, align 4, !tbaa !9
  %267 = load i32, ptr %17, align 4, !tbaa !9
  %268 = sub i32 %267, 1
  %269 = icmp eq i32 %266, %268
  br i1 %269, label %270, label %275

270:                                              ; preds = %265
  %271 = load i32, ptr %19, align 4, !tbaa !9
  %272 = icmp ugt i32 %271, 0
  %273 = zext i1 %272 to i64
  %274 = select i1 %272, i32 1, i32 2
  br label %276

275:                                              ; preds = %265
  br label %276

276:                                              ; preds = %275, %270
  %277 = phi i32 [ %274, %270 ], [ 2, %275 ]
  br label %278

278:                                              ; preds = %276, %263
  %279 = phi i32 [ %264, %263 ], [ %277, %276 ]
  store i32 %279, ptr %34, align 4, !tbaa !9
  %280 = load i32, ptr %16, align 4, !tbaa !9
  %281 = load i32, ptr %22, align 4, !tbaa !9
  %282 = load i32, ptr %17, align 4, !tbaa !9
  %283 = mul i32 %281, %282
  %284 = add i32 %280, %283
  %285 = load i32, ptr %21, align 4, !tbaa !9
  %286 = add i32 %284, %285
  store i32 %286, ptr %24, align 4, !tbaa !9
  %287 = load i32, ptr %25, align 4, !tbaa !9
  %288 = icmp eq i32 %287, 1
  br i1 %288, label %289, label %295

289:                                              ; preds = %278
  %290 = load i32, ptr %16, align 4, !tbaa !9
  %291 = load i32, ptr %22, align 4, !tbaa !9
  %292 = load i32, ptr %17, align 4, !tbaa !9
  %293 = mul i32 %291, %292
  %294 = add i32 %290, %293
  store i32 %294, ptr %23, align 4, !tbaa !9
  br label %311

295:                                              ; preds = %278
  %296 = load i32, ptr %27, align 4, !tbaa !9
  %297 = icmp eq i32 %296, 1
  br i1 %297, label %298, label %300

298:                                              ; preds = %295
  %299 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %299, ptr %23, align 4, !tbaa !9
  br label %310

300:                                              ; preds = %295
  %301 = load i32, ptr %26, align 4, !tbaa !9
  %302 = icmp eq i32 %301, 1
  br i1 %302, label %303, label %307

303:                                              ; preds = %300
  %304 = load i32, ptr %16, align 4, !tbaa !9
  %305 = load i32, ptr %21, align 4, !tbaa !9
  %306 = add i32 %304, %305
  store i32 %306, ptr %23, align 4, !tbaa !9
  br label %309

307:                                              ; preds = %300
  %308 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %308, ptr %23, align 4, !tbaa !9
  br label %309

309:                                              ; preds = %307, %303
  br label %310

310:                                              ; preds = %309, %298
  br label %311

311:                                              ; preds = %310, %289
  %312 = load i32, ptr %25, align 4, !tbaa !9
  %313 = icmp eq i32 %312, 0
  br i1 %313, label %314, label %320

314:                                              ; preds = %311
  %315 = load i32, ptr %26, align 4, !tbaa !9
  %316 = icmp eq i32 %315, 0
  br i1 %316, label %317, label %320

317:                                              ; preds = %314
  %318 = load i32, ptr %27, align 4, !tbaa !9
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %338, label %320

320:                                              ; preds = %317, %314, %311
  %321 = load i32, ptr %27, align 4, !tbaa !9
  %322 = icmp eq i32 %321, 1
  br i1 %322, label %323, label %329

323:                                              ; preds = %320
  %324 = load i32, ptr %22, align 4, !tbaa !9
  %325 = icmp eq i32 %324, 0
  br i1 %325, label %326, label %329

326:                                              ; preds = %323
  %327 = load i32, ptr %21, align 4, !tbaa !9
  %328 = icmp eq i32 %327, 0
  br i1 %328, label %338, label %329

329:                                              ; preds = %326, %323, %320
  %330 = load i32, ptr %25, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 1
  br i1 %331, label %332, label %335

332:                                              ; preds = %329
  %333 = load i32, ptr %21, align 4, !tbaa !9
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %338, label %335

335:                                              ; preds = %332, %329
  %336 = load i32, ptr %26, align 4, !tbaa !9
  %337 = icmp eq i32 %336, 1
  br i1 %337, label %338, label %346

338:                                              ; preds = %335, %332, %326, %317
  %339 = load ptr, ptr %11, align 8, !tbaa !5
  %340 = load i32, ptr %23, align 4, !tbaa !9
  %341 = load i32, ptr %23, align 4, !tbaa !9
  %342 = load ptr, ptr %13, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %342, i32 0, i32 29
  %344 = load i32, ptr %343, align 4, !tbaa !24
  %345 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 2)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %339, i32 noundef 86009859, i32 noundef %340, i32 noundef %341, i8 noundef zeroext 0, i32 noundef %344, i32 noundef 0, i32 noundef %345)
  br label %346

346:                                              ; preds = %338, %335
  %347 = load ptr, ptr %11, align 8, !tbaa !5
  %348 = load ptr, ptr %12, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %348, i32 0, i32 6
  %350 = load i32, ptr %349, align 4, !tbaa !25
  %351 = load ptr, ptr %12, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %351, i32 0, i32 36
  %353 = load i32, ptr %352, align 4, !tbaa !26
  %354 = load ptr, ptr %13, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %354, i32 0, i32 29
  %356 = load i32, ptr %355, align 4, !tbaa !24
  %357 = load ptr, ptr %13, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %357, i32 0, i32 5
  %359 = load i32, ptr %358, align 4, !tbaa !16
  %360 = load i32, ptr %33, align 4, !tbaa !9
  %361 = load i32, ptr %34, align 4, !tbaa !9
  %362 = trunc i32 %361 to i8
  %363 = zext i8 %362 to i32
  %364 = icmp eq i32 0, %363
  br i1 %364, label %370, label %365

365:                                              ; preds = %346
  %366 = load i32, ptr %34, align 4, !tbaa !9
  %367 = trunc i32 %366 to i8
  %368 = zext i8 %367 to i32
  %369 = icmp slt i32 0, %368
  br i1 %369, label %370, label %388

370:                                              ; preds = %365, %346
  %371 = load i32, ptr %34, align 4, !tbaa !9
  %372 = zext i32 %371 to i64
  %373 = mul i64 1, %372
  %374 = icmp ult i64 %373, 255
  br i1 %374, label %375, label %379

375:                                              ; preds = %370
  %376 = load i32, ptr %34, align 4, !tbaa !9
  %377 = zext i32 %376 to i64
  %378 = mul i64 1, %377
  br label %380

379:                                              ; preds = %370
  br label %380

380:                                              ; preds = %379, %375
  %381 = phi i64 [ %378, %375 ], [ 255, %379 ]
  %382 = icmp ule i64 %381, 255
  br i1 %382, label %383, label %388

383:                                              ; preds = %380
  %384 = load i32, ptr %34, align 4, !tbaa !9
  %385 = uitofp i32 %384 to double
  %386 = fcmp ole double 0.000000e+00, %385
  br i1 %386, label %387, label %388

387:                                              ; preds = %383
  br label %389

388:                                              ; preds = %383, %380, %365
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 759, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

389:                                              ; preds = %387
  %390 = load i32, ptr %34, align 4, !tbaa !9
  %391 = trunc i32 %390 to i8
  %392 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %347, i32 noundef %350, i32 noundef %353, i32 noundef %356, i32 noundef %359, i32 noundef %360, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %391, i8 noundef zeroext %392)
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  br label %393

393:                                              ; preds = %389
  %394 = load i32, ptr %21, align 4, !tbaa !9
  %395 = add i32 %394, 1
  store i32 %395, ptr %21, align 4, !tbaa !9
  br label %202, !llvm.loop !27

396:                                              ; preds = %202
  %397 = load i32, ptr %28, align 4, !tbaa !9
  %398 = load i32, ptr %29, align 4, !tbaa !9
  %399 = icmp ne i32 %397, %398
  br i1 %399, label %400, label %416

400:                                              ; preds = %396
  %401 = load ptr, ptr %11, align 8, !tbaa !5
  %402 = load ptr, ptr %12, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %402, i32 0, i32 6
  %404 = load i32, ptr %403, align 4, !tbaa !25
  %405 = load ptr, ptr %12, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %405, i32 0, i32 35
  %407 = load i32, ptr %406, align 4, !tbaa !21
  %408 = load ptr, ptr %12, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %408, i32 0, i32 6
  %410 = load i32, ptr %409, align 4, !tbaa !25
  %411 = load i32, ptr %28, align 4, !tbaa !9
  %412 = zext i32 %411 to i64
  %413 = load i32, ptr %29, align 4, !tbaa !9
  %414 = zext i32 %413 to i64
  %415 = sub nsw i64 %412, %414
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %401, i32 noundef 4096, i32 noundef %404, i32 noundef %407, i32 noundef %410, i64 noundef %415)
  br label %416

416:                                              ; preds = %400, %396
  br label %417

417:                                              ; preds = %416
  %418 = load i32, ptr %22, align 4, !tbaa !9
  %419 = add i32 %418, 1
  store i32 %419, ptr %22, align 4, !tbaa !9
  br label %197, !llvm.loop !29

420:                                              ; preds = %197
  %421 = load ptr, ptr %11, align 8, !tbaa !5
  %422 = load ptr, ptr %12, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %422, i32 0, i32 6
  %424 = load i32, ptr %423, align 4, !tbaa !25
  %425 = load ptr, ptr %12, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %425, i32 0, i32 35
  %427 = load i32, ptr %426, align 4, !tbaa !21
  %428 = load ptr, ptr %12, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %428, i32 0, i32 6
  %430 = load i32, ptr %429, align 4, !tbaa !25
  %431 = load i32, ptr %28, align 4, !tbaa !9
  %432 = zext i32 %431 to i64
  %433 = load i32, ptr %18, align 4, !tbaa !9
  %434 = zext i32 %433 to i64
  %435 = mul nsw i64 %432, %434
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %421, i32 noundef 4097, i32 noundef %424, i32 noundef %427, i32 noundef %430, i64 noundef %435)
  %436 = load ptr, ptr %11, align 8, !tbaa !5
  %437 = load ptr, ptr %12, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %437, i32 0, i32 6
  %439 = load i32, ptr %438, align 4, !tbaa !25
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %440, i32 0, i32 11
  %442 = load i32, ptr %441, align 4, !tbaa !30
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %443, i32 0, i32 6
  %445 = load i32, ptr %444, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %436, i32 noundef 184549383, i32 noundef %439, i32 noundef %442, i32 noundef %445, i32 noundef 0, i32 noundef 0)
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %446

446:                                              ; preds = %666, %420
  %447 = load i32, ptr %22, align 4, !tbaa !9
  %448 = load i32, ptr %18, align 4, !tbaa !9
  %449 = icmp ult i32 %447, %448
  br i1 %449, label %450, label %669

450:                                              ; preds = %446
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %642, %450
  %452 = load i32, ptr %21, align 4, !tbaa !9
  %453 = load i32, ptr %17, align 4, !tbaa !9
  %454 = icmp ult i32 %452, %453
  br i1 %454, label %455, label %645

455:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  %456 = load ptr, ptr %14, align 8, !tbaa !5
  %457 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %456, i32 noundef 3)
  %458 = icmp eq i32 1, %457
  br i1 %458, label %463, label %459

459:                                              ; preds = %455
  %460 = load ptr, ptr %14, align 8, !tbaa !5
  %461 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %460, i32 noundef 3)
  %462 = icmp eq i32 0, %461
  br label %463

463:                                              ; preds = %459, %455
  %464 = phi i1 [ true, %455 ], [ %462, %459 ]
  %465 = zext i1 %464 to i64
  %466 = select i1 %464, i32 1, i32 0
  store i32 %466, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %467 = load i32, ptr %35, align 4, !tbaa !9
  %468 = icmp ne i32 %467, 0
  br i1 %468, label %469, label %479

469:                                              ; preds = %463
  %470 = load i32, ptr %21, align 4, !tbaa !9
  %471 = load i32, ptr %17, align 4, !tbaa !9
  %472 = sub i32 %471, 1
  %473 = icmp eq i32 %470, %472
  br i1 %473, label %474, label %476

474:                                              ; preds = %469
  %475 = load i32, ptr %19, align 4, !tbaa !9
  br label %477

476:                                              ; preds = %469
  br label %477

477:                                              ; preds = %476, %474
  %478 = phi i32 [ %475, %474 ], [ 0, %476 ]
  br label %497

479:                                              ; preds = %463
  %480 = load i32, ptr %21, align 4, !tbaa !9
  %481 = load i32, ptr %17, align 4, !tbaa !9
  %482 = sub i32 %481, 1
  %483 = icmp eq i32 %480, %482
  br i1 %483, label %484, label %493

484:                                              ; preds = %479
  %485 = load i32, ptr %19, align 4, !tbaa !9
  %486 = icmp ugt i32 %485, 0
  br i1 %486, label %487, label %489

487:                                              ; preds = %484
  %488 = load i32, ptr %19, align 4, !tbaa !9
  br label %491

489:                                              ; preds = %484
  %490 = load i32, ptr %15, align 4, !tbaa !9
  br label %491

491:                                              ; preds = %489, %487
  %492 = phi i32 [ %488, %487 ], [ %490, %489 ]
  br label %495

493:                                              ; preds = %479
  %494 = load i32, ptr %15, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %493, %491
  %496 = phi i32 [ %492, %491 ], [ %494, %493 ]
  br label %497

497:                                              ; preds = %495, %477
  %498 = phi i32 [ %478, %477 ], [ %496, %495 ]
  store i32 %498, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  %499 = load i32, ptr %35, align 4, !tbaa !9
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %514

501:                                              ; preds = %497
  %502 = load i32, ptr %21, align 4, !tbaa !9
  %503 = load i32, ptr %17, align 4, !tbaa !9
  %504 = sub i32 %503, 1
  %505 = icmp eq i32 %502, %504
  br i1 %505, label %506, label %511

506:                                              ; preds = %501
  %507 = load i32, ptr %19, align 4, !tbaa !9
  %508 = icmp ugt i32 %507, 0
  %509 = zext i1 %508 to i64
  %510 = select i1 %508, i32 1, i32 0
  br label %512

511:                                              ; preds = %501
  br label %512

512:                                              ; preds = %511, %506
  %513 = phi i32 [ %510, %506 ], [ 0, %511 ]
  br label %527

514:                                              ; preds = %497
  %515 = load i32, ptr %21, align 4, !tbaa !9
  %516 = load i32, ptr %17, align 4, !tbaa !9
  %517 = sub i32 %516, 1
  %518 = icmp eq i32 %515, %517
  br i1 %518, label %519, label %524

519:                                              ; preds = %514
  %520 = load i32, ptr %19, align 4, !tbaa !9
  %521 = icmp ugt i32 %520, 0
  %522 = zext i1 %521 to i64
  %523 = select i1 %521, i32 1, i32 2
  br label %525

524:                                              ; preds = %514
  br label %525

525:                                              ; preds = %524, %519
  %526 = phi i32 [ %523, %519 ], [ 2, %524 ]
  br label %527

527:                                              ; preds = %525, %512
  %528 = phi i32 [ %513, %512 ], [ %526, %525 ]
  store i32 %528, ptr %37, align 4, !tbaa !9
  %529 = load i32, ptr %16, align 4, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !9
  %531 = load i32, ptr %17, align 4, !tbaa !9
  %532 = mul i32 %530, %531
  %533 = add i32 %529, %532
  %534 = load i32, ptr %21, align 4, !tbaa !9
  %535 = add i32 %533, %534
  store i32 %535, ptr %24, align 4, !tbaa !9
  %536 = load i32, ptr %25, align 4, !tbaa !9
  %537 = icmp eq i32 %536, 1
  br i1 %537, label %538, label %544

538:                                              ; preds = %527
  %539 = load i32, ptr %16, align 4, !tbaa !9
  %540 = load i32, ptr %22, align 4, !tbaa !9
  %541 = load i32, ptr %17, align 4, !tbaa !9
  %542 = mul i32 %540, %541
  %543 = add i32 %539, %542
  store i32 %543, ptr %23, align 4, !tbaa !9
  br label %560

544:                                              ; preds = %527
  %545 = load i32, ptr %27, align 4, !tbaa !9
  %546 = icmp eq i32 %545, 1
  br i1 %546, label %547, label %549

547:                                              ; preds = %544
  %548 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %548, ptr %23, align 4, !tbaa !9
  br label %559

549:                                              ; preds = %544
  %550 = load i32, ptr %26, align 4, !tbaa !9
  %551 = icmp eq i32 %550, 1
  br i1 %551, label %552, label %556

552:                                              ; preds = %549
  %553 = load i32, ptr %16, align 4, !tbaa !9
  %554 = load i32, ptr %21, align 4, !tbaa !9
  %555 = add i32 %553, %554
  store i32 %555, ptr %23, align 4, !tbaa !9
  br label %558

556:                                              ; preds = %549
  %557 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %557, ptr %23, align 4, !tbaa !9
  br label %558

558:                                              ; preds = %556, %552
  br label %559

559:                                              ; preds = %558, %547
  br label %560

560:                                              ; preds = %559, %538
  %561 = load i32, ptr %25, align 4, !tbaa !9
  %562 = icmp eq i32 %561, 0
  br i1 %562, label %563, label %569

563:                                              ; preds = %560
  %564 = load i32, ptr %26, align 4, !tbaa !9
  %565 = icmp eq i32 %564, 0
  br i1 %565, label %566, label %569

566:                                              ; preds = %563
  %567 = load i32, ptr %27, align 4, !tbaa !9
  %568 = icmp eq i32 %567, 0
  br i1 %568, label %587, label %569

569:                                              ; preds = %566, %563, %560
  %570 = load i32, ptr %27, align 4, !tbaa !9
  %571 = icmp eq i32 %570, 1
  br i1 %571, label %572, label %578

572:                                              ; preds = %569
  %573 = load i32, ptr %22, align 4, !tbaa !9
  %574 = icmp eq i32 %573, 0
  br i1 %574, label %575, label %578

575:                                              ; preds = %572
  %576 = load i32, ptr %21, align 4, !tbaa !9
  %577 = icmp eq i32 %576, 0
  br i1 %577, label %587, label %578

578:                                              ; preds = %575, %572, %569
  %579 = load i32, ptr %25, align 4, !tbaa !9
  %580 = icmp eq i32 %579, 1
  br i1 %580, label %581, label %584

581:                                              ; preds = %578
  %582 = load i32, ptr %21, align 4, !tbaa !9
  %583 = icmp eq i32 %582, 0
  br i1 %583, label %587, label %584

584:                                              ; preds = %581, %578
  %585 = load i32, ptr %26, align 4, !tbaa !9
  %586 = icmp eq i32 %585, 1
  br i1 %586, label %587, label %595

587:                                              ; preds = %584, %581, %575, %566
  %588 = load ptr, ptr %11, align 8, !tbaa !5
  %589 = load i32, ptr %23, align 4, !tbaa !9
  %590 = load i32, ptr %23, align 4, !tbaa !9
  %591 = load ptr, ptr %13, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %591, i32 0, i32 30
  %593 = load i32, ptr %592, align 4, !tbaa !31
  %594 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 2)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %588, i32 noundef 86010883, i32 noundef %589, i32 noundef %590, i8 noundef zeroext 0, i32 noundef %593, i32 noundef 0, i32 noundef %594)
  br label %595

595:                                              ; preds = %587, %584
  %596 = load ptr, ptr %11, align 8, !tbaa !5
  %597 = load ptr, ptr %12, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %597, i32 0, i32 6
  %599 = load i32, ptr %598, align 4, !tbaa !25
  %600 = load ptr, ptr %12, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %600, i32 0, i32 36
  %602 = load i32, ptr %601, align 4, !tbaa !26
  %603 = load ptr, ptr %13, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %603, i32 0, i32 30
  %605 = load i32, ptr %604, align 4, !tbaa !31
  %606 = load ptr, ptr %13, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %606, i32 0, i32 5
  %608 = load i32, ptr %607, align 4, !tbaa !16
  %609 = load i32, ptr %36, align 4, !tbaa !9
  %610 = load i32, ptr %37, align 4, !tbaa !9
  %611 = trunc i32 %610 to i8
  %612 = zext i8 %611 to i32
  %613 = icmp eq i32 0, %612
  br i1 %613, label %619, label %614

614:                                              ; preds = %595
  %615 = load i32, ptr %37, align 4, !tbaa !9
  %616 = trunc i32 %615 to i8
  %617 = zext i8 %616 to i32
  %618 = icmp slt i32 0, %617
  br i1 %618, label %619, label %637

619:                                              ; preds = %614, %595
  %620 = load i32, ptr %37, align 4, !tbaa !9
  %621 = zext i32 %620 to i64
  %622 = mul i64 1, %621
  %623 = icmp ult i64 %622, 255
  br i1 %623, label %624, label %628

624:                                              ; preds = %619
  %625 = load i32, ptr %37, align 4, !tbaa !9
  %626 = zext i32 %625 to i64
  %627 = mul i64 1, %626
  br label %629

628:                                              ; preds = %619
  br label %629

629:                                              ; preds = %628, %624
  %630 = phi i64 [ %627, %624 ], [ 255, %628 ]
  %631 = icmp ule i64 %630, 255
  br i1 %631, label %632, label %637

632:                                              ; preds = %629
  %633 = load i32, ptr %37, align 4, !tbaa !9
  %634 = uitofp i32 %633 to double
  %635 = fcmp ole double 0.000000e+00, %634
  br i1 %635, label %636, label %637

636:                                              ; preds = %632
  br label %638

637:                                              ; preds = %632, %629, %614
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 798, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

638:                                              ; preds = %636
  %639 = load i32, ptr %37, align 4, !tbaa !9
  %640 = trunc i32 %639 to i8
  %641 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %596, i32 noundef %599, i32 noundef %602, i32 noundef %605, i32 noundef %608, i32 noundef %609, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %640, i8 noundef zeroext %641)
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  br label %642

642:                                              ; preds = %638
  %643 = load i32, ptr %21, align 4, !tbaa !9
  %644 = add i32 %643, 1
  store i32 %644, ptr %21, align 4, !tbaa !9
  br label %451, !llvm.loop !32

645:                                              ; preds = %451
  %646 = load i32, ptr %28, align 4, !tbaa !9
  %647 = load i32, ptr %29, align 4, !tbaa !9
  %648 = icmp ne i32 %646, %647
  br i1 %648, label %649, label %665

649:                                              ; preds = %645
  %650 = load ptr, ptr %11, align 8, !tbaa !5
  %651 = load ptr, ptr %12, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %651, i32 0, i32 6
  %653 = load i32, ptr %652, align 4, !tbaa !25
  %654 = load ptr, ptr %12, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %654, i32 0, i32 35
  %656 = load i32, ptr %655, align 4, !tbaa !21
  %657 = load ptr, ptr %12, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %657, i32 0, i32 6
  %659 = load i32, ptr %658, align 4, !tbaa !25
  %660 = load i32, ptr %28, align 4, !tbaa !9
  %661 = zext i32 %660 to i64
  %662 = load i32, ptr %29, align 4, !tbaa !9
  %663 = zext i32 %662 to i64
  %664 = sub nsw i64 %661, %663
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %650, i32 noundef 4096, i32 noundef %653, i32 noundef %656, i32 noundef %659, i64 noundef %664)
  br label %665

665:                                              ; preds = %649, %645
  br label %666

666:                                              ; preds = %665
  %667 = load i32, ptr %22, align 4, !tbaa !9
  %668 = add i32 %667, 1
  store i32 %668, ptr %22, align 4, !tbaa !9
  br label %446, !llvm.loop !33

669:                                              ; preds = %446
  %670 = load ptr, ptr %11, align 8, !tbaa !5
  %671 = load ptr, ptr %12, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %671, i32 0, i32 6
  %673 = load i32, ptr %672, align 4, !tbaa !25
  %674 = load ptr, ptr %12, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %674, i32 0, i32 35
  %676 = load i32, ptr %675, align 4, !tbaa !21
  %677 = load ptr, ptr %12, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %677, i32 0, i32 6
  %679 = load i32, ptr %678, align 4, !tbaa !25
  %680 = load i32, ptr %28, align 4, !tbaa !9
  %681 = zext i32 %680 to i64
  %682 = load i32, ptr %18, align 4, !tbaa !9
  %683 = zext i32 %682 to i64
  %684 = mul nsw i64 %681, %683
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %670, i32 noundef 4097, i32 noundef %673, i32 noundef %676, i32 noundef %679, i64 noundef %684)
  %685 = load ptr, ptr %11, align 8, !tbaa !5
  %686 = load ptr, ptr %12, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %686, i32 0, i32 6
  %688 = load i32, ptr %687, align 4, !tbaa !25
  %689 = load ptr, ptr %12, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %689, i32 0, i32 11
  %691 = load i32, ptr %690, align 4, !tbaa !30
  %692 = load ptr, ptr %12, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %692, i32 0, i32 6
  %694 = load i32, ptr %693, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %685, i32 noundef 1258291207, i32 noundef %688, i32 noundef %691, i32 noundef %694, i32 noundef 0, i32 noundef 0)
  br label %1570

695:                                              ; preds = %181, %175
  %696 = load ptr, ptr %14, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %696, i32 0, i32 11
  %698 = load i8, ptr %697, align 1, !tbaa !11
  %699 = zext i8 %698 to i32
  %700 = icmp eq i32 %699, 1
  br i1 %700, label %701, label %1206

701:                                              ; preds = %695
  %702 = load ptr, ptr %14, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %702, i32 0, i32 10
  %704 = load i16, ptr %703, align 1, !tbaa !23
  %705 = zext i16 %704 to i32
  %706 = icmp eq i32 %705, 64
  br i1 %706, label %713, label %707

707:                                              ; preds = %701
  %708 = load ptr, ptr %14, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %708, i32 0, i32 10
  %710 = load i16, ptr %709, align 1, !tbaa !23
  %711 = zext i16 %710 to i32
  %712 = icmp eq i32 %711, 65
  br i1 %712, label %713, label %1206

713:                                              ; preds = %707, %701
  %714 = load ptr, ptr %11, align 8, !tbaa !5
  %715 = load ptr, ptr %12, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %715, i32 0, i32 6
  %717 = load i32, ptr %716, align 4, !tbaa !25
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %718, i32 0, i32 11
  %720 = load i32, ptr %719, align 4, !tbaa !30
  %721 = load ptr, ptr %12, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %721, i32 0, i32 19
  %723 = load i32, ptr %722, align 4, !tbaa !34
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %714, i32 noundef 184549383, i32 noundef %717, i32 noundef %720, i32 noundef %723, i32 noundef 0, i32 noundef 0)
  %724 = load ptr, ptr %14, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %724, i32 0, i32 10
  %726 = load i16, ptr %725, align 1, !tbaa !23
  %727 = zext i16 %726 to i32
  %728 = icmp eq i32 %727, 65
  br i1 %728, label %729, label %740

729:                                              ; preds = %713
  %730 = load ptr, ptr %11, align 8, !tbaa !5
  %731 = load ptr, ptr %12, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %731, i32 0, i32 6
  %733 = load i32, ptr %732, align 4, !tbaa !25
  %734 = load ptr, ptr %12, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %734, i32 0, i32 12
  %736 = load i32, ptr %735, align 4, !tbaa !35
  %737 = load ptr, ptr %12, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %737, i32 0, i32 22
  %739 = load i32, ptr %738, align 4, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %730, i32 noundef 184549383, i32 noundef %733, i32 noundef %736, i32 noundef %739, i32 noundef 0, i32 noundef 0)
  br label %740

740:                                              ; preds = %729, %713
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %741

741:                                              ; preds = %1187, %740
  %742 = load i32, ptr %22, align 4, !tbaa !9
  %743 = load i32, ptr %18, align 4, !tbaa !9
  %744 = icmp ult i32 %742, %743
  br i1 %744, label %745, label %1190

745:                                              ; preds = %741
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %746

746:                                              ; preds = %1126, %745
  %747 = load i32, ptr %21, align 4, !tbaa !9
  %748 = load i32, ptr %17, align 4, !tbaa !9
  %749 = icmp ult i32 %747, %748
  br i1 %749, label %750, label %1129

750:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  %751 = load ptr, ptr %14, align 8, !tbaa !5
  %752 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %751, i32 noundef 3)
  %753 = icmp eq i32 1, %752
  br i1 %753, label %758, label %754

754:                                              ; preds = %750
  %755 = load ptr, ptr %14, align 8, !tbaa !5
  %756 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %755, i32 noundef 3)
  %757 = icmp eq i32 0, %756
  br label %758

758:                                              ; preds = %754, %750
  %759 = phi i1 [ true, %750 ], [ %757, %754 ]
  %760 = zext i1 %759 to i64
  %761 = select i1 %759, i32 1, i32 0
  store i32 %761, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  %762 = load i32, ptr %38, align 4, !tbaa !9
  %763 = icmp ne i32 %762, 0
  br i1 %763, label %764, label %774

764:                                              ; preds = %758
  %765 = load i32, ptr %21, align 4, !tbaa !9
  %766 = load i32, ptr %17, align 4, !tbaa !9
  %767 = sub i32 %766, 1
  %768 = icmp eq i32 %765, %767
  br i1 %768, label %769, label %771

769:                                              ; preds = %764
  %770 = load i32, ptr %19, align 4, !tbaa !9
  br label %772

771:                                              ; preds = %764
  br label %772

772:                                              ; preds = %771, %769
  %773 = phi i32 [ %770, %769 ], [ 0, %771 ]
  br label %792

774:                                              ; preds = %758
  %775 = load i32, ptr %21, align 4, !tbaa !9
  %776 = load i32, ptr %17, align 4, !tbaa !9
  %777 = sub i32 %776, 1
  %778 = icmp eq i32 %775, %777
  br i1 %778, label %779, label %788

779:                                              ; preds = %774
  %780 = load i32, ptr %19, align 4, !tbaa !9
  %781 = icmp ugt i32 %780, 0
  br i1 %781, label %782, label %784

782:                                              ; preds = %779
  %783 = load i32, ptr %19, align 4, !tbaa !9
  br label %786

784:                                              ; preds = %779
  %785 = load i32, ptr %15, align 4, !tbaa !9
  br label %786

786:                                              ; preds = %784, %782
  %787 = phi i32 [ %783, %782 ], [ %785, %784 ]
  br label %790

788:                                              ; preds = %774
  %789 = load i32, ptr %15, align 4, !tbaa !9
  br label %790

790:                                              ; preds = %788, %786
  %791 = phi i32 [ %787, %786 ], [ %789, %788 ]
  br label %792

792:                                              ; preds = %790, %772
  %793 = phi i32 [ %773, %772 ], [ %791, %790 ]
  store i32 %793, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %794 = load i32, ptr %38, align 4, !tbaa !9
  %795 = icmp ne i32 %794, 0
  br i1 %795, label %796, label %809

796:                                              ; preds = %792
  %797 = load i32, ptr %21, align 4, !tbaa !9
  %798 = load i32, ptr %17, align 4, !tbaa !9
  %799 = sub i32 %798, 1
  %800 = icmp eq i32 %797, %799
  br i1 %800, label %801, label %806

801:                                              ; preds = %796
  %802 = load i32, ptr %19, align 4, !tbaa !9
  %803 = icmp ugt i32 %802, 0
  %804 = zext i1 %803 to i64
  %805 = select i1 %803, i32 1, i32 0
  br label %807

806:                                              ; preds = %796
  br label %807

807:                                              ; preds = %806, %801
  %808 = phi i32 [ %805, %801 ], [ 0, %806 ]
  br label %822

809:                                              ; preds = %792
  %810 = load i32, ptr %21, align 4, !tbaa !9
  %811 = load i32, ptr %17, align 4, !tbaa !9
  %812 = sub i32 %811, 1
  %813 = icmp eq i32 %810, %812
  br i1 %813, label %814, label %819

814:                                              ; preds = %809
  %815 = load i32, ptr %19, align 4, !tbaa !9
  %816 = icmp ugt i32 %815, 0
  %817 = zext i1 %816 to i64
  %818 = select i1 %816, i32 1, i32 2
  br label %820

819:                                              ; preds = %809
  br label %820

820:                                              ; preds = %819, %814
  %821 = phi i32 [ %818, %814 ], [ 2, %819 ]
  br label %822

822:                                              ; preds = %820, %807
  %823 = phi i32 [ %808, %807 ], [ %821, %820 ]
  store i32 %823, ptr %40, align 4, !tbaa !9
  %824 = load i32, ptr %16, align 4, !tbaa !9
  %825 = load i32, ptr %22, align 4, !tbaa !9
  %826 = load i32, ptr %17, align 4, !tbaa !9
  %827 = mul i32 %825, %826
  %828 = add i32 %824, %827
  %829 = load i32, ptr %21, align 4, !tbaa !9
  %830 = add i32 %828, %829
  store i32 %830, ptr %23, align 4, !tbaa !9
  %831 = load i32, ptr %25, align 4, !tbaa !9
  %832 = icmp eq i32 %831, 1
  br i1 %832, label %833, label %839

833:                                              ; preds = %822
  %834 = load i32, ptr %16, align 4, !tbaa !9
  %835 = load i32, ptr %22, align 4, !tbaa !9
  %836 = load i32, ptr %17, align 4, !tbaa !9
  %837 = mul i32 %835, %836
  %838 = add i32 %834, %837
  store i32 %838, ptr %23, align 4, !tbaa !9
  br label %839

839:                                              ; preds = %833, %822
  %840 = load i32, ptr %27, align 4, !tbaa !9
  %841 = icmp eq i32 %840, 1
  br i1 %841, label %842, label %844

842:                                              ; preds = %839
  %843 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %843, ptr %23, align 4, !tbaa !9
  br label %844

844:                                              ; preds = %842, %839
  %845 = load i32, ptr %26, align 4, !tbaa !9
  %846 = icmp eq i32 %845, 1
  br i1 %846, label %847, label %851

847:                                              ; preds = %844
  %848 = load i32, ptr %16, align 4, !tbaa !9
  %849 = load i32, ptr %21, align 4, !tbaa !9
  %850 = add i32 %848, %849
  store i32 %850, ptr %23, align 4, !tbaa !9
  br label %851

851:                                              ; preds = %847, %844
  %852 = load ptr, ptr %11, align 8, !tbaa !5
  %853 = load i32, ptr %23, align 4, !tbaa !9
  %854 = load ptr, ptr %13, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %854, i32 0, i32 100
  %856 = load i32, ptr %855, align 4, !tbaa !37
  %857 = load ptr, ptr %13, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %857, i32 0, i32 86
  %859 = load i32, ptr %858, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %852, i32 noundef 69218307, i32 noundef %853, i32 noundef %856, i8 noundef zeroext 0, i32 noundef %859, i32 noundef 0, i32 noundef 2)
  %860 = load ptr, ptr %11, align 8, !tbaa !5
  %861 = load i32, ptr %23, align 4, !tbaa !9
  %862 = load ptr, ptr %13, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %862, i32 0, i32 86
  %864 = load i32, ptr %863, align 4, !tbaa !38
  %865 = load ptr, ptr %13, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %865, i32 0, i32 88
  %867 = load i32, ptr %866, align 4, !tbaa !39
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %860, i32 noundef 1694499843, i32 noundef %861, i32 noundef %864, i8 noundef zeroext 0, i32 noundef %867, i32 noundef 0, i32 noundef 2)
  %868 = load ptr, ptr %14, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %868, i32 0, i32 10
  %870 = load i16, ptr %869, align 1, !tbaa !23
  %871 = zext i16 %870 to i32
  %872 = icmp eq i32 %871, 65
  br i1 %872, label %873, label %898

873:                                              ; preds = %851
  %874 = load ptr, ptr %11, align 8, !tbaa !5
  %875 = load ptr, ptr %13, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %875, i32 0, i32 88
  %877 = load i32, ptr %876, align 4, !tbaa !39
  %878 = load ptr, ptr %13, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %878, i32 0, i32 100
  %880 = load i32, ptr %879, align 4, !tbaa !37
  %881 = load ptr, ptr %13, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %881, i32 0, i32 87
  %883 = load i32, ptr %882, align 4, !tbaa !40
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %874, i32 noundef 69218307, i32 noundef %877, i32 noundef %880, i8 noundef zeroext 0, i32 noundef %883, i32 noundef 0, i32 noundef 2)
  %884 = load ptr, ptr %11, align 8, !tbaa !5
  %885 = load ptr, ptr %13, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %885, i32 0, i32 88
  %887 = load i32, ptr %886, align 4, !tbaa !39
  %888 = load ptr, ptr %13, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %888, i32 0, i32 87
  %890 = load i32, ptr %889, align 4, !tbaa !40
  %891 = load ptr, ptr %13, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %891, i32 0, i32 88
  %893 = load i32, ptr %892, align 4, !tbaa !39
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %884, i32 noundef 1694499843, i32 noundef %887, i32 noundef %890, i8 noundef zeroext 0, i32 noundef %893, i32 noundef 0, i32 noundef 2)
  %894 = load ptr, ptr %11, align 8, !tbaa !5
  %895 = load ptr, ptr %13, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %895, i32 0, i32 88
  %897 = load i32, ptr %896, align 4, !tbaa !39
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %894, i32 noundef %897, i32 noundef 0)
  br label %913

898:                                              ; preds = %851
  %899 = load ptr, ptr %11, align 8, !tbaa !5
  %900 = load ptr, ptr %13, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %900, i32 0, i32 88
  %902 = load i32, ptr %901, align 4, !tbaa !39
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %899, i32 noundef %902, i32 noundef 0)
  %903 = load ptr, ptr %11, align 8, !tbaa !5
  %904 = load ptr, ptr %13, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %904, i32 0, i32 88
  %906 = load i32, ptr %905, align 4, !tbaa !39
  %907 = load ptr, ptr %13, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %907, i32 0, i32 88
  %909 = load i32, ptr %908, align 4, !tbaa !39
  %910 = load ptr, ptr %13, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %910, i32 0, i32 87
  %912 = load i32, ptr %911, align 4, !tbaa !40
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %903, i32 noundef 73412611, i32 noundef %906, i32 noundef %909, i8 noundef zeroext 0, i32 noundef %912, i32 noundef 0, i32 noundef 2)
  br label %913

913:                                              ; preds = %898, %873
  %914 = load ptr, ptr %11, align 8, !tbaa !5
  %915 = load ptr, ptr %13, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %915, i32 0, i32 86
  %917 = load i32, ptr %916, align 4, !tbaa !38
  %918 = load ptr, ptr %13, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %918, i32 0, i32 86
  %920 = load i32, ptr %919, align 4, !tbaa !38
  %921 = load ptr, ptr %13, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %921, i32 0, i32 86
  %923 = load i32, ptr %922, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %914, i32 noundef 86010883, i32 noundef %917, i32 noundef %920, i8 noundef zeroext 0, i32 noundef %923, i32 noundef 0, i32 noundef 1)
  %924 = load ptr, ptr %11, align 8, !tbaa !5
  %925 = load ptr, ptr %12, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %925, i32 0, i32 6
  %927 = load i32, ptr %926, align 4, !tbaa !25
  %928 = load ptr, ptr %12, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %928, i32 0, i32 36
  %930 = load i32, ptr %929, align 4, !tbaa !26
  %931 = load ptr, ptr %13, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %931, i32 0, i32 86
  %933 = load i32, ptr %932, align 4, !tbaa !38
  %934 = load ptr, ptr %13, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %934, i32 0, i32 5
  %936 = load i32, ptr %935, align 4, !tbaa !16
  %937 = load i32, ptr %39, align 4, !tbaa !9
  %938 = load i32, ptr %40, align 4, !tbaa !9
  %939 = trunc i32 %938 to i8
  %940 = zext i8 %939 to i32
  %941 = icmp eq i32 0, %940
  br i1 %941, label %947, label %942

942:                                              ; preds = %913
  %943 = load i32, ptr %40, align 4, !tbaa !9
  %944 = trunc i32 %943 to i8
  %945 = zext i8 %944 to i32
  %946 = icmp slt i32 0, %945
  br i1 %946, label %947, label %965

947:                                              ; preds = %942, %913
  %948 = load i32, ptr %40, align 4, !tbaa !9
  %949 = zext i32 %948 to i64
  %950 = mul i64 1, %949
  %951 = icmp ult i64 %950, 255
  br i1 %951, label %952, label %956

952:                                              ; preds = %947
  %953 = load i32, ptr %40, align 4, !tbaa !9
  %954 = zext i32 %953 to i64
  %955 = mul i64 1, %954
  br label %957

956:                                              ; preds = %947
  br label %957

957:                                              ; preds = %956, %952
  %958 = phi i64 [ %955, %952 ], [ 255, %956 ]
  %959 = icmp ule i64 %958, 255
  br i1 %959, label %960, label %965

960:                                              ; preds = %957
  %961 = load i32, ptr %40, align 4, !tbaa !9
  %962 = uitofp i32 %961 to double
  %963 = fcmp ole double 0.000000e+00, %962
  br i1 %963, label %964, label %965

964:                                              ; preds = %960
  br label %966

965:                                              ; preds = %960, %957, %942
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 856, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

966:                                              ; preds = %964
  %967 = load i32, ptr %40, align 4, !tbaa !9
  %968 = trunc i32 %967 to i8
  %969 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %924, i32 noundef %927, i32 noundef %930, i32 noundef %933, i32 noundef %936, i32 noundef %937, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %968, i8 noundef zeroext %969)
  %970 = load ptr, ptr %14, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %970, i32 0, i32 10
  %972 = load i16, ptr %971, align 1, !tbaa !23
  %973 = zext i16 %972 to i32
  %974 = icmp eq i32 %973, 65
  br i1 %974, label %975, label %1078

975:                                              ; preds = %966
  %976 = load ptr, ptr %11, align 8, !tbaa !5
  %977 = load ptr, ptr %13, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %977, i32 0, i32 87
  %979 = load i32, ptr %978, align 4, !tbaa !40
  %980 = load ptr, ptr %13, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %980, i32 0, i32 87
  %982 = load i32, ptr %981, align 4, !tbaa !40
  %983 = load ptr, ptr %13, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %983, i32 0, i32 87
  %985 = load i32, ptr %984, align 4, !tbaa !40
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %976, i32 noundef 86010883, i32 noundef %979, i32 noundef %982, i8 noundef zeroext 0, i32 noundef %985, i32 noundef 0, i32 noundef 1)
  %986 = load ptr, ptr %11, align 8, !tbaa !5
  %987 = load ptr, ptr %12, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %987, i32 0, i32 19
  %989 = load i32, ptr %988, align 4, !tbaa !34
  %990 = load ptr, ptr %12, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %990, i32 0, i32 36
  %992 = load i32, ptr %991, align 4, !tbaa !26
  %993 = load ptr, ptr %13, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %993, i32 0, i32 87
  %995 = load i32, ptr %994, align 4, !tbaa !40
  %996 = load ptr, ptr %13, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %996, i32 0, i32 5
  %998 = load i32, ptr %997, align 4, !tbaa !16
  %999 = load i32, ptr %39, align 4, !tbaa !9
  %1000 = load i32, ptr %40, align 4, !tbaa !9
  %1001 = trunc i32 %1000 to i8
  %1002 = zext i8 %1001 to i32
  %1003 = icmp eq i32 0, %1002
  br i1 %1003, label %1009, label %1004

1004:                                             ; preds = %975
  %1005 = load i32, ptr %40, align 4, !tbaa !9
  %1006 = trunc i32 %1005 to i8
  %1007 = zext i8 %1006 to i32
  %1008 = icmp slt i32 0, %1007
  br i1 %1008, label %1009, label %1027

1009:                                             ; preds = %1004, %975
  %1010 = load i32, ptr %40, align 4, !tbaa !9
  %1011 = zext i32 %1010 to i64
  %1012 = mul i64 1, %1011
  %1013 = icmp ult i64 %1012, 255
  br i1 %1013, label %1014, label %1018

1014:                                             ; preds = %1009
  %1015 = load i32, ptr %40, align 4, !tbaa !9
  %1016 = zext i32 %1015 to i64
  %1017 = mul i64 1, %1016
  br label %1019

1018:                                             ; preds = %1009
  br label %1019

1019:                                             ; preds = %1018, %1014
  %1020 = phi i64 [ %1017, %1014 ], [ 255, %1018 ]
  %1021 = icmp ule i64 %1020, 255
  br i1 %1021, label %1022, label %1027

1022:                                             ; preds = %1019
  %1023 = load i32, ptr %40, align 4, !tbaa !9
  %1024 = uitofp i32 %1023 to double
  %1025 = fcmp ole double 0.000000e+00, %1024
  br i1 %1025, label %1026, label %1027

1026:                                             ; preds = %1022
  br label %1028

1027:                                             ; preds = %1022, %1019, %1004
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 861, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

1028:                                             ; preds = %1026
  %1029 = load i32, ptr %40, align 4, !tbaa !9
  %1030 = trunc i32 %1029 to i8
  %1031 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %986, i32 noundef %989, i32 noundef %992, i32 noundef %995, i32 noundef %998, i32 noundef %999, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1030, i8 noundef zeroext %1031)
  %1032 = load ptr, ptr %11, align 8, !tbaa !5
  %1033 = load ptr, ptr %12, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1033, i32 0, i32 22
  %1035 = load i32, ptr %1034, align 4, !tbaa !36
  %1036 = load ptr, ptr %12, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1036, i32 0, i32 36
  %1038 = load i32, ptr %1037, align 4, !tbaa !26
  %1039 = load ptr, ptr %13, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1039, i32 0, i32 88
  %1041 = load i32, ptr %1040, align 4, !tbaa !39
  %1042 = load ptr, ptr %13, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1042, i32 0, i32 5
  %1044 = load i32, ptr %1043, align 4, !tbaa !16
  %1045 = load i32, ptr %39, align 4, !tbaa !9
  %1046 = load i32, ptr %40, align 4, !tbaa !9
  %1047 = trunc i32 %1046 to i8
  %1048 = zext i8 %1047 to i32
  %1049 = icmp eq i32 0, %1048
  br i1 %1049, label %1055, label %1050

1050:                                             ; preds = %1028
  %1051 = load i32, ptr %40, align 4, !tbaa !9
  %1052 = trunc i32 %1051 to i8
  %1053 = zext i8 %1052 to i32
  %1054 = icmp slt i32 0, %1053
  br i1 %1054, label %1055, label %1073

1055:                                             ; preds = %1050, %1028
  %1056 = load i32, ptr %40, align 4, !tbaa !9
  %1057 = zext i32 %1056 to i64
  %1058 = mul i64 1, %1057
  %1059 = icmp ult i64 %1058, 255
  br i1 %1059, label %1060, label %1064

1060:                                             ; preds = %1055
  %1061 = load i32, ptr %40, align 4, !tbaa !9
  %1062 = zext i32 %1061 to i64
  %1063 = mul i64 1, %1062
  br label %1065

1064:                                             ; preds = %1055
  br label %1065

1065:                                             ; preds = %1064, %1060
  %1066 = phi i64 [ %1063, %1060 ], [ 255, %1064 ]
  %1067 = icmp ule i64 %1066, 255
  br i1 %1067, label %1068, label %1073

1068:                                             ; preds = %1065
  %1069 = load i32, ptr %40, align 4, !tbaa !9
  %1070 = uitofp i32 %1069 to double
  %1071 = fcmp ole double 0.000000e+00, %1070
  br i1 %1071, label %1072, label %1073

1072:                                             ; preds = %1068
  br label %1074

1073:                                             ; preds = %1068, %1065, %1050
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 863, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

1074:                                             ; preds = %1072
  %1075 = load i32, ptr %40, align 4, !tbaa !9
  %1076 = trunc i32 %1075 to i8
  %1077 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1032, i32 noundef %1035, i32 noundef %1038, i32 noundef %1041, i32 noundef %1044, i32 noundef %1045, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1076, i8 noundef zeroext %1077)
  br label %1125

1078:                                             ; preds = %966
  %1079 = load ptr, ptr %11, align 8, !tbaa !5
  %1080 = load ptr, ptr %12, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1080, i32 0, i32 19
  %1082 = load i32, ptr %1081, align 4, !tbaa !34
  %1083 = load ptr, ptr %12, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1083, i32 0, i32 36
  %1085 = load i32, ptr %1084, align 4, !tbaa !26
  %1086 = load ptr, ptr %13, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1086, i32 0, i32 87
  %1088 = load i32, ptr %1087, align 4, !tbaa !40
  %1089 = load ptr, ptr %13, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1089, i32 0, i32 5
  %1091 = load i32, ptr %1090, align 4, !tbaa !16
  %1092 = load i32, ptr %39, align 4, !tbaa !9
  %1093 = load i32, ptr %40, align 4, !tbaa !9
  %1094 = trunc i32 %1093 to i8
  %1095 = zext i8 %1094 to i32
  %1096 = icmp eq i32 0, %1095
  br i1 %1096, label %1102, label %1097

1097:                                             ; preds = %1078
  %1098 = load i32, ptr %40, align 4, !tbaa !9
  %1099 = trunc i32 %1098 to i8
  %1100 = zext i8 %1099 to i32
  %1101 = icmp slt i32 0, %1100
  br i1 %1101, label %1102, label %1120

1102:                                             ; preds = %1097, %1078
  %1103 = load i32, ptr %40, align 4, !tbaa !9
  %1104 = zext i32 %1103 to i64
  %1105 = mul i64 1, %1104
  %1106 = icmp ult i64 %1105, 255
  br i1 %1106, label %1107, label %1111

1107:                                             ; preds = %1102
  %1108 = load i32, ptr %40, align 4, !tbaa !9
  %1109 = zext i32 %1108 to i64
  %1110 = mul i64 1, %1109
  br label %1112

1111:                                             ; preds = %1102
  br label %1112

1112:                                             ; preds = %1111, %1107
  %1113 = phi i64 [ %1110, %1107 ], [ 255, %1111 ]
  %1114 = icmp ule i64 %1113, 255
  br i1 %1114, label %1115, label %1120

1115:                                             ; preds = %1112
  %1116 = load i32, ptr %40, align 4, !tbaa !9
  %1117 = uitofp i32 %1116 to double
  %1118 = fcmp ole double 0.000000e+00, %1117
  br i1 %1118, label %1119, label %1120

1119:                                             ; preds = %1115
  br label %1121

1120:                                             ; preds = %1115, %1112, %1097
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 866, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

1121:                                             ; preds = %1119
  %1122 = load i32, ptr %40, align 4, !tbaa !9
  %1123 = trunc i32 %1122 to i8
  %1124 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1079, i32 noundef %1082, i32 noundef %1085, i32 noundef %1088, i32 noundef %1091, i32 noundef %1092, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1123, i8 noundef zeroext %1124)
  br label %1125

1125:                                             ; preds = %1121, %1074
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  br label %1126

1126:                                             ; preds = %1125
  %1127 = load i32, ptr %21, align 4, !tbaa !9
  %1128 = add i32 %1127, 1
  store i32 %1128, ptr %21, align 4, !tbaa !9
  br label %746, !llvm.loop !41

1129:                                             ; preds = %746
  %1130 = load i32, ptr %28, align 4, !tbaa !9
  %1131 = load i32, ptr %29, align 4, !tbaa !9
  %1132 = icmp ne i32 %1130, %1131
  br i1 %1132, label %1133, label %1186

1133:                                             ; preds = %1129
  %1134 = load ptr, ptr %11, align 8, !tbaa !5
  %1135 = load ptr, ptr %12, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1135, i32 0, i32 6
  %1137 = load i32, ptr %1136, align 4, !tbaa !25
  %1138 = load ptr, ptr %12, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1138, i32 0, i32 35
  %1140 = load i32, ptr %1139, align 4, !tbaa !21
  %1141 = load ptr, ptr %12, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1141, i32 0, i32 6
  %1143 = load i32, ptr %1142, align 4, !tbaa !25
  %1144 = load i32, ptr %28, align 4, !tbaa !9
  %1145 = zext i32 %1144 to i64
  %1146 = load i32, ptr %29, align 4, !tbaa !9
  %1147 = zext i32 %1146 to i64
  %1148 = sub nsw i64 %1145, %1147
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1134, i32 noundef 4096, i32 noundef %1137, i32 noundef %1140, i32 noundef %1143, i64 noundef %1148)
  %1149 = load ptr, ptr %11, align 8, !tbaa !5
  %1150 = load ptr, ptr %12, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1150, i32 0, i32 19
  %1152 = load i32, ptr %1151, align 4, !tbaa !34
  %1153 = load ptr, ptr %12, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1153, i32 0, i32 35
  %1155 = load i32, ptr %1154, align 4, !tbaa !21
  %1156 = load ptr, ptr %12, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1156, i32 0, i32 19
  %1158 = load i32, ptr %1157, align 4, !tbaa !34
  %1159 = load i32, ptr %28, align 4, !tbaa !9
  %1160 = zext i32 %1159 to i64
  %1161 = load i32, ptr %29, align 4, !tbaa !9
  %1162 = zext i32 %1161 to i64
  %1163 = sub nsw i64 %1160, %1162
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1149, i32 noundef 4096, i32 noundef %1152, i32 noundef %1155, i32 noundef %1158, i64 noundef %1163)
  %1164 = load ptr, ptr %14, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1164, i32 0, i32 10
  %1166 = load i16, ptr %1165, align 1, !tbaa !23
  %1167 = zext i16 %1166 to i32
  %1168 = icmp eq i32 %1167, 65
  br i1 %1168, label %1169, label %1185

1169:                                             ; preds = %1133
  %1170 = load ptr, ptr %11, align 8, !tbaa !5
  %1171 = load ptr, ptr %12, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1171, i32 0, i32 22
  %1173 = load i32, ptr %1172, align 4, !tbaa !36
  %1174 = load ptr, ptr %12, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1174, i32 0, i32 35
  %1176 = load i32, ptr %1175, align 4, !tbaa !21
  %1177 = load ptr, ptr %12, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1177, i32 0, i32 22
  %1179 = load i32, ptr %1178, align 4, !tbaa !36
  %1180 = load i32, ptr %28, align 4, !tbaa !9
  %1181 = zext i32 %1180 to i64
  %1182 = load i32, ptr %29, align 4, !tbaa !9
  %1183 = zext i32 %1182 to i64
  %1184 = sub nsw i64 %1181, %1183
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1170, i32 noundef 4096, i32 noundef %1173, i32 noundef %1176, i32 noundef %1179, i64 noundef %1184)
  br label %1185

1185:                                             ; preds = %1169, %1133
  br label %1186

1186:                                             ; preds = %1185, %1129
  br label %1187

1187:                                             ; preds = %1186
  %1188 = load i32, ptr %22, align 4, !tbaa !9
  %1189 = add i32 %1188, 1
  store i32 %1189, ptr %22, align 4, !tbaa !9
  br label %741, !llvm.loop !42

1190:                                             ; preds = %741
  %1191 = load ptr, ptr %11, align 8, !tbaa !5
  %1192 = load ptr, ptr %12, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1192, i32 0, i32 6
  %1194 = load i32, ptr %1193, align 4, !tbaa !25
  %1195 = load ptr, ptr %12, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1195, i32 0, i32 35
  %1197 = load i32, ptr %1196, align 4, !tbaa !21
  %1198 = load ptr, ptr %12, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1198, i32 0, i32 6
  %1200 = load i32, ptr %1199, align 4, !tbaa !25
  %1201 = load i32, ptr %28, align 4, !tbaa !9
  %1202 = zext i32 %1201 to i64
  %1203 = load i32, ptr %18, align 4, !tbaa !9
  %1204 = zext i32 %1203 to i64
  %1205 = mul nsw i64 %1202, %1204
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1191, i32 noundef 4097, i32 noundef %1194, i32 noundef %1197, i32 noundef %1200, i64 noundef %1205)
  br label %1569

1206:                                             ; preds = %707, %695
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %1207

1207:                                             ; preds = %1522, %1206
  %1208 = load i32, ptr %22, align 4, !tbaa !9
  %1209 = load i32, ptr %18, align 4, !tbaa !9
  %1210 = icmp ult i32 %1208, %1209
  br i1 %1210, label %1211, label %1525

1211:                                             ; preds = %1207
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1212

1212:                                             ; preds = %1470, %1211
  %1213 = load i32, ptr %21, align 4, !tbaa !9
  %1214 = load i32, ptr %17, align 4, !tbaa !9
  %1215 = icmp ult i32 %1213, %1214
  br i1 %1215, label %1216, label %1473

1216:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  %1217 = load ptr, ptr %14, align 8, !tbaa !5
  %1218 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1217, i32 noundef 3)
  %1219 = icmp eq i32 1, %1218
  br i1 %1219, label %1232, label %1220

1220:                                             ; preds = %1216
  %1221 = load ptr, ptr %14, align 8, !tbaa !5
  %1222 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1221, i32 noundef 3)
  %1223 = icmp eq i32 8, %1222
  br i1 %1223, label %1232, label %1224

1224:                                             ; preds = %1220
  %1225 = load ptr, ptr %14, align 8, !tbaa !5
  %1226 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1225, i32 noundef 3)
  %1227 = icmp eq i32 9, %1226
  br i1 %1227, label %1232, label %1228

1228:                                             ; preds = %1224
  %1229 = load ptr, ptr %14, align 8, !tbaa !5
  %1230 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1229, i32 noundef 3)
  %1231 = icmp eq i32 0, %1230
  br label %1232

1232:                                             ; preds = %1228, %1224, %1220, %1216
  %1233 = phi i1 [ true, %1224 ], [ true, %1220 ], [ true, %1216 ], [ %1231, %1228 ]
  %1234 = zext i1 %1233 to i64
  %1235 = select i1 %1233, i32 1, i32 0
  store i32 %1235, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  %1236 = load i32, ptr %41, align 4, !tbaa !9
  %1237 = icmp ne i32 %1236, 0
  br i1 %1237, label %1238, label %1248

1238:                                             ; preds = %1232
  %1239 = load i32, ptr %21, align 4, !tbaa !9
  %1240 = load i32, ptr %17, align 4, !tbaa !9
  %1241 = sub i32 %1240, 1
  %1242 = icmp eq i32 %1239, %1241
  br i1 %1242, label %1243, label %1245

1243:                                             ; preds = %1238
  %1244 = load i32, ptr %19, align 4, !tbaa !9
  br label %1246

1245:                                             ; preds = %1238
  br label %1246

1246:                                             ; preds = %1245, %1243
  %1247 = phi i32 [ %1244, %1243 ], [ 0, %1245 ]
  br label %1266

1248:                                             ; preds = %1232
  %1249 = load i32, ptr %21, align 4, !tbaa !9
  %1250 = load i32, ptr %17, align 4, !tbaa !9
  %1251 = sub i32 %1250, 1
  %1252 = icmp eq i32 %1249, %1251
  br i1 %1252, label %1253, label %1262

1253:                                             ; preds = %1248
  %1254 = load i32, ptr %19, align 4, !tbaa !9
  %1255 = icmp ugt i32 %1254, 0
  br i1 %1255, label %1256, label %1258

1256:                                             ; preds = %1253
  %1257 = load i32, ptr %19, align 4, !tbaa !9
  br label %1260

1258:                                             ; preds = %1253
  %1259 = load i32, ptr %15, align 4, !tbaa !9
  br label %1260

1260:                                             ; preds = %1258, %1256
  %1261 = phi i32 [ %1257, %1256 ], [ %1259, %1258 ]
  br label %1264

1262:                                             ; preds = %1248
  %1263 = load i32, ptr %15, align 4, !tbaa !9
  br label %1264

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

1266:                                             ; preds = %1264, %1246
  %1267 = phi i32 [ %1247, %1246 ], [ %1265, %1264 ]
  store i32 %1267, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %1268 = load i32, ptr %41, align 4, !tbaa !9
  %1269 = icmp ne i32 %1268, 0
  br i1 %1269, label %1270, label %1283

1270:                                             ; preds = %1266
  %1271 = load i32, ptr %21, align 4, !tbaa !9
  %1272 = load i32, ptr %17, align 4, !tbaa !9
  %1273 = sub i32 %1272, 1
  %1274 = icmp eq i32 %1271, %1273
  br i1 %1274, label %1275, label %1280

1275:                                             ; preds = %1270
  %1276 = load i32, ptr %19, align 4, !tbaa !9
  %1277 = icmp ugt i32 %1276, 0
  %1278 = zext i1 %1277 to i64
  %1279 = select i1 %1277, i32 1, i32 0
  br label %1281

1280:                                             ; preds = %1270
  br label %1281

1281:                                             ; preds = %1280, %1275
  %1282 = phi i32 [ %1279, %1275 ], [ 0, %1280 ]
  br label %1296

1283:                                             ; preds = %1266
  %1284 = load i32, ptr %21, align 4, !tbaa !9
  %1285 = load i32, ptr %17, align 4, !tbaa !9
  %1286 = sub i32 %1285, 1
  %1287 = icmp eq i32 %1284, %1286
  br i1 %1287, label %1288, label %1293

1288:                                             ; preds = %1283
  %1289 = load i32, ptr %19, align 4, !tbaa !9
  %1290 = icmp ugt i32 %1289, 0
  %1291 = zext i1 %1290 to i64
  %1292 = select i1 %1290, i32 1, i32 2
  br label %1294

1293:                                             ; preds = %1283
  br label %1294

1294:                                             ; preds = %1293, %1288
  %1295 = phi i32 [ %1292, %1288 ], [ 2, %1293 ]
  br label %1296

1296:                                             ; preds = %1294, %1281
  %1297 = phi i32 [ %1282, %1281 ], [ %1295, %1294 ]
  store i32 %1297, ptr %43, align 4, !tbaa !9
  %1298 = load i32, ptr %16, align 4, !tbaa !9
  %1299 = load i32, ptr %22, align 4, !tbaa !9
  %1300 = load i32, ptr %17, align 4, !tbaa !9
  %1301 = mul i32 %1299, %1300
  %1302 = add i32 %1298, %1301
  %1303 = load i32, ptr %21, align 4, !tbaa !9
  %1304 = add i32 %1302, %1303
  store i32 %1304, ptr %24, align 4, !tbaa !9
  %1305 = load i32, ptr %16, align 4, !tbaa !9
  %1306 = load i32, ptr %22, align 4, !tbaa !9
  %1307 = load i32, ptr %17, align 4, !tbaa !9
  %1308 = mul i32 %1306, %1307
  %1309 = add i32 %1305, %1308
  %1310 = load i32, ptr %21, align 4, !tbaa !9
  %1311 = add i32 %1309, %1310
  store i32 %1311, ptr %23, align 4, !tbaa !9
  %1312 = load ptr, ptr %14, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1312, i32 0, i32 11
  %1314 = load i8, ptr %1313, align 1, !tbaa !11
  %1315 = zext i8 %1314 to i32
  %1316 = icmp eq i32 %1315, 1
  br i1 %1316, label %1317, label %1327

1317:                                             ; preds = %1296
  %1318 = load ptr, ptr %14, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1318, i32 0, i32 10
  %1320 = load i16, ptr %1319, align 1, !tbaa !23
  %1321 = zext i16 %1320 to i32
  %1322 = icmp eq i32 %1321, 2
  br i1 %1322, label %1323, label %1327

1323:                                             ; preds = %1317
  %1324 = load ptr, ptr %13, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1324, i32 0, i32 32
  %1326 = load i32, ptr %1325, align 4, !tbaa !43
  store i32 %1326, ptr %23, align 4, !tbaa !9
  br label %1349

1327:                                             ; preds = %1317, %1296
  %1328 = load i32, ptr %25, align 4, !tbaa !9
  %1329 = icmp eq i32 %1328, 1
  br i1 %1329, label %1330, label %1336

1330:                                             ; preds = %1327
  %1331 = load i32, ptr %16, align 4, !tbaa !9
  %1332 = load i32, ptr %22, align 4, !tbaa !9
  %1333 = load i32, ptr %17, align 4, !tbaa !9
  %1334 = mul i32 %1332, %1333
  %1335 = add i32 %1331, %1334
  store i32 %1335, ptr %23, align 4, !tbaa !9
  br label %1336

1336:                                             ; preds = %1330, %1327
  %1337 = load i32, ptr %27, align 4, !tbaa !9
  %1338 = icmp eq i32 %1337, 1
  br i1 %1338, label %1339, label %1341

1339:                                             ; preds = %1336
  %1340 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1340, ptr %23, align 4, !tbaa !9
  br label %1341

1341:                                             ; preds = %1339, %1336
  %1342 = load i32, ptr %26, align 4, !tbaa !9
  %1343 = icmp eq i32 %1342, 1
  br i1 %1343, label %1344, label %1348

1344:                                             ; preds = %1341
  %1345 = load i32, ptr %16, align 4, !tbaa !9
  %1346 = load i32, ptr %21, align 4, !tbaa !9
  %1347 = add i32 %1345, %1346
  store i32 %1347, ptr %23, align 4, !tbaa !9
  br label %1348

1348:                                             ; preds = %1344, %1341
  br label %1349

1349:                                             ; preds = %1348, %1323
  %1350 = load i32, ptr %23, align 4, !tbaa !9
  %1351 = load i32, ptr %24, align 4, !tbaa !9
  %1352 = icmp eq i32 %1350, %1351
  br i1 %1352, label %1353, label %1368

1353:                                             ; preds = %1349
  %1354 = load ptr, ptr %14, align 8, !tbaa !5
  %1355 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1354, i32 noundef 4)
  %1356 = icmp eq i32 1, %1355
  br i1 %1356, label %1361, label %1357

1357:                                             ; preds = %1353
  %1358 = load ptr, ptr %14, align 8, !tbaa !5
  %1359 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1358, i32 noundef 0)
  %1360 = icmp eq i32 1, %1359
  br i1 %1360, label %1361, label %1368

1361:                                             ; preds = %1357, %1353
  %1362 = load ptr, ptr %14, align 8, !tbaa !5
  %1363 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1362, i32 noundef 3)
  %1364 = icmp eq i32 2, %1363
  br i1 %1364, label %1365, label %1368

1365:                                             ; preds = %1361
  %1366 = load ptr, ptr %11, align 8, !tbaa !5
  %1367 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %1366, i32 noundef %1367, i32 noundef 0)
  br label %1368

1368:                                             ; preds = %1365, %1361, %1357, %1349
  %1369 = load ptr, ptr %11, align 8, !tbaa !5
  %1370 = load ptr, ptr %12, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1370, i32 0, i32 6
  %1372 = load i32, ptr %1371, align 4, !tbaa !25
  %1373 = load ptr, ptr %12, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1373, i32 0, i32 36
  %1375 = load i32, ptr %1374, align 4, !tbaa !26
  %1376 = load i32, ptr %23, align 4, !tbaa !9
  %1377 = load ptr, ptr %13, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1377, i32 0, i32 5
  %1379 = load i32, ptr %1378, align 4, !tbaa !16
  %1380 = load i32, ptr %42, align 4, !tbaa !9
  %1381 = load i32, ptr %43, align 4, !tbaa !9
  %1382 = trunc i32 %1381 to i8
  %1383 = zext i8 %1382 to i32
  %1384 = icmp eq i32 0, %1383
  br i1 %1384, label %1390, label %1385

1385:                                             ; preds = %1368
  %1386 = load i32, ptr %43, align 4, !tbaa !9
  %1387 = trunc i32 %1386 to i8
  %1388 = zext i8 %1387 to i32
  %1389 = icmp slt i32 0, %1388
  br i1 %1389, label %1390, label %1408

1390:                                             ; preds = %1385, %1368
  %1391 = load i32, ptr %43, align 4, !tbaa !9
  %1392 = zext i32 %1391 to i64
  %1393 = mul i64 1, %1392
  %1394 = icmp ult i64 %1393, 255
  br i1 %1394, label %1395, label %1399

1395:                                             ; preds = %1390
  %1396 = load i32, ptr %43, align 4, !tbaa !9
  %1397 = zext i32 %1396 to i64
  %1398 = mul i64 1, %1397
  br label %1400

1399:                                             ; preds = %1390
  br label %1400

1400:                                             ; preds = %1399, %1395
  %1401 = phi i64 [ %1398, %1395 ], [ 255, %1399 ]
  %1402 = icmp ule i64 %1401, 255
  br i1 %1402, label %1403, label %1408

1403:                                             ; preds = %1400
  %1404 = load i32, ptr %43, align 4, !tbaa !9
  %1405 = uitofp i32 %1404 to double
  %1406 = fcmp ole double 0.000000e+00, %1405
  br i1 %1406, label %1407, label %1408

1407:                                             ; preds = %1403
  br label %1409

1408:                                             ; preds = %1403, %1400, %1385
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 918, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

1409:                                             ; preds = %1407
  %1410 = load i32, ptr %43, align 4, !tbaa !9
  %1411 = trunc i32 %1410 to i8
  %1412 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1369, i32 noundef %1372, i32 noundef %1375, i32 noundef %1376, i32 noundef %1379, i32 noundef %1380, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1411, i8 noundef zeroext %1412)
  %1413 = load ptr, ptr %14, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1413, i32 0, i32 11
  %1415 = load i8, ptr %1414, align 1, !tbaa !11
  %1416 = zext i8 %1415 to i32
  %1417 = icmp eq i32 %1416, 1
  br i1 %1417, label %1418, label %1469

1418:                                             ; preds = %1409
  %1419 = load ptr, ptr %14, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1419, i32 0, i32 10
  %1421 = load i16, ptr %1420, align 1, !tbaa !23
  %1422 = zext i16 %1421 to i32
  %1423 = icmp eq i32 %1422, 63
  br i1 %1423, label %1424, label %1469

1424:                                             ; preds = %1418
  %1425 = load ptr, ptr %11, align 8, !tbaa !5
  %1426 = load ptr, ptr %12, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1426, i32 0, i32 7
  %1428 = load i32, ptr %1427, align 4, !tbaa !44
  %1429 = load ptr, ptr %12, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1429, i32 0, i32 36
  %1431 = load i32, ptr %1430, align 4, !tbaa !26
  %1432 = load i32, ptr %23, align 4, !tbaa !9
  %1433 = load ptr, ptr %13, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1433, i32 0, i32 5
  %1435 = load i32, ptr %1434, align 4, !tbaa !16
  %1436 = load i32, ptr %42, align 4, !tbaa !9
  %1437 = load i32, ptr %43, align 4, !tbaa !9
  %1438 = trunc i32 %1437 to i8
  %1439 = zext i8 %1438 to i32
  %1440 = icmp eq i32 0, %1439
  br i1 %1440, label %1446, label %1441

1441:                                             ; preds = %1424
  %1442 = load i32, ptr %43, align 4, !tbaa !9
  %1443 = trunc i32 %1442 to i8
  %1444 = zext i8 %1443 to i32
  %1445 = icmp slt i32 0, %1444
  br i1 %1445, label %1446, label %1464

1446:                                             ; preds = %1441, %1424
  %1447 = load i32, ptr %43, align 4, !tbaa !9
  %1448 = zext i32 %1447 to i64
  %1449 = mul i64 1, %1448
  %1450 = icmp ult i64 %1449, 255
  br i1 %1450, label %1451, label %1455

1451:                                             ; preds = %1446
  %1452 = load i32, ptr %43, align 4, !tbaa !9
  %1453 = zext i32 %1452 to i64
  %1454 = mul i64 1, %1453
  br label %1456

1455:                                             ; preds = %1446
  br label %1456

1456:                                             ; preds = %1455, %1451
  %1457 = phi i64 [ %1454, %1451 ], [ 255, %1455 ]
  %1458 = icmp ule i64 %1457, 255
  br i1 %1458, label %1459, label %1464

1459:                                             ; preds = %1456
  %1460 = load i32, ptr %43, align 4, !tbaa !9
  %1461 = uitofp i32 %1460 to double
  %1462 = fcmp ole double 0.000000e+00, %1461
  br i1 %1462, label %1463, label %1464

1463:                                             ; preds = %1459
  br label %1465

1464:                                             ; preds = %1459, %1456, %1441
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 922, ptr noundef @__PRETTY_FUNCTION__.libxsmm_store_aarch64_2d_reg_block) #5
  unreachable

1465:                                             ; preds = %1463
  %1466 = load i32, ptr %43, align 4, !tbaa !9
  %1467 = trunc i32 %1466 to i8
  %1468 = load i8, ptr %30, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1425, i32 noundef %1428, i32 noundef %1431, i32 noundef %1432, i32 noundef %1435, i32 noundef %1436, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1467, i8 noundef zeroext %1468)
  br label %1469

1469:                                             ; preds = %1465, %1418, %1409
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  br label %1470

1470:                                             ; preds = %1469
  %1471 = load i32, ptr %21, align 4, !tbaa !9
  %1472 = add i32 %1471, 1
  store i32 %1472, ptr %21, align 4, !tbaa !9
  br label %1212, !llvm.loop !45

1473:                                             ; preds = %1212
  %1474 = load i32, ptr %28, align 4, !tbaa !9
  %1475 = load i32, ptr %29, align 4, !tbaa !9
  %1476 = icmp ne i32 %1474, %1475
  br i1 %1476, label %1477, label %1521

1477:                                             ; preds = %1473
  %1478 = load ptr, ptr %11, align 8, !tbaa !5
  %1479 = load ptr, ptr %12, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1479, i32 0, i32 6
  %1481 = load i32, ptr %1480, align 4, !tbaa !25
  %1482 = load ptr, ptr %12, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1482, i32 0, i32 35
  %1484 = load i32, ptr %1483, align 4, !tbaa !21
  %1485 = load ptr, ptr %12, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1485, i32 0, i32 6
  %1487 = load i32, ptr %1486, align 4, !tbaa !25
  %1488 = load i32, ptr %28, align 4, !tbaa !9
  %1489 = zext i32 %1488 to i64
  %1490 = load i32, ptr %29, align 4, !tbaa !9
  %1491 = zext i32 %1490 to i64
  %1492 = sub nsw i64 %1489, %1491
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1478, i32 noundef 4096, i32 noundef %1481, i32 noundef %1484, i32 noundef %1487, i64 noundef %1492)
  %1493 = load ptr, ptr %14, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1493, i32 0, i32 11
  %1495 = load i8, ptr %1494, align 1, !tbaa !11
  %1496 = zext i8 %1495 to i32
  %1497 = icmp eq i32 %1496, 1
  br i1 %1497, label %1498, label %1520

1498:                                             ; preds = %1477
  %1499 = load ptr, ptr %14, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1499, i32 0, i32 10
  %1501 = load i16, ptr %1500, align 1, !tbaa !23
  %1502 = zext i16 %1501 to i32
  %1503 = icmp eq i32 %1502, 63
  br i1 %1503, label %1504, label %1520

1504:                                             ; preds = %1498
  %1505 = load ptr, ptr %11, align 8, !tbaa !5
  %1506 = load ptr, ptr %12, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1506, i32 0, i32 7
  %1508 = load i32, ptr %1507, align 4, !tbaa !44
  %1509 = load ptr, ptr %12, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1509, i32 0, i32 35
  %1511 = load i32, ptr %1510, align 4, !tbaa !21
  %1512 = load ptr, ptr %12, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1512, i32 0, i32 7
  %1514 = load i32, ptr %1513, align 4, !tbaa !44
  %1515 = load i32, ptr %28, align 4, !tbaa !9
  %1516 = zext i32 %1515 to i64
  %1517 = load i32, ptr %29, align 4, !tbaa !9
  %1518 = zext i32 %1517 to i64
  %1519 = sub nsw i64 %1516, %1518
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1505, i32 noundef 4096, i32 noundef %1508, i32 noundef %1511, i32 noundef %1514, i64 noundef %1519)
  br label %1520

1520:                                             ; preds = %1504, %1498, %1477
  br label %1521

1521:                                             ; preds = %1520, %1473
  br label %1522

1522:                                             ; preds = %1521
  %1523 = load i32, ptr %22, align 4, !tbaa !9
  %1524 = add i32 %1523, 1
  store i32 %1524, ptr %22, align 4, !tbaa !9
  br label %1207, !llvm.loop !46

1525:                                             ; preds = %1207
  %1526 = load ptr, ptr %11, align 8, !tbaa !5
  %1527 = load ptr, ptr %12, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1527, i32 0, i32 6
  %1529 = load i32, ptr %1528, align 4, !tbaa !25
  %1530 = load ptr, ptr %12, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1530, i32 0, i32 35
  %1532 = load i32, ptr %1531, align 4, !tbaa !21
  %1533 = load ptr, ptr %12, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1533, i32 0, i32 6
  %1535 = load i32, ptr %1534, align 4, !tbaa !25
  %1536 = load i32, ptr %28, align 4, !tbaa !9
  %1537 = zext i32 %1536 to i64
  %1538 = load i32, ptr %18, align 4, !tbaa !9
  %1539 = zext i32 %1538 to i64
  %1540 = mul nsw i64 %1537, %1539
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1526, i32 noundef 4097, i32 noundef %1529, i32 noundef %1532, i32 noundef %1535, i64 noundef %1540)
  %1541 = load ptr, ptr %14, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1541, i32 0, i32 11
  %1543 = load i8, ptr %1542, align 1, !tbaa !11
  %1544 = zext i8 %1543 to i32
  %1545 = icmp eq i32 %1544, 1
  br i1 %1545, label %1546, label %1568

1546:                                             ; preds = %1525
  %1547 = load ptr, ptr %14, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1547, i32 0, i32 10
  %1549 = load i16, ptr %1548, align 1, !tbaa !23
  %1550 = zext i16 %1549 to i32
  %1551 = icmp eq i32 %1550, 63
  br i1 %1551, label %1552, label %1568

1552:                                             ; preds = %1546
  %1553 = load ptr, ptr %11, align 8, !tbaa !5
  %1554 = load ptr, ptr %12, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1554, i32 0, i32 7
  %1556 = load i32, ptr %1555, align 4, !tbaa !44
  %1557 = load ptr, ptr %12, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1557, i32 0, i32 35
  %1559 = load i32, ptr %1558, align 4, !tbaa !21
  %1560 = load ptr, ptr %12, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1560, i32 0, i32 7
  %1562 = load i32, ptr %1561, align 4, !tbaa !44
  %1563 = load i32, ptr %28, align 4, !tbaa !9
  %1564 = zext i32 %1563 to i64
  %1565 = load i32, ptr %18, align 4, !tbaa !9
  %1566 = zext i32 %1565 to i64
  %1567 = mul nsw i64 %1564, %1566
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1553, i32 noundef 4097, i32 noundef %1556, i32 noundef %1559, i32 noundef %1562, i64 noundef %1567)
  br label %1568

1568:                                             ; preds = %1552, %1546, %1525
  br label %1569

1569:                                             ; preds = %1568, %1190
  br label %1570

1570:                                             ; preds = %1569, %669
  store i32 0, ptr %31, align 4
  br label %1571

1571:                                             ; preds = %1570, %139
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  %1572 = load i32, ptr %31, align 4
  switch i32 %1572, label %1574 [
    i32 0, label %1573
    i32 1, label %1573
  ]

1573:                                             ; preds = %1571, %1571
  ret void

1574:                                             ; preds = %1571
  unreachable
}

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

declare void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef, i32 noundef, i32 noundef) #1

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !7, i64 31}
!12 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !13, i64 27, !13, i64 29, !7, i64 31}
!13 = !{!"short", !7, i64 0}
!14 = !{!12, !13, i64 27}
!15 = !{!12, !10, i64 12}
!16 = !{!17, !10, i64 20}
!17 = !{!"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}
!18 = !{!19, !10, i64 28}
!19 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !10, i64 140}
!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 = !{!12, !13, i64 29}
!24 = !{!17, !10, i64 116}
!25 = !{!22, !10, i64 24}
!26 = !{!22, !10, i64 144}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = !{!22, !10, i64 44}
!31 = !{!17, !10, i64 120}
!32 = distinct !{!32, !28}
!33 = distinct !{!33, !28}
!34 = !{!22, !10, i64 76}
!35 = !{!22, !10, i64 48}
!36 = !{!22, !10, i64 88}
!37 = !{!17, !10, i64 400}
!38 = !{!17, !10, i64 344}
!39 = !{!17, !10, i64 352}
!40 = !{!17, !10, i64 348}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = !{!17, !10, i64 128}
!44 = !{!22, !10, i64 28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}


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

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) local_unnamed_addr #0

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

declare i32 @libxsmm_meltw_getenum_precision(ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) local_unnamed_addr #0

declare void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #0

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 #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_store_aarch64_2d_reg_block(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) local_unnamed_addr #1 {
  %11 = getelementptr inbounds i8, ptr %3, i64 31
  %12 = load i8, ptr %11, align 1, !tbaa !5
  %13 = icmp eq i8 %12, 1
  br i1 %13, label %14, label %23

14:                                               ; preds = %10
  %15 = getelementptr inbounds i8, ptr %3, i64 27
  %16 = load i16, ptr %15, align 1, !tbaa !11
  %17 = and i16 %16, 2
  %18 = icmp ne i16 %17, 0
  %19 = and i16 %16, 4
  %20 = icmp ne i16 %19, 0
  %21 = and i16 %16, 8
  %22 = icmp ne i16 %21, 0
  br label %23

23:                                               ; preds = %10, %14
  %24 = phi i1 [ %20, %14 ], [ false, %10 ]
  %25 = phi i1 [ %18, %14 ], [ false, %10 ]
  %26 = phi i1 [ %22, %14 ], [ false, %10 ]
  %27 = getelementptr inbounds i8, ptr %3, i64 12
  %28 = load i32, ptr %27, align 1, !tbaa !12
  %29 = getelementptr inbounds i8, ptr %2, i64 20
  %30 = load i32, ptr %29, align 4, !tbaa !13
  %31 = mul i32 %30, %28
  %32 = icmp eq i32 %8, 0
  br i1 %32, label %33, label %36

33:                                               ; preds = %23
  %34 = mul i32 %6, %4
  %35 = mul i32 %34, %30
  br label %41

36:                                               ; preds = %23
  %37 = add i32 %6, -1
  %38 = mul i32 %37, %4
  %39 = add i32 %38, %8
  %40 = mul i32 %30, %39
  br label %41

41:                                               ; preds = %36, %33
  %42 = phi i32 [ %35, %33 ], [ %40, %36 ]
  %43 = getelementptr inbounds i8, ptr %0, i64 28
  %44 = load i32, ptr %43, align 4, !tbaa !15
  %45 = add i32 %44, -2201
  %spec.select = icmp ult i32 %45, 799
  %46 = zext i1 %spec.select to i8
  %47 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #2
  %.not = icmp eq i32 %47, 0
  br i1 %.not, label %48, label %409

48:                                               ; preds = %41
  br i1 %spec.select, label %49, label %64

49:                                               ; preds = %48
  %50 = getelementptr inbounds i8, ptr %1, i64 140
  %51 = load i32, ptr %50, align 4, !tbaa !18
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 0, i32 noundef -1, i32 noundef %51) #2
  %52 = load i32, ptr %29, align 4, !tbaa !13
  %53 = mul i32 %52, %8
  %54 = load i32, ptr %50, align 4, !tbaa !18
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %53, i32 noundef %54) #2
  %55 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %56 = icmp eq i32 %55, 2
  br i1 %56, label %60, label %57

57:                                               ; preds = %49
  %58 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %59 = icmp eq i32 %58, 12
  br i1 %59, label %60, label %64

60:                                               ; preds = %57, %49
  %61 = load i32, ptr %29, align 4, !tbaa !13
  %62 = mul i32 %61, %4
  %63 = load i32, ptr %50, align 4, !tbaa !18
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %62, i32 noundef %63) #2
  br label %64

64:                                               ; preds = %57, %60, %48
  %65 = load i8, ptr %11, align 1, !tbaa !5
  %66 = icmp eq i8 %65, 1
  br i1 %66, label %67, label %309

67:                                               ; preds = %64
  %68 = getelementptr inbounds i8, ptr %3, i64 29
  %69 = load i16, ptr %68, align 1, !tbaa !20
  %70 = icmp eq i16 %69, 33
  br i1 %70, label %71, label %208

71:                                               ; preds = %67
  %72 = load i32, ptr %29, align 4, !tbaa !13
  %73 = mul i32 %72, %4
  %74 = getelementptr inbounds i8, ptr %1, i64 140
  %75 = load i32, ptr %74, align 4, !tbaa !18
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %73, i32 noundef %75) #2
  %.not617 = icmp eq i32 %7, 0
  br i1 %.not617, label %.._crit_edge593_crit_edge, label %.preheader577.lr.ph

.._crit_edge593_crit_edge:                        ; preds = %71
  %.pre = zext i32 %31 to i64
  br label %._crit_edge593

.preheader577.lr.ph:                              ; preds = %71
  %.not618 = icmp eq i32 %6, 0
  %76 = add i32 %6, -1
  %77 = select i1 %32, i32 %4, i32 %8
  %78 = select i1 %32, i8 2, i8 1
  %.not542 = icmp ne i32 %8, 0
  %79 = getelementptr inbounds i8, ptr %2, i64 116
  %80 = getelementptr inbounds i8, ptr %1, i64 24
  %81 = getelementptr inbounds i8, ptr %1, i64 144
  %.not539 = icmp eq i32 %31, %42
  %82 = zext i32 %31 to i64
  %83 = zext i32 %42 to i64
  %84 = sub nsw i64 %82, %83
  br i1 %.not618, label %.preheader577.lr.ph.split, label %.preheader577.us.preheader

.preheader577.us.preheader:                       ; preds = %.preheader577.lr.ph
  %85 = icmp eq i32 %76, 0
  %spec.select569.us.peel = select i1 %85, i32 %77, i32 %4
  %spec.select573.us.peel = select i1 %85, i8 %78, i8 2
  %86 = icmp eq i32 %76, 0
  %87 = select i1 %86, i32 %8, i32 0
  %narrow619.peel = and i1 %86, %.not542
  %spec.select604.peel = zext i1 %narrow619.peel to i8
  %spec.select605.peel = select i1 %25, i1 true, i1 %24
  %88 = select i1 %spec.select605.peel, i1 true, i1 %26
  %exitcond630.peel.not = icmp eq i32 %6, 1
  %.not648 = xor i1 %88, true
  %.not649 = xor i1 %88, true
  %brmerge650 = select i1 %.not649, i1 true, i1 %24
  br label %.preheader577.us

.preheader577.us:                                 ; preds = %.preheader577.us.preheader, %111
  %.0502592.us = phi i32 [ %112, %111 ], [ 0, %.preheader577.us.preheader ]
  %89 = mul i32 %.0502592.us, %6
  %90 = add i32 %89, %5
  %spec.select546.v.us = select i1 %24, i32 %5, i32 %90
  %91 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %92 = icmp eq i32 %91, 1
  br i1 %92, label %.thread553.us.peel, label %93

93:                                               ; preds = %.preheader577.us
  %94 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %.thread553.us.peel, label %96

.thread553.us.peel:                               ; preds = %93, %.preheader577.us
  br label %96

96:                                               ; preds = %93, %.thread553.us.peel
  %97 = phi i32 [ %87, %.thread553.us.peel ], [ %spec.select569.us.peel, %93 ]
  %98 = phi i8 [ %spec.select604.peel, %.thread553.us.peel ], [ %spec.select573.us.peel, %93 ]
  %99 = icmp eq i32 %.0502592.us, 0
  %or.cond7.us.peel = and i1 %26, %99
  %or.cond = select i1 %.not648, i1 true, i1 %or.cond7.us.peel
  %brmerge = select i1 %or.cond, i1 true, i1 %spec.select605.peel
  br i1 %brmerge, label %100, label %103

100:                                              ; preds = %96
  %.mux545.us.peel = select i1 %26, i32 %5, i32 %spec.select546.v.us
  %spec.select606.peel = select i1 %25, i32 %90, i32 %.mux545.us.peel
  %101 = load i32, ptr %79, align 4, !tbaa !21
  %102 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 2) #2
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86009859, i32 noundef %spec.select606.peel, i32 noundef %spec.select606.peel, i8 noundef zeroext 0, i32 noundef %101, i32 noundef 0, i32 noundef %102) #2
  br label %103

103:                                              ; preds = %96, %100
  %104 = load i32, ptr %80, align 4, !tbaa !22
  %105 = load i32, ptr %81, align 4, !tbaa !23
  %106 = load i32, ptr %79, align 4, !tbaa !21
  %107 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %104, i32 noundef %105, i32 noundef %106, i32 noundef %107, i32 noundef %97, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %98, i8 noundef zeroext %46) #2
  br i1 %exitcond630.peel.not, label %._crit_edge591.us, label %.peel.next

108:                                              ; preds = %._crit_edge591.us
  %109 = load i32, ptr %80, align 4, !tbaa !22
  %110 = load i32, ptr %74, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %109, i32 noundef %110, i32 noundef %109, i64 noundef %84) #2
  br label %111

111:                                              ; preds = %108, %._crit_edge591.us
  %112 = add nuw i32 %.0502592.us, 1
  %exitcond632.not = icmp eq i32 %112, %7
  br i1 %exitcond632.not, label %._crit_edge593, label %.preheader577.us, !llvm.loop !24

.peel.next:                                       ; preds = %103, %128
  %.0588.us = phi i32 [ %133, %128 ], [ 1, %103 ]
  %113 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %114 = icmp eq i32 %113, 1
  br i1 %114, label %.thread553.us, label %115

115:                                              ; preds = %.peel.next
  %116 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %.thread553.us, label %118

118:                                              ; preds = %115
  %119 = icmp eq i32 %.0588.us, %76
  %spec.select569.us = select i1 %119, i32 %77, i32 %4
  %spec.select573.us = select i1 %119, i8 %78, i8 2
  br label %122

.thread553.us:                                    ; preds = %115, %.peel.next
  %120 = icmp eq i32 %.0588.us, %76
  %121 = select i1 %120, i32 %8, i32 0
  %narrow619 = and i1 %120, %.not542
  %spec.select604 = zext i1 %narrow619 to i8
  br label %122

122:                                              ; preds = %.thread553.us, %118
  %123 = phi i32 [ %spec.select569.us, %118 ], [ %121, %.thread553.us ]
  %124 = phi i8 [ %spec.select573.us, %118 ], [ %spec.select604, %.thread553.us ]
  br i1 %brmerge650, label %125, label %128

125:                                              ; preds = %122
  %spec.select546.us = add i32 %.0588.us, %spec.select546.v.us
  %.mux545.us = select i1 %26, i32 %5, i32 %spec.select546.us
  %spec.select606 = select i1 %25, i32 %90, i32 %.mux545.us
  %126 = load i32, ptr %79, align 4, !tbaa !21
  %127 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 2) #2
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86009859, i32 noundef %spec.select606, i32 noundef %spec.select606, i8 noundef zeroext 0, i32 noundef %126, i32 noundef 0, i32 noundef %127) #2
  br label %128

128:                                              ; preds = %122, %125
  %129 = load i32, ptr %80, align 4, !tbaa !22
  %130 = load i32, ptr %81, align 4, !tbaa !23
  %131 = load i32, ptr %79, align 4, !tbaa !21
  %132 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %129, i32 noundef %130, i32 noundef %131, i32 noundef %132, i32 noundef %123, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %124, i8 noundef zeroext %46) #2
  %133 = add nuw i32 %.0588.us, 1
  %exitcond630.not = icmp eq i32 %133, %6
  br i1 %exitcond630.not, label %._crit_edge591.us, label %.peel.next, !llvm.loop !26

._crit_edge591.us:                                ; preds = %128, %103
  br i1 %.not539, label %111, label %108

.preheader577.lr.ph.split:                        ; preds = %.preheader577.lr.ph
  br i1 %.not539, label %._crit_edge593, label %.preheader577

.preheader577:                                    ; preds = %.preheader577.lr.ph.split, %.preheader577
  %.0502592 = phi i32 [ %136, %.preheader577 ], [ 0, %.preheader577.lr.ph.split ]
  %134 = load i32, ptr %80, align 4, !tbaa !22
  %135 = load i32, ptr %74, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %134, i32 noundef %135, i32 noundef %134, i64 noundef %84) #2
  %136 = add nuw i32 %.0502592, 1
  %exitcond633.not = icmp eq i32 %136, %7
  br i1 %exitcond633.not, label %._crit_edge593, label %.preheader577, !llvm.loop !24

._crit_edge593:                                   ; preds = %111, %.preheader577, %.preheader577.lr.ph.split, %.._crit_edge593_crit_edge
  %.pre-phi = phi i64 [ %.pre, %.._crit_edge593_crit_edge ], [ %82, %.preheader577.lr.ph.split ], [ %82, %.preheader577 ], [ %82, %111 ]
  %137 = getelementptr inbounds i8, ptr %1, i64 24
  %138 = load i32, ptr %137, align 4, !tbaa !22
  %139 = load i32, ptr %74, align 4, !tbaa !18
  %140 = zext i32 %7 to i64
  %141 = mul nuw nsw i64 %.pre-phi, %140
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %138, i32 noundef %139, i32 noundef %138, i64 noundef %141) #2
  %142 = load i32, ptr %137, align 4, !tbaa !22
  %143 = getelementptr inbounds i8, ptr %1, i64 44
  %144 = load i32, ptr %143, align 4, !tbaa !28
  tail call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 184549383, i32 noundef %142, i32 noundef %144, i32 noundef %142, i32 noundef 0, i32 noundef 0) #2
  br i1 %.not617, label %._crit_edge601, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %._crit_edge593
  %.not621 = icmp eq i32 %6, 0
  %145 = add i32 %6, -1
  %146 = select i1 %32, i32 %4, i32 %8
  %147 = select i1 %32, i8 2, i8 1
  %.not538 = icmp ne i32 %8, 0
  %148 = getelementptr inbounds i8, ptr %2, i64 120
  %149 = getelementptr inbounds i8, ptr %1, i64 144
  %.not535 = icmp eq i32 %31, %42
  %150 = zext i32 %42 to i64
  %151 = sub nsw i64 %.pre-phi, %150
  br i1 %.not621, label %.preheader.lr.ph.split, label %.preheader.us.preheader

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %152 = icmp eq i32 %145, 0
  %spec.select570.us.peel = select i1 %152, i32 %146, i32 %4
  %spec.select574.us.peel = select i1 %152, i8 %147, i8 2
  %153 = icmp eq i32 %145, 0
  %154 = select i1 %153, i32 %8, i32 0
  %narrow622.peel = and i1 %153, %.not538
  %spec.select607.peel = zext i1 %narrow622.peel to i8
  %spec.select608.peel = select i1 %25, i1 true, i1 %24
  %155 = select i1 %spec.select608.peel, i1 true, i1 %26
  %exitcond634.peel.not = icmp eq i32 %6, 1
  %.not651 = xor i1 %155, true
  %.not654 = xor i1 %155, true
  %brmerge655 = select i1 %.not654, i1 true, i1 %24
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %178
  %.1503600.us = phi i32 [ %179, %178 ], [ 0, %.preheader.us.preheader ]
  %156 = mul i32 %.1503600.us, %6
  %157 = add i32 %156, %5
  %spec.select550.v.us = select i1 %24, i32 %5, i32 %157
  %158 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %159 = icmp eq i32 %158, 1
  br i1 %159, label %.thread555.us.peel, label %160

160:                                              ; preds = %.preheader.us
  %161 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %162 = icmp eq i32 %161, 0
  br i1 %162, label %.thread555.us.peel, label %163

.thread555.us.peel:                               ; preds = %160, %.preheader.us
  br label %163

163:                                              ; preds = %160, %.thread555.us.peel
  %164 = phi i32 [ %154, %.thread555.us.peel ], [ %spec.select570.us.peel, %160 ]
  %165 = phi i8 [ %spec.select607.peel, %.thread555.us.peel ], [ %spec.select574.us.peel, %160 ]
  %166 = icmp eq i32 %.1503600.us, 0
  %or.cond19.us.peel = and i1 %26, %166
  %or.cond652 = select i1 %.not651, i1 true, i1 %or.cond19.us.peel
  %brmerge653 = select i1 %or.cond652, i1 true, i1 %spec.select608.peel
  br i1 %brmerge653, label %167, label %170

167:                                              ; preds = %163
  %.mux549.us.peel = select i1 %26, i32 %5, i32 %spec.select550.v.us
  %spec.select609.peel = select i1 %25, i32 %157, i32 %.mux549.us.peel
  %168 = load i32, ptr %148, align 4, !tbaa !29
  %169 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 2) #2
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86010883, i32 noundef %spec.select609.peel, i32 noundef %spec.select609.peel, i8 noundef zeroext 0, i32 noundef %168, i32 noundef 0, i32 noundef %169) #2
  br label %170

170:                                              ; preds = %163, %167
  %171 = load i32, ptr %137, align 4, !tbaa !22
  %172 = load i32, ptr %149, align 4, !tbaa !23
  %173 = load i32, ptr %148, align 4, !tbaa !29
  %174 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %171, i32 noundef %172, i32 noundef %173, i32 noundef %174, i32 noundef %164, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %165, i8 noundef zeroext %46) #2
  br i1 %exitcond634.peel.not, label %._crit_edge599.us, label %.peel.next636

175:                                              ; preds = %._crit_edge599.us
  %176 = load i32, ptr %137, align 4, !tbaa !22
  %177 = load i32, ptr %74, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %176, i32 noundef %177, i32 noundef %176, i64 noundef %151) #2
  br label %178

178:                                              ; preds = %175, %._crit_edge599.us
  %179 = add nuw i32 %.1503600.us, 1
  %exitcond638.not = icmp eq i32 %179, %7
  br i1 %exitcond638.not, label %._crit_edge601, label %.preheader.us, !llvm.loop !30

.peel.next636:                                    ; preds = %170, %195
  %.1596.us = phi i32 [ %200, %195 ], [ 1, %170 ]
  %180 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %181 = icmp eq i32 %180, 1
  br i1 %181, label %.thread555.us, label %182

182:                                              ; preds = %.peel.next636
  %183 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %.thread555.us, label %185

185:                                              ; preds = %182
  %186 = icmp eq i32 %.1596.us, %145
  %spec.select570.us = select i1 %186, i32 %146, i32 %4
  %spec.select574.us = select i1 %186, i8 %147, i8 2
  br label %189

.thread555.us:                                    ; preds = %182, %.peel.next636
  %187 = icmp eq i32 %.1596.us, %145
  %188 = select i1 %187, i32 %8, i32 0
  %narrow622 = and i1 %187, %.not538
  %spec.select607 = zext i1 %narrow622 to i8
  br label %189

189:                                              ; preds = %.thread555.us, %185
  %190 = phi i32 [ %spec.select570.us, %185 ], [ %188, %.thread555.us ]
  %191 = phi i8 [ %spec.select574.us, %185 ], [ %spec.select607, %.thread555.us ]
  br i1 %brmerge655, label %192, label %195

192:                                              ; preds = %189
  %spec.select550.us = add i32 %.1596.us, %spec.select550.v.us
  %.mux549.us = select i1 %26, i32 %5, i32 %spec.select550.us
  %spec.select609 = select i1 %25, i32 %157, i32 %.mux549.us
  %193 = load i32, ptr %148, align 4, !tbaa !29
  %194 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 2) #2
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86010883, i32 noundef %spec.select609, i32 noundef %spec.select609, i8 noundef zeroext 0, i32 noundef %193, i32 noundef 0, i32 noundef %194) #2
  br label %195

195:                                              ; preds = %189, %192
  %196 = load i32, ptr %137, align 4, !tbaa !22
  %197 = load i32, ptr %149, align 4, !tbaa !23
  %198 = load i32, ptr %148, align 4, !tbaa !29
  %199 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %196, i32 noundef %197, i32 noundef %198, i32 noundef %199, i32 noundef %190, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %191, i8 noundef zeroext %46) #2
  %200 = add nuw i32 %.1596.us, 1
  %exitcond634.not = icmp eq i32 %200, %6
  br i1 %exitcond634.not, label %._crit_edge599.us, label %.peel.next636, !llvm.loop !31

._crit_edge599.us:                                ; preds = %195, %170
  br i1 %.not535, label %178, label %175

.preheader.lr.ph.split:                           ; preds = %.preheader.lr.ph
  br i1 %.not535, label %._crit_edge601, label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph.split, %.preheader
  %.1503600 = phi i32 [ %203, %.preheader ], [ 0, %.preheader.lr.ph.split ]
  %201 = load i32, ptr %137, align 4, !tbaa !22
  %202 = load i32, ptr %74, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %201, i32 noundef %202, i32 noundef %201, i64 noundef %151) #2
  %203 = add nuw i32 %.1503600, 1
  %exitcond639.not = icmp eq i32 %203, %7
  br i1 %exitcond639.not, label %._crit_edge601, label %.preheader, !llvm.loop !30

._crit_edge601:                                   ; preds = %178, %.preheader, %.preheader.lr.ph.split, %._crit_edge593
  %204 = load i32, ptr %137, align 4, !tbaa !22
  %205 = load i32, ptr %74, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %204, i32 noundef %205, i32 noundef %204, i64 noundef %141) #2
  %206 = load i32, ptr %137, align 4, !tbaa !22
  %207 = load i32, ptr %143, align 4, !tbaa !28
  tail call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 1258291207, i32 noundef %206, i32 noundef %207, i32 noundef %206, i32 noundef 0, i32 noundef 0) #2
  br label %409

208:                                              ; preds = %67
  %209 = and i16 %69, -2
  %switch = icmp eq i16 %209, 64
  br i1 %switch, label %210, label %309

210:                                              ; preds = %208
  %211 = getelementptr inbounds i8, ptr %1, i64 24
  %212 = load i32, ptr %211, align 4, !tbaa !22
  %213 = getelementptr inbounds i8, ptr %1, i64 44
  %214 = load i32, ptr %213, align 4, !tbaa !28
  %215 = getelementptr inbounds i8, ptr %1, i64 76
  %216 = load i32, ptr %215, align 4, !tbaa !32
  tail call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 184549383, i32 noundef %212, i32 noundef %214, i32 noundef %216, i32 noundef 0, i32 noundef 0) #2
  %217 = load i16, ptr %68, align 1, !tbaa !20
  %218 = icmp eq i16 %217, 65
  br i1 %218, label %219, label %225

219:                                              ; preds = %210
  %220 = load i32, ptr %211, align 4, !tbaa !22
  %221 = getelementptr inbounds i8, ptr %1, i64 48
  %222 = load i32, ptr %221, align 4, !tbaa !33
  %223 = getelementptr inbounds i8, ptr %1, i64 88
  %224 = load i32, ptr %223, align 4, !tbaa !34
  tail call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 184549383, i32 noundef %220, i32 noundef %222, i32 noundef %224, i32 noundef 0, i32 noundef 0) #2
  br label %225

225:                                              ; preds = %219, %210
  %.not614 = icmp eq i32 %7, 0
  br i1 %.not614, label %.._crit_edge587_crit_edge, label %.preheader578.lr.ph

.._crit_edge587_crit_edge:                        ; preds = %225
  %.pre642 = zext i32 %31 to i64
  br label %._crit_edge587

.preheader578.lr.ph:                              ; preds = %225
  %.not615 = icmp eq i32 %6, 0
  %226 = add i32 %6, -1
  %227 = select i1 %32, i32 %4, i32 %8
  %228 = select i1 %32, i8 2, i8 1
  %.not534 = icmp ne i32 %8, 0
  %229 = getelementptr inbounds i8, ptr %2, i64 400
  %230 = getelementptr inbounds i8, ptr %2, i64 344
  %231 = getelementptr inbounds i8, ptr %2, i64 352
  %232 = getelementptr inbounds i8, ptr %2, i64 348
  %233 = getelementptr inbounds i8, ptr %1, i64 144
  %234 = getelementptr inbounds i8, ptr %1, i64 88
  %.not531 = icmp eq i32 %31, %42
  %235 = getelementptr inbounds i8, ptr %1, i64 140
  %236 = zext i32 %31 to i64
  %237 = zext i32 %42 to i64
  %238 = sub nsw i64 %236, %237
  br label %.preheader578

.preheader578:                                    ; preds = %.preheader578.lr.ph, %302
  %.2504586 = phi i32 [ 0, %.preheader578.lr.ph ], [ %303, %302 ]
  br i1 %.not615, label %._crit_edge585, label %.lr.ph584

.lr.ph584:                                        ; preds = %.preheader578
  %239 = mul i32 %.2504586, %6
  %240 = add i32 %239, %5
  br label %241

241:                                              ; preds = %.lr.ph584, %286
  %.2583 = phi i32 [ 0, %.lr.ph584 ], [ %291, %286 ]
  %242 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %.thread560, label %244

244:                                              ; preds = %241
  %245 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %246 = icmp eq i32 %245, 0
  br i1 %246, label %.thread560, label %247

247:                                              ; preds = %244
  %248 = icmp eq i32 %.2583, %226
  %spec.select571 = select i1 %248, i32 %227, i32 %4
  %spec.select575 = select i1 %248, i8 %228, i8 2
  br label %251

.thread560:                                       ; preds = %241, %244
  %249 = icmp eq i32 %.2583, %226
  %250 = select i1 %249, i32 %8, i32 0
  %narrow616 = and i1 %249, %.not534
  %spec.select610 = zext i1 %narrow616 to i8
  br label %251

251:                                              ; preds = %.thread560, %247
  %252 = phi i32 [ %spec.select571, %247 ], [ %250, %.thread560 ]
  %253 = phi i8 [ %spec.select575, %247 ], [ %spec.select610, %.thread560 ]
  %254 = select i1 %25, i32 0, i32 %.2583
  %spec.select543 = add i32 %240, %254
  %.3509 = select i1 %26, i32 %5, i32 %spec.select543
  %255 = add i32 %.2583, %5
  %.4 = select i1 %24, i32 %255, i32 %.3509
  %256 = load i32, ptr %229, align 4, !tbaa !35
  %257 = load i32, ptr %230, align 4, !tbaa !36
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 69218307, i32 noundef %.4, i32 noundef %256, i8 noundef zeroext 0, i32 noundef %257, i32 noundef 0, i32 noundef 2) #2
  %258 = load i32, ptr %230, align 4, !tbaa !36
  %259 = load i32, ptr %231, align 4, !tbaa !37
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694499843, i32 noundef %.4, i32 noundef %258, i8 noundef zeroext 0, i32 noundef %259, i32 noundef 0, i32 noundef 2) #2
  %260 = load i16, ptr %68, align 1, !tbaa !20
  %261 = icmp eq i16 %260, 65
  %262 = load i32, ptr %231, align 4, !tbaa !37
  br i1 %261, label %263, label %269

263:                                              ; preds = %251
  %264 = load i32, ptr %229, align 4, !tbaa !35
  %265 = load i32, ptr %232, align 4, !tbaa !38
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 69218307, i32 noundef %262, i32 noundef %264, i8 noundef zeroext 0, i32 noundef %265, i32 noundef 0, i32 noundef 2) #2
  %266 = load i32, ptr %231, align 4, !tbaa !37
  %267 = load i32, ptr %232, align 4, !tbaa !38
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694499843, i32 noundef %266, i32 noundef %267, i8 noundef zeroext 0, i32 noundef %266, i32 noundef 0, i32 noundef 2) #2
  %268 = load i32, ptr %231, align 4, !tbaa !37
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %0, i32 noundef %268, i32 noundef 0) #2
  br label %272

269:                                              ; preds = %251
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %0, i32 noundef %262, i32 noundef 0) #2
  %270 = load i32, ptr %231, align 4, !tbaa !37
  %271 = load i32, ptr %232, align 4, !tbaa !38
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %270, i32 noundef %270, i8 noundef zeroext 0, i32 noundef %271, i32 noundef 0, i32 noundef 2) #2
  br label %272

272:                                              ; preds = %269, %263
  %273 = load i32, ptr %230, align 4, !tbaa !36
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86010883, i32 noundef %273, i32 noundef %273, i8 noundef zeroext 0, i32 noundef %273, i32 noundef 0, i32 noundef 1) #2
  %274 = load i32, ptr %211, align 4, !tbaa !22
  %275 = load i32, ptr %233, align 4, !tbaa !23
  %276 = load i32, ptr %230, align 4, !tbaa !36
  %277 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %274, i32 noundef %275, i32 noundef %276, i32 noundef %277, i32 noundef %252, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %253, i8 noundef zeroext %46) #2
  %278 = load i16, ptr %68, align 1, !tbaa !20
  %279 = icmp eq i16 %278, 65
  br i1 %279, label %280, label %286

280:                                              ; preds = %272
  %281 = load i32, ptr %232, align 4, !tbaa !38
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86010883, i32 noundef %281, i32 noundef %281, i8 noundef zeroext 0, i32 noundef %281, i32 noundef 0, i32 noundef 1) #2
  %282 = load i32, ptr %215, align 4, !tbaa !32
  %283 = load i32, ptr %233, align 4, !tbaa !23
  %284 = load i32, ptr %232, align 4, !tbaa !38
  %285 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %282, i32 noundef %283, i32 noundef %284, i32 noundef %285, i32 noundef %252, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %253, i8 noundef zeroext %46) #2
  br label %286

286:                                              ; preds = %272, %280
  %.sink660 = phi ptr [ %234, %280 ], [ %215, %272 ]
  %.sink659 = phi ptr [ %231, %280 ], [ %232, %272 ]
  %287 = load i32, ptr %.sink660, align 4, !tbaa !39
  %288 = load i32, ptr %233, align 4, !tbaa !23
  %289 = load i32, ptr %.sink659, align 4, !tbaa !39
  %290 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %287, i32 noundef %288, i32 noundef %289, i32 noundef %290, i32 noundef %252, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %253, i8 noundef zeroext %46) #2
  %291 = add nuw i32 %.2583, 1
  %exitcond628.not = icmp eq i32 %291, %6
  br i1 %exitcond628.not, label %._crit_edge585, label %241, !llvm.loop !40

._crit_edge585:                                   ; preds = %286, %.preheader578
  br i1 %.not531, label %302, label %292

292:                                              ; preds = %._crit_edge585
  %293 = load i32, ptr %211, align 4, !tbaa !22
  %294 = load i32, ptr %235, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %293, i32 noundef %294, i32 noundef %293, i64 noundef %238) #2
  %295 = load i32, ptr %215, align 4, !tbaa !32
  %296 = load i32, ptr %235, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %295, i32 noundef %296, i32 noundef %295, i64 noundef %238) #2
  %297 = load i16, ptr %68, align 1, !tbaa !20
  %298 = icmp eq i16 %297, 65
  br i1 %298, label %299, label %302

299:                                              ; preds = %292
  %300 = load i32, ptr %234, align 4, !tbaa !34
  %301 = load i32, ptr %235, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %300, i32 noundef %301, i32 noundef %300, i64 noundef %238) #2
  br label %302

302:                                              ; preds = %._crit_edge585, %299, %292
  %303 = add nuw i32 %.2504586, 1
  %exitcond629.not = icmp eq i32 %303, %7
  br i1 %exitcond629.not, label %._crit_edge587, label %.preheader578, !llvm.loop !41

._crit_edge587:                                   ; preds = %302, %.._crit_edge587_crit_edge
  %.pre-phi643 = phi i64 [ %.pre642, %.._crit_edge587_crit_edge ], [ %236, %302 ]
  %304 = load i32, ptr %211, align 4, !tbaa !22
  %305 = getelementptr inbounds i8, ptr %1, i64 140
  %306 = load i32, ptr %305, align 4, !tbaa !18
  %307 = zext i32 %7 to i64
  %308 = mul nuw nsw i64 %.pre-phi643, %307
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %304, i32 noundef %306, i32 noundef %304, i64 noundef %308) #2
  br label %409

309:                                              ; preds = %64, %208
  %.not612 = icmp eq i32 %7, 0
  br i1 %.not612, label %.._crit_edge582_crit_edge, label %.preheader579.lr.ph

.._crit_edge582_crit_edge:                        ; preds = %309
  %.pre644 = zext i32 %31 to i64
  br label %._crit_edge582

.preheader579.lr.ph:                              ; preds = %309
  %.not613 = icmp eq i32 %6, 0
  %310 = add i32 %6, -1
  %311 = select i1 %32, i32 %4, i32 %8
  %312 = select i1 %32, i8 2, i8 1
  %.not530 = icmp ne i32 %8, 0
  %313 = getelementptr inbounds i8, ptr %3, i64 29
  %314 = getelementptr inbounds i8, ptr %2, i64 128
  %315 = getelementptr inbounds i8, ptr %1, i64 24
  %316 = getelementptr inbounds i8, ptr %1, i64 144
  %317 = getelementptr inbounds i8, ptr %1, i64 28
  %.not527 = icmp eq i32 %31, %42
  %318 = getelementptr inbounds i8, ptr %1, i64 140
  %319 = zext i32 %31 to i64
  %320 = zext i32 %42 to i64
  %321 = sub nsw i64 %319, %320
  br label %.preheader579

.preheader579:                                    ; preds = %.preheader579.lr.ph, %391
  %.3505581 = phi i32 [ 0, %.preheader579.lr.ph ], [ %392, %391 ]
  br i1 %.not613, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader579
  %322 = mul i32 %.3505581, %6
  %323 = add i32 %322, %5
  br label %324

324:                                              ; preds = %.lr.ph, %378
  %.3580 = phi i32 [ 0, %.lr.ph ], [ %379, %378 ]
  %325 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %326 = icmp eq i32 %325, 1
  br i1 %326, label %.thread565, label %327

327:                                              ; preds = %324
  %328 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %329 = icmp eq i32 %328, 8
  br i1 %329, label %.thread565, label %330

330:                                              ; preds = %327
  %331 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %332 = icmp eq i32 %331, 9
  br i1 %332, label %.thread565, label %333

333:                                              ; preds = %330
  %334 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #2
  %335 = icmp eq i32 %334, 0
  br i1 %335, label %.thread565, label %336

336:                                              ; preds = %333
  %337 = icmp eq i32 %.3580, %310
  %spec.select572 = select i1 %337, i32 %311, i32 %4
  %spec.select576 = select i1 %337, i8 %312, i8 2
  br label %340

.thread565:                                       ; preds = %324, %327, %330, %333
  %338 = icmp eq i32 %.3580, %310
  %339 = select i1 %338, i32 %8, i32 0
  %narrow = and i1 %338, %.not530
  %spec.select611 = zext i1 %narrow to i8
  br label %340

340:                                              ; preds = %.thread565, %336
  %341 = phi i32 [ %spec.select572, %336 ], [ %339, %.thread565 ]
  %342 = phi i8 [ %spec.select576, %336 ], [ %spec.select611, %.thread565 ]
  %343 = add i32 %.3580, %323
  %344 = load i8, ptr %11, align 1, !tbaa !5
  %345 = icmp eq i8 %344, 1
  br i1 %345, label %346, label %351

346:                                              ; preds = %340
  %347 = load i16, ptr %313, align 1, !tbaa !20
  %348 = icmp eq i16 %347, 2
  br i1 %348, label %349, label %351

349:                                              ; preds = %346
  %350 = load i32, ptr %314, align 4, !tbaa !42
  br label %353

351:                                              ; preds = %346, %340
  %spec.select544 = select i1 %25, i32 %323, i32 %343
  %.6 = select i1 %26, i32 %5, i32 %spec.select544
  %352 = add i32 %.3580, %5
  %spec.select551 = select i1 %24, i32 %352, i32 %.6
  br label %353

353:                                              ; preds = %351, %349
  %.7 = phi i32 [ %350, %349 ], [ %spec.select551, %351 ]
  %354 = icmp eq i32 %.7, %343
  br i1 %354, label %355, label %365

355:                                              ; preds = %353
  %356 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %357 = icmp eq i32 %356, 1
  br i1 %357, label %361, label %358

358:                                              ; preds = %355
  %359 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %360 = icmp eq i32 %359, 1
  br i1 %360, label %361, label %365

361:                                              ; preds = %358, %355
  %362 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %363 = icmp eq i32 %362, 2
  br i1 %363, label %364, label %365

364:                                              ; preds = %361
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %0, i32 noundef %343, i32 noundef 0) #2
  br label %365

365:                                              ; preds = %364, %361, %358, %353
  %366 = load i32, ptr %315, align 4, !tbaa !22
  %367 = load i32, ptr %316, align 4, !tbaa !23
  %368 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %366, i32 noundef %367, i32 noundef %.7, i32 noundef %368, i32 noundef %341, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %342, i8 noundef zeroext %46) #2
  %369 = load i8, ptr %11, align 1, !tbaa !5
  %370 = icmp eq i8 %369, 1
  br i1 %370, label %371, label %378

371:                                              ; preds = %365
  %372 = load i16, ptr %313, align 1, !tbaa !20
  %373 = icmp eq i16 %372, 63
  br i1 %373, label %374, label %378

374:                                              ; preds = %371
  %375 = load i32, ptr %317, align 4, !tbaa !43
  %376 = load i32, ptr %316, align 4, !tbaa !23
  %377 = load i32, ptr %29, align 4, !tbaa !13
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %375, i32 noundef %376, i32 noundef %.7, i32 noundef %377, i32 noundef %341, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %342, i8 noundef zeroext %46) #2
  br label %378

378:                                              ; preds = %374, %371, %365
  %379 = add nuw i32 %.3580, 1
  %exitcond.not = icmp eq i32 %379, %6
  br i1 %exitcond.not, label %._crit_edge, label %324, !llvm.loop !44

._crit_edge:                                      ; preds = %378, %.preheader579
  br i1 %.not527, label %391, label %380

380:                                              ; preds = %._crit_edge
  %381 = load i32, ptr %315, align 4, !tbaa !22
  %382 = load i32, ptr %318, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %381, i32 noundef %382, i32 noundef %381, i64 noundef %321) #2
  %383 = load i8, ptr %11, align 1, !tbaa !5
  %384 = icmp eq i8 %383, 1
  br i1 %384, label %385, label %391

385:                                              ; preds = %380
  %386 = load i16, ptr %313, align 1, !tbaa !20
  %387 = icmp eq i16 %386, 63
  br i1 %387, label %388, label %391

388:                                              ; preds = %385
  %389 = load i32, ptr %317, align 4, !tbaa !43
  %390 = load i32, ptr %318, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %389, i32 noundef %390, i32 noundef %389, i64 noundef %321) #2
  br label %391

391:                                              ; preds = %._crit_edge, %388, %385, %380
  %392 = add nuw i32 %.3505581, 1
  %exitcond627.not = icmp eq i32 %392, %7
  br i1 %exitcond627.not, label %._crit_edge582, label %.preheader579, !llvm.loop !45

._crit_edge582:                                   ; preds = %391, %.._crit_edge582_crit_edge
  %.pre-phi645 = phi i64 [ %.pre644, %.._crit_edge582_crit_edge ], [ %319, %391 ]
  %393 = getelementptr inbounds i8, ptr %1, i64 24
  %394 = load i32, ptr %393, align 4, !tbaa !22
  %395 = getelementptr inbounds i8, ptr %1, i64 140
  %396 = load i32, ptr %395, align 4, !tbaa !18
  %397 = zext i32 %7 to i64
  %398 = mul nuw nsw i64 %.pre-phi645, %397
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %394, i32 noundef %396, i32 noundef %394, i64 noundef %398) #2
  %399 = load i8, ptr %11, align 1, !tbaa !5
  %400 = icmp eq i8 %399, 1
  br i1 %400, label %401, label %409

401:                                              ; preds = %._crit_edge582
  %402 = getelementptr inbounds i8, ptr %3, i64 29
  %403 = load i16, ptr %402, align 1, !tbaa !20
  %404 = icmp eq i16 %403, 63
  br i1 %404, label %405, label %409

405:                                              ; preds = %401
  %406 = getelementptr inbounds i8, ptr %1, i64 28
  %407 = load i32, ptr %406, align 4, !tbaa !43
  %408 = load i32, ptr %395, align 4, !tbaa !18
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %407, i32 noundef %408, i32 noundef %407, i64 noundef %398) #2
  br label %409

409:                                              ; preds = %._crit_edge601, %._crit_edge582, %401, %405, %._crit_edge587, %41
  ret void
}

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

declare void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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


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