; LLVM IR from libxsmm/libxsmm :: src (generator_mateltwise_reduce_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_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_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, 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 [91 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel = external hidden unnamed_addr constant [224 x i8], align 1
@__func__.libxsmm_generator_reduce_cols_aarch64_microkernel = external hidden unnamed_addr constant [50 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [271 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_cpuid_vlen32(i32 noundef) #1

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

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

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

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

declare void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #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

declare void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_loop_header_aarch64(ptr noundef, ptr 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_generator_vcvt_bf16f32_aarch64(ptr noundef, i32 noundef, i32 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 void @libxsmm_generator_loop_footer_aarch64(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_reduce_cols_aarch64_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #3 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %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
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i8, align 1
  %49 = alloca i8, align 1
  %50 = alloca i8, align 1
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  %53 = alloca i8, align 1
  %54 = alloca i8, align 1
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store i32 0, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %66 = load ptr, ptr %9, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %66, i32 0, i32 6
  %68 = load i32, ptr %67, align 4, !tbaa !11
  store i32 %68, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %69 = load ptr, ptr %9, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %69, i32 0, i32 9
  %71 = load i32, ptr %70, align 4, !tbaa !13
  store i32 %71, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %72 = load ptr, ptr %9, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %72, i32 0, i32 0
  %74 = load i32, ptr %73, align 4, !tbaa !14
  %75 = call i32 @libxsmm_cpuid_vlen32(i32 noundef %74)
  store i32 %75, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store i32 31, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  store i32 0, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  store i32 30, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  store i32 30, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  store i32 0, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  store i32 0, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  store i32 0, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %76, i32 0, i32 10
  %78 = load i16, ptr %77, align 1, !tbaa !15
  %79 = zext i16 %78 to i32
  %80 = icmp eq i32 %79, 18
  br i1 %80, label %105, label %81

81:                                               ; preds = %5
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %82, i32 0, i32 10
  %84 = load i16, ptr %83, align 1, !tbaa !15
  %85 = zext i16 %84 to i32
  %86 = icmp eq i32 %85, 20
  br i1 %86, label %105, label %87

87:                                               ; preds = %81
  %88 = load ptr, ptr %10, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %88, i32 0, i32 10
  %90 = load i16, ptr %89, align 1, !tbaa !15
  %91 = zext i16 %90 to i32
  %92 = icmp eq i32 %91, 21
  br i1 %92, label %105, label %93

93:                                               ; preds = %87
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %94, i32 0, i32 10
  %96 = load i16, ptr %95, align 1, !tbaa !15
  %97 = zext i16 %96 to i32
  %98 = icmp eq i32 %97, 70
  br i1 %98, label %105, label %99

99:                                               ; preds = %93
  %100 = load ptr, ptr %10, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %100, i32 0, i32 10
  %102 = load i16, ptr %101, align 1, !tbaa !15
  %103 = zext i16 %102 to i32
  %104 = icmp eq i32 %103, 69
  br label %105

105:                                              ; preds = %99, %93, %87, %81, %5
  %106 = phi i1 [ true, %93 ], [ true, %87 ], [ true, %81 ], [ true, %5 ], [ %104, %99 ]
  %107 = zext i1 %106 to i64
  %108 = select i1 %106, i32 1, i32 0
  store i32 %108, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %109, i32 0, i32 10
  %111 = load i16, ptr %110, align 1, !tbaa !15
  %112 = zext i16 %111 to i32
  %113 = icmp eq i32 %112, 19
  br i1 %113, label %120, label %114

114:                                              ; preds = %105
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %115, i32 0, i32 10
  %117 = load i16, ptr %116, align 1, !tbaa !15
  %118 = zext i16 %117 to i32
  %119 = icmp eq i32 %118, 20
  br label %120

120:                                              ; preds = %114, %105
  %121 = phi i1 [ true, %105 ], [ %119, %114 ]
  %122 = zext i1 %121 to i64
  %123 = select i1 %121, i32 1, i32 0
  store i32 %123, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %124, i32 0, i32 10
  %126 = load i16, ptr %125, align 1, !tbaa !15
  %127 = zext i16 %126 to i32
  %128 = icmp eq i32 %127, 18
  br i1 %128, label %141, label %129

129:                                              ; preds = %120
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %130, i32 0, i32 10
  %132 = load i16, ptr %131, align 1, !tbaa !15
  %133 = zext i16 %132 to i32
  %134 = icmp eq i32 %133, 20
  br i1 %134, label %141, label %135

135:                                              ; preds = %129
  %136 = load ptr, ptr %10, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %136, i32 0, i32 10
  %138 = load i16, ptr %137, align 1, !tbaa !15
  %139 = zext i16 %138 to i32
  %140 = icmp eq i32 %139, 19
  br label %141

141:                                              ; preds = %135, %129, %120
  %142 = phi i1 [ true, %129 ], [ true, %120 ], [ %140, %135 ]
  %143 = zext i1 %142 to i64
  %144 = select i1 %142, i32 1, i32 0
  store i32 %144, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %145, i32 0, i32 10
  %147 = load i16, ptr %146, align 1, !tbaa !15
  %148 = zext i16 %147 to i32
  %149 = icmp eq i32 %148, 21
  %150 = zext i1 %149 to i64
  %151 = select i1 %149, i32 1, i32 0
  store i32 %151, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %152, i32 0, i32 10
  %154 = load i16, ptr %153, align 1, !tbaa !15
  %155 = zext i16 %154 to i32
  %156 = icmp eq i32 %155, 70
  %157 = zext i1 %156 to i64
  %158 = select i1 %156, i32 1, i32 0
  store i32 %158, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %159, i32 0, i32 10
  %161 = load i16, ptr %160, align 1, !tbaa !15
  %162 = zext i16 %161 to i32
  %163 = icmp eq i32 %162, 69
  %164 = zext i1 %163 to i64
  %165 = select i1 %163, i32 1, i32 0
  store i32 %165, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %166, i32 0, i32 9
  %168 = load i16, ptr %167, align 1, !tbaa !18
  %169 = zext i16 %168 to i32
  %170 = and i32 %169, 64
  %171 = icmp sgt i32 %170, 0
  %172 = zext i1 %171 to i64
  %173 = select i1 %171, i32 1, i32 0
  store i32 %173, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %174, i32 noundef 4)
  %176 = icmp eq i32 0, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %141
  br label %271

178:                                              ; preds = %141
  %179 = load ptr, ptr %10, align 8, !tbaa !5
  %180 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %179, i32 noundef 4)
  %181 = icmp eq i32 1, %180
  br i1 %181, label %182, label %183

182:                                              ; preds = %178
  br label %269

183:                                              ; preds = %178
  %184 = load ptr, ptr %10, align 8, !tbaa !5
  %185 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %184, i32 noundef 4)
  %186 = icmp eq i32 2, %185
  br i1 %186, label %187, label %188

187:                                              ; preds = %183
  br label %267

188:                                              ; preds = %183
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %189, i32 noundef 4)
  %191 = icmp eq i32 3, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %188
  br label %265

193:                                              ; preds = %188
  %194 = load ptr, ptr %10, align 8, !tbaa !5
  %195 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %194, i32 noundef 4)
  %196 = icmp eq i32 4, %195
  br i1 %196, label %197, label %198

197:                                              ; preds = %193
  br label %263

198:                                              ; preds = %193
  %199 = load ptr, ptr %10, align 8, !tbaa !5
  %200 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %199, i32 noundef 4)
  %201 = icmp eq i32 5, %200
  br i1 %201, label %202, label %203

202:                                              ; preds = %198
  br label %261

203:                                              ; preds = %198
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  %205 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %204, i32 noundef 4)
  %206 = icmp eq i32 6, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %203
  br label %259

208:                                              ; preds = %203
  %209 = load ptr, ptr %10, align 8, !tbaa !5
  %210 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %209, i32 noundef 4)
  %211 = icmp eq i32 7, %210
  br i1 %211, label %212, label %213

212:                                              ; preds = %208
  br label %257

213:                                              ; preds = %208
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %214, i32 noundef 4)
  %216 = icmp eq i32 8, %215
  br i1 %216, label %217, label %218

217:                                              ; preds = %213
  br label %255

218:                                              ; preds = %213
  %219 = load ptr, ptr %10, align 8, !tbaa !5
  %220 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %219, i32 noundef 4)
  %221 = icmp eq i32 9, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %218
  br label %253

223:                                              ; preds = %218
  %224 = load ptr, ptr %10, align 8, !tbaa !5
  %225 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %224, i32 noundef 4)
  %226 = icmp eq i32 10, %225
  br i1 %226, label %227, label %228

227:                                              ; preds = %223
  br label %251

228:                                              ; preds = %223
  %229 = load ptr, ptr %10, align 8, !tbaa !5
  %230 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %229, i32 noundef 4)
  %231 = icmp eq i32 11, %230
  br i1 %231, label %232, label %233

232:                                              ; preds = %228
  br label %249

233:                                              ; preds = %228
  %234 = load ptr, ptr %10, align 8, !tbaa !5
  %235 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %234, i32 noundef 4)
  %236 = icmp eq i32 12, %235
  br i1 %236, label %237, label %238

237:                                              ; preds = %233
  br label %247

238:                                              ; preds = %233
  %239 = load ptr, ptr %10, align 8, !tbaa !5
  %240 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %239, i32 noundef 4)
  %241 = icmp eq i32 13, %240
  br i1 %241, label %242, label %243

242:                                              ; preds = %238
  br label %245

243:                                              ; preds = %238
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str, i32 noundef 251, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel) #5
  unreachable

244:                                              ; No predecessors!
  br label %245

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

247:                                              ; preds = %245, %237
  %248 = phi i32 [ 1, %237 ], [ %246, %245 ]
  br label %249

249:                                              ; preds = %247, %232
  %250 = phi i32 [ 2, %232 ], [ %248, %247 ]
  br label %251

251:                                              ; preds = %249, %227
  %252 = phi i32 [ 2, %227 ], [ %250, %249 ]
  br label %253

253:                                              ; preds = %251, %222
  %254 = phi i32 [ 4, %222 ], [ %252, %251 ]
  br label %255

255:                                              ; preds = %253, %217
  %256 = phi i32 [ 4, %217 ], [ %254, %253 ]
  br label %257

257:                                              ; preds = %255, %212
  %258 = phi i32 [ 8, %212 ], [ %256, %255 ]
  br label %259

259:                                              ; preds = %257, %207
  %260 = phi i32 [ 8, %207 ], [ %258, %257 ]
  br label %261

261:                                              ; preds = %259, %202
  %262 = phi i32 [ 1, %202 ], [ %260, %259 ]
  br label %263

263:                                              ; preds = %261, %197
  %264 = phi i32 [ 1, %197 ], [ %262, %261 ]
  br label %265

265:                                              ; preds = %263, %192
  %266 = phi i32 [ 2, %192 ], [ %264, %263 ]
  br label %267

267:                                              ; preds = %265, %187
  %268 = phi i32 [ 2, %187 ], [ %266, %265 ]
  br label %269

269:                                              ; preds = %267, %182
  %270 = phi i32 [ 4, %182 ], [ %268, %267 ]
  br label %271

271:                                              ; preds = %269, %177
  %272 = phi i32 [ 8, %177 ], [ %270, %269 ]
  %273 = trunc i32 %272 to i8
  %274 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %273)
  store i32 %274, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  %275 = load ptr, ptr %9, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %275, i32 0, i32 2
  %277 = load i32, ptr %276, align 4, !tbaa !19
  %278 = icmp eq i32 %277, 4
  %279 = zext i1 %278 to i64
  %280 = select i1 %278, i32 5, i32 7
  store i32 %280, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #4
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %281, i32 0, i32 6
  %283 = load i32, ptr %282, align 4, !tbaa !20
  %284 = icmp uge i32 %283, 2201
  br i1 %284, label %285, label %290

285:                                              ; preds = %271
  %286 = load ptr, ptr %6, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %286, i32 0, i32 6
  %288 = load i32, ptr %287, align 4, !tbaa !20
  %289 = icmp ule i32 %288, 2999
  br label %290

290:                                              ; preds = %285, %271
  %291 = phi i1 [ false, %271 ], [ %289, %285 ]
  %292 = zext i1 %291 to i32
  %293 = trunc i32 %292 to i8
  store i8 %293, ptr %48, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #4
  %294 = load ptr, ptr %6, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %294, i32 0, i32 6
  %296 = load i32, ptr %295, align 4, !tbaa !20
  %297 = icmp uge i32 %296, 2501
  br i1 %297, label %298, label %303

298:                                              ; preds = %290
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %299, i32 0, i32 6
  %301 = load i32, ptr %300, align 4, !tbaa !20
  %302 = icmp ule i32 %301, 2999
  br label %303

303:                                              ; preds = %298, %290
  %304 = phi i1 [ false, %290 ], [ %302, %298 ]
  %305 = zext i1 %304 to i32
  %306 = trunc i32 %305 to i8
  store i8 %306, ptr %49, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #4
  store i8 0, ptr %50, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #4
  store i8 1, ptr %51, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #4
  store i8 3, ptr %52, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #4
  store i8 2, ptr %53, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #4
  store i8 0, ptr %54, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  store i32 0, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  %307 = load ptr, ptr %10, align 8, !tbaa !5
  %308 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %307, i32 noundef 0)
  %309 = icmp eq i32 2, %308
  %310 = zext i1 %309 to i64
  %311 = select i1 %309, i32 1, i32 0
  store i32 %311, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  %312 = load ptr, ptr %10, align 8, !tbaa !5
  %313 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %312, i32 noundef 3)
  %314 = icmp eq i32 2, %313
  %315 = zext i1 %314 to i64
  %316 = select i1 %314, i32 1, i32 0
  store i32 %316, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #4
  store i32 32, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  store i32 80, ptr %59, align 4, !tbaa !9
  %317 = load ptr, ptr %10, align 8, !tbaa !5
  %318 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %317, i32 noundef 3)
  %319 = icmp eq i32 0, %318
  br i1 %319, label %320, label %323

320:                                              ; preds = %303
  %321 = load i32, ptr %27, align 4, !tbaa !9
  %322 = udiv i32 %321, 2
  store i32 %322, ptr %27, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %320, %303
  %324 = load i32, ptr %25, align 4, !tbaa !9
  %325 = load i32, ptr %26, align 4, !tbaa !9
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %326, i32 0, i32 0
  %328 = load i32, ptr %327, align 1, !tbaa !23
  %329 = load ptr, ptr %10, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %329, i32 0, i32 2
  %331 = load i32, ptr %330, align 1, !tbaa !24
  %332 = icmp ugt i32 %328, %331
  br i1 %332, label %333, label %342

333:                                              ; preds = %323
  %334 = load ptr, ptr %6, align 8, !tbaa !5
  %335 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %336 = icmp ult i32 1, %335
  br i1 %336, label %337, label %339

337:                                              ; preds = %333
  %338 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %340

339:                                              ; preds = %333
  br label %340

340:                                              ; preds = %339, %337
  %341 = phi i32 [ %338, %337 ], [ 1, %339 ]
  call void @libxsmm_handle_error(ptr noundef %334, i32 noundef 90007, ptr noundef @__func__.libxsmm_generator_reduce_cols_aarch64_microkernel, ptr noundef @.str, i32 noundef 274, i32 noundef %341)
  store i32 1, ptr %60, align 4
  br label %2984

342:                                              ; preds = %323
  %343 = load i32, ptr %39, align 4, !tbaa !9
  %344 = icmp ugt i32 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %342
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %347

346:                                              ; preds = %342
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %347

347:                                              ; preds = %346, %345
  %348 = load i32, ptr %40, align 4, !tbaa !9
  %349 = icmp ugt i32 %348, 0
  br i1 %349, label %350, label %351

350:                                              ; preds = %347
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %352

351:                                              ; preds = %347
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %351, %350
  %353 = load i32, ptr %41, align 4, !tbaa !9
  %354 = icmp ugt i32 %353, 0
  br i1 %354, label %355, label %361

355:                                              ; preds = %352
  %356 = load i8, ptr %48, align 1, !tbaa !22
  %357 = zext i8 %356 to i32
  %358 = icmp ne i32 %357, 0
  %359 = zext i1 %358 to i64
  %360 = select i1 %358, i32 1694498819, i32 237032459
  store i32 %360, ptr %23, align 4, !tbaa !9
  br label %406

361:                                              ; preds = %352
  %362 = load i32, ptr %42, align 4, !tbaa !9
  %363 = icmp ugt i32 %362, 0
  br i1 %363, label %364, label %370

364:                                              ; preds = %361
  %365 = load i8, ptr %48, align 1, !tbaa !22
  %366 = zext i8 %365 to i32
  %367 = icmp ne i32 %366, 0
  %368 = zext i1 %367 to i64
  %369 = select i1 %367, i32 1694924962, i32 237040651
  store i32 %369, ptr %23, align 4, !tbaa !9
  br label %405

370:                                              ; preds = %361
  %371 = load i32, ptr %44, align 4, !tbaa !9
  %372 = icmp ugt i32 %371, 0
  br i1 %372, label %373, label %379

373:                                              ; preds = %370
  %374 = load i8, ptr %48, align 1, !tbaa !22
  %375 = zext i8 %374 to i32
  %376 = icmp ne i32 %375, 0
  %377 = zext i1 %376 to i64
  %378 = select i1 %376, i32 1694990498, i32 245429259
  store i32 %378, ptr %23, align 4, !tbaa !9
  br label %404

379:                                              ; preds = %370
  %380 = load i32, ptr %43, align 4, !tbaa !9
  %381 = icmp ugt i32 %380, 0
  br i1 %381, label %382, label %393

382:                                              ; preds = %379
  %383 = load i8, ptr %48, align 1, !tbaa !22
  %384 = zext i8 %383 to i32
  %385 = icmp ne i32 %384, 0
  %386 = zext i1 %385 to i64
  %387 = select i1 %385, i32 1694924962, i32 237040651
  store i32 %387, ptr %23, align 4, !tbaa !9
  %388 = load i8, ptr %48, align 1, !tbaa !22
  %389 = zext i8 %388 to i32
  %390 = icmp ne i32 %389, 0
  %391 = zext i1 %390 to i64
  %392 = select i1 %390, i32 69218307, i32 236985363
  store i32 %392, ptr %24, align 4, !tbaa !9
  br label %403

393:                                              ; preds = %379
  %394 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  %395 = load ptr, ptr %6, align 8, !tbaa !5
  %396 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %397 = icmp ult i32 1, %396
  br i1 %397, label %398, label %400

398:                                              ; preds = %393
  %399 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %401

400:                                              ; preds = %393
  br label %401

401:                                              ; preds = %400, %398
  %402 = phi i32 [ %399, %398 ], [ 1, %400 ]
  call void @libxsmm_handle_error(ptr noundef %395, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_reduce_cols_aarch64_microkernel, ptr noundef @.str, i32 noundef 302, i32 noundef %402)
  store i32 1, ptr %60, align 4
  br label %2984

403:                                              ; preds = %382
  br label %404

404:                                              ; preds = %403, %373
  br label %405

405:                                              ; preds = %404, %364
  br label %406

406:                                              ; preds = %405, %355
  %407 = load i32, ptr %19, align 4, !tbaa !9
  %408 = icmp ugt i32 %407, 0
  br i1 %408, label %409, label %422

409:                                              ; preds = %406
  %410 = load i32, ptr %41, align 4, !tbaa !9
  %411 = icmp eq i32 %410, 0
  br i1 %411, label %412, label %422

412:                                              ; preds = %409
  %413 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  %414 = load ptr, ptr %6, align 8, !tbaa !5
  %415 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %416 = icmp ult i32 1, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %412
  %418 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %420

419:                                              ; preds = %412
  br label %420

420:                                              ; preds = %419, %417
  %421 = phi i32 [ %418, %417 ], [ 1, %419 ]
  call void @libxsmm_handle_error(ptr noundef %414, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_reduce_cols_aarch64_microkernel, ptr noundef @.str, i32 noundef 309, i32 noundef %421)
  store i32 1, ptr %60, align 4
  br label %2984

422:                                              ; preds = %409, %406
  %423 = load ptr, ptr %8, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %423, i32 0, i32 1
  store i32 41, ptr %424, align 4, !tbaa !25
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %425, i32 0, i32 16
  store i32 42, ptr %426, align 4, !tbaa !27
  %427 = load ptr, ptr %8, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %427, i32 0, i32 17
  store i32 43, ptr %428, align 4, !tbaa !28
  %429 = load ptr, ptr %8, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %429, i32 0, i32 24
  store i32 44, ptr %430, align 4, !tbaa !29
  %431 = load ptr, ptr %8, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %431, i32 0, i32 25
  store i32 45, ptr %432, align 4, !tbaa !30
  %433 = load ptr, ptr %8, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %433, i32 0, i32 35
  store i32 46, ptr %434, align 4, !tbaa !31
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  %436 = load ptr, ptr %8, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %436, i32 0, i32 0
  %438 = load i32, ptr %437, align 4, !tbaa !32
  %439 = load i32, ptr %58, align 4, !tbaa !9
  %440 = load ptr, ptr %8, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %440, i32 0, i32 1
  %442 = load i32, ptr %441, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %435, i32 noundef -1186988026, i32 noundef %438, i32 noundef 127, i32 noundef %439, i32 noundef %442)
  %443 = load i32, ptr %20, align 4, !tbaa !9
  %444 = icmp ugt i32 %443, 0
  br i1 %444, label %445, label %477

445:                                              ; preds = %422
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = load ptr, ptr %8, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %447, i32 0, i32 0
  %449 = load i32, ptr %448, align 4, !tbaa !32
  %450 = load i32, ptr %59, align 4, !tbaa !9
  %451 = load ptr, ptr %8, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %451, i32 0, i32 16
  %453 = load i32, ptr %452, align 4, !tbaa !27
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %446, i32 noundef -1186988026, i32 noundef %449, i32 noundef 127, i32 noundef %450, i32 noundef %453)
  %454 = load i32, ptr %19, align 4, !tbaa !9
  %455 = icmp ugt i32 %454, 0
  br i1 %455, label %456, label %476

456:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #4
  %457 = load ptr, ptr %10, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %457, i32 0, i32 3
  %459 = load i32, ptr %458, align 1, !tbaa !33
  %460 = load ptr, ptr %9, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %460, i32 0, i32 5
  %462 = load i32, ptr %461, align 4, !tbaa !34
  %463 = mul i32 %459, %462
  store i32 %463, ptr %61, align 4, !tbaa !9
  %464 = load ptr, ptr %6, align 8, !tbaa !5
  %465 = load ptr, ptr %8, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %465, i32 0, i32 16
  %467 = load i32, ptr %466, align 4, !tbaa !27
  %468 = load ptr, ptr %8, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %468, i32 0, i32 35
  %470 = load i32, ptr %469, align 4, !tbaa !31
  %471 = load ptr, ptr %8, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %471, i32 0, i32 17
  %473 = load i32, ptr %472, align 4, !tbaa !28
  %474 = load i32, ptr %61, align 4, !tbaa !9
  %475 = zext i32 %474 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %464, i32 noundef 4096, i32 noundef %467, i32 noundef %470, i32 noundef %473, i64 noundef %475)
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  br label %476

476:                                              ; preds = %456, %445
  br label %486

477:                                              ; preds = %422
  %478 = load ptr, ptr %6, align 8, !tbaa !5
  %479 = load ptr, ptr %8, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %479, i32 0, i32 0
  %481 = load i32, ptr %480, align 4, !tbaa !32
  %482 = load i32, ptr %59, align 4, !tbaa !9
  %483 = load ptr, ptr %8, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %483, i32 0, i32 17
  %485 = load i32, ptr %484, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %478, i32 noundef -1186988026, i32 noundef %481, i32 noundef 127, i32 noundef %482, i32 noundef %485)
  br label %486

486:                                              ; preds = %477, %476
  %487 = load ptr, ptr %10, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %487, i32 0, i32 0
  %489 = load i32, ptr %488, align 1, !tbaa !23
  store i32 %489, ptr %13, align 4, !tbaa !9
  %490 = load ptr, ptr %10, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %490, i32 0, i32 1
  %492 = load i32, ptr %491, align 1, !tbaa !35
  store i32 %492, ptr %14, align 4, !tbaa !9
  %493 = load i32, ptr %27, align 4, !tbaa !9
  %494 = icmp ne i32 0, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %486
  br label %497

496:                                              ; preds = %486
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 341, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel) #5
  unreachable

497:                                              ; preds = %495
  %498 = load i32, ptr %13, align 4, !tbaa !9
  %499 = load i32, ptr %27, align 4, !tbaa !9
  %500 = urem i32 %498, %499
  %501 = icmp eq i32 %500, 0
  %502 = zext i1 %501 to i64
  %503 = select i1 %501, i32 0, i32 1
  store i32 %503, ptr %16, align 4, !tbaa !9
  %504 = load i8, ptr %49, align 1, !tbaa !22
  %505 = icmp ne i8 %504, 0
  br i1 %505, label %506, label %508

506:                                              ; preds = %497
  %507 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_sm(ptr noundef %507, i32 noundef -721205377)
  br label %508

508:                                              ; preds = %506, %497
  %509 = load i8, ptr %48, align 1, !tbaa !22
  %510 = icmp ne i8 %509, 0
  br i1 %510, label %511, label %513

511:                                              ; preds = %508
  %512 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %512, i32 noundef 0, i32 noundef -1, i32 noundef 0)
  br label %513

513:                                              ; preds = %511, %508
  %514 = load i32, ptr %16, align 4, !tbaa !9
  %515 = icmp eq i32 %514, 1
  br i1 %515, label %516, label %546

516:                                              ; preds = %513
  %517 = load i32, ptr %13, align 4, !tbaa !9
  %518 = load i32, ptr %27, align 4, !tbaa !9
  %519 = urem i32 %517, %518
  store i32 %519, ptr %17, align 4, !tbaa !9
  %520 = load i8, ptr %48, align 1, !tbaa !22
  %521 = icmp ne i8 %520, 0
  br i1 %521, label %522, label %545

522:                                              ; preds = %516
  %523 = load ptr, ptr %6, align 8, !tbaa !5
  %524 = load i8, ptr %51, align 1, !tbaa !22
  %525 = zext i8 %524 to i32
  %526 = load ptr, ptr %9, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %526, i32 0, i32 2
  %528 = load i32, ptr %527, align 4, !tbaa !19
  %529 = load i32, ptr %17, align 4, !tbaa !9
  %530 = mul i32 %528, %529
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %531, i32 0, i32 35
  %533 = load i32, ptr %532, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %523, i32 noundef %525, i32 noundef %530, i32 noundef %533)
  %534 = load ptr, ptr %6, align 8, !tbaa !5
  %535 = load i8, ptr %52, align 1, !tbaa !22
  %536 = zext i8 %535 to i32
  %537 = load ptr, ptr %9, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %537, i32 0, i32 5
  %539 = load i32, ptr %538, align 4, !tbaa !34
  %540 = load i32, ptr %17, align 4, !tbaa !9
  %541 = mul i32 %539, %540
  %542 = load ptr, ptr %8, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %542, i32 0, i32 35
  %544 = load i32, ptr %543, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %534, i32 noundef %536, i32 noundef %541, i32 noundef %544)
  br label %545

545:                                              ; preds = %522, %516
  br label %546

546:                                              ; preds = %545, %513
  %547 = load i32, ptr %43, align 4, !tbaa !9
  %548 = icmp ugt i32 %547, 0
  br i1 %548, label %549, label %643

549:                                              ; preds = %546
  %550 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %550, ptr %29, align 4, !tbaa !9
  %551 = load i32, ptr %30, align 4, !tbaa !9
  %552 = add i32 %551, -1
  store i32 %552, ptr %30, align 4, !tbaa !9
  %553 = load i8, ptr %48, align 1, !tbaa !22
  %554 = icmp ne i8 %553, 0
  br i1 %554, label %555, label %599

555:                                              ; preds = %549
  %556 = load ptr, ptr %6, align 8, !tbaa !5
  %557 = load i32, ptr %29, align 4, !tbaa !9
  %558 = trunc i32 %557 to i8
  %559 = zext i8 %558 to i32
  %560 = icmp eq i32 0, %559
  br i1 %560, label %566, label %561

561:                                              ; preds = %555
  %562 = load i32, ptr %29, align 4, !tbaa !9
  %563 = trunc i32 %562 to i8
  %564 = zext i8 %563 to i32
  %565 = icmp slt i32 0, %564
  br i1 %565, label %566, label %584

566:                                              ; preds = %561, %555
  %567 = load i32, ptr %29, align 4, !tbaa !9
  %568 = zext i32 %567 to i64
  %569 = mul i64 1, %568
  %570 = icmp ult i64 %569, 255
  br i1 %570, label %571, label %575

571:                                              ; preds = %566
  %572 = load i32, ptr %29, align 4, !tbaa !9
  %573 = zext i32 %572 to i64
  %574 = mul i64 1, %573
  br label %576

575:                                              ; preds = %566
  br label %576

576:                                              ; preds = %575, %571
  %577 = phi i64 [ %574, %571 ], [ 255, %575 ]
  %578 = icmp ule i64 %577, 255
  br i1 %578, label %579, label %584

579:                                              ; preds = %576
  %580 = load i32, ptr %29, align 4, !tbaa !9
  %581 = uitofp i32 %580 to double
  %582 = fcmp ole double 0.000000e+00, %581
  br i1 %582, label %583, label %584

583:                                              ; preds = %579
  br label %585

584:                                              ; preds = %579, %576, %561
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 370, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel) #5
  unreachable

585:                                              ; preds = %583
  %586 = load i32, ptr %29, align 4, !tbaa !9
  %587 = trunc i32 %586 to i8
  %588 = load ptr, ptr %8, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %588, i32 0, i32 35
  %590 = load i32, ptr %589, align 4, !tbaa !31
  %591 = load i32, ptr %46, align 4, !tbaa !9
  %592 = load i8, ptr %50, align 1, !tbaa !22
  %593 = load ptr, ptr %9, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %593, i32 0, i32 2
  %595 = load i32, ptr %594, align 4, !tbaa !19
  %596 = icmp eq i32 %595, 8
  %597 = zext i1 %596 to i64
  %598 = select i1 %596, i64 9223372036854775807, i64 2147483647
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_sve(ptr noundef %556, i8 noundef zeroext %587, i32 noundef %590, i32 noundef %591, i8 noundef zeroext %592, i64 noundef %598)
  br label %642

599:                                              ; preds = %549
  %600 = load ptr, ptr %6, align 8, !tbaa !5
  %601 = load i32, ptr %29, align 4, !tbaa !9
  %602 = trunc i32 %601 to i8
  %603 = zext i8 %602 to i32
  %604 = icmp eq i32 0, %603
  br i1 %604, label %610, label %605

605:                                              ; preds = %599
  %606 = load i32, ptr %29, align 4, !tbaa !9
  %607 = trunc i32 %606 to i8
  %608 = zext i8 %607 to i32
  %609 = icmp slt i32 0, %608
  br i1 %609, label %610, label %628

610:                                              ; preds = %605, %599
  %611 = load i32, ptr %29, align 4, !tbaa !9
  %612 = zext i32 %611 to i64
  %613 = mul i64 1, %612
  %614 = icmp ult i64 %613, 255
  br i1 %614, label %615, label %619

615:                                              ; preds = %610
  %616 = load i32, ptr %29, align 4, !tbaa !9
  %617 = zext i32 %616 to i64
  %618 = mul i64 1, %617
  br label %620

619:                                              ; preds = %610
  br label %620

620:                                              ; preds = %619, %615
  %621 = phi i64 [ %618, %615 ], [ 255, %619 ]
  %622 = icmp ule i64 %621, 255
  br i1 %622, label %623, label %628

623:                                              ; preds = %620
  %624 = load i32, ptr %29, align 4, !tbaa !9
  %625 = uitofp i32 %624 to double
  %626 = fcmp ole double 0.000000e+00, %625
  br i1 %626, label %627, label %628

627:                                              ; preds = %623
  br label %629

628:                                              ; preds = %623, %620, %605
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str, i32 noundef 373, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel) #5
  unreachable

629:                                              ; preds = %627
  %630 = load i32, ptr %29, align 4, !tbaa !9
  %631 = trunc i32 %630 to i8
  %632 = load ptr, ptr %8, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %632, i32 0, i32 35
  %634 = load i32, ptr %633, align 4, !tbaa !31
  %635 = load i32, ptr %47, align 4, !tbaa !9
  %636 = load ptr, ptr %9, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %636, i32 0, i32 2
  %638 = load i32, ptr %637, align 4, !tbaa !19
  %639 = icmp eq i32 %638, 8
  %640 = zext i1 %639 to i64
  %641 = select i1 %639, i64 9223372036854775807, i64 2147483647
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %600, i8 noundef zeroext %631, i32 noundef %634, i32 noundef %635, i64 noundef %641)
  br label %642

642:                                              ; preds = %629, %585
  br label %643

643:                                              ; preds = %642, %546
  %644 = load i8, ptr %48, align 1, !tbaa !22
  %645 = zext i8 %644 to i32
  %646 = icmp sgt i32 %645, 0
  br i1 %646, label %647, label %676

647:                                              ; preds = %643
  %648 = load i32, ptr %56, align 4, !tbaa !9
  %649 = icmp ugt i32 %648, 0
  br i1 %649, label %653, label %650

650:                                              ; preds = %647
  %651 = load i32, ptr %57, align 4, !tbaa !9
  %652 = icmp ugt i32 %651, 0
  br i1 %652, label %653, label %676

653:                                              ; preds = %650, %647
  %654 = load ptr, ptr %6, align 8, !tbaa !5
  %655 = load i8, ptr %53, align 1, !tbaa !22
  %656 = zext i8 %655 to i32
  %657 = load i32, ptr %56, align 4, !tbaa !9
  %658 = icmp ugt i32 %657, 0
  br i1 %658, label %659, label %665

659:                                              ; preds = %653
  %660 = load ptr, ptr %9, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %660, i32 0, i32 2
  %662 = load i32, ptr %661, align 4, !tbaa !19
  %663 = load i32, ptr %27, align 4, !tbaa !9
  %664 = mul i32 %662, %663
  br label %671

665:                                              ; preds = %653
  %666 = load ptr, ptr %9, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %666, i32 0, i32 5
  %668 = load i32, ptr %667, align 4, !tbaa !34
  %669 = load i32, ptr %27, align 4, !tbaa !9
  %670 = mul i32 %668, %669
  br label %671

671:                                              ; preds = %665, %659
  %672 = phi i32 [ %664, %659 ], [ %670, %665 ]
  %673 = load ptr, ptr %8, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %673, i32 0, i32 35
  %675 = load i32, ptr %674, align 4, !tbaa !31
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %654, i32 noundef %656, i32 noundef %672, i32 noundef %675)
  br label %676

676:                                              ; preds = %671, %650, %643
  %677 = load i32, ptr %13, align 4, !tbaa !9
  %678 = load i32, ptr %27, align 4, !tbaa !9
  %679 = add i32 %677, %678
  %680 = sub i32 %679, 1
  %681 = load i32, ptr %27, align 4, !tbaa !9
  %682 = udiv i32 %680, %681
  store i32 %682, ptr %15, align 4, !tbaa !9
  %683 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %683, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  %684 = load i32, ptr %20, align 4, !tbaa !9
  %685 = icmp ugt i32 %684, 0
  br i1 %685, label %686, label %693

686:                                              ; preds = %676
  %687 = load i32, ptr %19, align 4, !tbaa !9
  %688 = icmp ugt i32 %687, 0
  br i1 %688, label %689, label %693

689:                                              ; preds = %686
  %690 = load i32, ptr %30, align 4, !tbaa !9
  %691 = udiv i32 %690, 2
  store i32 %691, ptr %30, align 4, !tbaa !9
  %692 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %692, ptr %22, align 4, !tbaa !9
  br label %693

693:                                              ; preds = %689, %686, %676
  %694 = load i32, ptr %31, align 4, !tbaa !9
  %695 = load i32, ptr %30, align 4, !tbaa !9
  %696 = icmp ugt i32 %694, %695
  br i1 %696, label %697, label %721

697:                                              ; preds = %693
  %698 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %698, ptr %31, align 4, !tbaa !9
  %699 = load i32, ptr %15, align 4, !tbaa !9
  %700 = load i32, ptr %31, align 4, !tbaa !9
  %701 = udiv i32 %699, %700
  store i32 %701, ptr %33, align 4, !tbaa !9
  %702 = load i32, ptr %15, align 4, !tbaa !9
  %703 = load i32, ptr %31, align 4, !tbaa !9
  %704 = load i32, ptr %33, align 4, !tbaa !9
  %705 = mul i32 %703, %704
  %706 = sub i32 %702, %705
  store i32 %706, ptr %32, align 4, !tbaa !9
  %707 = load i32, ptr %16, align 4, !tbaa !9
  %708 = icmp ugt i32 %707, 0
  br i1 %708, label %709, label %720

709:                                              ; preds = %697
  %710 = load i32, ptr %32, align 4, !tbaa !9
  %711 = icmp eq i32 %710, 0
  br i1 %711, label %712, label %720

712:                                              ; preds = %709
  %713 = load i32, ptr %33, align 4, !tbaa !9
  %714 = add i32 %713, -1
  store i32 %714, ptr %33, align 4, !tbaa !9
  %715 = load i32, ptr %15, align 4, !tbaa !9
  %716 = load i32, ptr %31, align 4, !tbaa !9
  %717 = load i32, ptr %33, align 4, !tbaa !9
  %718 = mul i32 %716, %717
  %719 = sub i32 %715, %718
  store i32 %719, ptr %32, align 4, !tbaa !9
  br label %720

720:                                              ; preds = %712, %709, %697
  br label %736

721:                                              ; preds = %693
  %722 = load i32, ptr %16, align 4, !tbaa !9
  %723 = icmp ugt i32 %722, 0
  br i1 %723, label %724, label %735

724:                                              ; preds = %721
  %725 = load i32, ptr %32, align 4, !tbaa !9
  %726 = icmp eq i32 %725, 0
  br i1 %726, label %727, label %735

727:                                              ; preds = %724
  %728 = load i32, ptr %33, align 4, !tbaa !9
  %729 = add i32 %728, -1
  store i32 %729, ptr %33, align 4, !tbaa !9
  %730 = load i32, ptr %15, align 4, !tbaa !9
  %731 = load i32, ptr %31, align 4, !tbaa !9
  %732 = load i32, ptr %33, align 4, !tbaa !9
  %733 = mul i32 %731, %732
  %734 = sub i32 %730, %733
  store i32 %734, ptr %32, align 4, !tbaa !9
  br label %735

735:                                              ; preds = %727, %724, %721
  br label %736

736:                                              ; preds = %735, %720
  %737 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %737, ptr %34, align 4, !tbaa !9
  %738 = load i32, ptr %30, align 4, !tbaa !9
  %739 = load i32, ptr %34, align 4, !tbaa !9
  %740 = udiv i32 %738, %739
  %741 = icmp ugt i32 %740, 1
  br i1 %741, label %742, label %746

742:                                              ; preds = %736
  %743 = load i32, ptr %30, align 4, !tbaa !9
  %744 = load i32, ptr %34, align 4, !tbaa !9
  %745 = udiv i32 %743, %744
  store i32 %745, ptr %35, align 4, !tbaa !9
  br label %747

746:                                              ; preds = %736
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %747

747:                                              ; preds = %746, %742
  %748 = load i32, ptr %14, align 4, !tbaa !9
  %749 = load i32, ptr %35, align 4, !tbaa !9
  %750 = add i32 %748, %749
  %751 = sub i32 %750, 1
  %752 = load i32, ptr %35, align 4, !tbaa !9
  %753 = udiv i32 %751, %752
  store i32 %753, ptr %36, align 4, !tbaa !9
  %754 = load i32, ptr %14, align 4, !tbaa !9
  %755 = load i32, ptr %35, align 4, !tbaa !9
  %756 = urem i32 %754, %755
  store i32 %756, ptr %37, align 4, !tbaa !9
  store i32 0, ptr %38, align 4, !tbaa !9
  %757 = load i32, ptr %37, align 4, !tbaa !9
  %758 = icmp ugt i32 %757, 0
  br i1 %758, label %759, label %767

759:                                              ; preds = %747
  %760 = load i32, ptr %36, align 4, !tbaa !9
  %761 = add i32 %760, -1
  store i32 %761, ptr %36, align 4, !tbaa !9
  %762 = load i32, ptr %14, align 4, !tbaa !9
  %763 = load i32, ptr %36, align 4, !tbaa !9
  %764 = load i32, ptr %35, align 4, !tbaa !9
  %765 = mul i32 %763, %764
  %766 = sub i32 %762, %765
  store i32 %766, ptr %38, align 4, !tbaa !9
  br label %767

767:                                              ; preds = %759, %747
  %768 = load i32, ptr %33, align 4, !tbaa !9
  %769 = icmp uge i32 %768, 1
  br i1 %769, label %770, label %1757

770:                                              ; preds = %767
  %771 = load i32, ptr %33, align 4, !tbaa !9
  %772 = icmp ugt i32 %771, 1
  br i1 %772, label %773, label %780

773:                                              ; preds = %770
  %774 = load ptr, ptr %6, align 8, !tbaa !5
  %775 = load ptr, ptr %7, align 8, !tbaa !5
  %776 = load ptr, ptr %8, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %776, i32 0, i32 24
  %778 = load i32, ptr %777, align 4, !tbaa !29
  %779 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %774, ptr noundef %775, i32 noundef %778, i32 noundef %779)
  br label %780

780:                                              ; preds = %773, %770
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %781

781:                                              ; preds = %995, %780
  %782 = load i32, ptr %11, align 4, !tbaa !9
  %783 = load i32, ptr %35, align 4, !tbaa !9
  %784 = icmp ult i32 %782, %783
  br i1 %784, label %785, label %998

785:                                              ; preds = %781
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %786

786:                                              ; preds = %964, %785
  %787 = load i32, ptr %12, align 4, !tbaa !9
  %788 = load i32, ptr %31, align 4, !tbaa !9
  %789 = icmp ult i32 %787, %788
  br i1 %789, label %790, label %967

790:                                              ; preds = %786
  %791 = load i32, ptr %20, align 4, !tbaa !9
  %792 = icmp ugt i32 %791, 0
  br i1 %792, label %793, label %909

793:                                              ; preds = %790
  %794 = load i32, ptr %41, align 4, !tbaa !9
  %795 = icmp ugt i32 %794, 0
  br i1 %795, label %799, label %796

796:                                              ; preds = %793
  %797 = load i32, ptr %43, align 4, !tbaa !9
  %798 = icmp ugt i32 %797, 0
  br i1 %798, label %799, label %850

799:                                              ; preds = %796, %793
  %800 = load i8, ptr %48, align 1, !tbaa !22
  %801 = icmp ne i8 %800, 0
  br i1 %801, label %802, label %826

802:                                              ; preds = %799
  %803 = load ptr, ptr %6, align 8, !tbaa !5
  %804 = load i32, ptr %21, align 4, !tbaa !9
  %805 = load i32, ptr %12, align 4, !tbaa !9
  %806 = add i32 %804, %805
  %807 = load i32, ptr %11, align 4, !tbaa !9
  %808 = load i32, ptr %31, align 4, !tbaa !9
  %809 = mul i32 %807, %808
  %810 = add i32 %806, %809
  %811 = load i32, ptr %21, align 4, !tbaa !9
  %812 = load i32, ptr %12, align 4, !tbaa !9
  %813 = add i32 %811, %812
  %814 = load i32, ptr %11, align 4, !tbaa !9
  %815 = load i32, ptr %31, align 4, !tbaa !9
  %816 = mul i32 %814, %815
  %817 = add i32 %813, %816
  %818 = load i32, ptr %21, align 4, !tbaa !9
  %819 = load i32, ptr %12, align 4, !tbaa !9
  %820 = add i32 %818, %819
  %821 = load i32, ptr %11, align 4, !tbaa !9
  %822 = load i32, ptr %31, align 4, !tbaa !9
  %823 = mul i32 %821, %822
  %824 = add i32 %820, %823
  %825 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %803, i32 noundef 77606915, i32 noundef %810, i32 noundef %817, i8 noundef zeroext 0, i32 noundef %824, i32 noundef 0, i32 noundef %825)
  br label %849

826:                                              ; preds = %799
  %827 = load ptr, ptr %6, align 8, !tbaa !5
  %828 = load i32, ptr %21, align 4, !tbaa !9
  %829 = load i32, ptr %12, align 4, !tbaa !9
  %830 = add i32 %828, %829
  %831 = load i32, ptr %11, align 4, !tbaa !9
  %832 = load i32, ptr %31, align 4, !tbaa !9
  %833 = mul i32 %831, %832
  %834 = add i32 %830, %833
  %835 = load i32, ptr %21, align 4, !tbaa !9
  %836 = load i32, ptr %12, align 4, !tbaa !9
  %837 = add i32 %835, %836
  %838 = load i32, ptr %11, align 4, !tbaa !9
  %839 = load i32, ptr %31, align 4, !tbaa !9
  %840 = mul i32 %838, %839
  %841 = add i32 %837, %840
  %842 = load i32, ptr %21, align 4, !tbaa !9
  %843 = load i32, ptr %12, align 4, !tbaa !9
  %844 = add i32 %842, %843
  %845 = load i32, ptr %11, align 4, !tbaa !9
  %846 = load i32, ptr %31, align 4, !tbaa !9
  %847 = mul i32 %845, %846
  %848 = add i32 %844, %847
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %827, i32 noundef 773856275, i32 noundef %834, i32 noundef %841, i8 noundef zeroext 0, i32 noundef %848, i32 noundef 1)
  br label %849

849:                                              ; preds = %826, %802
  br label %908

850:                                              ; preds = %796
  %851 = load i32, ptr %42, align 4, !tbaa !9
  %852 = icmp ugt i32 %851, 0
  br i1 %852, label %856, label %853

853:                                              ; preds = %850
  %854 = load i32, ptr %44, align 4, !tbaa !9
  %855 = icmp ugt i32 %854, 0
  br i1 %855, label %856, label %907

856:                                              ; preds = %853, %850
  %857 = load i32, ptr %56, align 4, !tbaa !9
  %858 = icmp eq i32 %857, 0
  br i1 %858, label %859, label %860

859:                                              ; preds = %856
  br label %862

860:                                              ; preds = %856
  %861 = load i32, ptr %27, align 4, !tbaa !9
  br label %862

862:                                              ; preds = %860, %859
  %863 = phi i32 [ 0, %859 ], [ %861, %860 ]
  store i32 %863, ptr %55, align 4, !tbaa !9
  %864 = load i32, ptr %56, align 4, !tbaa !9
  %865 = icmp eq i32 %864, 0
  br i1 %865, label %866, label %869

866:                                              ; preds = %862
  %867 = load i8, ptr %50, align 1, !tbaa !22
  %868 = zext i8 %867 to i32
  br label %872

869:                                              ; preds = %862
  %870 = load i8, ptr %53, align 1, !tbaa !22
  %871 = zext i8 %870 to i32
  br label %872

872:                                              ; preds = %869, %866
  %873 = phi i32 [ %868, %866 ], [ %871, %869 ]
  %874 = trunc i32 %873 to i8
  store i8 %874, ptr %54, align 1, !tbaa !22
  %875 = load ptr, ptr %6, align 8, !tbaa !5
  %876 = load ptr, ptr %8, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %876, i32 0, i32 1
  %878 = load i32, ptr %877, align 4, !tbaa !25
  %879 = load ptr, ptr %8, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %879, i32 0, i32 35
  %881 = load i32, ptr %880, align 4, !tbaa !31
  %882 = load i32, ptr %21, align 4, !tbaa !9
  %883 = load i32, ptr %12, align 4, !tbaa !9
  %884 = add i32 %882, %883
  %885 = load i32, ptr %11, align 4, !tbaa !9
  %886 = load i32, ptr %31, align 4, !tbaa !9
  %887 = mul i32 %885, %886
  %888 = add i32 %884, %887
  %889 = load ptr, ptr %9, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %889, i32 0, i32 2
  %891 = load i32, ptr %890, align 4, !tbaa !19
  %892 = load i32, ptr %55, align 4, !tbaa !9
  %893 = load i8, ptr %54, align 1, !tbaa !22
  %894 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %875, i32 noundef %878, i32 noundef %881, i32 noundef %888, i32 noundef %891, i32 noundef %892, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %893, i8 noundef zeroext %894)
  %895 = load i32, ptr %56, align 4, !tbaa !9
  %896 = icmp ugt i32 %895, 0
  br i1 %896, label %897, label %906

897:                                              ; preds = %872
  %898 = load ptr, ptr %6, align 8, !tbaa !5
  %899 = load i32, ptr %21, align 4, !tbaa !9
  %900 = load i32, ptr %12, align 4, !tbaa !9
  %901 = add i32 %899, %900
  %902 = load i32, ptr %11, align 4, !tbaa !9
  %903 = load i32, ptr %31, align 4, !tbaa !9
  %904 = mul i32 %902, %903
  %905 = add i32 %901, %904
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %898, i32 noundef %905, i32 noundef 0)
  br label %906

906:                                              ; preds = %897, %872
  br label %907

907:                                              ; preds = %906, %853
  br label %908

908:                                              ; preds = %907, %849
  br label %909

909:                                              ; preds = %908, %790
  %910 = load i32, ptr %19, align 4, !tbaa !9
  %911 = icmp ugt i32 %910, 0
  br i1 %911, label %912, label %963

912:                                              ; preds = %909
  %913 = load i8, ptr %48, align 1, !tbaa !22
  %914 = icmp ne i8 %913, 0
  br i1 %914, label %915, label %939

915:                                              ; preds = %912
  %916 = load ptr, ptr %6, align 8, !tbaa !5
  %917 = load i32, ptr %22, align 4, !tbaa !9
  %918 = load i32, ptr %12, align 4, !tbaa !9
  %919 = add i32 %917, %918
  %920 = load i32, ptr %11, align 4, !tbaa !9
  %921 = load i32, ptr %31, align 4, !tbaa !9
  %922 = mul i32 %920, %921
  %923 = add i32 %919, %922
  %924 = load i32, ptr %22, align 4, !tbaa !9
  %925 = load i32, ptr %12, align 4, !tbaa !9
  %926 = add i32 %924, %925
  %927 = load i32, ptr %11, align 4, !tbaa !9
  %928 = load i32, ptr %31, align 4, !tbaa !9
  %929 = mul i32 %927, %928
  %930 = add i32 %926, %929
  %931 = load i32, ptr %22, align 4, !tbaa !9
  %932 = load i32, ptr %12, align 4, !tbaa !9
  %933 = add i32 %931, %932
  %934 = load i32, ptr %11, align 4, !tbaa !9
  %935 = load i32, ptr %31, align 4, !tbaa !9
  %936 = mul i32 %934, %935
  %937 = add i32 %933, %936
  %938 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %916, i32 noundef 77606915, i32 noundef %923, i32 noundef %930, i8 noundef zeroext 0, i32 noundef %937, i32 noundef 0, i32 noundef %938)
  br label %962

939:                                              ; preds = %912
  %940 = load ptr, ptr %6, align 8, !tbaa !5
  %941 = load i32, ptr %22, align 4, !tbaa !9
  %942 = load i32, ptr %12, align 4, !tbaa !9
  %943 = add i32 %941, %942
  %944 = load i32, ptr %11, align 4, !tbaa !9
  %945 = load i32, ptr %31, align 4, !tbaa !9
  %946 = mul i32 %944, %945
  %947 = add i32 %943, %946
  %948 = load i32, ptr %22, align 4, !tbaa !9
  %949 = load i32, ptr %12, align 4, !tbaa !9
  %950 = add i32 %948, %949
  %951 = load i32, ptr %11, align 4, !tbaa !9
  %952 = load i32, ptr %31, align 4, !tbaa !9
  %953 = mul i32 %951, %952
  %954 = add i32 %950, %953
  %955 = load i32, ptr %22, align 4, !tbaa !9
  %956 = load i32, ptr %12, align 4, !tbaa !9
  %957 = add i32 %955, %956
  %958 = load i32, ptr %11, align 4, !tbaa !9
  %959 = load i32, ptr %31, align 4, !tbaa !9
  %960 = mul i32 %958, %959
  %961 = add i32 %957, %960
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %940, i32 noundef 773856275, i32 noundef %947, i32 noundef %954, i8 noundef zeroext 0, i32 noundef %961, i32 noundef 1)
  br label %962

962:                                              ; preds = %939, %915
  br label %963

963:                                              ; preds = %962, %909
  br label %964

964:                                              ; preds = %963
  %965 = load i32, ptr %12, align 4, !tbaa !9
  %966 = add i32 %965, 1
  store i32 %966, ptr %12, align 4, !tbaa !9
  br label %786, !llvm.loop !36

967:                                              ; preds = %786
  %968 = load i32, ptr %42, align 4, !tbaa !9
  %969 = icmp ugt i32 %968, 0
  br i1 %969, label %973, label %970

970:                                              ; preds = %967
  %971 = load i32, ptr %44, align 4, !tbaa !9
  %972 = icmp ugt i32 %971, 0
  br i1 %972, label %973, label %994

973:                                              ; preds = %970, %967
  %974 = load ptr, ptr %6, align 8, !tbaa !5
  %975 = load ptr, ptr %8, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %975, i32 0, i32 1
  %977 = load i32, ptr %976, align 4, !tbaa !25
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %978, i32 0, i32 35
  %980 = load i32, ptr %979, align 4, !tbaa !31
  %981 = load ptr, ptr %8, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %981, i32 0, i32 1
  %983 = load i32, ptr %982, align 4, !tbaa !25
  %984 = load i32, ptr %31, align 4, !tbaa !9
  %985 = zext i32 %984 to i64
  %986 = load ptr, ptr %9, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %986, i32 0, i32 2
  %988 = load i32, ptr %987, align 4, !tbaa !19
  %989 = zext i32 %988 to i64
  %990 = mul nsw i64 %985, %989
  %991 = load i32, ptr %27, align 4, !tbaa !9
  %992 = zext i32 %991 to i64
  %993 = mul nsw i64 %990, %992
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %974, i32 noundef 4097, i32 noundef %977, i32 noundef %980, i32 noundef %983, i64 noundef %993)
  br label %994

994:                                              ; preds = %973, %970
  br label %995

995:                                              ; preds = %994
  %996 = load i32, ptr %11, align 4, !tbaa !9
  %997 = add i32 %996, 1
  store i32 %997, ptr %11, align 4, !tbaa !9
  br label %781, !llvm.loop !38

998:                                              ; preds = %781
  %999 = load i32, ptr %36, align 4, !tbaa !9
  %1000 = icmp uge i32 %999, 1
  br i1 %1000, label %1001, label %1210

1001:                                             ; preds = %998
  %1002 = load i32, ptr %36, align 4, !tbaa !9
  %1003 = icmp ugt i32 %1002, 1
  br i1 %1003, label %1004, label %1011

1004:                                             ; preds = %1001
  %1005 = load ptr, ptr %6, align 8, !tbaa !5
  %1006 = load ptr, ptr %7, align 8, !tbaa !5
  %1007 = load ptr, ptr %8, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1007, i32 0, i32 25
  %1009 = load i32, ptr %1008, align 4, !tbaa !30
  %1010 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %1005, ptr noundef %1006, i32 noundef %1009, i32 noundef %1010)
  br label %1011

1011:                                             ; preds = %1004, %1001
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1012

1012:                                             ; preds = %1197, %1011
  %1013 = load i32, ptr %11, align 4, !tbaa !9
  %1014 = load i32, ptr %35, align 4, !tbaa !9
  %1015 = icmp ult i32 %1013, %1014
  br i1 %1015, label %1016, label %1200

1016:                                             ; preds = %1012
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #4
  %1017 = load ptr, ptr %10, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1017, i32 0, i32 2
  %1019 = load i32, ptr %1018, align 1, !tbaa !24
  %1020 = load ptr, ptr %9, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1020, i32 0, i32 2
  %1022 = load i32, ptr %1021, align 4, !tbaa !19
  %1023 = mul i32 %1019, %1022
  %1024 = load i32, ptr %31, align 4, !tbaa !9
  %1025 = load ptr, ptr %9, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1025, i32 0, i32 2
  %1027 = load i32, ptr %1026, align 4, !tbaa !19
  %1028 = mul i32 %1024, %1027
  %1029 = load i32, ptr %27, align 4, !tbaa !9
  %1030 = mul i32 %1028, %1029
  %1031 = sub i32 %1023, %1030
  store i32 %1031, ptr %62, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1032

1032:                                             ; preds = %1177, %1016
  %1033 = load i32, ptr %12, align 4, !tbaa !9
  %1034 = load i32, ptr %31, align 4, !tbaa !9
  %1035 = icmp ult i32 %1033, %1034
  br i1 %1035, label %1036, label %1180

1036:                                             ; preds = %1032
  %1037 = load i32, ptr %56, align 4, !tbaa !9
  %1038 = icmp eq i32 %1037, 0
  br i1 %1038, label %1039, label %1040

1039:                                             ; preds = %1036
  br label %1042

1040:                                             ; preds = %1036
  %1041 = load i32, ptr %27, align 4, !tbaa !9
  br label %1042

1042:                                             ; preds = %1040, %1039
  %1043 = phi i32 [ 0, %1039 ], [ %1041, %1040 ]
  store i32 %1043, ptr %55, align 4, !tbaa !9
  %1044 = load i32, ptr %56, align 4, !tbaa !9
  %1045 = icmp eq i32 %1044, 0
  br i1 %1045, label %1046, label %1049

1046:                                             ; preds = %1042
  %1047 = load i8, ptr %50, align 1, !tbaa !22
  %1048 = zext i8 %1047 to i32
  br label %1052

1049:                                             ; preds = %1042
  %1050 = load i8, ptr %53, align 1, !tbaa !22
  %1051 = zext i8 %1050 to i32
  br label %1052

1052:                                             ; preds = %1049, %1046
  %1053 = phi i32 [ %1048, %1046 ], [ %1051, %1049 ]
  %1054 = trunc i32 %1053 to i8
  store i8 %1054, ptr %54, align 1, !tbaa !22
  %1055 = load ptr, ptr %6, align 8, !tbaa !5
  %1056 = load ptr, ptr %8, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1056, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 4, !tbaa !25
  %1059 = load ptr, ptr %8, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1059, i32 0, i32 35
  %1061 = load i32, ptr %1060, align 4, !tbaa !31
  %1062 = load i32, ptr %28, align 4, !tbaa !9
  %1063 = load ptr, ptr %9, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1063, i32 0, i32 2
  %1065 = load i32, ptr %1064, align 4, !tbaa !19
  %1066 = load i32, ptr %55, align 4, !tbaa !9
  %1067 = load i8, ptr %54, align 1, !tbaa !22
  %1068 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1055, i32 noundef %1058, i32 noundef %1061, i32 noundef %1062, i32 noundef %1065, i32 noundef %1066, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1067, i8 noundef zeroext %1068)
  %1069 = load i32, ptr %56, align 4, !tbaa !9
  %1070 = icmp ugt i32 %1069, 0
  br i1 %1070, label %1071, label %1074

1071:                                             ; preds = %1052
  %1072 = load ptr, ptr %6, align 8, !tbaa !5
  %1073 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1072, i32 noundef %1073, i32 noundef 0)
  br label %1074

1074:                                             ; preds = %1071, %1052
  %1075 = load i32, ptr %20, align 4, !tbaa !9
  %1076 = icmp ugt i32 %1075, 0
  br i1 %1076, label %1077, label %1143

1077:                                             ; preds = %1074
  %1078 = load i8, ptr %48, align 1, !tbaa !22
  %1079 = icmp ne i8 %1078, 0
  br i1 %1079, label %1080, label %1113

1080:                                             ; preds = %1077
  %1081 = load i32, ptr %43, align 4, !tbaa !9
  %1082 = icmp ugt i32 %1081, 0
  br i1 %1082, label %1083, label %1092

1083:                                             ; preds = %1080
  %1084 = load ptr, ptr %6, align 8, !tbaa !5
  %1085 = load i32, ptr %24, align 4, !tbaa !9
  %1086 = load i32, ptr %28, align 4, !tbaa !9
  %1087 = load i32, ptr %29, align 4, !tbaa !9
  %1088 = load i32, ptr %28, align 4, !tbaa !9
  %1089 = load i8, ptr %50, align 1, !tbaa !22
  %1090 = zext i8 %1089 to i32
  %1091 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1084, i32 noundef %1085, i32 noundef %1086, i32 noundef %1087, i8 noundef zeroext 0, i32 noundef %1088, i32 noundef %1090, i32 noundef %1091)
  br label %1092

1092:                                             ; preds = %1083, %1080
  %1093 = load ptr, ptr %6, align 8, !tbaa !5
  %1094 = load i32, ptr %23, align 4, !tbaa !9
  %1095 = load i32, ptr %28, align 4, !tbaa !9
  %1096 = load i32, ptr %21, align 4, !tbaa !9
  %1097 = load i32, ptr %12, align 4, !tbaa !9
  %1098 = add i32 %1096, %1097
  %1099 = load i32, ptr %11, align 4, !tbaa !9
  %1100 = load i32, ptr %31, align 4, !tbaa !9
  %1101 = mul i32 %1099, %1100
  %1102 = add i32 %1098, %1101
  %1103 = load i32, ptr %21, align 4, !tbaa !9
  %1104 = load i32, ptr %12, align 4, !tbaa !9
  %1105 = add i32 %1103, %1104
  %1106 = load i32, ptr %11, align 4, !tbaa !9
  %1107 = load i32, ptr %31, align 4, !tbaa !9
  %1108 = mul i32 %1106, %1107
  %1109 = add i32 %1105, %1108
  %1110 = load i8, ptr %50, align 1, !tbaa !22
  %1111 = zext i8 %1110 to i32
  %1112 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1093, i32 noundef %1094, i32 noundef %1095, i32 noundef %1102, i8 noundef zeroext 0, i32 noundef %1109, i32 noundef %1111, i32 noundef %1112)
  br label %1142

1113:                                             ; preds = %1077
  %1114 = load i32, ptr %43, align 4, !tbaa !9
  %1115 = icmp ugt i32 %1114, 0
  br i1 %1115, label %1116, label %1123

1116:                                             ; preds = %1113
  %1117 = load ptr, ptr %6, align 8, !tbaa !5
  %1118 = load i32, ptr %24, align 4, !tbaa !9
  %1119 = load i32, ptr %28, align 4, !tbaa !9
  %1120 = load i32, ptr %29, align 4, !tbaa !9
  %1121 = load i32, ptr %28, align 4, !tbaa !9
  %1122 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1117, i32 noundef %1118, i32 noundef %1119, i32 noundef %1120, i8 noundef zeroext 0, i32 noundef %1121, i32 noundef %1122)
  br label %1123

1123:                                             ; preds = %1116, %1113
  %1124 = load ptr, ptr %6, align 8, !tbaa !5
  %1125 = load i32, ptr %23, align 4, !tbaa !9
  %1126 = load i32, ptr %28, align 4, !tbaa !9
  %1127 = load i32, ptr %21, align 4, !tbaa !9
  %1128 = load i32, ptr %12, align 4, !tbaa !9
  %1129 = add i32 %1127, %1128
  %1130 = load i32, ptr %11, align 4, !tbaa !9
  %1131 = load i32, ptr %31, align 4, !tbaa !9
  %1132 = mul i32 %1130, %1131
  %1133 = add i32 %1129, %1132
  %1134 = load i32, ptr %21, align 4, !tbaa !9
  %1135 = load i32, ptr %12, align 4, !tbaa !9
  %1136 = add i32 %1134, %1135
  %1137 = load i32, ptr %11, align 4, !tbaa !9
  %1138 = load i32, ptr %31, align 4, !tbaa !9
  %1139 = mul i32 %1137, %1138
  %1140 = add i32 %1136, %1139
  %1141 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1124, i32 noundef %1125, i32 noundef %1126, i32 noundef %1133, i8 noundef zeroext 0, i32 noundef %1140, i32 noundef %1141)
  br label %1142

1142:                                             ; preds = %1123, %1092
  br label %1143

1143:                                             ; preds = %1142, %1074
  %1144 = load i32, ptr %19, align 4, !tbaa !9
  %1145 = icmp ugt i32 %1144, 0
  br i1 %1145, label %1146, label %1176

1146:                                             ; preds = %1143
  %1147 = load i8, ptr %48, align 1, !tbaa !22
  %1148 = icmp ne i8 %1147, 0
  br i1 %1148, label %1149, label %1163

1149:                                             ; preds = %1146
  %1150 = load ptr, ptr %6, align 8, !tbaa !5
  %1151 = load i32, ptr %28, align 4, !tbaa !9
  %1152 = load i32, ptr %28, align 4, !tbaa !9
  %1153 = load i32, ptr %22, align 4, !tbaa !9
  %1154 = load i32, ptr %12, align 4, !tbaa !9
  %1155 = add i32 %1153, %1154
  %1156 = load i32, ptr %11, align 4, !tbaa !9
  %1157 = load i32, ptr %31, align 4, !tbaa !9
  %1158 = mul i32 %1156, %1157
  %1159 = add i32 %1155, %1158
  %1160 = load i8, ptr %50, align 1, !tbaa !22
  %1161 = zext i8 %1160 to i32
  %1162 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1150, i32 noundef 1696596099, i32 noundef %1151, i32 noundef %1152, i8 noundef zeroext 0, i32 noundef %1159, i32 noundef %1161, i32 noundef %1162)
  br label %1175

1163:                                             ; preds = %1146
  %1164 = load ptr, ptr %6, align 8, !tbaa !5
  %1165 = load i32, ptr %28, align 4, !tbaa !9
  %1166 = load i32, ptr %28, align 4, !tbaa !9
  %1167 = load i32, ptr %22, align 4, !tbaa !9
  %1168 = load i32, ptr %12, align 4, !tbaa !9
  %1169 = add i32 %1167, %1168
  %1170 = load i32, ptr %11, align 4, !tbaa !9
  %1171 = load i32, ptr %31, align 4, !tbaa !9
  %1172 = mul i32 %1170, %1171
  %1173 = add i32 %1169, %1172
  %1174 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1164, i32 noundef 237030411, i32 noundef %1165, i32 noundef %1166, i8 noundef zeroext 0, i32 noundef %1173, i32 noundef %1174)
  br label %1175

1175:                                             ; preds = %1163, %1149
  br label %1176

1176:                                             ; preds = %1175, %1143
  br label %1177

1177:                                             ; preds = %1176
  %1178 = load i32, ptr %12, align 4, !tbaa !9
  %1179 = add i32 %1178, 1
  store i32 %1179, ptr %12, align 4, !tbaa !9
  br label %1032, !llvm.loop !39

1180:                                             ; preds = %1032
  %1181 = load i32, ptr %62, align 4, !tbaa !9
  %1182 = icmp sgt i32 %1181, 0
  br i1 %1182, label %1183, label %1196

1183:                                             ; preds = %1180
  %1184 = load ptr, ptr %6, align 8, !tbaa !5
  %1185 = load ptr, ptr %8, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1185, i32 0, i32 1
  %1187 = load i32, ptr %1186, align 4, !tbaa !25
  %1188 = load ptr, ptr %8, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1188, i32 0, i32 35
  %1190 = load i32, ptr %1189, align 4, !tbaa !31
  %1191 = load ptr, ptr %8, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1191, i32 0, i32 1
  %1193 = load i32, ptr %1192, align 4, !tbaa !25
  %1194 = load i32, ptr %62, align 4, !tbaa !9
  %1195 = sext i32 %1194 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1184, i32 noundef 4096, i32 noundef %1187, i32 noundef %1190, i32 noundef %1193, i64 noundef %1195)
  br label %1196

1196:                                             ; preds = %1183, %1180
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  br label %1197

1197:                                             ; preds = %1196
  %1198 = load i32, ptr %11, align 4, !tbaa !9
  %1199 = add i32 %1198, 1
  store i32 %1199, ptr %11, align 4, !tbaa !9
  br label %1012, !llvm.loop !40

1200:                                             ; preds = %1012
  %1201 = load i32, ptr %36, align 4, !tbaa !9
  %1202 = icmp ugt i32 %1201, 1
  br i1 %1202, label %1203, label %1209

1203:                                             ; preds = %1200
  %1204 = load ptr, ptr %6, align 8, !tbaa !5
  %1205 = load ptr, ptr %7, align 8, !tbaa !5
  %1206 = load ptr, ptr %8, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1206, i32 0, i32 25
  %1208 = load i32, ptr %1207, align 4, !tbaa !30
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1204, ptr noundef %1205, i32 noundef %1208, i32 noundef 1)
  br label %1209

1209:                                             ; preds = %1203, %1200
  br label %1210

1210:                                             ; preds = %1209, %998
  %1211 = load i32, ptr %38, align 4, !tbaa !9
  %1212 = icmp ugt i32 %1211, 0
  br i1 %1212, label %1213, label %1403

1213:                                             ; preds = %1210
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1214

1214:                                             ; preds = %1399, %1213
  %1215 = load i32, ptr %11, align 4, !tbaa !9
  %1216 = load i32, ptr %38, align 4, !tbaa !9
  %1217 = icmp ult i32 %1215, %1216
  br i1 %1217, label %1218, label %1402

1218:                                             ; preds = %1214
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #4
  %1219 = load ptr, ptr %10, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1219, i32 0, i32 2
  %1221 = load i32, ptr %1220, align 1, !tbaa !24
  %1222 = load ptr, ptr %9, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1222, i32 0, i32 2
  %1224 = load i32, ptr %1223, align 4, !tbaa !19
  %1225 = mul i32 %1221, %1224
  %1226 = load i32, ptr %31, align 4, !tbaa !9
  %1227 = load ptr, ptr %9, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1227, i32 0, i32 2
  %1229 = load i32, ptr %1228, align 4, !tbaa !19
  %1230 = mul i32 %1226, %1229
  %1231 = load i32, ptr %27, align 4, !tbaa !9
  %1232 = mul i32 %1230, %1231
  %1233 = sub i32 %1225, %1232
  store i32 %1233, ptr %63, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1234

1234:                                             ; preds = %1379, %1218
  %1235 = load i32, ptr %12, align 4, !tbaa !9
  %1236 = load i32, ptr %31, align 4, !tbaa !9
  %1237 = icmp ult i32 %1235, %1236
  br i1 %1237, label %1238, label %1382

1238:                                             ; preds = %1234
  %1239 = load i32, ptr %56, align 4, !tbaa !9
  %1240 = icmp eq i32 %1239, 0
  br i1 %1240, label %1241, label %1242

1241:                                             ; preds = %1238
  br label %1244

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

1244:                                             ; preds = %1242, %1241
  %1245 = phi i32 [ 0, %1241 ], [ %1243, %1242 ]
  store i32 %1245, ptr %55, align 4, !tbaa !9
  %1246 = load i32, ptr %56, align 4, !tbaa !9
  %1247 = icmp eq i32 %1246, 0
  br i1 %1247, label %1248, label %1251

1248:                                             ; preds = %1244
  %1249 = load i8, ptr %50, align 1, !tbaa !22
  %1250 = zext i8 %1249 to i32
  br label %1254

1251:                                             ; preds = %1244
  %1252 = load i8, ptr %53, align 1, !tbaa !22
  %1253 = zext i8 %1252 to i32
  br label %1254

1254:                                             ; preds = %1251, %1248
  %1255 = phi i32 [ %1250, %1248 ], [ %1253, %1251 ]
  %1256 = trunc i32 %1255 to i8
  store i8 %1256, ptr %54, align 1, !tbaa !22
  %1257 = load ptr, ptr %6, align 8, !tbaa !5
  %1258 = load ptr, ptr %8, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1258, i32 0, i32 1
  %1260 = load i32, ptr %1259, align 4, !tbaa !25
  %1261 = load ptr, ptr %8, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1261, i32 0, i32 35
  %1263 = load i32, ptr %1262, align 4, !tbaa !31
  %1264 = load i32, ptr %28, align 4, !tbaa !9
  %1265 = load ptr, ptr %9, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1265, i32 0, i32 2
  %1267 = load i32, ptr %1266, align 4, !tbaa !19
  %1268 = load i32, ptr %55, align 4, !tbaa !9
  %1269 = load i8, ptr %54, align 1, !tbaa !22
  %1270 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1257, i32 noundef %1260, i32 noundef %1263, i32 noundef %1264, i32 noundef %1267, i32 noundef %1268, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1269, i8 noundef zeroext %1270)
  %1271 = load i32, ptr %56, align 4, !tbaa !9
  %1272 = icmp ugt i32 %1271, 0
  br i1 %1272, label %1273, label %1276

1273:                                             ; preds = %1254
  %1274 = load ptr, ptr %6, align 8, !tbaa !5
  %1275 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1274, i32 noundef %1275, i32 noundef 0)
  br label %1276

1276:                                             ; preds = %1273, %1254
  %1277 = load i32, ptr %20, align 4, !tbaa !9
  %1278 = icmp ugt i32 %1277, 0
  br i1 %1278, label %1279, label %1345

1279:                                             ; preds = %1276
  %1280 = load i8, ptr %48, align 1, !tbaa !22
  %1281 = icmp ne i8 %1280, 0
  br i1 %1281, label %1282, label %1315

1282:                                             ; preds = %1279
  %1283 = load i32, ptr %43, align 4, !tbaa !9
  %1284 = icmp ugt i32 %1283, 0
  br i1 %1284, label %1285, label %1294

1285:                                             ; preds = %1282
  %1286 = load ptr, ptr %6, align 8, !tbaa !5
  %1287 = load i32, ptr %24, align 4, !tbaa !9
  %1288 = load i32, ptr %28, align 4, !tbaa !9
  %1289 = load i32, ptr %29, align 4, !tbaa !9
  %1290 = load i32, ptr %28, align 4, !tbaa !9
  %1291 = load i8, ptr %50, align 1, !tbaa !22
  %1292 = zext i8 %1291 to i32
  %1293 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1286, i32 noundef %1287, i32 noundef %1288, i32 noundef %1289, i8 noundef zeroext 0, i32 noundef %1290, i32 noundef %1292, i32 noundef %1293)
  br label %1294

1294:                                             ; preds = %1285, %1282
  %1295 = load ptr, ptr %6, align 8, !tbaa !5
  %1296 = load i32, ptr %23, align 4, !tbaa !9
  %1297 = load i32, ptr %28, align 4, !tbaa !9
  %1298 = load i32, ptr %21, align 4, !tbaa !9
  %1299 = load i32, ptr %12, align 4, !tbaa !9
  %1300 = add i32 %1298, %1299
  %1301 = load i32, ptr %11, align 4, !tbaa !9
  %1302 = load i32, ptr %31, align 4, !tbaa !9
  %1303 = mul i32 %1301, %1302
  %1304 = add i32 %1300, %1303
  %1305 = load i32, ptr %21, align 4, !tbaa !9
  %1306 = load i32, ptr %12, align 4, !tbaa !9
  %1307 = add i32 %1305, %1306
  %1308 = load i32, ptr %11, align 4, !tbaa !9
  %1309 = load i32, ptr %31, align 4, !tbaa !9
  %1310 = mul i32 %1308, %1309
  %1311 = add i32 %1307, %1310
  %1312 = load i8, ptr %50, align 1, !tbaa !22
  %1313 = zext i8 %1312 to i32
  %1314 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1295, i32 noundef %1296, i32 noundef %1297, i32 noundef %1304, i8 noundef zeroext 0, i32 noundef %1311, i32 noundef %1313, i32 noundef %1314)
  br label %1344

1315:                                             ; preds = %1279
  %1316 = load i32, ptr %43, align 4, !tbaa !9
  %1317 = icmp ugt i32 %1316, 0
  br i1 %1317, label %1318, label %1325

1318:                                             ; preds = %1315
  %1319 = load ptr, ptr %6, align 8, !tbaa !5
  %1320 = load i32, ptr %24, align 4, !tbaa !9
  %1321 = load i32, ptr %28, align 4, !tbaa !9
  %1322 = load i32, ptr %29, align 4, !tbaa !9
  %1323 = load i32, ptr %28, align 4, !tbaa !9
  %1324 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1319, i32 noundef %1320, i32 noundef %1321, i32 noundef %1322, i8 noundef zeroext 0, i32 noundef %1323, i32 noundef %1324)
  br label %1325

1325:                                             ; preds = %1318, %1315
  %1326 = load ptr, ptr %6, align 8, !tbaa !5
  %1327 = load i32, ptr %23, align 4, !tbaa !9
  %1328 = load i32, ptr %28, align 4, !tbaa !9
  %1329 = load i32, ptr %21, align 4, !tbaa !9
  %1330 = load i32, ptr %12, align 4, !tbaa !9
  %1331 = add i32 %1329, %1330
  %1332 = load i32, ptr %11, align 4, !tbaa !9
  %1333 = load i32, ptr %31, align 4, !tbaa !9
  %1334 = mul i32 %1332, %1333
  %1335 = add i32 %1331, %1334
  %1336 = load i32, ptr %21, align 4, !tbaa !9
  %1337 = load i32, ptr %12, align 4, !tbaa !9
  %1338 = add i32 %1336, %1337
  %1339 = load i32, ptr %11, align 4, !tbaa !9
  %1340 = load i32, ptr %31, align 4, !tbaa !9
  %1341 = mul i32 %1339, %1340
  %1342 = add i32 %1338, %1341
  %1343 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1326, i32 noundef %1327, i32 noundef %1328, i32 noundef %1335, i8 noundef zeroext 0, i32 noundef %1342, i32 noundef %1343)
  br label %1344

1344:                                             ; preds = %1325, %1294
  br label %1345

1345:                                             ; preds = %1344, %1276
  %1346 = load i32, ptr %19, align 4, !tbaa !9
  %1347 = icmp ugt i32 %1346, 0
  br i1 %1347, label %1348, label %1378

1348:                                             ; preds = %1345
  %1349 = load i8, ptr %48, align 1, !tbaa !22
  %1350 = icmp ne i8 %1349, 0
  br i1 %1350, label %1351, label %1365

1351:                                             ; preds = %1348
  %1352 = load ptr, ptr %6, align 8, !tbaa !5
  %1353 = load i32, ptr %28, align 4, !tbaa !9
  %1354 = load i32, ptr %28, align 4, !tbaa !9
  %1355 = load i32, ptr %22, align 4, !tbaa !9
  %1356 = load i32, ptr %12, align 4, !tbaa !9
  %1357 = add i32 %1355, %1356
  %1358 = load i32, ptr %11, align 4, !tbaa !9
  %1359 = load i32, ptr %31, align 4, !tbaa !9
  %1360 = mul i32 %1358, %1359
  %1361 = add i32 %1357, %1360
  %1362 = load i8, ptr %50, align 1, !tbaa !22
  %1363 = zext i8 %1362 to i32
  %1364 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1352, i32 noundef 1696596099, i32 noundef %1353, i32 noundef %1354, i8 noundef zeroext 0, i32 noundef %1361, i32 noundef %1363, i32 noundef %1364)
  br label %1377

1365:                                             ; preds = %1348
  %1366 = load ptr, ptr %6, align 8, !tbaa !5
  %1367 = load i32, ptr %28, align 4, !tbaa !9
  %1368 = load i32, ptr %28, align 4, !tbaa !9
  %1369 = load i32, ptr %22, align 4, !tbaa !9
  %1370 = load i32, ptr %12, align 4, !tbaa !9
  %1371 = add i32 %1369, %1370
  %1372 = load i32, ptr %11, align 4, !tbaa !9
  %1373 = load i32, ptr %31, align 4, !tbaa !9
  %1374 = mul i32 %1372, %1373
  %1375 = add i32 %1371, %1374
  %1376 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1366, i32 noundef 237030411, i32 noundef %1367, i32 noundef %1368, i8 noundef zeroext 0, i32 noundef %1375, i32 noundef %1376)
  br label %1377

1377:                                             ; preds = %1365, %1351
  br label %1378

1378:                                             ; preds = %1377, %1345
  br label %1379

1379:                                             ; preds = %1378
  %1380 = load i32, ptr %12, align 4, !tbaa !9
  %1381 = add i32 %1380, 1
  store i32 %1381, ptr %12, align 4, !tbaa !9
  br label %1234, !llvm.loop !41

1382:                                             ; preds = %1234
  %1383 = load i32, ptr %63, align 4, !tbaa !9
  %1384 = icmp sgt i32 %1383, 0
  br i1 %1384, label %1385, label %1398

1385:                                             ; preds = %1382
  %1386 = load ptr, ptr %6, align 8, !tbaa !5
  %1387 = load ptr, ptr %8, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1387, i32 0, i32 1
  %1389 = load i32, ptr %1388, align 4, !tbaa !25
  %1390 = load ptr, ptr %8, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1390, i32 0, i32 35
  %1392 = load i32, ptr %1391, align 4, !tbaa !31
  %1393 = load ptr, ptr %8, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1393, i32 0, i32 1
  %1395 = load i32, ptr %1394, align 4, !tbaa !25
  %1396 = load i32, ptr %63, align 4, !tbaa !9
  %1397 = sext i32 %1396 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1386, i32 noundef 4096, i32 noundef %1389, i32 noundef %1392, i32 noundef %1395, i64 noundef %1397)
  br label %1398

1398:                                             ; preds = %1385, %1382
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  br label %1399

1399:                                             ; preds = %1398
  %1400 = load i32, ptr %11, align 4, !tbaa !9
  %1401 = add i32 %1400, 1
  store i32 %1401, ptr %11, align 4, !tbaa !9
  br label %1214, !llvm.loop !42

1402:                                             ; preds = %1214
  br label %1403

1403:                                             ; preds = %1402, %1210
  %1404 = load ptr, ptr %6, align 8, !tbaa !5
  %1405 = load ptr, ptr %8, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1405, i32 0, i32 1
  %1407 = load i32, ptr %1406, align 4, !tbaa !25
  %1408 = load ptr, ptr %8, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1408, i32 0, i32 35
  %1410 = load i32, ptr %1409, align 4, !tbaa !31
  %1411 = load ptr, ptr %8, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1411, i32 0, i32 1
  %1413 = load i32, ptr %1412, align 4, !tbaa !25
  %1414 = load i32, ptr %14, align 4, !tbaa !9
  %1415 = zext i32 %1414 to i64
  %1416 = load ptr, ptr %10, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1416, i32 0, i32 2
  %1418 = load i32, ptr %1417, align 1, !tbaa !24
  %1419 = zext i32 %1418 to i64
  %1420 = mul nsw i64 %1415, %1419
  %1421 = load ptr, ptr %9, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1421, i32 0, i32 2
  %1423 = load i32, ptr %1422, align 4, !tbaa !19
  %1424 = zext i32 %1423 to i64
  %1425 = mul nsw i64 %1420, %1424
  %1426 = load i32, ptr %31, align 4, !tbaa !9
  %1427 = zext i32 %1426 to i64
  %1428 = load i32, ptr %27, align 4, !tbaa !9
  %1429 = zext i32 %1428 to i64
  %1430 = mul nsw i64 %1427, %1429
  %1431 = load ptr, ptr %9, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1431, i32 0, i32 2
  %1433 = load i32, ptr %1432, align 4, !tbaa !19
  %1434 = zext i32 %1433 to i64
  %1435 = mul nsw i64 %1430, %1434
  %1436 = sub nsw i64 %1425, %1435
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1404, i32 noundef 4097, i32 noundef %1407, i32 noundef %1410, i32 noundef %1413, i64 noundef %1436)
  store i32 1, ptr %11, align 4, !tbaa !9
  br label %1437

1437:                                             ; preds = %1537, %1403
  %1438 = load i32, ptr %11, align 4, !tbaa !9
  %1439 = load i32, ptr %35, align 4, !tbaa !9
  %1440 = icmp ult i32 %1438, %1439
  br i1 %1440, label %1441, label %1540

1441:                                             ; preds = %1437
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1442

1442:                                             ; preds = %1533, %1441
  %1443 = load i32, ptr %12, align 4, !tbaa !9
  %1444 = load i32, ptr %31, align 4, !tbaa !9
  %1445 = icmp ult i32 %1443, %1444
  br i1 %1445, label %1446, label %1536

1446:                                             ; preds = %1442
  %1447 = load i32, ptr %20, align 4, !tbaa !9
  %1448 = icmp ugt i32 %1447, 0
  br i1 %1448, label %1449, label %1489

1449:                                             ; preds = %1446
  %1450 = load i8, ptr %48, align 1, !tbaa !22
  %1451 = icmp ne i8 %1450, 0
  br i1 %1451, label %1452, label %1471

1452:                                             ; preds = %1449
  %1453 = load ptr, ptr %6, align 8, !tbaa !5
  %1454 = load i32, ptr %23, align 4, !tbaa !9
  %1455 = load i32, ptr %21, align 4, !tbaa !9
  %1456 = load i32, ptr %12, align 4, !tbaa !9
  %1457 = add i32 %1455, %1456
  %1458 = load i32, ptr %21, align 4, !tbaa !9
  %1459 = load i32, ptr %12, align 4, !tbaa !9
  %1460 = add i32 %1458, %1459
  %1461 = load i32, ptr %11, align 4, !tbaa !9
  %1462 = load i32, ptr %31, align 4, !tbaa !9
  %1463 = mul i32 %1461, %1462
  %1464 = add i32 %1460, %1463
  %1465 = load i32, ptr %21, align 4, !tbaa !9
  %1466 = load i32, ptr %12, align 4, !tbaa !9
  %1467 = add i32 %1465, %1466
  %1468 = load i8, ptr %50, align 1, !tbaa !22
  %1469 = zext i8 %1468 to i32
  %1470 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1453, i32 noundef %1454, i32 noundef %1457, i32 noundef %1464, i8 noundef zeroext 0, i32 noundef %1467, i32 noundef %1469, i32 noundef %1470)
  br label %1488

1471:                                             ; preds = %1449
  %1472 = load ptr, ptr %6, align 8, !tbaa !5
  %1473 = load i32, ptr %23, align 4, !tbaa !9
  %1474 = load i32, ptr %21, align 4, !tbaa !9
  %1475 = load i32, ptr %12, align 4, !tbaa !9
  %1476 = add i32 %1474, %1475
  %1477 = load i32, ptr %21, align 4, !tbaa !9
  %1478 = load i32, ptr %12, align 4, !tbaa !9
  %1479 = add i32 %1477, %1478
  %1480 = load i32, ptr %11, align 4, !tbaa !9
  %1481 = load i32, ptr %31, align 4, !tbaa !9
  %1482 = mul i32 %1480, %1481
  %1483 = add i32 %1479, %1482
  %1484 = load i32, ptr %21, align 4, !tbaa !9
  %1485 = load i32, ptr %12, align 4, !tbaa !9
  %1486 = add i32 %1484, %1485
  %1487 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1472, i32 noundef %1473, i32 noundef %1476, i32 noundef %1483, i8 noundef zeroext 0, i32 noundef %1486, i32 noundef %1487)
  br label %1488

1488:                                             ; preds = %1471, %1452
  br label %1489

1489:                                             ; preds = %1488, %1446
  %1490 = load i32, ptr %19, align 4, !tbaa !9
  %1491 = icmp ugt i32 %1490, 0
  br i1 %1491, label %1492, label %1532

1492:                                             ; preds = %1489
  %1493 = load i8, ptr %48, align 1, !tbaa !22
  %1494 = icmp ne i8 %1493, 0
  br i1 %1494, label %1495, label %1514

1495:                                             ; preds = %1492
  %1496 = load ptr, ptr %6, align 8, !tbaa !5
  %1497 = load i32, ptr %23, align 4, !tbaa !9
  %1498 = load i32, ptr %22, align 4, !tbaa !9
  %1499 = load i32, ptr %12, align 4, !tbaa !9
  %1500 = add i32 %1498, %1499
  %1501 = load i32, ptr %22, align 4, !tbaa !9
  %1502 = load i32, ptr %12, align 4, !tbaa !9
  %1503 = add i32 %1501, %1502
  %1504 = load i32, ptr %11, align 4, !tbaa !9
  %1505 = load i32, ptr %31, align 4, !tbaa !9
  %1506 = mul i32 %1504, %1505
  %1507 = add i32 %1503, %1506
  %1508 = load i32, ptr %22, align 4, !tbaa !9
  %1509 = load i32, ptr %12, align 4, !tbaa !9
  %1510 = add i32 %1508, %1509
  %1511 = load i8, ptr %50, align 1, !tbaa !22
  %1512 = zext i8 %1511 to i32
  %1513 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1496, i32 noundef %1497, i32 noundef %1500, i32 noundef %1507, i8 noundef zeroext 0, i32 noundef %1510, i32 noundef %1512, i32 noundef %1513)
  br label %1531

1514:                                             ; preds = %1492
  %1515 = load ptr, ptr %6, align 8, !tbaa !5
  %1516 = load i32, ptr %23, align 4, !tbaa !9
  %1517 = load i32, ptr %22, align 4, !tbaa !9
  %1518 = load i32, ptr %12, align 4, !tbaa !9
  %1519 = add i32 %1517, %1518
  %1520 = load i32, ptr %22, align 4, !tbaa !9
  %1521 = load i32, ptr %12, align 4, !tbaa !9
  %1522 = add i32 %1520, %1521
  %1523 = load i32, ptr %11, align 4, !tbaa !9
  %1524 = load i32, ptr %31, align 4, !tbaa !9
  %1525 = mul i32 %1523, %1524
  %1526 = add i32 %1522, %1525
  %1527 = load i32, ptr %22, align 4, !tbaa !9
  %1528 = load i32, ptr %12, align 4, !tbaa !9
  %1529 = add i32 %1527, %1528
  %1530 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1515, i32 noundef %1516, i32 noundef %1519, i32 noundef %1526, i8 noundef zeroext 0, i32 noundef %1529, i32 noundef %1530)
  br label %1531

1531:                                             ; preds = %1514, %1495
  br label %1532

1532:                                             ; preds = %1531, %1489
  br label %1533

1533:                                             ; preds = %1532
  %1534 = load i32, ptr %12, align 4, !tbaa !9
  %1535 = add i32 %1534, 1
  store i32 %1535, ptr %12, align 4, !tbaa !9
  br label %1442, !llvm.loop !43

1536:                                             ; preds = %1442
  br label %1537

1537:                                             ; preds = %1536
  %1538 = load i32, ptr %11, align 4, !tbaa !9
  %1539 = add i32 %1538, 1
  store i32 %1539, ptr %11, align 4, !tbaa !9
  br label %1437, !llvm.loop !44

1540:                                             ; preds = %1437
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1541

1541:                                             ; preds = %1744, %1540
  %1542 = load i32, ptr %12, align 4, !tbaa !9
  %1543 = load i32, ptr %31, align 4, !tbaa !9
  %1544 = icmp ult i32 %1542, %1543
  br i1 %1544, label %1545, label %1747

1545:                                             ; preds = %1541
  %1546 = load i32, ptr %57, align 4, !tbaa !9
  %1547 = icmp eq i32 %1546, 0
  br i1 %1547, label %1548, label %1549

1548:                                             ; preds = %1545
  br label %1551

1549:                                             ; preds = %1545
  %1550 = load i32, ptr %27, align 4, !tbaa !9
  br label %1551

1551:                                             ; preds = %1549, %1548
  %1552 = phi i32 [ 0, %1548 ], [ %1550, %1549 ]
  store i32 %1552, ptr %55, align 4, !tbaa !9
  %1553 = load i32, ptr %57, align 4, !tbaa !9
  %1554 = icmp eq i32 %1553, 0
  br i1 %1554, label %1555, label %1558

1555:                                             ; preds = %1551
  %1556 = load i8, ptr %50, align 1, !tbaa !22
  %1557 = zext i8 %1556 to i32
  br label %1561

1558:                                             ; preds = %1551
  %1559 = load i8, ptr %53, align 1, !tbaa !22
  %1560 = zext i8 %1559 to i32
  br label %1561

1561:                                             ; preds = %1558, %1555
  %1562 = phi i32 [ %1557, %1555 ], [ %1560, %1558 ]
  %1563 = trunc i32 %1562 to i8
  store i8 %1563, ptr %54, align 1, !tbaa !22
  %1564 = load i32, ptr %20, align 4, !tbaa !9
  %1565 = icmp ugt i32 %1564, 0
  br i1 %1565, label %1566, label %1664

1566:                                             ; preds = %1561
  %1567 = load i32, ptr %45, align 4, !tbaa !9
  %1568 = icmp ugt i32 %1567, 0
  br i1 %1568, label %1569, label %1639

1569:                                             ; preds = %1566
  %1570 = load ptr, ptr %6, align 8, !tbaa !5
  %1571 = load ptr, ptr %8, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1571, i32 0, i32 16
  %1573 = load i32, ptr %1572, align 4, !tbaa !27
  %1574 = load ptr, ptr %8, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1574, i32 0, i32 35
  %1576 = load i32, ptr %1575, align 4, !tbaa !31
  %1577 = load i32, ptr %28, align 4, !tbaa !9
  %1578 = load ptr, ptr %9, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1578, i32 0, i32 5
  %1580 = load i32, ptr %1579, align 4, !tbaa !34
  %1581 = load i32, ptr %55, align 4, !tbaa !9
  %1582 = load i8, ptr %54, align 1, !tbaa !22
  %1583 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1570, i32 noundef %1573, i32 noundef %1576, i32 noundef %1577, i32 noundef %1580, i32 noundef %1581, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %1582, i8 noundef zeroext %1583)
  %1584 = load i32, ptr %57, align 4, !tbaa !9
  %1585 = icmp ugt i32 %1584, 0
  br i1 %1585, label %1586, label %1589

1586:                                             ; preds = %1569
  %1587 = load ptr, ptr %6, align 8, !tbaa !5
  %1588 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1587, i32 noundef %1588, i32 noundef 0)
  br label %1589

1589:                                             ; preds = %1586, %1569
  %1590 = load i8, ptr %48, align 1, !tbaa !22
  %1591 = icmp ne i8 %1590, 0
  br i1 %1591, label %1592, label %1617

1592:                                             ; preds = %1589
  %1593 = load i32, ptr %43, align 4, !tbaa !9
  %1594 = icmp ugt i32 %1593, 0
  br i1 %1594, label %1595, label %1604

1595:                                             ; preds = %1592
  %1596 = load ptr, ptr %6, align 8, !tbaa !5
  %1597 = load i32, ptr %24, align 4, !tbaa !9
  %1598 = load i32, ptr %28, align 4, !tbaa !9
  %1599 = load i32, ptr %29, align 4, !tbaa !9
  %1600 = load i32, ptr %28, align 4, !tbaa !9
  %1601 = load i8, ptr %50, align 1, !tbaa !22
  %1602 = zext i8 %1601 to i32
  %1603 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1596, i32 noundef %1597, i32 noundef %1598, i32 noundef %1599, i8 noundef zeroext 0, i32 noundef %1600, i32 noundef %1602, i32 noundef %1603)
  br label %1604

1604:                                             ; preds = %1595, %1592
  %1605 = load ptr, ptr %6, align 8, !tbaa !5
  %1606 = load i32, ptr %23, align 4, !tbaa !9
  %1607 = load i32, ptr %28, align 4, !tbaa !9
  %1608 = load i32, ptr %21, align 4, !tbaa !9
  %1609 = load i32, ptr %12, align 4, !tbaa !9
  %1610 = add i32 %1608, %1609
  %1611 = load i32, ptr %21, align 4, !tbaa !9
  %1612 = load i32, ptr %12, align 4, !tbaa !9
  %1613 = add i32 %1611, %1612
  %1614 = load i8, ptr %50, align 1, !tbaa !22
  %1615 = zext i8 %1614 to i32
  %1616 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1605, i32 noundef %1606, i32 noundef %1607, i32 noundef %1610, i8 noundef zeroext 0, i32 noundef %1613, i32 noundef %1615, i32 noundef %1616)
  br label %1638

1617:                                             ; preds = %1589
  %1618 = load i32, ptr %43, align 4, !tbaa !9
  %1619 = icmp ugt i32 %1618, 0
  br i1 %1619, label %1620, label %1627

1620:                                             ; preds = %1617
  %1621 = load ptr, ptr %6, align 8, !tbaa !5
  %1622 = load i32, ptr %24, align 4, !tbaa !9
  %1623 = load i32, ptr %28, align 4, !tbaa !9
  %1624 = load i32, ptr %29, align 4, !tbaa !9
  %1625 = load i32, ptr %28, align 4, !tbaa !9
  %1626 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1621, i32 noundef %1622, i32 noundef %1623, i32 noundef %1624, i8 noundef zeroext 0, i32 noundef %1625, i32 noundef %1626)
  br label %1627

1627:                                             ; preds = %1620, %1617
  %1628 = load ptr, ptr %6, align 8, !tbaa !5
  %1629 = load i32, ptr %23, align 4, !tbaa !9
  %1630 = load i32, ptr %28, align 4, !tbaa !9
  %1631 = load i32, ptr %21, align 4, !tbaa !9
  %1632 = load i32, ptr %12, align 4, !tbaa !9
  %1633 = add i32 %1631, %1632
  %1634 = load i32, ptr %21, align 4, !tbaa !9
  %1635 = load i32, ptr %12, align 4, !tbaa !9
  %1636 = add i32 %1634, %1635
  %1637 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1628, i32 noundef %1629, i32 noundef %1630, i32 noundef %1633, i8 noundef zeroext 0, i32 noundef %1636, i32 noundef %1637)
  br label %1638

1638:                                             ; preds = %1627, %1604
  br label %1639

1639:                                             ; preds = %1638, %1566
  %1640 = load i32, ptr %57, align 4, !tbaa !9
  %1641 = icmp ugt i32 %1640, 0
  br i1 %1641, label %1642, label %1647

1642:                                             ; preds = %1639
  %1643 = load ptr, ptr %6, align 8, !tbaa !5
  %1644 = load i32, ptr %21, align 4, !tbaa !9
  %1645 = load i32, ptr %12, align 4, !tbaa !9
  %1646 = add i32 %1644, %1645
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %1643, i32 noundef %1646, i32 noundef 0)
  br label %1647

1647:                                             ; preds = %1642, %1639
  %1648 = load ptr, ptr %6, align 8, !tbaa !5
  %1649 = load ptr, ptr %8, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1649, i32 0, i32 16
  %1651 = load i32, ptr %1650, align 4, !tbaa !27
  %1652 = load ptr, ptr %8, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1652, i32 0, i32 35
  %1654 = load i32, ptr %1653, align 4, !tbaa !31
  %1655 = load i32, ptr %21, align 4, !tbaa !9
  %1656 = load i32, ptr %12, align 4, !tbaa !9
  %1657 = add i32 %1655, %1656
  %1658 = load ptr, ptr %9, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1658, i32 0, i32 5
  %1660 = load i32, ptr %1659, align 4, !tbaa !34
  %1661 = load i32, ptr %55, align 4, !tbaa !9
  %1662 = load i8, ptr %54, align 1, !tbaa !22
  %1663 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1648, i32 noundef %1651, i32 noundef %1654, i32 noundef %1657, i32 noundef %1660, i32 noundef %1661, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1662, i8 noundef zeroext %1663)
  br label %1664

1664:                                             ; preds = %1647, %1561
  %1665 = load i32, ptr %19, align 4, !tbaa !9
  %1666 = icmp ugt i32 %1665, 0
  br i1 %1666, label %1667, label %1743

1667:                                             ; preds = %1664
  %1668 = load i32, ptr %45, align 4, !tbaa !9
  %1669 = icmp ugt i32 %1668, 0
  br i1 %1669, label %1670, label %1718

1670:                                             ; preds = %1667
  %1671 = load ptr, ptr %6, align 8, !tbaa !5
  %1672 = load ptr, ptr %8, align 8, !tbaa !5
  %1673 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1672, i32 0, i32 17
  %1674 = load i32, ptr %1673, align 4, !tbaa !28
  %1675 = load ptr, ptr %8, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1675, i32 0, i32 35
  %1677 = load i32, ptr %1676, align 4, !tbaa !31
  %1678 = load i32, ptr %28, align 4, !tbaa !9
  %1679 = load ptr, ptr %9, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1679, i32 0, i32 5
  %1681 = load i32, ptr %1680, align 4, !tbaa !34
  %1682 = load i32, ptr %55, align 4, !tbaa !9
  %1683 = load i8, ptr %54, align 1, !tbaa !22
  %1684 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1671, i32 noundef %1674, i32 noundef %1677, i32 noundef %1678, i32 noundef %1681, i32 noundef %1682, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %1683, i8 noundef zeroext %1684)
  %1685 = load i32, ptr %57, align 4, !tbaa !9
  %1686 = icmp ugt i32 %1685, 0
  br i1 %1686, label %1687, label %1690

1687:                                             ; preds = %1670
  %1688 = load ptr, ptr %6, align 8, !tbaa !5
  %1689 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1688, i32 noundef %1689, i32 noundef 0)
  br label %1690

1690:                                             ; preds = %1687, %1670
  %1691 = load i8, ptr %48, align 1, !tbaa !22
  %1692 = icmp ne i8 %1691, 0
  br i1 %1692, label %1693, label %1706

1693:                                             ; preds = %1690
  %1694 = load ptr, ptr %6, align 8, !tbaa !5
  %1695 = load i32, ptr %23, align 4, !tbaa !9
  %1696 = load i32, ptr %28, align 4, !tbaa !9
  %1697 = load i32, ptr %22, align 4, !tbaa !9
  %1698 = load i32, ptr %12, align 4, !tbaa !9
  %1699 = add i32 %1697, %1698
  %1700 = load i32, ptr %22, align 4, !tbaa !9
  %1701 = load i32, ptr %12, align 4, !tbaa !9
  %1702 = add i32 %1700, %1701
  %1703 = load i8, ptr %50, align 1, !tbaa !22
  %1704 = zext i8 %1703 to i32
  %1705 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1694, i32 noundef %1695, i32 noundef %1696, i32 noundef %1699, i8 noundef zeroext 0, i32 noundef %1702, i32 noundef %1704, i32 noundef %1705)
  br label %1717

1706:                                             ; preds = %1690
  %1707 = load ptr, ptr %6, align 8, !tbaa !5
  %1708 = load i32, ptr %23, align 4, !tbaa !9
  %1709 = load i32, ptr %28, align 4, !tbaa !9
  %1710 = load i32, ptr %22, align 4, !tbaa !9
  %1711 = load i32, ptr %12, align 4, !tbaa !9
  %1712 = add i32 %1710, %1711
  %1713 = load i32, ptr %22, align 4, !tbaa !9
  %1714 = load i32, ptr %12, align 4, !tbaa !9
  %1715 = add i32 %1713, %1714
  %1716 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1707, i32 noundef %1708, i32 noundef %1709, i32 noundef %1712, i8 noundef zeroext 0, i32 noundef %1715, i32 noundef %1716)
  br label %1717

1717:                                             ; preds = %1706, %1693
  br label %1718

1718:                                             ; preds = %1717, %1667
  %1719 = load i32, ptr %57, align 4, !tbaa !9
  %1720 = icmp ugt i32 %1719, 0
  br i1 %1720, label %1721, label %1726

1721:                                             ; preds = %1718
  %1722 = load ptr, ptr %6, align 8, !tbaa !5
  %1723 = load i32, ptr %22, align 4, !tbaa !9
  %1724 = load i32, ptr %12, align 4, !tbaa !9
  %1725 = add i32 %1723, %1724
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %1722, i32 noundef %1725, i32 noundef 0)
  br label %1726

1726:                                             ; preds = %1721, %1718
  %1727 = load ptr, ptr %6, align 8, !tbaa !5
  %1728 = load ptr, ptr %8, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1728, i32 0, i32 17
  %1730 = load i32, ptr %1729, align 4, !tbaa !28
  %1731 = load ptr, ptr %8, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1731, i32 0, i32 35
  %1733 = load i32, ptr %1732, align 4, !tbaa !31
  %1734 = load i32, ptr %22, align 4, !tbaa !9
  %1735 = load i32, ptr %12, align 4, !tbaa !9
  %1736 = add i32 %1734, %1735
  %1737 = load ptr, ptr %9, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1737, i32 0, i32 5
  %1739 = load i32, ptr %1738, align 4, !tbaa !34
  %1740 = load i32, ptr %55, align 4, !tbaa !9
  %1741 = load i8, ptr %54, align 1, !tbaa !22
  %1742 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1727, i32 noundef %1730, i32 noundef %1733, i32 noundef %1736, i32 noundef %1739, i32 noundef %1740, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1741, i8 noundef zeroext %1742)
  br label %1743

1743:                                             ; preds = %1726, %1664
  br label %1744

1744:                                             ; preds = %1743
  %1745 = load i32, ptr %12, align 4, !tbaa !9
  %1746 = add i32 %1745, 1
  store i32 %1746, ptr %12, align 4, !tbaa !9
  br label %1541, !llvm.loop !45

1747:                                             ; preds = %1541
  %1748 = load i32, ptr %33, align 4, !tbaa !9
  %1749 = icmp ugt i32 %1748, 1
  br i1 %1749, label %1750, label %1756

1750:                                             ; preds = %1747
  %1751 = load ptr, ptr %6, align 8, !tbaa !5
  %1752 = load ptr, ptr %7, align 8, !tbaa !5
  %1753 = load ptr, ptr %8, align 8, !tbaa !5
  %1754 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1753, i32 0, i32 24
  %1755 = load i32, ptr %1754, align 4, !tbaa !29
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1751, ptr noundef %1752, i32 noundef %1755, i32 noundef 1)
  br label %1756

1756:                                             ; preds = %1750, %1747
  br label %1757

1757:                                             ; preds = %1756, %767
  %1758 = load i32, ptr %32, align 4, !tbaa !9
  %1759 = icmp ugt i32 %1758, 0
  br i1 %1759, label %1760, label %2978

1760:                                             ; preds = %1757
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1761

1761:                                             ; preds = %2029, %1760
  %1762 = load i32, ptr %11, align 4, !tbaa !9
  %1763 = load i32, ptr %35, align 4, !tbaa !9
  %1764 = icmp ult i32 %1762, %1763
  br i1 %1764, label %1765, label %2032

1765:                                             ; preds = %1761
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1766

1766:                                             ; preds = %1984, %1765
  %1767 = load i32, ptr %12, align 4, !tbaa !9
  %1768 = load i32, ptr %32, align 4, !tbaa !9
  %1769 = icmp ult i32 %1767, %1768
  br i1 %1769, label %1770, label %1987

1770:                                             ; preds = %1766
  %1771 = load i32, ptr %20, align 4, !tbaa !9
  %1772 = icmp ugt i32 %1771, 0
  br i1 %1772, label %1773, label %1927

1773:                                             ; preds = %1770
  %1774 = load i32, ptr %41, align 4, !tbaa !9
  %1775 = icmp ugt i32 %1774, 0
  br i1 %1775, label %1779, label %1776

1776:                                             ; preds = %1773
  %1777 = load i32, ptr %43, align 4, !tbaa !9
  %1778 = icmp ugt i32 %1777, 0
  br i1 %1778, label %1779, label %1832

1779:                                             ; preds = %1776, %1773
  %1780 = load i8, ptr %48, align 1, !tbaa !22
  %1781 = icmp ne i8 %1780, 0
  br i1 %1781, label %1782, label %1808

1782:                                             ; preds = %1779
  %1783 = load ptr, ptr %6, align 8, !tbaa !5
  %1784 = load i32, ptr %21, align 4, !tbaa !9
  %1785 = load i32, ptr %12, align 4, !tbaa !9
  %1786 = add i32 %1784, %1785
  %1787 = load i32, ptr %11, align 4, !tbaa !9
  %1788 = load i32, ptr %31, align 4, !tbaa !9
  %1789 = mul i32 %1787, %1788
  %1790 = add i32 %1786, %1789
  %1791 = load i32, ptr %21, align 4, !tbaa !9
  %1792 = load i32, ptr %12, align 4, !tbaa !9
  %1793 = add i32 %1791, %1792
  %1794 = load i32, ptr %11, align 4, !tbaa !9
  %1795 = load i32, ptr %31, align 4, !tbaa !9
  %1796 = mul i32 %1794, %1795
  %1797 = add i32 %1793, %1796
  %1798 = load i32, ptr %21, align 4, !tbaa !9
  %1799 = load i32, ptr %12, align 4, !tbaa !9
  %1800 = add i32 %1798, %1799
  %1801 = load i32, ptr %11, align 4, !tbaa !9
  %1802 = load i32, ptr %31, align 4, !tbaa !9
  %1803 = mul i32 %1801, %1802
  %1804 = add i32 %1800, %1803
  %1805 = load i8, ptr %50, align 1, !tbaa !22
  %1806 = zext i8 %1805 to i32
  %1807 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1783, i32 noundef 77606915, i32 noundef %1790, i32 noundef %1797, i8 noundef zeroext 0, i32 noundef %1804, i32 noundef %1806, i32 noundef %1807)
  br label %1831

1808:                                             ; preds = %1779
  %1809 = load ptr, ptr %6, align 8, !tbaa !5
  %1810 = load i32, ptr %21, align 4, !tbaa !9
  %1811 = load i32, ptr %12, align 4, !tbaa !9
  %1812 = add i32 %1810, %1811
  %1813 = load i32, ptr %11, align 4, !tbaa !9
  %1814 = load i32, ptr %31, align 4, !tbaa !9
  %1815 = mul i32 %1813, %1814
  %1816 = add i32 %1812, %1815
  %1817 = load i32, ptr %21, align 4, !tbaa !9
  %1818 = load i32, ptr %12, align 4, !tbaa !9
  %1819 = add i32 %1817, %1818
  %1820 = load i32, ptr %11, align 4, !tbaa !9
  %1821 = load i32, ptr %31, align 4, !tbaa !9
  %1822 = mul i32 %1820, %1821
  %1823 = add i32 %1819, %1822
  %1824 = load i32, ptr %21, align 4, !tbaa !9
  %1825 = load i32, ptr %12, align 4, !tbaa !9
  %1826 = add i32 %1824, %1825
  %1827 = load i32, ptr %11, align 4, !tbaa !9
  %1828 = load i32, ptr %31, align 4, !tbaa !9
  %1829 = mul i32 %1827, %1828
  %1830 = add i32 %1826, %1829
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1809, i32 noundef 773856275, i32 noundef %1816, i32 noundef %1823, i8 noundef zeroext 0, i32 noundef %1830, i32 noundef 1)
  br label %1831

1831:                                             ; preds = %1808, %1782
  br label %1926

1832:                                             ; preds = %1776
  %1833 = load i32, ptr %42, align 4, !tbaa !9
  %1834 = icmp ugt i32 %1833, 0
  br i1 %1834, label %1838, label %1835

1835:                                             ; preds = %1832
  %1836 = load i32, ptr %44, align 4, !tbaa !9
  %1837 = icmp ugt i32 %1836, 0
  br i1 %1837, label %1838, label %1925

1838:                                             ; preds = %1835, %1832
  %1839 = load i32, ptr %12, align 4, !tbaa !9
  %1840 = load i32, ptr %32, align 4, !tbaa !9
  %1841 = sub i32 %1840, 1
  %1842 = icmp eq i32 %1839, %1841
  br i1 %1842, label %1843, label %1848

1843:                                             ; preds = %1838
  %1844 = load i32, ptr %16, align 4, !tbaa !9
  %1845 = icmp ugt i32 %1844, 0
  br i1 %1845, label %1846, label %1848

1846:                                             ; preds = %1843
  %1847 = load i32, ptr %17, align 4, !tbaa !9
  br label %1849

1848:                                             ; preds = %1843, %1838
  br label %1849

1849:                                             ; preds = %1848, %1846
  %1850 = phi i32 [ %1847, %1846 ], [ 0, %1848 ]
  store i32 %1850, ptr %18, align 4, !tbaa !9
  %1851 = load i32, ptr %56, align 4, !tbaa !9
  %1852 = icmp eq i32 %1851, 0
  br i1 %1852, label %1853, label %1855

1853:                                             ; preds = %1849
  %1854 = load i32, ptr %18, align 4, !tbaa !9
  br label %1864

1855:                                             ; preds = %1849
  %1856 = load i32, ptr %18, align 4, !tbaa !9
  %1857 = icmp ugt i32 %1856, 0
  br i1 %1857, label %1858, label %1860

1858:                                             ; preds = %1855
  %1859 = load i32, ptr %18, align 4, !tbaa !9
  br label %1862

1860:                                             ; preds = %1855
  %1861 = load i32, ptr %27, align 4, !tbaa !9
  br label %1862

1862:                                             ; preds = %1860, %1858
  %1863 = phi i32 [ %1859, %1858 ], [ %1861, %1860 ]
  br label %1864

1864:                                             ; preds = %1862, %1853
  %1865 = phi i32 [ %1854, %1853 ], [ %1863, %1862 ]
  store i32 %1865, ptr %55, align 4, !tbaa !9
  %1866 = load i32, ptr %56, align 4, !tbaa !9
  %1867 = icmp eq i32 %1866, 0
  br i1 %1867, label %1868, label %1879

1868:                                             ; preds = %1864
  %1869 = load i32, ptr %18, align 4, !tbaa !9
  %1870 = icmp ugt i32 %1869, 0
  br i1 %1870, label %1871, label %1874

1871:                                             ; preds = %1868
  %1872 = load i8, ptr %51, align 1, !tbaa !22
  %1873 = zext i8 %1872 to i32
  br label %1877

1874:                                             ; preds = %1868
  %1875 = load i8, ptr %50, align 1, !tbaa !22
  %1876 = zext i8 %1875 to i32
  br label %1877

1877:                                             ; preds = %1874, %1871
  %1878 = phi i32 [ %1873, %1871 ], [ %1876, %1874 ]
  br label %1890

1879:                                             ; preds = %1864
  %1880 = load i32, ptr %18, align 4, !tbaa !9
  %1881 = icmp ugt i32 %1880, 0
  br i1 %1881, label %1882, label %1885

1882:                                             ; preds = %1879
  %1883 = load i8, ptr %51, align 1, !tbaa !22
  %1884 = zext i8 %1883 to i32
  br label %1888

1885:                                             ; preds = %1879
  %1886 = load i8, ptr %53, align 1, !tbaa !22
  %1887 = zext i8 %1886 to i32
  br label %1888

1888:                                             ; preds = %1885, %1882
  %1889 = phi i32 [ %1884, %1882 ], [ %1887, %1885 ]
  br label %1890

1890:                                             ; preds = %1888, %1877
  %1891 = phi i32 [ %1878, %1877 ], [ %1889, %1888 ]
  %1892 = trunc i32 %1891 to i8
  store i8 %1892, ptr %54, align 1, !tbaa !22
  %1893 = load ptr, ptr %6, align 8, !tbaa !5
  %1894 = load ptr, ptr %8, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1894, i32 0, i32 1
  %1896 = load i32, ptr %1895, align 4, !tbaa !25
  %1897 = load ptr, ptr %8, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1897, i32 0, i32 35
  %1899 = load i32, ptr %1898, align 4, !tbaa !31
  %1900 = load i32, ptr %21, align 4, !tbaa !9
  %1901 = load i32, ptr %12, align 4, !tbaa !9
  %1902 = add i32 %1900, %1901
  %1903 = load i32, ptr %11, align 4, !tbaa !9
  %1904 = load i32, ptr %31, align 4, !tbaa !9
  %1905 = mul i32 %1903, %1904
  %1906 = add i32 %1902, %1905
  %1907 = load ptr, ptr %9, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1907, i32 0, i32 2
  %1909 = load i32, ptr %1908, align 4, !tbaa !19
  %1910 = load i32, ptr %55, align 4, !tbaa !9
  %1911 = load i8, ptr %54, align 1, !tbaa !22
  %1912 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1893, i32 noundef %1896, i32 noundef %1899, i32 noundef %1906, i32 noundef %1909, i32 noundef %1910, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1911, i8 noundef zeroext %1912)
  %1913 = load i32, ptr %56, align 4, !tbaa !9
  %1914 = icmp ugt i32 %1913, 0
  br i1 %1914, label %1915, label %1924

1915:                                             ; preds = %1890
  %1916 = load ptr, ptr %6, align 8, !tbaa !5
  %1917 = load i32, ptr %21, align 4, !tbaa !9
  %1918 = load i32, ptr %12, align 4, !tbaa !9
  %1919 = add i32 %1917, %1918
  %1920 = load i32, ptr %11, align 4, !tbaa !9
  %1921 = load i32, ptr %31, align 4, !tbaa !9
  %1922 = mul i32 %1920, %1921
  %1923 = add i32 %1919, %1922
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1916, i32 noundef %1923, i32 noundef 0)
  br label %1924

1924:                                             ; preds = %1915, %1890
  br label %1925

1925:                                             ; preds = %1924, %1835
  br label %1926

1926:                                             ; preds = %1925, %1831
  br label %1927

1927:                                             ; preds = %1926, %1770
  %1928 = load i32, ptr %19, align 4, !tbaa !9
  %1929 = icmp ugt i32 %1928, 0
  br i1 %1929, label %1930, label %1983

1930:                                             ; preds = %1927
  %1931 = load i8, ptr %48, align 1, !tbaa !22
  %1932 = icmp ne i8 %1931, 0
  br i1 %1932, label %1933, label %1959

1933:                                             ; preds = %1930
  %1934 = load ptr, ptr %6, align 8, !tbaa !5
  %1935 = load i32, ptr %22, align 4, !tbaa !9
  %1936 = load i32, ptr %12, align 4, !tbaa !9
  %1937 = add i32 %1935, %1936
  %1938 = load i32, ptr %11, align 4, !tbaa !9
  %1939 = load i32, ptr %31, align 4, !tbaa !9
  %1940 = mul i32 %1938, %1939
  %1941 = add i32 %1937, %1940
  %1942 = load i32, ptr %22, align 4, !tbaa !9
  %1943 = load i32, ptr %12, align 4, !tbaa !9
  %1944 = add i32 %1942, %1943
  %1945 = load i32, ptr %11, align 4, !tbaa !9
  %1946 = load i32, ptr %31, align 4, !tbaa !9
  %1947 = mul i32 %1945, %1946
  %1948 = add i32 %1944, %1947
  %1949 = load i32, ptr %22, align 4, !tbaa !9
  %1950 = load i32, ptr %12, align 4, !tbaa !9
  %1951 = add i32 %1949, %1950
  %1952 = load i32, ptr %11, align 4, !tbaa !9
  %1953 = load i32, ptr %31, align 4, !tbaa !9
  %1954 = mul i32 %1952, %1953
  %1955 = add i32 %1951, %1954
  %1956 = load i8, ptr %50, align 1, !tbaa !22
  %1957 = zext i8 %1956 to i32
  %1958 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1934, i32 noundef 77606915, i32 noundef %1941, i32 noundef %1948, i8 noundef zeroext 0, i32 noundef %1955, i32 noundef %1957, i32 noundef %1958)
  br label %1982

1959:                                             ; preds = %1930
  %1960 = load ptr, ptr %6, align 8, !tbaa !5
  %1961 = load i32, ptr %22, align 4, !tbaa !9
  %1962 = load i32, ptr %12, align 4, !tbaa !9
  %1963 = add i32 %1961, %1962
  %1964 = load i32, ptr %11, align 4, !tbaa !9
  %1965 = load i32, ptr %31, align 4, !tbaa !9
  %1966 = mul i32 %1964, %1965
  %1967 = add i32 %1963, %1966
  %1968 = load i32, ptr %22, align 4, !tbaa !9
  %1969 = load i32, ptr %12, align 4, !tbaa !9
  %1970 = add i32 %1968, %1969
  %1971 = load i32, ptr %11, align 4, !tbaa !9
  %1972 = load i32, ptr %31, align 4, !tbaa !9
  %1973 = mul i32 %1971, %1972
  %1974 = add i32 %1970, %1973
  %1975 = load i32, ptr %22, align 4, !tbaa !9
  %1976 = load i32, ptr %12, align 4, !tbaa !9
  %1977 = add i32 %1975, %1976
  %1978 = load i32, ptr %11, align 4, !tbaa !9
  %1979 = load i32, ptr %31, align 4, !tbaa !9
  %1980 = mul i32 %1978, %1979
  %1981 = add i32 %1977, %1980
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1960, i32 noundef 773856275, i32 noundef %1967, i32 noundef %1974, i8 noundef zeroext 0, i32 noundef %1981, i32 noundef 1)
  br label %1982

1982:                                             ; preds = %1959, %1933
  br label %1983

1983:                                             ; preds = %1982, %1927
  br label %1984

1984:                                             ; preds = %1983
  %1985 = load i32, ptr %12, align 4, !tbaa !9
  %1986 = add i32 %1985, 1
  store i32 %1986, ptr %12, align 4, !tbaa !9
  br label %1766, !llvm.loop !46

1987:                                             ; preds = %1766
  %1988 = load i32, ptr %42, align 4, !tbaa !9
  %1989 = icmp ugt i32 %1988, 0
  br i1 %1989, label %1993, label %1990

1990:                                             ; preds = %1987
  %1991 = load i32, ptr %44, align 4, !tbaa !9
  %1992 = icmp ugt i32 %1991, 0
  br i1 %1992, label %1993, label %2028

1993:                                             ; preds = %1990, %1987
  %1994 = load ptr, ptr %6, align 8, !tbaa !5
  %1995 = load ptr, ptr %8, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1995, i32 0, i32 1
  %1997 = load i32, ptr %1996, align 4, !tbaa !25
  %1998 = load ptr, ptr %8, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1998, i32 0, i32 35
  %2000 = load i32, ptr %1999, align 4, !tbaa !31
  %2001 = load ptr, ptr %8, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2001, i32 0, i32 1
  %2003 = load i32, ptr %2002, align 4, !tbaa !25
  %2004 = load i32, ptr %32, align 4, !tbaa !9
  %2005 = zext i32 %2004 to i64
  %2006 = load ptr, ptr %9, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2006, i32 0, i32 2
  %2008 = load i32, ptr %2007, align 4, !tbaa !19
  %2009 = zext i32 %2008 to i64
  %2010 = mul nsw i64 %2005, %2009
  %2011 = load i32, ptr %27, align 4, !tbaa !9
  %2012 = zext i32 %2011 to i64
  %2013 = mul nsw i64 %2010, %2012
  %2014 = load i32, ptr %16, align 4, !tbaa !9
  %2015 = zext i32 %2014 to i64
  %2016 = load i32, ptr %27, align 4, !tbaa !9
  %2017 = zext i32 %2016 to i64
  %2018 = load i32, ptr %17, align 4, !tbaa !9
  %2019 = zext i32 %2018 to i64
  %2020 = sub nsw i64 %2017, %2019
  %2021 = mul nsw i64 %2015, %2020
  %2022 = load ptr, ptr %9, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2022, i32 0, i32 2
  %2024 = load i32, ptr %2023, align 4, !tbaa !19
  %2025 = zext i32 %2024 to i64
  %2026 = mul nsw i64 %2021, %2025
  %2027 = sub nsw i64 %2013, %2026
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1994, i32 noundef 4097, i32 noundef %1997, i32 noundef %2000, i32 noundef %2003, i64 noundef %2027)
  br label %2028

2028:                                             ; preds = %1993, %1990
  br label %2029

2029:                                             ; preds = %2028
  %2030 = load i32, ptr %11, align 4, !tbaa !9
  %2031 = add i32 %2030, 1
  store i32 %2031, ptr %11, align 4, !tbaa !9
  br label %1761, !llvm.loop !47

2032:                                             ; preds = %1761
  %2033 = load i32, ptr %36, align 4, !tbaa !9
  %2034 = icmp uge i32 %2033, 1
  br i1 %2034, label %2035, label %2290

2035:                                             ; preds = %2032
  %2036 = load i32, ptr %36, align 4, !tbaa !9
  %2037 = icmp ugt i32 %2036, 1
  br i1 %2037, label %2038, label %2045

2038:                                             ; preds = %2035
  %2039 = load ptr, ptr %6, align 8, !tbaa !5
  %2040 = load ptr, ptr %7, align 8, !tbaa !5
  %2041 = load ptr, ptr %8, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2041, i32 0, i32 25
  %2043 = load i32, ptr %2042, align 4, !tbaa !30
  %2044 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %2039, ptr noundef %2040, i32 noundef %2043, i32 noundef %2044)
  br label %2045

2045:                                             ; preds = %2038, %2035
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2046

2046:                                             ; preds = %2277, %2045
  %2047 = load i32, ptr %11, align 4, !tbaa !9
  %2048 = load i32, ptr %35, align 4, !tbaa !9
  %2049 = icmp ult i32 %2047, %2048
  br i1 %2049, label %2050, label %2280

2050:                                             ; preds = %2046
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #4
  %2051 = load ptr, ptr %10, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2051, i32 0, i32 2
  %2053 = load i32, ptr %2052, align 1, !tbaa !24
  %2054 = load ptr, ptr %9, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2054, i32 0, i32 2
  %2056 = load i32, ptr %2055, align 4, !tbaa !19
  %2057 = mul i32 %2053, %2056
  %2058 = load i32, ptr %32, align 4, !tbaa !9
  %2059 = load ptr, ptr %9, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2059, i32 0, i32 2
  %2061 = load i32, ptr %2060, align 4, !tbaa !19
  %2062 = mul i32 %2058, %2061
  %2063 = load i32, ptr %27, align 4, !tbaa !9
  %2064 = mul i32 %2062, %2063
  %2065 = load i32, ptr %16, align 4, !tbaa !9
  %2066 = load i32, ptr %27, align 4, !tbaa !9
  %2067 = load i32, ptr %17, align 4, !tbaa !9
  %2068 = sub i32 %2066, %2067
  %2069 = mul i32 %2065, %2068
  %2070 = load ptr, ptr %9, align 8, !tbaa !5
  %2071 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2070, i32 0, i32 2
  %2072 = load i32, ptr %2071, align 4, !tbaa !19
  %2073 = mul i32 %2069, %2072
  %2074 = sub i32 %2064, %2073
  %2075 = sub i32 %2057, %2074
  store i32 %2075, ptr %64, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2076

2076:                                             ; preds = %2257, %2050
  %2077 = load i32, ptr %12, align 4, !tbaa !9
  %2078 = load i32, ptr %32, align 4, !tbaa !9
  %2079 = icmp ult i32 %2077, %2078
  br i1 %2079, label %2080, label %2260

2080:                                             ; preds = %2076
  %2081 = load i32, ptr %12, align 4, !tbaa !9
  %2082 = load i32, ptr %32, align 4, !tbaa !9
  %2083 = sub i32 %2082, 1
  %2084 = icmp eq i32 %2081, %2083
  br i1 %2084, label %2085, label %2090

2085:                                             ; preds = %2080
  %2086 = load i32, ptr %16, align 4, !tbaa !9
  %2087 = icmp ugt i32 %2086, 0
  br i1 %2087, label %2088, label %2090

2088:                                             ; preds = %2085
  %2089 = load i32, ptr %17, align 4, !tbaa !9
  br label %2091

2090:                                             ; preds = %2085, %2080
  br label %2091

2091:                                             ; preds = %2090, %2088
  %2092 = phi i32 [ %2089, %2088 ], [ 0, %2090 ]
  store i32 %2092, ptr %18, align 4, !tbaa !9
  %2093 = load i32, ptr %56, align 4, !tbaa !9
  %2094 = icmp eq i32 %2093, 0
  br i1 %2094, label %2095, label %2097

2095:                                             ; preds = %2091
  %2096 = load i32, ptr %18, align 4, !tbaa !9
  br label %2106

2097:                                             ; preds = %2091
  %2098 = load i32, ptr %18, align 4, !tbaa !9
  %2099 = icmp ugt i32 %2098, 0
  br i1 %2099, label %2100, label %2102

2100:                                             ; preds = %2097
  %2101 = load i32, ptr %18, align 4, !tbaa !9
  br label %2104

2102:                                             ; preds = %2097
  %2103 = load i32, ptr %27, align 4, !tbaa !9
  br label %2104

2104:                                             ; preds = %2102, %2100
  %2105 = phi i32 [ %2101, %2100 ], [ %2103, %2102 ]
  br label %2106

2106:                                             ; preds = %2104, %2095
  %2107 = phi i32 [ %2096, %2095 ], [ %2105, %2104 ]
  store i32 %2107, ptr %55, align 4, !tbaa !9
  %2108 = load i32, ptr %56, align 4, !tbaa !9
  %2109 = icmp eq i32 %2108, 0
  br i1 %2109, label %2110, label %2121

2110:                                             ; preds = %2106
  %2111 = load i32, ptr %18, align 4, !tbaa !9
  %2112 = icmp ugt i32 %2111, 0
  br i1 %2112, label %2113, label %2116

2113:                                             ; preds = %2110
  %2114 = load i8, ptr %51, align 1, !tbaa !22
  %2115 = zext i8 %2114 to i32
  br label %2119

2116:                                             ; preds = %2110
  %2117 = load i8, ptr %50, align 1, !tbaa !22
  %2118 = zext i8 %2117 to i32
  br label %2119

2119:                                             ; preds = %2116, %2113
  %2120 = phi i32 [ %2115, %2113 ], [ %2118, %2116 ]
  br label %2132

2121:                                             ; preds = %2106
  %2122 = load i32, ptr %18, align 4, !tbaa !9
  %2123 = icmp ugt i32 %2122, 0
  br i1 %2123, label %2124, label %2127

2124:                                             ; preds = %2121
  %2125 = load i8, ptr %51, align 1, !tbaa !22
  %2126 = zext i8 %2125 to i32
  br label %2130

2127:                                             ; preds = %2121
  %2128 = load i8, ptr %53, align 1, !tbaa !22
  %2129 = zext i8 %2128 to i32
  br label %2130

2130:                                             ; preds = %2127, %2124
  %2131 = phi i32 [ %2126, %2124 ], [ %2129, %2127 ]
  br label %2132

2132:                                             ; preds = %2130, %2119
  %2133 = phi i32 [ %2120, %2119 ], [ %2131, %2130 ]
  %2134 = trunc i32 %2133 to i8
  store i8 %2134, ptr %54, align 1, !tbaa !22
  %2135 = load ptr, ptr %6, align 8, !tbaa !5
  %2136 = load ptr, ptr %8, align 8, !tbaa !5
  %2137 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2136, i32 0, i32 1
  %2138 = load i32, ptr %2137, align 4, !tbaa !25
  %2139 = load ptr, ptr %8, align 8, !tbaa !5
  %2140 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2139, i32 0, i32 35
  %2141 = load i32, ptr %2140, align 4, !tbaa !31
  %2142 = load i32, ptr %28, align 4, !tbaa !9
  %2143 = load ptr, ptr %9, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2143, i32 0, i32 2
  %2145 = load i32, ptr %2144, align 4, !tbaa !19
  %2146 = load i32, ptr %55, align 4, !tbaa !9
  %2147 = load i8, ptr %54, align 1, !tbaa !22
  %2148 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %2135, i32 noundef %2138, i32 noundef %2141, i32 noundef %2142, i32 noundef %2145, i32 noundef %2146, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %2147, i8 noundef zeroext %2148)
  %2149 = load i32, ptr %56, align 4, !tbaa !9
  %2150 = icmp ugt i32 %2149, 0
  br i1 %2150, label %2151, label %2154

2151:                                             ; preds = %2132
  %2152 = load ptr, ptr %6, align 8, !tbaa !5
  %2153 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %2152, i32 noundef %2153, i32 noundef 0)
  br label %2154

2154:                                             ; preds = %2151, %2132
  %2155 = load i32, ptr %20, align 4, !tbaa !9
  %2156 = icmp ugt i32 %2155, 0
  br i1 %2156, label %2157, label %2223

2157:                                             ; preds = %2154
  %2158 = load i8, ptr %48, align 1, !tbaa !22
  %2159 = icmp ne i8 %2158, 0
  br i1 %2159, label %2160, label %2193

2160:                                             ; preds = %2157
  %2161 = load i32, ptr %43, align 4, !tbaa !9
  %2162 = icmp ugt i32 %2161, 0
  br i1 %2162, label %2163, label %2172

2163:                                             ; preds = %2160
  %2164 = load ptr, ptr %6, align 8, !tbaa !5
  %2165 = load i32, ptr %24, align 4, !tbaa !9
  %2166 = load i32, ptr %28, align 4, !tbaa !9
  %2167 = load i32, ptr %29, align 4, !tbaa !9
  %2168 = load i32, ptr %28, align 4, !tbaa !9
  %2169 = load i8, ptr %50, align 1, !tbaa !22
  %2170 = zext i8 %2169 to i32
  %2171 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2164, i32 noundef %2165, i32 noundef %2166, i32 noundef %2167, i8 noundef zeroext 0, i32 noundef %2168, i32 noundef %2170, i32 noundef %2171)
  br label %2172

2172:                                             ; preds = %2163, %2160
  %2173 = load ptr, ptr %6, align 8, !tbaa !5
  %2174 = load i32, ptr %23, align 4, !tbaa !9
  %2175 = load i32, ptr %28, align 4, !tbaa !9
  %2176 = load i32, ptr %21, align 4, !tbaa !9
  %2177 = load i32, ptr %12, align 4, !tbaa !9
  %2178 = add i32 %2176, %2177
  %2179 = load i32, ptr %11, align 4, !tbaa !9
  %2180 = load i32, ptr %31, align 4, !tbaa !9
  %2181 = mul i32 %2179, %2180
  %2182 = add i32 %2178, %2181
  %2183 = load i32, ptr %21, align 4, !tbaa !9
  %2184 = load i32, ptr %12, align 4, !tbaa !9
  %2185 = add i32 %2183, %2184
  %2186 = load i32, ptr %11, align 4, !tbaa !9
  %2187 = load i32, ptr %31, align 4, !tbaa !9
  %2188 = mul i32 %2186, %2187
  %2189 = add i32 %2185, %2188
  %2190 = load i8, ptr %50, align 1, !tbaa !22
  %2191 = zext i8 %2190 to i32
  %2192 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2173, i32 noundef %2174, i32 noundef %2175, i32 noundef %2182, i8 noundef zeroext 0, i32 noundef %2189, i32 noundef %2191, i32 noundef %2192)
  br label %2222

2193:                                             ; preds = %2157
  %2194 = load i32, ptr %43, align 4, !tbaa !9
  %2195 = icmp ugt i32 %2194, 0
  br i1 %2195, label %2196, label %2203

2196:                                             ; preds = %2193
  %2197 = load ptr, ptr %6, align 8, !tbaa !5
  %2198 = load i32, ptr %24, align 4, !tbaa !9
  %2199 = load i32, ptr %28, align 4, !tbaa !9
  %2200 = load i32, ptr %29, align 4, !tbaa !9
  %2201 = load i32, ptr %28, align 4, !tbaa !9
  %2202 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2197, i32 noundef %2198, i32 noundef %2199, i32 noundef %2200, i8 noundef zeroext 0, i32 noundef %2201, i32 noundef %2202)
  br label %2203

2203:                                             ; preds = %2196, %2193
  %2204 = load ptr, ptr %6, align 8, !tbaa !5
  %2205 = load i32, ptr %23, align 4, !tbaa !9
  %2206 = load i32, ptr %28, align 4, !tbaa !9
  %2207 = load i32, ptr %21, align 4, !tbaa !9
  %2208 = load i32, ptr %12, align 4, !tbaa !9
  %2209 = add i32 %2207, %2208
  %2210 = load i32, ptr %11, align 4, !tbaa !9
  %2211 = load i32, ptr %31, align 4, !tbaa !9
  %2212 = mul i32 %2210, %2211
  %2213 = add i32 %2209, %2212
  %2214 = load i32, ptr %21, align 4, !tbaa !9
  %2215 = load i32, ptr %12, align 4, !tbaa !9
  %2216 = add i32 %2214, %2215
  %2217 = load i32, ptr %11, align 4, !tbaa !9
  %2218 = load i32, ptr %31, align 4, !tbaa !9
  %2219 = mul i32 %2217, %2218
  %2220 = add i32 %2216, %2219
  %2221 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2204, i32 noundef %2205, i32 noundef %2206, i32 noundef %2213, i8 noundef zeroext 0, i32 noundef %2220, i32 noundef %2221)
  br label %2222

2222:                                             ; preds = %2203, %2172
  br label %2223

2223:                                             ; preds = %2222, %2154
  %2224 = load i32, ptr %19, align 4, !tbaa !9
  %2225 = icmp ugt i32 %2224, 0
  br i1 %2225, label %2226, label %2256

2226:                                             ; preds = %2223
  %2227 = load i8, ptr %48, align 1, !tbaa !22
  %2228 = icmp ne i8 %2227, 0
  br i1 %2228, label %2229, label %2243

2229:                                             ; preds = %2226
  %2230 = load ptr, ptr %6, align 8, !tbaa !5
  %2231 = load i32, ptr %28, align 4, !tbaa !9
  %2232 = load i32, ptr %28, align 4, !tbaa !9
  %2233 = load i32, ptr %22, align 4, !tbaa !9
  %2234 = load i32, ptr %12, align 4, !tbaa !9
  %2235 = add i32 %2233, %2234
  %2236 = load i32, ptr %11, align 4, !tbaa !9
  %2237 = load i32, ptr %31, align 4, !tbaa !9
  %2238 = mul i32 %2236, %2237
  %2239 = add i32 %2235, %2238
  %2240 = load i8, ptr %50, align 1, !tbaa !22
  %2241 = zext i8 %2240 to i32
  %2242 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2230, i32 noundef 1696596099, i32 noundef %2231, i32 noundef %2232, i8 noundef zeroext 0, i32 noundef %2239, i32 noundef %2241, i32 noundef %2242)
  br label %2255

2243:                                             ; preds = %2226
  %2244 = load ptr, ptr %6, align 8, !tbaa !5
  %2245 = load i32, ptr %28, align 4, !tbaa !9
  %2246 = load i32, ptr %28, align 4, !tbaa !9
  %2247 = load i32, ptr %22, align 4, !tbaa !9
  %2248 = load i32, ptr %12, align 4, !tbaa !9
  %2249 = add i32 %2247, %2248
  %2250 = load i32, ptr %11, align 4, !tbaa !9
  %2251 = load i32, ptr %31, align 4, !tbaa !9
  %2252 = mul i32 %2250, %2251
  %2253 = add i32 %2249, %2252
  %2254 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2244, i32 noundef 237030411, i32 noundef %2245, i32 noundef %2246, i8 noundef zeroext 0, i32 noundef %2253, i32 noundef %2254)
  br label %2255

2255:                                             ; preds = %2243, %2229
  br label %2256

2256:                                             ; preds = %2255, %2223
  br label %2257

2257:                                             ; preds = %2256
  %2258 = load i32, ptr %12, align 4, !tbaa !9
  %2259 = add i32 %2258, 1
  store i32 %2259, ptr %12, align 4, !tbaa !9
  br label %2076, !llvm.loop !48

2260:                                             ; preds = %2076
  %2261 = load i32, ptr %64, align 4, !tbaa !9
  %2262 = icmp sgt i32 %2261, 0
  br i1 %2262, label %2263, label %2276

2263:                                             ; preds = %2260
  %2264 = load ptr, ptr %6, align 8, !tbaa !5
  %2265 = load ptr, ptr %8, align 8, !tbaa !5
  %2266 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2265, i32 0, i32 1
  %2267 = load i32, ptr %2266, align 4, !tbaa !25
  %2268 = load ptr, ptr %8, align 8, !tbaa !5
  %2269 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2268, i32 0, i32 35
  %2270 = load i32, ptr %2269, align 4, !tbaa !31
  %2271 = load ptr, ptr %8, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2271, i32 0, i32 1
  %2273 = load i32, ptr %2272, align 4, !tbaa !25
  %2274 = load i32, ptr %64, align 4, !tbaa !9
  %2275 = sext i32 %2274 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2264, i32 noundef 4096, i32 noundef %2267, i32 noundef %2270, i32 noundef %2273, i64 noundef %2275)
  br label %2276

2276:                                             ; preds = %2263, %2260
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  br label %2277

2277:                                             ; preds = %2276
  %2278 = load i32, ptr %11, align 4, !tbaa !9
  %2279 = add i32 %2278, 1
  store i32 %2279, ptr %11, align 4, !tbaa !9
  br label %2046, !llvm.loop !49

2280:                                             ; preds = %2046
  %2281 = load i32, ptr %36, align 4, !tbaa !9
  %2282 = icmp ugt i32 %2281, 1
  br i1 %2282, label %2283, label %2289

2283:                                             ; preds = %2280
  %2284 = load ptr, ptr %6, align 8, !tbaa !5
  %2285 = load ptr, ptr %7, align 8, !tbaa !5
  %2286 = load ptr, ptr %8, align 8, !tbaa !5
  %2287 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2286, i32 0, i32 25
  %2288 = load i32, ptr %2287, align 4, !tbaa !30
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %2284, ptr noundef %2285, i32 noundef %2288, i32 noundef 1)
  br label %2289

2289:                                             ; preds = %2283, %2280
  br label %2290

2290:                                             ; preds = %2289, %2032
  %2291 = load i32, ptr %38, align 4, !tbaa !9
  %2292 = icmp ugt i32 %2291, 0
  br i1 %2292, label %2293, label %2529

2293:                                             ; preds = %2290
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2294

2294:                                             ; preds = %2525, %2293
  %2295 = load i32, ptr %11, align 4, !tbaa !9
  %2296 = load i32, ptr %38, align 4, !tbaa !9
  %2297 = icmp ult i32 %2295, %2296
  br i1 %2297, label %2298, label %2528

2298:                                             ; preds = %2294
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #4
  %2299 = load ptr, ptr %10, align 8, !tbaa !5
  %2300 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2299, i32 0, i32 2
  %2301 = load i32, ptr %2300, align 1, !tbaa !24
  %2302 = load ptr, ptr %9, align 8, !tbaa !5
  %2303 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2302, i32 0, i32 2
  %2304 = load i32, ptr %2303, align 4, !tbaa !19
  %2305 = mul i32 %2301, %2304
  %2306 = load i32, ptr %32, align 4, !tbaa !9
  %2307 = load ptr, ptr %9, align 8, !tbaa !5
  %2308 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2307, i32 0, i32 2
  %2309 = load i32, ptr %2308, align 4, !tbaa !19
  %2310 = mul i32 %2306, %2309
  %2311 = load i32, ptr %27, align 4, !tbaa !9
  %2312 = mul i32 %2310, %2311
  %2313 = load i32, ptr %16, align 4, !tbaa !9
  %2314 = load i32, ptr %27, align 4, !tbaa !9
  %2315 = load i32, ptr %17, align 4, !tbaa !9
  %2316 = sub i32 %2314, %2315
  %2317 = mul i32 %2313, %2316
  %2318 = load ptr, ptr %9, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2318, i32 0, i32 2
  %2320 = load i32, ptr %2319, align 4, !tbaa !19
  %2321 = mul i32 %2317, %2320
  %2322 = sub i32 %2312, %2321
  %2323 = sub i32 %2305, %2322
  store i32 %2323, ptr %65, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2324

2324:                                             ; preds = %2505, %2298
  %2325 = load i32, ptr %12, align 4, !tbaa !9
  %2326 = load i32, ptr %32, align 4, !tbaa !9
  %2327 = icmp ult i32 %2325, %2326
  br i1 %2327, label %2328, label %2508

2328:                                             ; preds = %2324
  %2329 = load i32, ptr %12, align 4, !tbaa !9
  %2330 = load i32, ptr %32, align 4, !tbaa !9
  %2331 = sub i32 %2330, 1
  %2332 = icmp eq i32 %2329, %2331
  br i1 %2332, label %2333, label %2338

2333:                                             ; preds = %2328
  %2334 = load i32, ptr %16, align 4, !tbaa !9
  %2335 = icmp ugt i32 %2334, 0
  br i1 %2335, label %2336, label %2338

2336:                                             ; preds = %2333
  %2337 = load i32, ptr %17, align 4, !tbaa !9
  br label %2339

2338:                                             ; preds = %2333, %2328
  br label %2339

2339:                                             ; preds = %2338, %2336
  %2340 = phi i32 [ %2337, %2336 ], [ 0, %2338 ]
  store i32 %2340, ptr %18, align 4, !tbaa !9
  %2341 = load i32, ptr %56, align 4, !tbaa !9
  %2342 = icmp eq i32 %2341, 0
  br i1 %2342, label %2343, label %2345

2343:                                             ; preds = %2339
  %2344 = load i32, ptr %18, align 4, !tbaa !9
  br label %2354

2345:                                             ; preds = %2339
  %2346 = load i32, ptr %18, align 4, !tbaa !9
  %2347 = icmp ugt i32 %2346, 0
  br i1 %2347, label %2348, label %2350

2348:                                             ; preds = %2345
  %2349 = load i32, ptr %18, align 4, !tbaa !9
  br label %2352

2350:                                             ; preds = %2345
  %2351 = load i32, ptr %27, align 4, !tbaa !9
  br label %2352

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

2354:                                             ; preds = %2352, %2343
  %2355 = phi i32 [ %2344, %2343 ], [ %2353, %2352 ]
  store i32 %2355, ptr %55, align 4, !tbaa !9
  %2356 = load i32, ptr %56, align 4, !tbaa !9
  %2357 = icmp eq i32 %2356, 0
  br i1 %2357, label %2358, label %2369

2358:                                             ; preds = %2354
  %2359 = load i32, ptr %18, align 4, !tbaa !9
  %2360 = icmp ugt i32 %2359, 0
  br i1 %2360, label %2361, label %2364

2361:                                             ; preds = %2358
  %2362 = load i8, ptr %51, align 1, !tbaa !22
  %2363 = zext i8 %2362 to i32
  br label %2367

2364:                                             ; preds = %2358
  %2365 = load i8, ptr %50, align 1, !tbaa !22
  %2366 = zext i8 %2365 to i32
  br label %2367

2367:                                             ; preds = %2364, %2361
  %2368 = phi i32 [ %2363, %2361 ], [ %2366, %2364 ]
  br label %2380

2369:                                             ; preds = %2354
  %2370 = load i32, ptr %18, align 4, !tbaa !9
  %2371 = icmp ugt i32 %2370, 0
  br i1 %2371, label %2372, label %2375

2372:                                             ; preds = %2369
  %2373 = load i8, ptr %51, align 1, !tbaa !22
  %2374 = zext i8 %2373 to i32
  br label %2378

2375:                                             ; preds = %2369
  %2376 = load i8, ptr %53, align 1, !tbaa !22
  %2377 = zext i8 %2376 to i32
  br label %2378

2378:                                             ; preds = %2375, %2372
  %2379 = phi i32 [ %2374, %2372 ], [ %2377, %2375 ]
  br label %2380

2380:                                             ; preds = %2378, %2367
  %2381 = phi i32 [ %2368, %2367 ], [ %2379, %2378 ]
  %2382 = trunc i32 %2381 to i8
  store i8 %2382, ptr %54, align 1, !tbaa !22
  %2383 = load ptr, ptr %6, align 8, !tbaa !5
  %2384 = load ptr, ptr %8, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2384, i32 0, i32 1
  %2386 = load i32, ptr %2385, align 4, !tbaa !25
  %2387 = load ptr, ptr %8, align 8, !tbaa !5
  %2388 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2387, i32 0, i32 35
  %2389 = load i32, ptr %2388, align 4, !tbaa !31
  %2390 = load i32, ptr %28, align 4, !tbaa !9
  %2391 = load ptr, ptr %9, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2391, i32 0, i32 2
  %2393 = load i32, ptr %2392, align 4, !tbaa !19
  %2394 = load i32, ptr %55, align 4, !tbaa !9
  %2395 = load i8, ptr %54, align 1, !tbaa !22
  %2396 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %2383, i32 noundef %2386, i32 noundef %2389, i32 noundef %2390, i32 noundef %2393, i32 noundef %2394, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %2395, i8 noundef zeroext %2396)
  %2397 = load i32, ptr %56, align 4, !tbaa !9
  %2398 = icmp ugt i32 %2397, 0
  br i1 %2398, label %2399, label %2402

2399:                                             ; preds = %2380
  %2400 = load ptr, ptr %6, align 8, !tbaa !5
  %2401 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %2400, i32 noundef %2401, i32 noundef 0)
  br label %2402

2402:                                             ; preds = %2399, %2380
  %2403 = load i32, ptr %20, align 4, !tbaa !9
  %2404 = icmp ugt i32 %2403, 0
  br i1 %2404, label %2405, label %2471

2405:                                             ; preds = %2402
  %2406 = load i8, ptr %48, align 1, !tbaa !22
  %2407 = icmp ne i8 %2406, 0
  br i1 %2407, label %2408, label %2441

2408:                                             ; preds = %2405
  %2409 = load i32, ptr %43, align 4, !tbaa !9
  %2410 = icmp ugt i32 %2409, 0
  br i1 %2410, label %2411, label %2420

2411:                                             ; preds = %2408
  %2412 = load ptr, ptr %6, align 8, !tbaa !5
  %2413 = load i32, ptr %24, align 4, !tbaa !9
  %2414 = load i32, ptr %28, align 4, !tbaa !9
  %2415 = load i32, ptr %29, align 4, !tbaa !9
  %2416 = load i32, ptr %28, align 4, !tbaa !9
  %2417 = load i8, ptr %50, align 1, !tbaa !22
  %2418 = zext i8 %2417 to i32
  %2419 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2412, i32 noundef %2413, i32 noundef %2414, i32 noundef %2415, i8 noundef zeroext 0, i32 noundef %2416, i32 noundef %2418, i32 noundef %2419)
  br label %2420

2420:                                             ; preds = %2411, %2408
  %2421 = load ptr, ptr %6, align 8, !tbaa !5
  %2422 = load i32, ptr %23, align 4, !tbaa !9
  %2423 = load i32, ptr %28, align 4, !tbaa !9
  %2424 = load i32, ptr %21, align 4, !tbaa !9
  %2425 = load i32, ptr %12, align 4, !tbaa !9
  %2426 = add i32 %2424, %2425
  %2427 = load i32, ptr %11, align 4, !tbaa !9
  %2428 = load i32, ptr %31, align 4, !tbaa !9
  %2429 = mul i32 %2427, %2428
  %2430 = add i32 %2426, %2429
  %2431 = load i32, ptr %21, align 4, !tbaa !9
  %2432 = load i32, ptr %12, align 4, !tbaa !9
  %2433 = add i32 %2431, %2432
  %2434 = load i32, ptr %11, align 4, !tbaa !9
  %2435 = load i32, ptr %31, align 4, !tbaa !9
  %2436 = mul i32 %2434, %2435
  %2437 = add i32 %2433, %2436
  %2438 = load i8, ptr %50, align 1, !tbaa !22
  %2439 = zext i8 %2438 to i32
  %2440 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2421, i32 noundef %2422, i32 noundef %2423, i32 noundef %2430, i8 noundef zeroext 0, i32 noundef %2437, i32 noundef %2439, i32 noundef %2440)
  br label %2470

2441:                                             ; preds = %2405
  %2442 = load i32, ptr %43, align 4, !tbaa !9
  %2443 = icmp ugt i32 %2442, 0
  br i1 %2443, label %2444, label %2451

2444:                                             ; preds = %2441
  %2445 = load ptr, ptr %6, align 8, !tbaa !5
  %2446 = load i32, ptr %24, align 4, !tbaa !9
  %2447 = load i32, ptr %28, align 4, !tbaa !9
  %2448 = load i32, ptr %29, align 4, !tbaa !9
  %2449 = load i32, ptr %28, align 4, !tbaa !9
  %2450 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2445, i32 noundef %2446, i32 noundef %2447, i32 noundef %2448, i8 noundef zeroext 0, i32 noundef %2449, i32 noundef %2450)
  br label %2451

2451:                                             ; preds = %2444, %2441
  %2452 = load ptr, ptr %6, align 8, !tbaa !5
  %2453 = load i32, ptr %23, align 4, !tbaa !9
  %2454 = load i32, ptr %28, align 4, !tbaa !9
  %2455 = load i32, ptr %21, align 4, !tbaa !9
  %2456 = load i32, ptr %12, align 4, !tbaa !9
  %2457 = add i32 %2455, %2456
  %2458 = load i32, ptr %11, align 4, !tbaa !9
  %2459 = load i32, ptr %31, align 4, !tbaa !9
  %2460 = mul i32 %2458, %2459
  %2461 = add i32 %2457, %2460
  %2462 = load i32, ptr %21, align 4, !tbaa !9
  %2463 = load i32, ptr %12, align 4, !tbaa !9
  %2464 = add i32 %2462, %2463
  %2465 = load i32, ptr %11, align 4, !tbaa !9
  %2466 = load i32, ptr %31, align 4, !tbaa !9
  %2467 = mul i32 %2465, %2466
  %2468 = add i32 %2464, %2467
  %2469 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2452, i32 noundef %2453, i32 noundef %2454, i32 noundef %2461, i8 noundef zeroext 0, i32 noundef %2468, i32 noundef %2469)
  br label %2470

2470:                                             ; preds = %2451, %2420
  br label %2471

2471:                                             ; preds = %2470, %2402
  %2472 = load i32, ptr %19, align 4, !tbaa !9
  %2473 = icmp ugt i32 %2472, 0
  br i1 %2473, label %2474, label %2504

2474:                                             ; preds = %2471
  %2475 = load i8, ptr %48, align 1, !tbaa !22
  %2476 = icmp ne i8 %2475, 0
  br i1 %2476, label %2477, label %2491

2477:                                             ; preds = %2474
  %2478 = load ptr, ptr %6, align 8, !tbaa !5
  %2479 = load i32, ptr %28, align 4, !tbaa !9
  %2480 = load i32, ptr %28, align 4, !tbaa !9
  %2481 = load i32, ptr %22, align 4, !tbaa !9
  %2482 = load i32, ptr %12, align 4, !tbaa !9
  %2483 = add i32 %2481, %2482
  %2484 = load i32, ptr %11, align 4, !tbaa !9
  %2485 = load i32, ptr %31, align 4, !tbaa !9
  %2486 = mul i32 %2484, %2485
  %2487 = add i32 %2483, %2486
  %2488 = load i8, ptr %50, align 1, !tbaa !22
  %2489 = zext i8 %2488 to i32
  %2490 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2478, i32 noundef 1696596099, i32 noundef %2479, i32 noundef %2480, i8 noundef zeroext 0, i32 noundef %2487, i32 noundef %2489, i32 noundef %2490)
  br label %2503

2491:                                             ; preds = %2474
  %2492 = load ptr, ptr %6, align 8, !tbaa !5
  %2493 = load i32, ptr %28, align 4, !tbaa !9
  %2494 = load i32, ptr %28, align 4, !tbaa !9
  %2495 = load i32, ptr %22, align 4, !tbaa !9
  %2496 = load i32, ptr %12, align 4, !tbaa !9
  %2497 = add i32 %2495, %2496
  %2498 = load i32, ptr %11, align 4, !tbaa !9
  %2499 = load i32, ptr %31, align 4, !tbaa !9
  %2500 = mul i32 %2498, %2499
  %2501 = add i32 %2497, %2500
  %2502 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2492, i32 noundef 237030411, i32 noundef %2493, i32 noundef %2494, i8 noundef zeroext 0, i32 noundef %2501, i32 noundef %2502)
  br label %2503

2503:                                             ; preds = %2491, %2477
  br label %2504

2504:                                             ; preds = %2503, %2471
  br label %2505

2505:                                             ; preds = %2504
  %2506 = load i32, ptr %12, align 4, !tbaa !9
  %2507 = add i32 %2506, 1
  store i32 %2507, ptr %12, align 4, !tbaa !9
  br label %2324, !llvm.loop !50

2508:                                             ; preds = %2324
  %2509 = load i32, ptr %65, align 4, !tbaa !9
  %2510 = icmp sgt i32 %2509, 0
  br i1 %2510, label %2511, label %2524

2511:                                             ; preds = %2508
  %2512 = load ptr, ptr %6, align 8, !tbaa !5
  %2513 = load ptr, ptr %8, align 8, !tbaa !5
  %2514 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2513, i32 0, i32 1
  %2515 = load i32, ptr %2514, align 4, !tbaa !25
  %2516 = load ptr, ptr %8, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2516, i32 0, i32 35
  %2518 = load i32, ptr %2517, align 4, !tbaa !31
  %2519 = load ptr, ptr %8, align 8, !tbaa !5
  %2520 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2519, i32 0, i32 1
  %2521 = load i32, ptr %2520, align 4, !tbaa !25
  %2522 = load i32, ptr %65, align 4, !tbaa !9
  %2523 = sext i32 %2522 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2512, i32 noundef 4096, i32 noundef %2515, i32 noundef %2518, i32 noundef %2521, i64 noundef %2523)
  br label %2524

2524:                                             ; preds = %2511, %2508
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  br label %2525

2525:                                             ; preds = %2524
  %2526 = load i32, ptr %11, align 4, !tbaa !9
  %2527 = add i32 %2526, 1
  store i32 %2527, ptr %11, align 4, !tbaa !9
  br label %2294, !llvm.loop !51

2528:                                             ; preds = %2294
  br label %2529

2529:                                             ; preds = %2528, %2290
  %2530 = load ptr, ptr %6, align 8, !tbaa !5
  %2531 = load ptr, ptr %8, align 8, !tbaa !5
  %2532 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2531, i32 0, i32 1
  %2533 = load i32, ptr %2532, align 4, !tbaa !25
  %2534 = load ptr, ptr %8, align 8, !tbaa !5
  %2535 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2534, i32 0, i32 35
  %2536 = load i32, ptr %2535, align 4, !tbaa !31
  %2537 = load ptr, ptr %8, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2537, i32 0, i32 1
  %2539 = load i32, ptr %2538, align 4, !tbaa !25
  %2540 = load i32, ptr %14, align 4, !tbaa !9
  %2541 = zext i32 %2540 to i64
  %2542 = load ptr, ptr %10, align 8, !tbaa !5
  %2543 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2542, i32 0, i32 2
  %2544 = load i32, ptr %2543, align 1, !tbaa !24
  %2545 = zext i32 %2544 to i64
  %2546 = mul nsw i64 %2541, %2545
  %2547 = load ptr, ptr %9, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2547, i32 0, i32 2
  %2549 = load i32, ptr %2548, align 4, !tbaa !19
  %2550 = zext i32 %2549 to i64
  %2551 = mul nsw i64 %2546, %2550
  %2552 = load i32, ptr %32, align 4, !tbaa !9
  %2553 = zext i32 %2552 to i64
  %2554 = load ptr, ptr %9, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2554, i32 0, i32 2
  %2556 = load i32, ptr %2555, align 4, !tbaa !19
  %2557 = zext i32 %2556 to i64
  %2558 = mul nsw i64 %2553, %2557
  %2559 = load i32, ptr %27, align 4, !tbaa !9
  %2560 = zext i32 %2559 to i64
  %2561 = mul nsw i64 %2558, %2560
  %2562 = sub nsw i64 %2551, %2561
  %2563 = load i32, ptr %16, align 4, !tbaa !9
  %2564 = zext i32 %2563 to i64
  %2565 = load i32, ptr %27, align 4, !tbaa !9
  %2566 = zext i32 %2565 to i64
  %2567 = load i32, ptr %17, align 4, !tbaa !9
  %2568 = zext i32 %2567 to i64
  %2569 = sub nsw i64 %2566, %2568
  %2570 = mul nsw i64 %2564, %2569
  %2571 = load ptr, ptr %9, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2571, i32 0, i32 2
  %2573 = load i32, ptr %2572, align 4, !tbaa !19
  %2574 = zext i32 %2573 to i64
  %2575 = mul nsw i64 %2570, %2574
  %2576 = sub nsw i64 %2562, %2575
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2530, i32 noundef 4097, i32 noundef %2533, i32 noundef %2536, i32 noundef %2539, i64 noundef %2576)
  store i32 1, ptr %11, align 4, !tbaa !9
  br label %2577

2577:                                             ; preds = %2677, %2529
  %2578 = load i32, ptr %11, align 4, !tbaa !9
  %2579 = load i32, ptr %35, align 4, !tbaa !9
  %2580 = icmp ult i32 %2578, %2579
  br i1 %2580, label %2581, label %2680

2581:                                             ; preds = %2577
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2582

2582:                                             ; preds = %2673, %2581
  %2583 = load i32, ptr %12, align 4, !tbaa !9
  %2584 = load i32, ptr %32, align 4, !tbaa !9
  %2585 = icmp ult i32 %2583, %2584
  br i1 %2585, label %2586, label %2676

2586:                                             ; preds = %2582
  %2587 = load i32, ptr %20, align 4, !tbaa !9
  %2588 = icmp ugt i32 %2587, 0
  br i1 %2588, label %2589, label %2629

2589:                                             ; preds = %2586
  %2590 = load i8, ptr %48, align 1, !tbaa !22
  %2591 = icmp ne i8 %2590, 0
  br i1 %2591, label %2592, label %2611

2592:                                             ; preds = %2589
  %2593 = load ptr, ptr %6, align 8, !tbaa !5
  %2594 = load i32, ptr %23, align 4, !tbaa !9
  %2595 = load i32, ptr %21, align 4, !tbaa !9
  %2596 = load i32, ptr %12, align 4, !tbaa !9
  %2597 = add i32 %2595, %2596
  %2598 = load i32, ptr %21, align 4, !tbaa !9
  %2599 = load i32, ptr %12, align 4, !tbaa !9
  %2600 = add i32 %2598, %2599
  %2601 = load i32, ptr %11, align 4, !tbaa !9
  %2602 = load i32, ptr %31, align 4, !tbaa !9
  %2603 = mul i32 %2601, %2602
  %2604 = add i32 %2600, %2603
  %2605 = load i32, ptr %21, align 4, !tbaa !9
  %2606 = load i32, ptr %12, align 4, !tbaa !9
  %2607 = add i32 %2605, %2606
  %2608 = load i8, ptr %50, align 1, !tbaa !22
  %2609 = zext i8 %2608 to i32
  %2610 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2593, i32 noundef %2594, i32 noundef %2597, i32 noundef %2604, i8 noundef zeroext 0, i32 noundef %2607, i32 noundef %2609, i32 noundef %2610)
  br label %2628

2611:                                             ; preds = %2589
  %2612 = load ptr, ptr %6, align 8, !tbaa !5
  %2613 = load i32, ptr %23, align 4, !tbaa !9
  %2614 = load i32, ptr %21, align 4, !tbaa !9
  %2615 = load i32, ptr %12, align 4, !tbaa !9
  %2616 = add i32 %2614, %2615
  %2617 = load i32, ptr %21, align 4, !tbaa !9
  %2618 = load i32, ptr %12, align 4, !tbaa !9
  %2619 = add i32 %2617, %2618
  %2620 = load i32, ptr %11, align 4, !tbaa !9
  %2621 = load i32, ptr %31, align 4, !tbaa !9
  %2622 = mul i32 %2620, %2621
  %2623 = add i32 %2619, %2622
  %2624 = load i32, ptr %21, align 4, !tbaa !9
  %2625 = load i32, ptr %12, align 4, !tbaa !9
  %2626 = add i32 %2624, %2625
  %2627 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2612, i32 noundef %2613, i32 noundef %2616, i32 noundef %2623, i8 noundef zeroext 0, i32 noundef %2626, i32 noundef %2627)
  br label %2628

2628:                                             ; preds = %2611, %2592
  br label %2629

2629:                                             ; preds = %2628, %2586
  %2630 = load i32, ptr %19, align 4, !tbaa !9
  %2631 = icmp ugt i32 %2630, 0
  br i1 %2631, label %2632, label %2672

2632:                                             ; preds = %2629
  %2633 = load i8, ptr %48, align 1, !tbaa !22
  %2634 = icmp ne i8 %2633, 0
  br i1 %2634, label %2635, label %2654

2635:                                             ; preds = %2632
  %2636 = load ptr, ptr %6, align 8, !tbaa !5
  %2637 = load i32, ptr %23, align 4, !tbaa !9
  %2638 = load i32, ptr %22, align 4, !tbaa !9
  %2639 = load i32, ptr %12, align 4, !tbaa !9
  %2640 = add i32 %2638, %2639
  %2641 = load i32, ptr %22, align 4, !tbaa !9
  %2642 = load i32, ptr %12, align 4, !tbaa !9
  %2643 = add i32 %2641, %2642
  %2644 = load i32, ptr %11, align 4, !tbaa !9
  %2645 = load i32, ptr %31, align 4, !tbaa !9
  %2646 = mul i32 %2644, %2645
  %2647 = add i32 %2643, %2646
  %2648 = load i32, ptr %22, align 4, !tbaa !9
  %2649 = load i32, ptr %12, align 4, !tbaa !9
  %2650 = add i32 %2648, %2649
  %2651 = load i8, ptr %50, align 1, !tbaa !22
  %2652 = zext i8 %2651 to i32
  %2653 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2636, i32 noundef %2637, i32 noundef %2640, i32 noundef %2647, i8 noundef zeroext 0, i32 noundef %2650, i32 noundef %2652, i32 noundef %2653)
  br label %2671

2654:                                             ; preds = %2632
  %2655 = load ptr, ptr %6, align 8, !tbaa !5
  %2656 = load i32, ptr %23, align 4, !tbaa !9
  %2657 = load i32, ptr %22, align 4, !tbaa !9
  %2658 = load i32, ptr %12, align 4, !tbaa !9
  %2659 = add i32 %2657, %2658
  %2660 = load i32, ptr %22, align 4, !tbaa !9
  %2661 = load i32, ptr %12, align 4, !tbaa !9
  %2662 = add i32 %2660, %2661
  %2663 = load i32, ptr %11, align 4, !tbaa !9
  %2664 = load i32, ptr %31, align 4, !tbaa !9
  %2665 = mul i32 %2663, %2664
  %2666 = add i32 %2662, %2665
  %2667 = load i32, ptr %22, align 4, !tbaa !9
  %2668 = load i32, ptr %12, align 4, !tbaa !9
  %2669 = add i32 %2667, %2668
  %2670 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2655, i32 noundef %2656, i32 noundef %2659, i32 noundef %2666, i8 noundef zeroext 0, i32 noundef %2669, i32 noundef %2670)
  br label %2671

2671:                                             ; preds = %2654, %2635
  br label %2672

2672:                                             ; preds = %2671, %2629
  br label %2673

2673:                                             ; preds = %2672
  %2674 = load i32, ptr %12, align 4, !tbaa !9
  %2675 = add i32 %2674, 1
  store i32 %2675, ptr %12, align 4, !tbaa !9
  br label %2582, !llvm.loop !52

2676:                                             ; preds = %2582
  br label %2677

2677:                                             ; preds = %2676
  %2678 = load i32, ptr %11, align 4, !tbaa !9
  %2679 = add i32 %2678, 1
  store i32 %2679, ptr %11, align 4, !tbaa !9
  br label %2577, !llvm.loop !53

2680:                                             ; preds = %2577
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %2681

2681:                                             ; preds = %2974, %2680
  %2682 = load i32, ptr %12, align 4, !tbaa !9
  %2683 = load i32, ptr %32, align 4, !tbaa !9
  %2684 = icmp ult i32 %2682, %2683
  br i1 %2684, label %2685, label %2977

2685:                                             ; preds = %2681
  %2686 = load i32, ptr %20, align 4, !tbaa !9
  %2687 = icmp ugt i32 %2686, 0
  br i1 %2687, label %2688, label %2840

2688:                                             ; preds = %2685
  %2689 = load i32, ptr %12, align 4, !tbaa !9
  %2690 = load i32, ptr %32, align 4, !tbaa !9
  %2691 = sub i32 %2690, 1
  %2692 = icmp eq i32 %2689, %2691
  br i1 %2692, label %2693, label %2698

2693:                                             ; preds = %2688
  %2694 = load i32, ptr %16, align 4, !tbaa !9
  %2695 = icmp ugt i32 %2694, 0
  br i1 %2695, label %2696, label %2698

2696:                                             ; preds = %2693
  %2697 = load i32, ptr %17, align 4, !tbaa !9
  br label %2699

2698:                                             ; preds = %2693, %2688
  br label %2699

2699:                                             ; preds = %2698, %2696
  %2700 = phi i32 [ %2697, %2696 ], [ 0, %2698 ]
  store i32 %2700, ptr %18, align 4, !tbaa !9
  %2701 = load i32, ptr %57, align 4, !tbaa !9
  %2702 = icmp eq i32 %2701, 0
  br i1 %2702, label %2703, label %2705

2703:                                             ; preds = %2699
  %2704 = load i32, ptr %18, align 4, !tbaa !9
  br label %2714

2705:                                             ; preds = %2699
  %2706 = load i32, ptr %18, align 4, !tbaa !9
  %2707 = icmp ugt i32 %2706, 0
  br i1 %2707, label %2708, label %2710

2708:                                             ; preds = %2705
  %2709 = load i32, ptr %18, align 4, !tbaa !9
  br label %2712

2710:                                             ; preds = %2705
  %2711 = load i32, ptr %27, align 4, !tbaa !9
  br label %2712

2712:                                             ; preds = %2710, %2708
  %2713 = phi i32 [ %2709, %2708 ], [ %2711, %2710 ]
  br label %2714

2714:                                             ; preds = %2712, %2703
  %2715 = phi i32 [ %2704, %2703 ], [ %2713, %2712 ]
  store i32 %2715, ptr %55, align 4, !tbaa !9
  %2716 = load i32, ptr %57, align 4, !tbaa !9
  %2717 = icmp eq i32 %2716, 0
  br i1 %2717, label %2718, label %2729

2718:                                             ; preds = %2714
  %2719 = load i32, ptr %18, align 4, !tbaa !9
  %2720 = icmp ugt i32 %2719, 0
  br i1 %2720, label %2721, label %2724

2721:                                             ; preds = %2718
  %2722 = load i8, ptr %52, align 1, !tbaa !22
  %2723 = zext i8 %2722 to i32
  br label %2727

2724:                                             ; preds = %2718
  %2725 = load i8, ptr %50, align 1, !tbaa !22
  %2726 = zext i8 %2725 to i32
  br label %2727

2727:                                             ; preds = %2724, %2721
  %2728 = phi i32 [ %2723, %2721 ], [ %2726, %2724 ]
  br label %2740

2729:                                             ; preds = %2714
  %2730 = load i32, ptr %18, align 4, !tbaa !9
  %2731 = icmp ugt i32 %2730, 0
  br i1 %2731, label %2732, label %2735

2732:                                             ; preds = %2729
  %2733 = load i8, ptr %52, align 1, !tbaa !22
  %2734 = zext i8 %2733 to i32
  br label %2738

2735:                                             ; preds = %2729
  %2736 = load i8, ptr %53, align 1, !tbaa !22
  %2737 = zext i8 %2736 to i32
  br label %2738

2738:                                             ; preds = %2735, %2732
  %2739 = phi i32 [ %2734, %2732 ], [ %2737, %2735 ]
  br label %2740

2740:                                             ; preds = %2738, %2727
  %2741 = phi i32 [ %2728, %2727 ], [ %2739, %2738 ]
  %2742 = trunc i32 %2741 to i8
  store i8 %2742, ptr %54, align 1, !tbaa !22
  %2743 = load i32, ptr %45, align 4, !tbaa !9
  %2744 = icmp ugt i32 %2743, 0
  br i1 %2744, label %2745, label %2815

2745:                                             ; preds = %2740
  %2746 = load ptr, ptr %6, align 8, !tbaa !5
  %2747 = load ptr, ptr %8, align 8, !tbaa !5
  %2748 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2747, i32 0, i32 16
  %2749 = load i32, ptr %2748, align 4, !tbaa !27
  %2750 = load ptr, ptr %8, align 8, !tbaa !5
  %2751 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2750, i32 0, i32 35
  %2752 = load i32, ptr %2751, align 4, !tbaa !31
  %2753 = load i32, ptr %28, align 4, !tbaa !9
  %2754 = load ptr, ptr %9, align 8, !tbaa !5
  %2755 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2754, i32 0, i32 5
  %2756 = load i32, ptr %2755, align 4, !tbaa !34
  %2757 = load i32, ptr %55, align 4, !tbaa !9
  %2758 = load i8, ptr %54, align 1, !tbaa !22
  %2759 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %2746, i32 noundef %2749, i32 noundef %2752, i32 noundef %2753, i32 noundef %2756, i32 noundef %2757, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %2758, i8 noundef zeroext %2759)
  %2760 = load i32, ptr %57, align 4, !tbaa !9
  %2761 = icmp ugt i32 %2760, 0
  br i1 %2761, label %2762, label %2765

2762:                                             ; preds = %2745
  %2763 = load ptr, ptr %6, align 8, !tbaa !5
  %2764 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %2763, i32 noundef %2764, i32 noundef 0)
  br label %2765

2765:                                             ; preds = %2762, %2745
  %2766 = load i8, ptr %48, align 1, !tbaa !22
  %2767 = icmp ne i8 %2766, 0
  br i1 %2767, label %2768, label %2793

2768:                                             ; preds = %2765
  %2769 = load i32, ptr %43, align 4, !tbaa !9
  %2770 = icmp ugt i32 %2769, 0
  br i1 %2770, label %2771, label %2780

2771:                                             ; preds = %2768
  %2772 = load ptr, ptr %6, align 8, !tbaa !5
  %2773 = load i32, ptr %24, align 4, !tbaa !9
  %2774 = load i32, ptr %28, align 4, !tbaa !9
  %2775 = load i32, ptr %29, align 4, !tbaa !9
  %2776 = load i32, ptr %28, align 4, !tbaa !9
  %2777 = load i8, ptr %50, align 1, !tbaa !22
  %2778 = zext i8 %2777 to i32
  %2779 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2772, i32 noundef %2773, i32 noundef %2774, i32 noundef %2775, i8 noundef zeroext 0, i32 noundef %2776, i32 noundef %2778, i32 noundef %2779)
  br label %2780

2780:                                             ; preds = %2771, %2768
  %2781 = load ptr, ptr %6, align 8, !tbaa !5
  %2782 = load i32, ptr %23, align 4, !tbaa !9
  %2783 = load i32, ptr %28, align 4, !tbaa !9
  %2784 = load i32, ptr %21, align 4, !tbaa !9
  %2785 = load i32, ptr %12, align 4, !tbaa !9
  %2786 = add i32 %2784, %2785
  %2787 = load i32, ptr %21, align 4, !tbaa !9
  %2788 = load i32, ptr %12, align 4, !tbaa !9
  %2789 = add i32 %2787, %2788
  %2790 = load i8, ptr %50, align 1, !tbaa !22
  %2791 = zext i8 %2790 to i32
  %2792 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2781, i32 noundef %2782, i32 noundef %2783, i32 noundef %2786, i8 noundef zeroext 0, i32 noundef %2789, i32 noundef %2791, i32 noundef %2792)
  br label %2814

2793:                                             ; preds = %2765
  %2794 = load i32, ptr %43, align 4, !tbaa !9
  %2795 = icmp ugt i32 %2794, 0
  br i1 %2795, label %2796, label %2803

2796:                                             ; preds = %2793
  %2797 = load ptr, ptr %6, align 8, !tbaa !5
  %2798 = load i32, ptr %24, align 4, !tbaa !9
  %2799 = load i32, ptr %28, align 4, !tbaa !9
  %2800 = load i32, ptr %29, align 4, !tbaa !9
  %2801 = load i32, ptr %28, align 4, !tbaa !9
  %2802 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2797, i32 noundef %2798, i32 noundef %2799, i32 noundef %2800, i8 noundef zeroext 0, i32 noundef %2801, i32 noundef %2802)
  br label %2803

2803:                                             ; preds = %2796, %2793
  %2804 = load ptr, ptr %6, align 8, !tbaa !5
  %2805 = load i32, ptr %23, align 4, !tbaa !9
  %2806 = load i32, ptr %28, align 4, !tbaa !9
  %2807 = load i32, ptr %21, align 4, !tbaa !9
  %2808 = load i32, ptr %12, align 4, !tbaa !9
  %2809 = add i32 %2807, %2808
  %2810 = load i32, ptr %21, align 4, !tbaa !9
  %2811 = load i32, ptr %12, align 4, !tbaa !9
  %2812 = add i32 %2810, %2811
  %2813 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2804, i32 noundef %2805, i32 noundef %2806, i32 noundef %2809, i8 noundef zeroext 0, i32 noundef %2812, i32 noundef %2813)
  br label %2814

2814:                                             ; preds = %2803, %2780
  br label %2815

2815:                                             ; preds = %2814, %2740
  %2816 = load i32, ptr %57, align 4, !tbaa !9
  %2817 = icmp ugt i32 %2816, 0
  br i1 %2817, label %2818, label %2823

2818:                                             ; preds = %2815
  %2819 = load ptr, ptr %6, align 8, !tbaa !5
  %2820 = load i32, ptr %21, align 4, !tbaa !9
  %2821 = load i32, ptr %12, align 4, !tbaa !9
  %2822 = add i32 %2820, %2821
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %2819, i32 noundef %2822, i32 noundef 0)
  br label %2823

2823:                                             ; preds = %2818, %2815
  %2824 = load ptr, ptr %6, align 8, !tbaa !5
  %2825 = load ptr, ptr %8, align 8, !tbaa !5
  %2826 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2825, i32 0, i32 16
  %2827 = load i32, ptr %2826, align 4, !tbaa !27
  %2828 = load ptr, ptr %8, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2828, i32 0, i32 35
  %2830 = load i32, ptr %2829, align 4, !tbaa !31
  %2831 = load i32, ptr %21, align 4, !tbaa !9
  %2832 = load i32, ptr %12, align 4, !tbaa !9
  %2833 = add i32 %2831, %2832
  %2834 = load ptr, ptr %9, align 8, !tbaa !5
  %2835 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2834, i32 0, i32 5
  %2836 = load i32, ptr %2835, align 4, !tbaa !34
  %2837 = load i32, ptr %55, align 4, !tbaa !9
  %2838 = load i8, ptr %54, align 1, !tbaa !22
  %2839 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %2824, i32 noundef %2827, i32 noundef %2830, i32 noundef %2833, i32 noundef %2836, i32 noundef %2837, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %2838, i8 noundef zeroext %2839)
  br label %2840

2840:                                             ; preds = %2823, %2685
  %2841 = load i32, ptr %19, align 4, !tbaa !9
  %2842 = icmp ugt i32 %2841, 0
  br i1 %2842, label %2843, label %2973

2843:                                             ; preds = %2840
  %2844 = load i32, ptr %12, align 4, !tbaa !9
  %2845 = load i32, ptr %32, align 4, !tbaa !9
  %2846 = sub i32 %2845, 1
  %2847 = icmp eq i32 %2844, %2846
  br i1 %2847, label %2848, label %2853

2848:                                             ; preds = %2843
  %2849 = load i32, ptr %16, align 4, !tbaa !9
  %2850 = icmp ugt i32 %2849, 0
  br i1 %2850, label %2851, label %2853

2851:                                             ; preds = %2848
  %2852 = load i32, ptr %17, align 4, !tbaa !9
  br label %2854

2853:                                             ; preds = %2848, %2843
  br label %2854

2854:                                             ; preds = %2853, %2851
  %2855 = phi i32 [ %2852, %2851 ], [ 0, %2853 ]
  store i32 %2855, ptr %18, align 4, !tbaa !9
  %2856 = load i32, ptr %57, align 4, !tbaa !9
  %2857 = icmp eq i32 %2856, 0
  br i1 %2857, label %2858, label %2860

2858:                                             ; preds = %2854
  %2859 = load i32, ptr %18, align 4, !tbaa !9
  br label %2869

2860:                                             ; preds = %2854
  %2861 = load i32, ptr %18, align 4, !tbaa !9
  %2862 = icmp ugt i32 %2861, 0
  br i1 %2862, label %2863, label %2865

2863:                                             ; preds = %2860
  %2864 = load i32, ptr %18, align 4, !tbaa !9
  br label %2867

2865:                                             ; preds = %2860
  %2866 = load i32, ptr %27, align 4, !tbaa !9
  br label %2867

2867:                                             ; preds = %2865, %2863
  %2868 = phi i32 [ %2864, %2863 ], [ %2866, %2865 ]
  br label %2869

2869:                                             ; preds = %2867, %2858
  %2870 = phi i32 [ %2859, %2858 ], [ %2868, %2867 ]
  store i32 %2870, ptr %55, align 4, !tbaa !9
  %2871 = load i32, ptr %57, align 4, !tbaa !9
  %2872 = icmp eq i32 %2871, 0
  br i1 %2872, label %2873, label %2884

2873:                                             ; preds = %2869
  %2874 = load i32, ptr %18, align 4, !tbaa !9
  %2875 = icmp ugt i32 %2874, 0
  br i1 %2875, label %2876, label %2879

2876:                                             ; preds = %2873
  %2877 = load i8, ptr %52, align 1, !tbaa !22
  %2878 = zext i8 %2877 to i32
  br label %2882

2879:                                             ; preds = %2873
  %2880 = load i8, ptr %50, align 1, !tbaa !22
  %2881 = zext i8 %2880 to i32
  br label %2882

2882:                                             ; preds = %2879, %2876
  %2883 = phi i32 [ %2878, %2876 ], [ %2881, %2879 ]
  br label %2895

2884:                                             ; preds = %2869
  %2885 = load i32, ptr %18, align 4, !tbaa !9
  %2886 = icmp ugt i32 %2885, 0
  br i1 %2886, label %2887, label %2890

2887:                                             ; preds = %2884
  %2888 = load i8, ptr %52, align 1, !tbaa !22
  %2889 = zext i8 %2888 to i32
  br label %2893

2890:                                             ; preds = %2884
  %2891 = load i8, ptr %53, align 1, !tbaa !22
  %2892 = zext i8 %2891 to i32
  br label %2893

2893:                                             ; preds = %2890, %2887
  %2894 = phi i32 [ %2889, %2887 ], [ %2892, %2890 ]
  br label %2895

2895:                                             ; preds = %2893, %2882
  %2896 = phi i32 [ %2883, %2882 ], [ %2894, %2893 ]
  %2897 = trunc i32 %2896 to i8
  store i8 %2897, ptr %54, align 1, !tbaa !22
  %2898 = load i32, ptr %45, align 4, !tbaa !9
  %2899 = icmp ugt i32 %2898, 0
  br i1 %2899, label %2900, label %2948

2900:                                             ; preds = %2895
  %2901 = load ptr, ptr %6, align 8, !tbaa !5
  %2902 = load ptr, ptr %8, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2902, i32 0, i32 17
  %2904 = load i32, ptr %2903, align 4, !tbaa !28
  %2905 = load ptr, ptr %8, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2905, i32 0, i32 35
  %2907 = load i32, ptr %2906, align 4, !tbaa !31
  %2908 = load i32, ptr %28, align 4, !tbaa !9
  %2909 = load ptr, ptr %9, align 8, !tbaa !5
  %2910 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2909, i32 0, i32 5
  %2911 = load i32, ptr %2910, align 4, !tbaa !34
  %2912 = load i32, ptr %55, align 4, !tbaa !9
  %2913 = load i8, ptr %54, align 1, !tbaa !22
  %2914 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %2901, i32 noundef %2904, i32 noundef %2907, i32 noundef %2908, i32 noundef %2911, i32 noundef %2912, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %2913, i8 noundef zeroext %2914)
  %2915 = load i32, ptr %57, align 4, !tbaa !9
  %2916 = icmp ugt i32 %2915, 0
  br i1 %2916, label %2917, label %2920

2917:                                             ; preds = %2900
  %2918 = load ptr, ptr %6, align 8, !tbaa !5
  %2919 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %2918, i32 noundef %2919, i32 noundef 0)
  br label %2920

2920:                                             ; preds = %2917, %2900
  %2921 = load i8, ptr %48, align 1, !tbaa !22
  %2922 = icmp ne i8 %2921, 0
  br i1 %2922, label %2923, label %2936

2923:                                             ; preds = %2920
  %2924 = load ptr, ptr %6, align 8, !tbaa !5
  %2925 = load i32, ptr %23, align 4, !tbaa !9
  %2926 = load i32, ptr %28, align 4, !tbaa !9
  %2927 = load i32, ptr %22, align 4, !tbaa !9
  %2928 = load i32, ptr %12, align 4, !tbaa !9
  %2929 = add i32 %2927, %2928
  %2930 = load i32, ptr %22, align 4, !tbaa !9
  %2931 = load i32, ptr %12, align 4, !tbaa !9
  %2932 = add i32 %2930, %2931
  %2933 = load i8, ptr %50, align 1, !tbaa !22
  %2934 = zext i8 %2933 to i32
  %2935 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %2924, i32 noundef %2925, i32 noundef %2926, i32 noundef %2929, i8 noundef zeroext 0, i32 noundef %2932, i32 noundef %2934, i32 noundef %2935)
  br label %2947

2936:                                             ; preds = %2920
  %2937 = load ptr, ptr %6, align 8, !tbaa !5
  %2938 = load i32, ptr %23, align 4, !tbaa !9
  %2939 = load i32, ptr %28, align 4, !tbaa !9
  %2940 = load i32, ptr %22, align 4, !tbaa !9
  %2941 = load i32, ptr %12, align 4, !tbaa !9
  %2942 = add i32 %2940, %2941
  %2943 = load i32, ptr %22, align 4, !tbaa !9
  %2944 = load i32, ptr %12, align 4, !tbaa !9
  %2945 = add i32 %2943, %2944
  %2946 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %2937, i32 noundef %2938, i32 noundef %2939, i32 noundef %2942, i8 noundef zeroext 0, i32 noundef %2945, i32 noundef %2946)
  br label %2947

2947:                                             ; preds = %2936, %2923
  br label %2948

2948:                                             ; preds = %2947, %2895
  %2949 = load i32, ptr %57, align 4, !tbaa !9
  %2950 = icmp ugt i32 %2949, 0
  br i1 %2950, label %2951, label %2956

2951:                                             ; preds = %2948
  %2952 = load ptr, ptr %6, align 8, !tbaa !5
  %2953 = load i32, ptr %22, align 4, !tbaa !9
  %2954 = load i32, ptr %12, align 4, !tbaa !9
  %2955 = add i32 %2953, %2954
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %2952, i32 noundef %2955, i32 noundef 0)
  br label %2956

2956:                                             ; preds = %2951, %2948
  %2957 = load ptr, ptr %6, align 8, !tbaa !5
  %2958 = load ptr, ptr %8, align 8, !tbaa !5
  %2959 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2958, i32 0, i32 17
  %2960 = load i32, ptr %2959, align 4, !tbaa !28
  %2961 = load ptr, ptr %8, align 8, !tbaa !5
  %2962 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2961, i32 0, i32 35
  %2963 = load i32, ptr %2962, align 4, !tbaa !31
  %2964 = load i32, ptr %22, align 4, !tbaa !9
  %2965 = load i32, ptr %12, align 4, !tbaa !9
  %2966 = add i32 %2964, %2965
  %2967 = load ptr, ptr %9, align 8, !tbaa !5
  %2968 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2967, i32 0, i32 5
  %2969 = load i32, ptr %2968, align 4, !tbaa !34
  %2970 = load i32, ptr %55, align 4, !tbaa !9
  %2971 = load i8, ptr %54, align 1, !tbaa !22
  %2972 = load i8, ptr %48, align 1, !tbaa !22
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %2957, i32 noundef %2960, i32 noundef %2963, i32 noundef %2966, i32 noundef %2969, i32 noundef %2970, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %2971, i8 noundef zeroext %2972)
  br label %2973

2973:                                             ; preds = %2956, %2840
  br label %2974

2974:                                             ; preds = %2973
  %2975 = load i32, ptr %12, align 4, !tbaa !9
  %2976 = add i32 %2975, 1
  store i32 %2976, ptr %12, align 4, !tbaa !9
  br label %2681, !llvm.loop !54

2977:                                             ; preds = %2681
  br label %2978

2978:                                             ; preds = %2977, %1757
  %2979 = load i8, ptr %49, align 1, !tbaa !22
  %2980 = icmp ne i8 %2979, 0
  br i1 %2980, label %2981, label %2983

2981:                                             ; preds = %2978
  %2982 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_sm(ptr noundef %2982, i32 noundef -721205633)
  br label %2983

2983:                                             ; preds = %2981, %2978
  store i32 0, ptr %60, align 4
  br label %2984

2984:                                             ; preds = %2983, %420, %401, %340
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  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
  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
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  %2985 = load i32, ptr %60, align 4
  switch i32 %2985, label %2987 [
    i32 0, label %2986
    i32 1, label %2986
  ]

2986:                                             ; preds = %2984, %2984
  ret void

2987:                                             ; preds = %2984
  unreachable
}

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) #1

declare i32 @printf(ptr noundef, ...) #1

declare void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_sve(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i8 noundef zeroext, i64 noundef) #1

declare void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i64 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, !10, i64 24}
!12 = !{!"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}
!13 = !{!12, !10, i64 36}
!14 = !{!12, !10, i64 0}
!15 = !{!16, !17, i64 29}
!16 = !{!"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, !17, i64 27, !17, i64 29, !7, i64 31}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !17, i64 27}
!19 = !{!12, !10, i64 8}
!20 = !{!21, !10, i64 28}
!21 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!22 = !{!7, !7, i64 0}
!23 = !{!16, !10, i64 0}
!24 = !{!16, !10, i64 8}
!25 = !{!26, !10, i64 4}
!26 = !{!"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}
!27 = !{!26, !10, i64 64}
!28 = !{!26, !10, i64 68}
!29 = !{!26, !10, i64 96}
!30 = !{!26, !10, i64 100}
!31 = !{!26, !10, i64 140}
!32 = !{!26, !10, i64 0}
!33 = !{!16, !10, i64 12}
!34 = !{!12, !10, i64 20}
!35 = !{!16, !10, i64 4}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}
!39 = distinct !{!39, !37}
!40 = distinct !{!40, !37}
!41 = distinct !{!41, !37}
!42 = distinct !{!42, !37}
!43 = distinct !{!43, !37}
!44 = distinct !{!44, !37}
!45 = distinct !{!45, !37}
!46 = distinct !{!46, !37}
!47 = distinct !{!47, !37}
!48 = distinct !{!48, !37}
!49 = distinct !{!49, !37}
!50 = distinct !{!50, !37}
!51 = distinct !{!51, !37}
!52 = distinct !{!52, !37}
!53 = distinct !{!53, !37}
!54 = distinct !{!54, !37}


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

@.str = external hidden unnamed_addr constant [91 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel = external hidden unnamed_addr constant [224 x i8], align 1
@__func__.libxsmm_generator_reduce_cols_aarch64_microkernel = external hidden unnamed_addr constant [50 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1

declare i32 @libxsmm_cpuid_vlen32(i32 noundef) local_unnamed_addr #0

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

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

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

declare void @libxsmm_aarch64_instruction_sm(ptr noundef, i32 noundef) 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_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

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

declare void @libxsmm_generator_loop_header_aarch64(ptr noundef, ptr 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_generator_vcvt_bf16f32_aarch64(ptr noundef, i32 noundef, i32 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 void @libxsmm_generator_loop_footer_aarch64(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_reduce_cols_aarch64_microkernel(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4) local_unnamed_addr #2 {
switch.edge:
  %5 = load i32, ptr %3, align 4, !tbaa !5
  %6 = tail call i32 @libxsmm_cpuid_vlen32(i32 noundef %5) #5
  %7 = getelementptr inbounds i8, ptr %4, i64 29
  %8 = load i16, ptr %7, align 1, !tbaa !10
  %switch.tableidx = add i16 %8, -18
  %9 = icmp ult i16 %switch.tableidx, 53
  %switch.cast = zext nneg i16 %switch.tableidx to i53
  %switch.downshift = lshr i53 -2251799813685235, %switch.cast
  %switch.masked = trunc i53 %switch.downshift to i1
  %10 = select i1 %9, i1 %switch.masked, i1 false
  %11 = add i16 %8, -19
  %spec.select = icmp ult i16 %11, 2
  %12 = add i16 %8, -21
  %switch1362 = icmp ult i16 %12, -3
  %13 = icmp eq i16 %8, 70
  %14 = getelementptr inbounds i8, ptr %4, i64 27
  %15 = load i16, ptr %14, align 1, !tbaa !13
  %16 = and i16 %15, 64
  %.not = icmp eq i16 %16, 0
  %17 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %18 = icmp eq i32 %17, 0
  br i1 %18, label %59, label %19

19:                                               ; preds = %switch.edge
  %20 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %21 = icmp eq i32 %20, 1
  br i1 %21, label %59, label %22

22:                                               ; preds = %19
  %23 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %24 = icmp eq i32 %23, 2
  br i1 %24, label %59, label %25

25:                                               ; preds = %22
  %26 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %27 = icmp eq i32 %26, 3
  br i1 %27, label %59, label %28

28:                                               ; preds = %25
  %29 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %30 = icmp eq i32 %29, 4
  br i1 %30, label %59, label %31

31:                                               ; preds = %28
  %32 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %33 = icmp eq i32 %32, 5
  br i1 %33, label %59, label %34

34:                                               ; preds = %31
  %35 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %36 = icmp eq i32 %35, 6
  br i1 %36, label %59, label %37

37:                                               ; preds = %34
  %38 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %39 = icmp eq i32 %38, 7
  br i1 %39, label %59, label %40

40:                                               ; preds = %37
  %41 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %42 = icmp eq i32 %41, 8
  br i1 %42, label %59, label %43

43:                                               ; preds = %40
  %44 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %45 = icmp eq i32 %44, 9
  br i1 %45, label %59, label %46

46:                                               ; preds = %43
  %47 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %48 = icmp eq i32 %47, 10
  br i1 %48, label %59, label %49

49:                                               ; preds = %46
  %50 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %51 = icmp eq i32 %50, 11
  br i1 %51, label %59, label %52

52:                                               ; preds = %49
  %53 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %54 = icmp eq i32 %53, 12
  br i1 %54, label %59, label %55

55:                                               ; preds = %52
  %56 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %57 = icmp eq i32 %56, 13
  br i1 %57, label %59, label %58

58:                                               ; preds = %55
  tail call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 251, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel) #6
  unreachable

59:                                               ; preds = %19, %25, %31, %37, %43, %49, %55, %52, %46, %40, %34, %28, %22, %switch.edge
  %60 = phi i8 [ 8, %switch.edge ], [ 4, %19 ], [ 2, %22 ], [ 2, %25 ], [ 1, %28 ], [ 1, %31 ], [ 8, %34 ], [ 8, %37 ], [ 4, %40 ], [ 4, %43 ], [ 2, %46 ], [ 2, %49 ], [ 1, %52 ], [ 1, %55 ]
  %61 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %60) #5
  %62 = getelementptr inbounds i8, ptr %3, i64 8
  %63 = load i32, ptr %62, align 4, !tbaa !14
  %64 = icmp eq i32 %63, 4
  %65 = select i1 %64, i32 5, i32 7
  %66 = getelementptr inbounds i8, ptr %0, i64 28
  %67 = load i32, ptr %66, align 4, !tbaa !15
  %68 = icmp ult i32 %67, 3000
  %69 = add i32 %67, -2201
  %spec.select1334 = icmp ult i32 %69, 799
  %70 = zext i1 %spec.select1334 to i8
  %71 = add i32 %67, -2501
  %72 = icmp ult i32 %71, 499
  %73 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %74 = icmp eq i32 %73, 2
  %75 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %76 = icmp eq i32 %75, 2
  %77 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %78 = icmp eq i32 %77, 0
  %79 = zext i1 %78 to i32
  %.01274 = lshr i32 %6, %79
  %80 = load i32, ptr %4, align 1, !tbaa !18
  %81 = getelementptr inbounds i8, ptr %4, i64 8
  %82 = load i32, ptr %81, align 1, !tbaa !19
  %83 = icmp ugt i32 %80, %82
  br i1 %83, label %84, label %89

84:                                               ; preds = %59
  %85 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !20
  %86 = icmp ugt i32 %85, 1
  %87 = load i32, ptr @libxsmm_verbosity, align 4
  %88 = select i1 %86, i32 %87, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90007, ptr noundef nonnull @__func__.libxsmm_generator_reduce_cols_aarch64_microkernel, ptr noundef nonnull @.str, i32 noundef 274, i32 noundef %88) #5
  br label %593

89:                                               ; preds = %59
  br i1 %switch1362, label %91, label %.thread

.thread:                                          ; preds = %89
  %90 = select i1 %spec.select1334, i32 1694498819, i32 237032459
  br label %106

91:                                               ; preds = %89
  switch i16 %8, label %96 [
    i16 21, label %92
    i16 69, label %94
  ]

92:                                               ; preds = %91
  %93 = select i1 %spec.select1334, i32 1694924962, i32 237040651
  br label %106

94:                                               ; preds = %91
  %95 = select i1 %spec.select1334, i32 1694990498, i32 245429259
  br label %106

96:                                               ; preds = %91
  br i1 %13, label %97, label %100

97:                                               ; preds = %96
  %98 = select i1 %spec.select1334, i32 1694924962, i32 237040651
  %99 = select i1 %spec.select1334, i32 69218307, i32 236985363
  br label %106

100:                                              ; preds = %96
  %101 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  %102 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !20
  %103 = icmp ugt i32 %102, 1
  %104 = load i32, ptr @libxsmm_verbosity, align 4
  %105 = select i1 %103, i32 %104, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_reduce_cols_aarch64_microkernel, ptr noundef nonnull @.str, i32 noundef 302, i32 noundef %105) #5
  br label %593

106:                                              ; preds = %94, %97, %92, %.thread
  %.012721368 = phi i32 [ %90, %.thread ], [ %93, %92 ], [ %95, %94 ], [ %98, %97 ]
  %.012731367 = phi i32 [ 0, %.thread ], [ 0, %92 ], [ 0, %94 ], [ %99, %97 ]
  %107 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 41, ptr %107, align 4, !tbaa !21
  %108 = getelementptr inbounds i8, ptr %2, i64 64
  store i32 42, ptr %108, align 4, !tbaa !23
  %109 = getelementptr inbounds i8, ptr %2, i64 68
  store i32 43, ptr %109, align 4, !tbaa !24
  %110 = getelementptr inbounds i8, ptr %2, i64 96
  store i32 44, ptr %110, align 4, !tbaa !25
  %111 = getelementptr inbounds i8, ptr %2, i64 100
  store i32 45, ptr %111, align 4, !tbaa !26
  %112 = getelementptr inbounds i8, ptr %2, i64 140
  store i32 46, ptr %112, align 4, !tbaa !27
  %113 = load i32, ptr %2, align 4, !tbaa !28
  tail call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %113, i32 noundef 127, i32 noundef 32, i32 noundef 41) #5
  %114 = load i32, ptr %2, align 4, !tbaa !28
  br i1 %10, label %115, label %127

115:                                              ; preds = %106
  %116 = load i32, ptr %108, align 4, !tbaa !23
  tail call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %114, i32 noundef 127, i32 noundef 80, i32 noundef %116) #5
  br i1 %spec.select, label %117, label %129

117:                                              ; preds = %115
  %118 = getelementptr inbounds i8, ptr %4, i64 12
  %119 = load i32, ptr %118, align 1, !tbaa !29
  %120 = getelementptr inbounds i8, ptr %3, i64 20
  %121 = load i32, ptr %120, align 4, !tbaa !30
  %122 = mul i32 %121, %119
  %123 = load i32, ptr %108, align 4, !tbaa !23
  %124 = load i32, ptr %112, align 4, !tbaa !27
  %125 = load i32, ptr %109, align 4, !tbaa !24
  %126 = zext i32 %122 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %123, i32 noundef %124, i32 noundef %125, i64 noundef %126) #5
  br label %129

127:                                              ; preds = %106
  %128 = load i32, ptr %109, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %114, i32 noundef 127, i32 noundef 80, i32 noundef %128) #5
  br label %129

129:                                              ; preds = %115, %117, %127
  %130 = load i32, ptr %4, align 1, !tbaa !18
  %131 = getelementptr inbounds i8, ptr %4, i64 4
  %132 = load i32, ptr %131, align 1, !tbaa !31
  %.not1296 = icmp eq i32 %.01274, 0
  br i1 %.not1296, label %133, label %134

133:                                              ; preds = %129
  tail call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, i32 noundef 341, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_aarch64_microkernel) #6
  unreachable

134:                                              ; preds = %129
  %135 = urem i32 %130, %.01274
  %136 = icmp ne i32 %135, 0
  br i1 %72, label %137, label %138

137:                                              ; preds = %134
  tail call void @libxsmm_aarch64_instruction_sm(ptr noundef nonnull %0, i32 noundef -721205377) #5
  br label %138

138:                                              ; preds = %137, %134
  br i1 %spec.select1334, label %139, label %.thread1374

139:                                              ; preds = %138
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 0, i32 noundef -1, i32 noundef 0) #5
  %brmerge.not = select i1 %136, i1 %68, i1 false
  br i1 %brmerge.not, label %140, label %148

140:                                              ; preds = %139
  %141 = load i32, ptr %62, align 4, !tbaa !14
  %142 = mul i32 %141, %135
  %143 = load i32, ptr %112, align 4, !tbaa !27
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %142, i32 noundef %143) #5
  %144 = getelementptr inbounds i8, ptr %3, i64 20
  %145 = load i32, ptr %144, align 4, !tbaa !30
  %146 = mul i32 %145, %135
  %147 = load i32, ptr %112, align 4, !tbaa !27
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 3, i32 noundef %146, i32 noundef %147) #5
  br label %148

148:                                              ; preds = %139, %140
  br i1 %13, label %149, label %158

.thread1374:                                      ; preds = %138
  br i1 %13, label %.thread1378, label %.thread1381

149:                                              ; preds = %148
  %150 = load i32, ptr %112, align 4, !tbaa !27
  %151 = load i32, ptr %62, align 4, !tbaa !14
  %152 = icmp eq i32 %151, 8
  %153 = select i1 %152, i64 9223372036854775807, i64 2147483647
  tail call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_sve(ptr noundef nonnull %0, i8 noundef zeroext 30, i32 noundef %150, i32 noundef %61, i8 noundef zeroext 0, i64 noundef %153) #5
  br label %158

.thread1378:                                      ; preds = %.thread1374
  %154 = load i32, ptr %112, align 4, !tbaa !27
  %155 = load i32, ptr %62, align 4, !tbaa !14
  %156 = icmp eq i32 %155, 8
  %157 = select i1 %156, i64 9223372036854775807, i64 2147483647
  tail call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef nonnull %0, i8 noundef zeroext 30, i32 noundef %154, i32 noundef %65, i64 noundef %157) #5
  br label %.thread1381

158:                                              ; preds = %149, %148
  %.01276 = phi i32 [ 29, %149 ], [ 30, %148 ]
  %.01275 = phi i32 [ 30, %149 ], [ 0, %148 ]
  %or.cond3 = select i1 %74, i1 true, i1 %76
  br i1 %or.cond3, label %159, label %.thread1381

159:                                              ; preds = %158
  %160 = getelementptr inbounds i8, ptr %3, i64 20
  %.pn.in = select i1 %74, ptr %62, ptr %160
  %.pn = load i32, ptr %.pn.in, align 4, !tbaa !20
  %161 = mul i32 %.pn, %.01274
  %162 = load i32, ptr %112, align 4, !tbaa !27
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %161, i32 noundef %162) #5
  br label %.thread1381

.thread1381:                                      ; preds = %.thread1378, %.thread1374, %159, %158
  %.012751389 = phi i32 [ %.01275, %159 ], [ %.01275, %158 ], [ 0, %.thread1374 ], [ 30, %.thread1378 ]
  %.012761388 = phi i32 [ %.01276, %159 ], [ %.01276, %158 ], [ 30, %.thread1374 ], [ 29, %.thread1378 ]
  %163 = add i32 %.01274, -1
  %164 = add i32 %163, %130
  %165 = udiv i32 %164, %.01274
  %or.cond5 = and i1 %spec.select, %10
  %166 = lshr i32 %.012761388, 1
  %spec.select1337 = select i1 %or.cond5, i32 %166, i32 %.012761388
  %spec.select1338 = select i1 %or.cond5, i32 %166, i32 0
  %167 = icmp ugt i32 %165, %spec.select1337
  br i1 %167, label %168, label %176

168:                                              ; preds = %.thread1381
  %169 = udiv i32 %165, %spec.select1337
  %170 = mul i32 %169, %spec.select1337
  %.recomposed = urem i32 %165, %spec.select1337
  %171 = icmp eq i32 %.recomposed, 0
  %or.cond7 = and i1 %136, %171
  br i1 %or.cond7, label %172, label %select.unfold

172:                                              ; preds = %168
  %173 = add nsw i32 %169, -1
  %174 = mul i32 %173, %spec.select1337
  %175 = sub i32 %165, %174
  br label %select.unfold

176:                                              ; preds = %.thread1381
  %not. = xor i1 %136, true
  %spec.select1462 = zext i1 %not. to i32
  %spec.select1463 = select i1 %136, i32 %165, i32 0
  br label %select.unfold

select.unfold:                                    ; preds = %176, %168, %172
  %.01280 = phi i32 [ %173, %172 ], [ %169, %168 ], [ %spec.select1462, %176 ]
  %.01279 = phi i32 [ %175, %172 ], [ %.recomposed, %168 ], [ %spec.select1463, %176 ]
  %.01278 = phi i32 [ %spec.select1337, %172 ], [ %spec.select1337, %168 ], [ %165, %176 ]
  %.lhs.trunc = trunc nuw nsw i32 %spec.select1337 to i8
  %.rhs.trunc = trunc i32 %.01278 to i8
  %177 = udiv i8 %.lhs.trunc, %.rhs.trunc
  %178 = tail call i8 @llvm.umax.i8(i8 %177, i8 1)
  %. = zext nneg i8 %178 to i32
  %179 = add i32 %132, -1
  %180 = add i32 %179, %.
  %181 = udiv i32 %180, %.
  %182 = urem i32 %132, %.
  %.not1297 = icmp eq i32 %182, 0
  %183 = add i32 %181, -1
  %184 = mul i32 %183, %.
  %185 = sub i32 %132, %184
  %.01283 = select i1 %.not1297, i32 0, i32 %185
  %.01282 = select i1 %.not1297, i32 %181, i32 %183
  %.not1298 = icmp eq i32 %.01280, 0
  br i1 %.not1298, label %381, label %186

186:                                              ; preds = %select.unfold
  %.not1299 = icmp eq i32 %.01280, 1
  br i1 %.not1299, label %189, label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %110, align 4, !tbaa !25
  tail call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %188, i32 noundef %.01280) #5
  br label %189

189:                                              ; preds = %187, %186
  %.not1537 = icmp eq i32 %.01278, 0
  %190 = select i1 %74, i32 %.01274, i32 0
  %191 = select i1 %74, i8 2, i8 0
  %192 = zext nneg i32 %.01278 to i64
  %193 = zext i32 %.01274 to i64
  %194 = mul nuw nsw i64 %192, %193
  br label %.preheader1489

.preheader1489:                                   ; preds = %189, %218
  %.01491 = phi i32 [ 0, %189 ], [ %219, %218 ]
  br i1 %.not1537, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader1489
  %195 = mul nuw nsw i32 %.01491, %.01278
  %196 = add nuw nsw i32 %195, %spec.select1338
  br label %197

197:                                              ; preds = %.lr.ph, %.thread1391
  %.012601490 = phi i32 [ 0, %.lr.ph ], [ %211, %.thread1391 ]
  br i1 %10, label %198, label %207

198:                                              ; preds = %197
  switch i16 %8, label %.thread1391 [
    i16 70, label %199
    i16 20, label %199
    i16 19, label %199
    i16 18, label %199
    i16 69, label %201
    i16 21, label %201
  ]

199:                                              ; preds = %198, %198, %198, %198
  %200 = add nuw nsw i32 %.012601490, %195
  br i1 %spec.select1334, label %.thread1398, label %.thread1394

201:                                              ; preds = %198, %198
  %202 = load i32, ptr %107, align 4, !tbaa !21
  %203 = load i32, ptr %112, align 4, !tbaa !27
  %204 = add nuw nsw i32 %.012601490, %195
  %205 = load i32, ptr %62, align 4, !tbaa !14
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %202, i32 noundef %203, i32 noundef %204, i32 noundef %205, i32 noundef %190, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %191, i8 noundef zeroext %70) #5
  br i1 %74, label %206, label %.thread1391

206:                                              ; preds = %201
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %204, i32 noundef 0) #5
  br label %.thread1391

207:                                              ; preds = %197
  br i1 %spec.select, label %208, label %.thread1391

.thread1398:                                      ; preds = %199
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %200, i32 noundef %200, i8 noundef zeroext 0, i32 noundef %200, i32 noundef 0, i32 noundef %61) #5
  br i1 %spec.select, label %.thread1401, label %.thread1391

.thread1394:                                      ; preds = %199
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %200, i32 noundef %200, i8 noundef zeroext 0, i32 noundef %200, i32 noundef 1) #5
  br i1 %spec.select, label %.thread1397, label %.thread1391

208:                                              ; preds = %207
  br i1 %spec.select1334, label %.thread1401, label %.thread1397

.thread1401:                                      ; preds = %.thread1398, %208
  %209 = add nuw nsw i32 %196, %.012601490
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %209, i32 noundef %209, i8 noundef zeroext 0, i32 noundef %209, i32 noundef 0, i32 noundef %61) #5
  br label %.thread1391

.thread1397:                                      ; preds = %.thread1394, %208
  %210 = add nuw nsw i32 %196, %.012601490
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %210, i32 noundef %210, i8 noundef zeroext 0, i32 noundef %210, i32 noundef 1) #5
  br label %.thread1391

.thread1391:                                      ; preds = %198, %206, %201, %.thread1398, %.thread1394, %207, %.thread1397, %.thread1401
  %211 = add nuw i32 %.012601490, 1
  %exitcond.not = icmp eq i32 %211, %.01278
  br i1 %exitcond.not, label %._crit_edge, label %197, !llvm.loop !32

._crit_edge:                                      ; preds = %.thread1391, %.preheader1489
  switch i16 %8, label %218 [
    i16 69, label %212
    i16 21, label %212
  ]

212:                                              ; preds = %._crit_edge, %._crit_edge
  %213 = load i32, ptr %107, align 4, !tbaa !21
  %214 = load i32, ptr %112, align 4, !tbaa !27
  %215 = load i32, ptr %62, align 4, !tbaa !14
  %216 = zext i32 %215 to i64
  %217 = mul i64 %194, %216
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %213, i32 noundef %214, i32 noundef %213, i64 noundef %217) #5
  br label %218

218:                                              ; preds = %._crit_edge, %212
  %219 = add nuw nsw i32 %.01491, 1
  %220 = icmp ult i32 %219, %.
  br i1 %220, label %.preheader1489, label %221, !llvm.loop !34

221:                                              ; preds = %218
  %.not1300 = icmp eq i32 %.01282, 0
  br i1 %.not1300, label %264, label %222

222:                                              ; preds = %221
  %.not1301 = icmp eq i32 %.01282, 1
  br i1 %.not1301, label %225, label %223

223:                                              ; preds = %222
  %224 = load i32, ptr %111, align 4, !tbaa !26
  tail call void @libxsmm_generator_loop_header_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %224, i32 noundef %.01282) #5
  br label %225

225:                                              ; preds = %223, %222
  %226 = mul i32 %.01278, %.01274
  br label %227

227:                                              ; preds = %225, %258
  %.11496 = phi i32 [ 0, %225 ], [ %259, %258 ]
  %228 = load i32, ptr %81, align 1, !tbaa !19
  %229 = load i32, ptr %62, align 4, !tbaa !14
  %230 = sub i32 %228, %226
  %231 = mul i32 %229, %230
  br i1 %.not1537, label %._crit_edge1495, label %.lr.ph1494

.lr.ph1494:                                       ; preds = %227
  %232 = mul nuw nsw i32 %.11496, %.01278
  %233 = add nuw nsw i32 %232, %spec.select1338
  br label %234

234:                                              ; preds = %.lr.ph1494, %251
  %.112611492 = phi i32 [ 0, %.lr.ph1494 ], [ %252, %251 ]
  %235 = load i32, ptr %107, align 4, !tbaa !21
  %236 = load i32, ptr %112, align 4, !tbaa !27
  %237 = load i32, ptr %62, align 4, !tbaa !14
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %235, i32 noundef %236, i32 noundef 31, i32 noundef %237, i32 noundef %190, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %191, i8 noundef zeroext %70) #5
  br i1 %74, label %238, label %239

238:                                              ; preds = %234
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %239

239:                                              ; preds = %238, %234
  br i1 %10, label %240, label %245

240:                                              ; preds = %239
  br i1 %spec.select1334, label %241, label %243

241:                                              ; preds = %240
  br i1 %13, label %.thread1406.thread, label %.thread1406

.thread1406.thread:                               ; preds = %241
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef 0, i32 noundef %61) #5
  %242 = add nuw nsw i32 %.112611492, %232
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %242, i8 noundef zeroext 0, i32 noundef %242, i32 noundef 0, i32 noundef %61) #5
  br label %251

243:                                              ; preds = %240
  br i1 %13, label %.thread1402.thread, label %.thread1402

.thread1402.thread:                               ; preds = %243
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef %65) #5
  %244 = add nuw nsw i32 %.112611492, %232
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %244, i8 noundef zeroext 0, i32 noundef %244, i32 noundef %65) #5
  br label %251

245:                                              ; preds = %239
  br i1 %spec.select, label %248, label %251

.thread1406:                                      ; preds = %241
  %246 = add nuw nsw i32 %.112611492, %232
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %246, i8 noundef zeroext 0, i32 noundef %246, i32 noundef 0, i32 noundef %61) #5
  br i1 %spec.select, label %.thread1409, label %251

.thread1402:                                      ; preds = %243
  %247 = add nuw nsw i32 %.112611492, %232
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %247, i8 noundef zeroext 0, i32 noundef %247, i32 noundef %65) #5
  br i1 %spec.select, label %.thread1405, label %251

248:                                              ; preds = %245
  br i1 %spec.select1334, label %.thread1409, label %.thread1405

.thread1409:                                      ; preds = %.thread1406, %248
  %249 = add nuw nsw i32 %233, %.112611492
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1696596099, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %249, i32 noundef 0, i32 noundef %61) #5
  br label %251

.thread1405:                                      ; preds = %.thread1402, %248
  %250 = add nuw nsw i32 %233, %.112611492
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 237030411, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %250, i32 noundef %65) #5
  br label %251

251:                                              ; preds = %.thread1402.thread, %.thread1406.thread, %.thread1406, %.thread1402, %245, %.thread1405, %.thread1409
  %252 = add nuw i32 %.112611492, 1
  %exitcond1553.not = icmp eq i32 %252, %.01278
  br i1 %exitcond1553.not, label %._crit_edge1495, label %234, !llvm.loop !35

._crit_edge1495:                                  ; preds = %251, %227
  %253 = icmp sgt i32 %231, 0
  br i1 %253, label %254, label %258

254:                                              ; preds = %._crit_edge1495
  %255 = load i32, ptr %107, align 4, !tbaa !21
  %256 = load i32, ptr %112, align 4, !tbaa !27
  %257 = zext nneg i32 %231 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %255, i32 noundef %256, i32 noundef %255, i64 noundef %257) #5
  br label %258

258:                                              ; preds = %254, %._crit_edge1495
  %259 = add nuw nsw i32 %.11496, 1
  %260 = icmp ult i32 %259, %.
  br i1 %260, label %227, label %261, !llvm.loop !36

261:                                              ; preds = %258
  br i1 %.not1301, label %264, label %262

262:                                              ; preds = %261
  %263 = load i32, ptr %111, align 4, !tbaa !26
  tail call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %263, i32 noundef 1) #5
  br label %264

264:                                              ; preds = %261, %262, %221
  %.not1302 = icmp eq i32 %.01283, 0
  br i1 %.not1302, label %.loopexit1488, label %.preheader1487

.preheader1487:                                   ; preds = %264
  %265 = mul i32 %.01278, %.01274
  br label %266

266:                                              ; preds = %.preheader1487, %297
  %.21501 = phi i32 [ 0, %.preheader1487 ], [ %298, %297 ]
  %267 = load i32, ptr %81, align 1, !tbaa !19
  %268 = load i32, ptr %62, align 4, !tbaa !14
  %269 = sub i32 %267, %265
  %270 = mul i32 %268, %269
  br i1 %.not1537, label %._crit_edge1500, label %.lr.ph1499

.lr.ph1499:                                       ; preds = %266
  %271 = mul i32 %.21501, %.01278
  %272 = add i32 %271, %spec.select1338
  br label %273

273:                                              ; preds = %.lr.ph1499, %290
  %.212621497 = phi i32 [ 0, %.lr.ph1499 ], [ %291, %290 ]
  %274 = load i32, ptr %107, align 4, !tbaa !21
  %275 = load i32, ptr %112, align 4, !tbaa !27
  %276 = load i32, ptr %62, align 4, !tbaa !14
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %274, i32 noundef %275, i32 noundef 31, i32 noundef %276, i32 noundef %190, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %191, i8 noundef zeroext %70) #5
  br i1 %74, label %277, label %278

277:                                              ; preds = %273
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %278

278:                                              ; preds = %277, %273
  br i1 %10, label %279, label %284

279:                                              ; preds = %278
  br i1 %spec.select1334, label %280, label %282

280:                                              ; preds = %279
  br i1 %13, label %.thread1414.thread, label %.thread1414

.thread1414.thread:                               ; preds = %280
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef 0, i32 noundef %61) #5
  %281 = add i32 %.212621497, %271
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %281, i8 noundef zeroext 0, i32 noundef %281, i32 noundef 0, i32 noundef %61) #5
  br label %290

282:                                              ; preds = %279
  br i1 %13, label %.thread1410.thread, label %.thread1410

.thread1410.thread:                               ; preds = %282
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef %65) #5
  %283 = add i32 %.212621497, %271
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %283, i8 noundef zeroext 0, i32 noundef %283, i32 noundef %65) #5
  br label %290

284:                                              ; preds = %278
  br i1 %spec.select, label %287, label %290

.thread1414:                                      ; preds = %280
  %285 = add i32 %.212621497, %271
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %285, i8 noundef zeroext 0, i32 noundef %285, i32 noundef 0, i32 noundef %61) #5
  br i1 %spec.select, label %.thread1417, label %290

.thread1410:                                      ; preds = %282
  %286 = add i32 %.212621497, %271
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %286, i8 noundef zeroext 0, i32 noundef %286, i32 noundef %65) #5
  br i1 %spec.select, label %.thread1413, label %290

287:                                              ; preds = %284
  br i1 %spec.select1334, label %.thread1417, label %.thread1413

.thread1417:                                      ; preds = %.thread1414, %287
  %288 = add i32 %272, %.212621497
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1696596099, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %288, i32 noundef 0, i32 noundef %61) #5
  br label %290

.thread1413:                                      ; preds = %.thread1410, %287
  %289 = add i32 %272, %.212621497
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 237030411, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %289, i32 noundef %65) #5
  br label %290

290:                                              ; preds = %.thread1410.thread, %.thread1414.thread, %.thread1414, %.thread1410, %284, %.thread1413, %.thread1417
  %291 = add nuw i32 %.212621497, 1
  %exitcond1554.not = icmp eq i32 %291, %.01278
  br i1 %exitcond1554.not, label %._crit_edge1500, label %273, !llvm.loop !37

._crit_edge1500:                                  ; preds = %290, %266
  %292 = icmp sgt i32 %270, 0
  br i1 %292, label %293, label %297

293:                                              ; preds = %._crit_edge1500
  %294 = load i32, ptr %107, align 4, !tbaa !21
  %295 = load i32, ptr %112, align 4, !tbaa !27
  %296 = zext nneg i32 %270 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %294, i32 noundef %295, i32 noundef %294, i64 noundef %296) #5
  br label %297

297:                                              ; preds = %293, %._crit_edge1500
  %298 = add nuw i32 %.21501, 1
  %exitcond1555.not = icmp eq i32 %298, %.01283
  br i1 %exitcond1555.not, label %.loopexit1488, label %266, !llvm.loop !38

.loopexit1488:                                    ; preds = %297, %264
  %299 = load i32, ptr %107, align 4, !tbaa !21
  %300 = load i32, ptr %112, align 4, !tbaa !27
  %301 = zext i32 %132 to i64
  %302 = load i32, ptr %81, align 1, !tbaa !19
  %303 = zext i32 %302 to i64
  %304 = mul nuw nsw i64 %303, %301
  %305 = load i32, ptr %62, align 4, !tbaa !14
  %306 = zext i32 %305 to i64
  %307 = sub nsw i64 %304, %194
  %308 = mul i64 %307, %306
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %299, i32 noundef %300, i32 noundef %299, i64 noundef %308) #5
  %309 = icmp ugt i8 %177, 1
  br i1 %309, label %.preheader1486.lr.ph, label %.preheader1485

.preheader1486.lr.ph:                             ; preds = %.loopexit1488
  br i1 %.not1537, label %._crit_edge1524, label %.preheader1486.lr.ph.split.us

.preheader1486.lr.ph.split.us:                    ; preds = %.preheader1486.lr.ph
  br i1 %10, label %.preheader1486.us.us, label %.preheader1486.lr.ph.split.us.split

.preheader1486.us.us:                             ; preds = %.preheader1486.lr.ph.split.us, %._crit_edge1504.split.us.us.us
  %.31508.us.us = phi i32 [ %317, %._crit_edge1504.split.us.us.us ], [ 1, %.preheader1486.lr.ph.split.us ]
  %310 = mul nuw nsw i32 %.31508.us.us, %.01278
  br i1 %spec.select1334, label %.lr.ph1503.split.us.split.us.us.us, label %.lr.ph1503.split.us.split.us1519.us

.thread1418.us.us.us:                             ; preds = %.lr.ph1503.split.us.split.us1519.us, %.thread1418.us.us.us
  %.312631502.us.us1512.us = phi i32 [ %312, %.thread1418.us.us.us ], [ 0, %.lr.ph1503.split.us.split.us1519.us ]
  %311 = add nuw nsw i32 %.312631502.us.us1512.us, %310
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %.312631502.us.us1512.us, i32 noundef %311, i8 noundef zeroext 0, i32 noundef %.312631502.us.us1512.us, i32 noundef %65) #5
  %312 = add nuw i32 %.312631502.us.us1512.us, 1
  %exitcond1558.not = icmp eq i32 %312, %.01278
  br i1 %exitcond1558.not, label %._crit_edge1504.split.us.us.us, label %.thread1418.us.us.us, !llvm.loop !39

.lr.ph1503.split.us.split.us1519.us:              ; preds = %.preheader1486.us.us
  br i1 %spec.select, label %.thread1418.us.us.us.us, label %.thread1418.us.us.us

.thread1418.us.us.us.us:                          ; preds = %.lr.ph1503.split.us.split.us1519.us, %.thread1418.us.us.us.us
  %.312631502.us.us1512.us.us = phi i32 [ %316, %.thread1418.us.us.us.us ], [ 0, %.lr.ph1503.split.us.split.us1519.us ]
  %313 = add nuw nsw i32 %.312631502.us.us1512.us.us, %310
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %.312631502.us.us1512.us.us, i32 noundef %313, i8 noundef zeroext 0, i32 noundef %.312631502.us.us1512.us.us, i32 noundef %65) #5
  %314 = add nuw nsw i32 %.312631502.us.us1512.us.us, %spec.select1338
  %315 = add nuw nsw i32 %314, %310
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %314, i32 noundef %315, i8 noundef zeroext 0, i32 noundef %314, i32 noundef %65) #5
  %316 = add nuw i32 %.312631502.us.us1512.us.us, 1
  %exitcond1559.not = icmp eq i32 %316, %.01278
  br i1 %exitcond1559.not, label %._crit_edge1504.split.us.us.us, label %.thread1418.us.us.us.us, !llvm.loop !39

._crit_edge1504.split.us.us.us:                   ; preds = %.thread1418.us.us.us, %.thread1418.us.us.us.us, %.thread1422.us.us.us.us, %.thread1422.us.us.us.us.us
  %317 = add nuw nsw i32 %.31508.us.us, 1
  %318 = icmp ult i32 %317, %.
  br i1 %318, label %.preheader1486.us.us, label %.lr.ph1523, !llvm.loop !40

.lr.ph1503.split.us.split.us.us.us:               ; preds = %.preheader1486.us.us
  br i1 %spec.select, label %.thread1422.us.us.us.us.us, label %.thread1422.us.us.us.us

.thread1422.us.us.us.us.us:                       ; preds = %.lr.ph1503.split.us.split.us.us.us, %.thread1422.us.us.us.us.us
  %.312631502.us.us.us.us.us = phi i32 [ %322, %.thread1422.us.us.us.us.us ], [ 0, %.lr.ph1503.split.us.split.us.us.us ]
  %319 = add nuw nsw i32 %.312631502.us.us.us.us.us, %310
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %.312631502.us.us.us.us.us, i32 noundef %319, i8 noundef zeroext 0, i32 noundef %.312631502.us.us.us.us.us, i32 noundef 0, i32 noundef %61) #5
  %320 = add nuw nsw i32 %.312631502.us.us.us.us.us, %spec.select1338
  %321 = add nuw nsw i32 %320, %310
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %320, i32 noundef %321, i8 noundef zeroext 0, i32 noundef %320, i32 noundef 0, i32 noundef %61) #5
  %322 = add nuw i32 %.312631502.us.us.us.us.us, 1
  %exitcond1561.not = icmp eq i32 %322, %.01278
  br i1 %exitcond1561.not, label %._crit_edge1504.split.us.us.us, label %.thread1422.us.us.us.us.us, !llvm.loop !39

.thread1422.us.us.us.us:                          ; preds = %.lr.ph1503.split.us.split.us.us.us, %.thread1422.us.us.us.us
  %.312631502.us.us.us.us = phi i32 [ %324, %.thread1422.us.us.us.us ], [ 0, %.lr.ph1503.split.us.split.us.us.us ]
  %323 = add nuw nsw i32 %.312631502.us.us.us.us, %310
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %.312631502.us.us.us.us, i32 noundef %323, i8 noundef zeroext 0, i32 noundef %.312631502.us.us.us.us, i32 noundef 0, i32 noundef %61) #5
  %324 = add nuw i32 %.312631502.us.us.us.us, 1
  %exitcond1560.not = icmp eq i32 %324, %.01278
  br i1 %exitcond1560.not, label %._crit_edge1504.split.us.us.us, label %.thread1422.us.us.us.us, !llvm.loop !39

.preheader1486.lr.ph.split.us.split:              ; preds = %.preheader1486.lr.ph.split.us
  br i1 %spec.select, label %.preheader1486.lr.ph.split.us.split.split.us, label %.lr.ph1523

.preheader1486.lr.ph.split.us.split.split.us:     ; preds = %.preheader1486.lr.ph.split.us.split
  br i1 %spec.select1334, label %.preheader1486.us.us1520.us, label %.preheader1486.us.us1520

.preheader1486.us.us1520.us:                      ; preds = %.preheader1486.lr.ph.split.us.split.split.us, %._crit_edge1504.split.split.us.split.us.us.us.us
  %.31508.us.us1521.us = phi i32 [ %329, %._crit_edge1504.split.split.us.split.us.us.us.us ], [ 1, %.preheader1486.lr.ph.split.us.split.split.us ]
  %325 = mul nuw nsw i32 %.31508.us.us1521.us, %.01278
  br label %.thread1425.us1507.us.us.us.us

.thread1425.us1507.us.us.us.us:                   ; preds = %.thread1425.us1507.us.us.us.us, %.preheader1486.us.us1520.us
  %.312631502.us1505.us.us.us.us = phi i32 [ 0, %.preheader1486.us.us1520.us ], [ %328, %.thread1425.us1507.us.us.us.us ]
  %326 = add nuw nsw i32 %.312631502.us1505.us.us.us.us, %spec.select1338
  %327 = add nuw nsw i32 %326, %325
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %326, i32 noundef %327, i8 noundef zeroext 0, i32 noundef %326, i32 noundef 0, i32 noundef %61) #5
  %328 = add nuw i32 %.312631502.us1505.us.us.us.us, 1
  %exitcond1557.not = icmp eq i32 %328, %.01278
  br i1 %exitcond1557.not, label %._crit_edge1504.split.split.us.split.us.us.us.us, label %.thread1425.us1507.us.us.us.us, !llvm.loop !39

._crit_edge1504.split.split.us.split.us.us.us.us: ; preds = %.thread1425.us1507.us.us.us.us
  %329 = add nuw nsw i32 %.31508.us.us1521.us, 1
  %330 = icmp ult i32 %329, %.
  br i1 %330, label %.preheader1486.us.us1520.us, label %.lr.ph1523, !llvm.loop !40

.preheader1486.us.us1520:                         ; preds = %.preheader1486.lr.ph.split.us.split.split.us, %._crit_edge1504.split.split.us.split.us1517.us
  %.31508.us.us1521 = phi i32 [ %335, %._crit_edge1504.split.split.us.split.us1517.us ], [ 1, %.preheader1486.lr.ph.split.us.split.split.us ]
  %331 = mul nuw nsw i32 %.31508.us.us1521, %.01278
  br label %.thread1421.us1506.us.us

.thread1421.us1506.us.us:                         ; preds = %.preheader1486.us.us1520, %.thread1421.us1506.us.us
  %.312631502.us1505.us1516.us = phi i32 [ 0, %.preheader1486.us.us1520 ], [ %334, %.thread1421.us1506.us.us ]
  %332 = add nuw nsw i32 %.312631502.us1505.us1516.us, %spec.select1338
  %333 = add nuw nsw i32 %332, %331
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %332, i32 noundef %333, i8 noundef zeroext 0, i32 noundef %332, i32 noundef %65) #5
  %334 = add nuw i32 %.312631502.us1505.us1516.us, 1
  %exitcond1556.not = icmp eq i32 %334, %.01278
  br i1 %exitcond1556.not, label %._crit_edge1504.split.split.us.split.us1517.us, label %.thread1421.us1506.us.us, !llvm.loop !39

._crit_edge1504.split.split.us.split.us1517.us:   ; preds = %.thread1421.us1506.us.us
  %335 = add nuw nsw i32 %.31508.us.us1521, 1
  %336 = icmp ult i32 %335, %.
  br i1 %336, label %.preheader1486.us.us1520, label %.lr.ph1523, !llvm.loop !40

.preheader1485:                                   ; preds = %.loopexit1488
  br i1 %.not1537, label %._crit_edge1524, label %.lr.ph1523

.lr.ph1523:                                       ; preds = %._crit_edge1504.split.split.us.split.us1517.us, %._crit_edge1504.split.split.us.split.us.us.us.us, %._crit_edge1504.split.us.us.us, %.preheader1486.lr.ph.split.us.split, %.preheader1485
  %337 = select i1 %76, i32 %.01274, i32 0
  %338 = select i1 %76, i8 2, i8 0
  %339 = getelementptr inbounds i8, ptr %3, i64 20
  br label %340

340:                                              ; preds = %.lr.ph1523, %377
  %.412641522 = phi i32 [ 0, %.lr.ph1523 ], [ %378, %377 ]
  br i1 %10, label %341, label %360

341:                                              ; preds = %340
  br i1 %.not, label %354, label %342

342:                                              ; preds = %341
  %343 = load i32, ptr %108, align 4, !tbaa !23
  %344 = load i32, ptr %112, align 4, !tbaa !27
  %345 = load i32, ptr %339, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %343, i32 noundef %344, i32 noundef 31, i32 noundef %345, i32 noundef %337, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %338, i8 noundef zeroext %70) #5
  br i1 %76, label %346, label %347

346:                                              ; preds = %342
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %347

347:                                              ; preds = %346, %342
  br i1 %spec.select1334, label %348, label %351

348:                                              ; preds = %347
  br i1 %13, label %349, label %350

349:                                              ; preds = %348
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef 0, i32 noundef %61) #5
  br label %350

350:                                              ; preds = %349, %348
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %.412641522, i8 noundef zeroext 0, i32 noundef %.412641522, i32 noundef 0, i32 noundef %61) #5
  br label %354

351:                                              ; preds = %347
  br i1 %13, label %352, label %353

352:                                              ; preds = %351
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef %65) #5
  br label %353

353:                                              ; preds = %352, %351
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %.412641522, i8 noundef zeroext 0, i32 noundef %.412641522, i32 noundef %65) #5
  br label %354

354:                                              ; preds = %350, %353, %341
  br i1 %76, label %355, label %356

355:                                              ; preds = %354
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %0, i32 noundef %.412641522, i32 noundef 0) #5
  br label %356

356:                                              ; preds = %355, %354
  %357 = load i32, ptr %108, align 4, !tbaa !23
  %358 = load i32, ptr %112, align 4, !tbaa !27
  %359 = load i32, ptr %339, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %357, i32 noundef %358, i32 noundef %.412641522, i32 noundef %359, i32 noundef %337, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %338, i8 noundef zeroext %70) #5
  br label %360

360:                                              ; preds = %356, %340
  br i1 %spec.select, label %361, label %377

361:                                              ; preds = %360
  br i1 %.not, label %371, label %362

362:                                              ; preds = %361
  %363 = load i32, ptr %109, align 4, !tbaa !24
  %364 = load i32, ptr %112, align 4, !tbaa !27
  %365 = load i32, ptr %339, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %363, i32 noundef %364, i32 noundef 31, i32 noundef %365, i32 noundef %337, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %338, i8 noundef zeroext %70) #5
  br i1 %76, label %366, label %367

366:                                              ; preds = %362
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %367

367:                                              ; preds = %366, %362
  %368 = add nuw nsw i32 %.412641522, %spec.select1338
  br i1 %spec.select1334, label %369, label %370

369:                                              ; preds = %367
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %368, i8 noundef zeroext 0, i32 noundef %368, i32 noundef 0, i32 noundef %61) #5
  br label %371

370:                                              ; preds = %367
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %368, i8 noundef zeroext 0, i32 noundef %368, i32 noundef %65) #5
  br label %371

371:                                              ; preds = %369, %370, %361
  %372 = add nuw nsw i32 %.412641522, %spec.select1338
  br i1 %76, label %373, label %._crit_edge1578

373:                                              ; preds = %371
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %0, i32 noundef %372, i32 noundef 0) #5
  br label %._crit_edge1578

._crit_edge1578:                                  ; preds = %371, %373
  %374 = load i32, ptr %109, align 4, !tbaa !24
  %375 = load i32, ptr %112, align 4, !tbaa !27
  %376 = load i32, ptr %339, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %374, i32 noundef %375, i32 noundef %372, i32 noundef %376, i32 noundef %337, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %338, i8 noundef zeroext %70) #5
  br label %377

377:                                              ; preds = %360, %._crit_edge1578
  %378 = add nuw i32 %.412641522, 1
  %exitcond1562.not = icmp eq i32 %378, %.01278
  br i1 %exitcond1562.not, label %._crit_edge1524, label %340, !llvm.loop !41

._crit_edge1524:                                  ; preds = %377, %.preheader1486.lr.ph, %.preheader1485
  br i1 %.not1299, label %381, label %379

379:                                              ; preds = %._crit_edge1524
  %380 = load i32, ptr %110, align 4, !tbaa !25
  tail call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %380, i32 noundef 1) #5
  br label %381

381:                                              ; preds = %._crit_edge1524, %379, %select.unfold
  %.not1303 = icmp eq i32 %.01279, 0
  br i1 %.not1303, label %.loopexit, label %.preheader1484

.preheader1484:                                   ; preds = %381
  %382 = add i32 %.01279, -1
  %383 = zext i32 %.01279 to i64
  %384 = zext i32 %.01274 to i64
  %385 = mul nuw i64 %383, %384
  %386 = zext i32 %135 to i64
  %.neg1327 = sub nsw i64 %386, %384
  %.neg1328 = select i1 %136, i64 %.neg1327, i64 0
  %reass.add1478 = add i64 %385, %.neg1328
  br label %.preheader1483

.preheader1483:                                   ; preds = %.preheader1484, %417
  %.41526 = phi i32 [ 0, %.preheader1484 ], [ %418, %417 ]
  %387 = mul nuw nsw i32 %.41526, %.01278
  %388 = add i32 %387, %spec.select1338
  br label %389

389:                                              ; preds = %.preheader1483, %.thread1427
  %.512651525 = phi i32 [ 0, %.preheader1483 ], [ %410, %.thread1427 ]
  br i1 %10, label %390, label %406

390:                                              ; preds = %389
  switch i16 %8, label %.thread1427 [
    i16 70, label %391
    i16 20, label %391
    i16 19, label %391
    i16 18, label %391
    i16 69, label %393
    i16 21, label %393
  ]

391:                                              ; preds = %390, %390, %390, %390
  %392 = add i32 %.512651525, %387
  br i1 %spec.select1334, label %.thread1434, label %.thread1430

393:                                              ; preds = %390, %390
  %394 = icmp eq i32 %.512651525, %382
  %395 = select i1 %394, i32 %135, i32 0
  %.not1330 = icmp eq i32 %395, 0
  %396 = and i1 %74, %.not1330
  %397 = select i1 %396, i32 %.01274, i32 %395
  %.not1332 = icmp ne i32 %395, 0
  %398 = zext i1 %.not1332 to i8
  %399 = select i1 %.not1330, i8 2, i8 1
  %400 = select i1 %74, i8 %399, i8 %398
  %401 = load i32, ptr %107, align 4, !tbaa !21
  %402 = load i32, ptr %112, align 4, !tbaa !27
  %403 = add i32 %.512651525, %387
  %404 = load i32, ptr %62, align 4, !tbaa !14
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %401, i32 noundef %402, i32 noundef %403, i32 noundef %404, i32 noundef %397, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %400, i8 noundef zeroext %70) #5
  br i1 %74, label %405, label %.thread1427

405:                                              ; preds = %393
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %403, i32 noundef 0) #5
  br label %.thread1427

406:                                              ; preds = %389
  br i1 %spec.select, label %407, label %.thread1427

.thread1434:                                      ; preds = %391
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %392, i32 noundef %392, i8 noundef zeroext 0, i32 noundef %392, i32 noundef 0, i32 noundef %61) #5
  br i1 %spec.select, label %.thread1437, label %.thread1427

.thread1430:                                      ; preds = %391
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %392, i32 noundef %392, i8 noundef zeroext 0, i32 noundef %392, i32 noundef 1) #5
  br i1 %spec.select, label %.thread1433, label %.thread1427

407:                                              ; preds = %406
  br i1 %spec.select1334, label %.thread1437, label %.thread1433

.thread1437:                                      ; preds = %.thread1434, %407
  %408 = add i32 %388, %.512651525
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %408, i32 noundef %408, i8 noundef zeroext 0, i32 noundef %408, i32 noundef 0, i32 noundef %61) #5
  br label %.thread1427

.thread1433:                                      ; preds = %.thread1430, %407
  %409 = add i32 %388, %.512651525
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %409, i32 noundef %409, i8 noundef zeroext 0, i32 noundef %409, i32 noundef 1) #5
  br label %.thread1427

.thread1427:                                      ; preds = %390, %405, %393, %.thread1434, %.thread1430, %406, %.thread1433, %.thread1437
  %410 = add nuw i32 %.512651525, 1
  %exitcond1563.not = icmp eq i32 %410, %.01279
  br i1 %exitcond1563.not, label %411, label %389, !llvm.loop !42

411:                                              ; preds = %.thread1427
  switch i16 %8, label %417 [
    i16 69, label %412
    i16 21, label %412
  ]

412:                                              ; preds = %411, %411
  %413 = load i32, ptr %107, align 4, !tbaa !21
  %414 = load i32, ptr %112, align 4, !tbaa !27
  %415 = load i32, ptr %62, align 4, !tbaa !14
  %416 = zext i32 %415 to i64
  %reass.mul1479 = mul i64 %reass.add1478, %416
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %413, i32 noundef %414, i32 noundef %413, i64 noundef %reass.mul1479) #5
  br label %417

417:                                              ; preds = %411, %412
  %418 = add nuw nsw i32 %.41526, 1
  %419 = icmp ult i32 %418, %.
  br i1 %419, label %.preheader1483, label %420, !llvm.loop !43

420:                                              ; preds = %417
  %.not1304 = icmp eq i32 %.01282, 0
  br i1 %.not1304, label %469, label %421

421:                                              ; preds = %420
  %.not1305 = icmp eq i32 %.01282, 1
  br i1 %.not1305, label %424, label %422

422:                                              ; preds = %421
  %423 = load i32, ptr %111, align 4, !tbaa !26
  tail call void @libxsmm_generator_loop_header_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %423, i32 noundef %.01282) #5
  br label %424

424:                                              ; preds = %422, %421
  %.neg1321.neg = sub i32 %.01274, %135
  %.neg1322.neg = select i1 %136, i32 %.neg1321.neg, i32 0
  %425 = mul i32 %.01279, %.01274
  br label %426

426:                                              ; preds = %424, %463
  %.51528 = phi i32 [ 0, %424 ], [ %464, %463 ]
  %427 = load i32, ptr %81, align 1, !tbaa !19
  %428 = load i32, ptr %62, align 4, !tbaa !14
  %reass.add = add i32 %.neg1322.neg, %427
  %reass.add1467 = sub i32 %reass.add, %425
  %429 = mul nuw nsw i32 %.51528, %.01278
  %430 = add i32 %429, %spec.select1338
  br label %431

431:                                              ; preds = %426, %455
  %.612661527 = phi i32 [ 0, %426 ], [ %456, %455 ]
  %432 = icmp eq i32 %.612661527, %382
  %433 = select i1 %432, i32 %135, i32 0
  %.not1324 = icmp eq i32 %433, 0
  %434 = and i1 %74, %.not1324
  %435 = select i1 %434, i32 %.01274, i32 %433
  %.not1326 = icmp ne i32 %433, 0
  %436 = zext i1 %.not1326 to i8
  %437 = select i1 %.not1324, i8 2, i8 1
  %438 = select i1 %74, i8 %437, i8 %436
  %439 = load i32, ptr %107, align 4, !tbaa !21
  %440 = load i32, ptr %112, align 4, !tbaa !27
  %441 = load i32, ptr %62, align 4, !tbaa !14
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %439, i32 noundef %440, i32 noundef 31, i32 noundef %441, i32 noundef %435, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %438, i8 noundef zeroext %70) #5
  br i1 %74, label %442, label %443

442:                                              ; preds = %431
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %443

443:                                              ; preds = %442, %431
  br i1 %10, label %444, label %449

444:                                              ; preds = %443
  br i1 %spec.select1334, label %445, label %447

445:                                              ; preds = %444
  br i1 %13, label %.thread1442.thread, label %.thread1442

.thread1442.thread:                               ; preds = %445
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef 0, i32 noundef %61) #5
  %446 = add i32 %.612661527, %429
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %446, i8 noundef zeroext 0, i32 noundef %446, i32 noundef 0, i32 noundef %61) #5
  br label %455

447:                                              ; preds = %444
  br i1 %13, label %.thread1438.thread, label %.thread1438

.thread1438.thread:                               ; preds = %447
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef %65) #5
  %448 = add i32 %.612661527, %429
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %448, i8 noundef zeroext 0, i32 noundef %448, i32 noundef %65) #5
  br label %455

449:                                              ; preds = %443
  br i1 %spec.select, label %452, label %455

.thread1442:                                      ; preds = %445
  %450 = add i32 %.612661527, %429
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %450, i8 noundef zeroext 0, i32 noundef %450, i32 noundef 0, i32 noundef %61) #5
  br i1 %spec.select, label %.thread1445, label %455

.thread1438:                                      ; preds = %447
  %451 = add i32 %.612661527, %429
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %451, i8 noundef zeroext 0, i32 noundef %451, i32 noundef %65) #5
  br i1 %spec.select, label %.thread1441, label %455

452:                                              ; preds = %449
  br i1 %spec.select1334, label %.thread1445, label %.thread1441

.thread1445:                                      ; preds = %.thread1442, %452
  %453 = add i32 %430, %.612661527
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1696596099, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %453, i32 noundef 0, i32 noundef %61) #5
  br label %455

.thread1441:                                      ; preds = %.thread1438, %452
  %454 = add i32 %430, %.612661527
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 237030411, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %454, i32 noundef %65) #5
  br label %455

455:                                              ; preds = %.thread1438.thread, %.thread1442.thread, %.thread1442, %.thread1438, %449, %.thread1441, %.thread1445
  %456 = add nuw i32 %.612661527, 1
  %exitcond1564.not = icmp eq i32 %456, %.01279
  br i1 %exitcond1564.not, label %457, label %431, !llvm.loop !44

457:                                              ; preds = %455
  %reass.mul = mul i32 %reass.add1467, %428
  %458 = icmp sgt i32 %reass.mul, 0
  br i1 %458, label %459, label %463

459:                                              ; preds = %457
  %460 = load i32, ptr %107, align 4, !tbaa !21
  %461 = load i32, ptr %112, align 4, !tbaa !27
  %462 = zext nneg i32 %reass.mul to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %460, i32 noundef %461, i32 noundef %460, i64 noundef %462) #5
  br label %463

463:                                              ; preds = %459, %457
  %464 = add nuw nsw i32 %.51528, 1
  %465 = icmp ult i32 %464, %.
  br i1 %465, label %426, label %466, !llvm.loop !45

466:                                              ; preds = %463
  br i1 %.not1305, label %469, label %467

467:                                              ; preds = %466
  %468 = load i32, ptr %111, align 4, !tbaa !26
  tail call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %468, i32 noundef 1) #5
  br label %469

469:                                              ; preds = %466, %467, %420
  %.not1306 = icmp eq i32 %.01283, 0
  br i1 %.not1306, label %.loopexit1482, label %.preheader1481

.preheader1481:                                   ; preds = %469
  %.neg1315.neg = sub i32 %.01274, %135
  %.neg1316.neg = select i1 %136, i32 %.neg1315.neg, i32 0
  %470 = mul i32 %.01279, %.01274
  %umax1565 = tail call i32 @llvm.umax.i32(i32 %.01279, i32 1)
  br label %471

471:                                              ; preds = %.preheader1481, %508
  %.61530 = phi i32 [ 0, %.preheader1481 ], [ %509, %508 ]
  %472 = load i32, ptr %81, align 1, !tbaa !19
  %473 = load i32, ptr %62, align 4, !tbaa !14
  %reass.add1470 = add i32 %.neg1316.neg, %472
  %reass.add1471 = sub i32 %reass.add1470, %470
  %474 = mul i32 %.61530, %.01278
  %475 = add i32 %474, %spec.select1338
  br label %476

476:                                              ; preds = %471, %500
  %.712671529 = phi i32 [ 0, %471 ], [ %501, %500 ]
  %477 = icmp eq i32 %.712671529, %382
  %478 = select i1 %477, i32 %135, i32 0
  %.not1318 = icmp eq i32 %478, 0
  %479 = and i1 %74, %.not1318
  %480 = select i1 %479, i32 %.01274, i32 %478
  %.not1320 = icmp ne i32 %478, 0
  %481 = zext i1 %.not1320 to i8
  %482 = select i1 %.not1318, i8 2, i8 1
  %483 = select i1 %74, i8 %482, i8 %481
  %484 = load i32, ptr %107, align 4, !tbaa !21
  %485 = load i32, ptr %112, align 4, !tbaa !27
  %486 = load i32, ptr %62, align 4, !tbaa !14
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %484, i32 noundef %485, i32 noundef 31, i32 noundef %486, i32 noundef %480, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %483, i8 noundef zeroext %70) #5
  br i1 %74, label %487, label %488

487:                                              ; preds = %476
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %488

488:                                              ; preds = %487, %476
  br i1 %10, label %489, label %494

489:                                              ; preds = %488
  br i1 %spec.select1334, label %490, label %492

490:                                              ; preds = %489
  br i1 %13, label %.thread1450.thread, label %.thread1450

.thread1450.thread:                               ; preds = %490
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef 0, i32 noundef %61) #5
  %491 = add i32 %.712671529, %474
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %491, i8 noundef zeroext 0, i32 noundef %491, i32 noundef 0, i32 noundef %61) #5
  br label %500

492:                                              ; preds = %489
  br i1 %13, label %.thread1446.thread, label %.thread1446

.thread1446.thread:                               ; preds = %492
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef %65) #5
  %493 = add i32 %.712671529, %474
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %493, i8 noundef zeroext 0, i32 noundef %493, i32 noundef %65) #5
  br label %500

494:                                              ; preds = %488
  br i1 %spec.select, label %497, label %500

.thread1450:                                      ; preds = %490
  %495 = add i32 %.712671529, %474
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %495, i8 noundef zeroext 0, i32 noundef %495, i32 noundef 0, i32 noundef %61) #5
  br i1 %spec.select, label %.thread1453, label %500

.thread1446:                                      ; preds = %492
  %496 = add i32 %.712671529, %474
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %496, i8 noundef zeroext 0, i32 noundef %496, i32 noundef %65) #5
  br i1 %spec.select, label %.thread1449, label %500

497:                                              ; preds = %494
  br i1 %spec.select1334, label %.thread1453, label %.thread1449

.thread1453:                                      ; preds = %.thread1450, %497
  %498 = add i32 %475, %.712671529
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1696596099, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %498, i32 noundef 0, i32 noundef %61) #5
  br label %500

.thread1449:                                      ; preds = %.thread1446, %497
  %499 = add i32 %475, %.712671529
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 237030411, i32 noundef 31, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %499, i32 noundef %65) #5
  br label %500

500:                                              ; preds = %.thread1446.thread, %.thread1450.thread, %.thread1450, %.thread1446, %494, %.thread1449, %.thread1453
  %501 = add nuw i32 %.712671529, 1
  %exitcond1566.not = icmp eq i32 %501, %umax1565
  br i1 %exitcond1566.not, label %502, label %476, !llvm.loop !46

502:                                              ; preds = %500
  %reass.mul1472 = mul i32 %reass.add1471, %473
  %503 = icmp sgt i32 %reass.mul1472, 0
  br i1 %503, label %504, label %508

504:                                              ; preds = %502
  %505 = load i32, ptr %107, align 4, !tbaa !21
  %506 = load i32, ptr %112, align 4, !tbaa !27
  %507 = zext nneg i32 %reass.mul1472 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %505, i32 noundef %506, i32 noundef %505, i64 noundef %507) #5
  br label %508

508:                                              ; preds = %504, %502
  %509 = add nuw i32 %.61530, 1
  %exitcond1567.not = icmp eq i32 %509, %.01283
  br i1 %exitcond1567.not, label %.loopexit1482, label %471, !llvm.loop !47

.loopexit1482:                                    ; preds = %508, %469
  %510 = load i32, ptr %107, align 4, !tbaa !21
  %511 = load i32, ptr %112, align 4, !tbaa !27
  %512 = zext i32 %132 to i64
  %513 = load i32, ptr %81, align 1, !tbaa !19
  %514 = zext i32 %513 to i64
  %515 = load i32, ptr %62, align 4, !tbaa !14
  %516 = zext i32 %515 to i64
  %517 = mul nuw i64 %514, %512
  %reass.add1474 = add i64 %517, %.neg1328
  %reass.add1476 = sub i64 %reass.add1474, %385
  %reass.mul1477 = mul i64 %reass.add1476, %516
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %510, i32 noundef %511, i32 noundef %510, i64 noundef %reass.mul1477) #5
  %518 = icmp ugt i8 %177, 1
  %umax1568 = tail call i32 @llvm.umax.i32(i32 %.01279, i32 1)
  br i1 %518, label %.preheader1480, label %.preheader

.preheader1480:                                   ; preds = %.loopexit1482, %.split.us
  %.71535 = phi i32 [ %537, %.split.us ], [ 1, %.loopexit1482 ]
  %519 = mul nuw nsw i32 %.71535, %.01278
  br i1 %10, label %.preheader1480.split.us, label %.preheader1480.split

.preheader1480.split.us:                          ; preds = %.preheader1480
  br i1 %spec.select1334, label %.thread1458.us.us, label %.thread1454.us

.thread1458.us.us:                                ; preds = %.preheader1480.split.us, %523
  %.81531.us.us = phi i32 [ %524, %523 ], [ 0, %.preheader1480.split.us ]
  %520 = add i32 %.81531.us.us, %519
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %.81531.us.us, i32 noundef %520, i8 noundef zeroext 0, i32 noundef %.81531.us.us, i32 noundef 0, i32 noundef %61) #5
  br i1 %spec.select, label %.thread1461.us.us, label %523

.thread1461.us.us:                                ; preds = %.thread1458.us.us
  %521 = add i32 %.81531.us.us, %spec.select1338
  %522 = add i32 %521, %519
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %521, i32 noundef %522, i8 noundef zeroext 0, i32 noundef %521, i32 noundef 0, i32 noundef %61) #5
  br label %523

523:                                              ; preds = %.thread1461.us.us, %.thread1458.us.us
  %524 = add nuw i32 %.81531.us.us, 1
  %exitcond1575.not = icmp eq i32 %524, %umax1568
  br i1 %exitcond1575.not, label %.split.us, label %.thread1458.us.us, !llvm.loop !48

.thread1454.us:                                   ; preds = %.preheader1480.split.us, %528
  %.81531.us = phi i32 [ %529, %528 ], [ 0, %.preheader1480.split.us ]
  %525 = add i32 %.81531.us, %519
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %.81531.us, i32 noundef %525, i8 noundef zeroext 0, i32 noundef %.81531.us, i32 noundef %65) #5
  br i1 %spec.select, label %.thread1457.us, label %528

.thread1457.us:                                   ; preds = %.thread1454.us
  %526 = add i32 %.81531.us, %spec.select1338
  %527 = add i32 %526, %519
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %526, i32 noundef %527, i8 noundef zeroext 0, i32 noundef %526, i32 noundef %65) #5
  br label %528

528:                                              ; preds = %.thread1457.us, %.thread1454.us
  %529 = add nuw i32 %.81531.us, 1
  %exitcond1573.not = icmp eq i32 %529, %umax1568
  br i1 %exitcond1573.not, label %.split.us, label %.thread1454.us, !llvm.loop !48

.preheader1480.split:                             ; preds = %.preheader1480
  br i1 %spec.select, label %.preheader1480.split.split.us, label %.split.us

.preheader1480.split.split.us:                    ; preds = %.preheader1480.split
  br i1 %spec.select1334, label %.thread1461.us1534.us, label %.thread1457.us1533

.thread1461.us1534.us:                            ; preds = %.preheader1480.split.split.us, %.thread1461.us1534.us
  %.81531.us1532.us = phi i32 [ %532, %.thread1461.us1534.us ], [ 0, %.preheader1480.split.split.us ]
  %530 = add i32 %.81531.us1532.us, %spec.select1338
  %531 = add i32 %530, %519
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %530, i32 noundef %531, i8 noundef zeroext 0, i32 noundef %530, i32 noundef 0, i32 noundef %61) #5
  %532 = add nuw i32 %.81531.us1532.us, 1
  %exitcond1571.not = icmp eq i32 %532, %umax1568
  br i1 %exitcond1571.not, label %.split.us, label %.thread1461.us1534.us, !llvm.loop !48

.thread1457.us1533:                               ; preds = %.preheader1480.split.split.us, %.thread1457.us1533
  %.81531.us1532 = phi i32 [ %535, %.thread1457.us1533 ], [ 0, %.preheader1480.split.split.us ]
  %533 = add i32 %.81531.us1532, %spec.select1338
  %534 = add i32 %533, %519
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef %533, i32 noundef %534, i8 noundef zeroext 0, i32 noundef %533, i32 noundef %65) #5
  %535 = add nuw i32 %.81531.us1532, 1
  %exitcond1569.not = icmp eq i32 %535, %umax1568
  br i1 %exitcond1569.not, label %.split.us, label %.thread1457.us1533, !llvm.loop !48

.preheader:                                       ; preds = %.split.us, %.loopexit1482
  %536 = getelementptr inbounds i8, ptr %3, i64 20
  br label %539

.split.us:                                        ; preds = %.thread1457.us1533, %.thread1461.us1534.us, %528, %523, %.preheader1480.split
  %537 = add nuw nsw i32 %.71535, 1
  %538 = icmp ult i32 %537, %.
  br i1 %538, label %.preheader1480, label %.preheader, !llvm.loop !49

539:                                              ; preds = %.preheader, %590
  %.91536 = phi i32 [ 0, %.preheader ], [ %591, %590 ]
  br i1 %10, label %540, label %566

540:                                              ; preds = %539
  %541 = icmp eq i32 %.91536, %382
  %542 = select i1 %541, i32 %135, i32 0
  %.not1309 = icmp eq i32 %542, 0
  %543 = select i1 %76, i1 %.not1309, i1 false
  %544 = select i1 %543, i32 %.01274, i32 %542
  %545 = select i1 %.not1309, i8 0, i8 3
  %546 = select i1 %.not1309, i8 2, i8 3
  %547 = select i1 %76, i8 %546, i8 %545
  br i1 %.not, label %560, label %548

548:                                              ; preds = %540
  %549 = load i32, ptr %108, align 4, !tbaa !23
  %550 = load i32, ptr %112, align 4, !tbaa !27
  %551 = load i32, ptr %536, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %549, i32 noundef %550, i32 noundef 31, i32 noundef %551, i32 noundef %544, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %547, i8 noundef zeroext %70) #5
  br i1 %76, label %552, label %553

552:                                              ; preds = %548
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %553

553:                                              ; preds = %552, %548
  br i1 %spec.select1334, label %554, label %557

554:                                              ; preds = %553
  br i1 %13, label %555, label %556

555:                                              ; preds = %554
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef 0, i32 noundef %61) #5
  br label %556

556:                                              ; preds = %555, %554
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %.91536, i8 noundef zeroext 0, i32 noundef %.91536, i32 noundef 0, i32 noundef %61) #5
  br label %560

557:                                              ; preds = %553
  br i1 %13, label %558, label %559

558:                                              ; preds = %557
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012731367, i32 noundef 31, i32 noundef %.012751389, i8 noundef zeroext 0, i32 noundef 31, i32 noundef %65) #5
  br label %559

559:                                              ; preds = %558, %557
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %.91536, i8 noundef zeroext 0, i32 noundef %.91536, i32 noundef %65) #5
  br label %560

560:                                              ; preds = %556, %559, %540
  br i1 %76, label %561, label %562

561:                                              ; preds = %560
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %0, i32 noundef %.91536, i32 noundef 0) #5
  br label %562

562:                                              ; preds = %561, %560
  %563 = load i32, ptr %108, align 4, !tbaa !23
  %564 = load i32, ptr %112, align 4, !tbaa !27
  %565 = load i32, ptr %536, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %563, i32 noundef %564, i32 noundef %.91536, i32 noundef %565, i32 noundef %544, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %547, i8 noundef zeroext %70) #5
  br label %566

566:                                              ; preds = %562, %539
  br i1 %spec.select, label %567, label %590

567:                                              ; preds = %566
  %568 = icmp eq i32 %.91536, %382
  %569 = select i1 %568, i32 %135, i32 0
  %.not1312 = icmp eq i32 %569, 0
  %570 = select i1 %76, i1 %.not1312, i1 false
  %571 = select i1 %570, i32 %.01274, i32 %569
  %572 = select i1 %.not1312, i8 0, i8 3
  %573 = select i1 %.not1312, i8 2, i8 3
  %574 = select i1 %76, i8 %573, i8 %572
  br i1 %.not, label %584, label %575

575:                                              ; preds = %567
  %576 = load i32, ptr %109, align 4, !tbaa !24
  %577 = load i32, ptr %112, align 4, !tbaa !27
  %578 = load i32, ptr %536, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %576, i32 noundef %577, i32 noundef 31, i32 noundef %578, i32 noundef %571, i32 noundef 0, i32 noundef 0, i8 noundef zeroext %574, i8 noundef zeroext %70) #5
  br i1 %76, label %579, label %580

579:                                              ; preds = %575
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 31, i32 noundef 0) #5
  br label %580

580:                                              ; preds = %579, %575
  %581 = add i32 %.91536, %spec.select1338
  br i1 %spec.select1334, label %582, label %583

582:                                              ; preds = %580
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %581, i8 noundef zeroext 0, i32 noundef %581, i32 noundef 0, i32 noundef %61) #5
  br label %584

583:                                              ; preds = %580
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.012721368, i32 noundef 31, i32 noundef %581, i8 noundef zeroext 0, i32 noundef %581, i32 noundef %65) #5
  br label %584

584:                                              ; preds = %582, %583, %567
  %585 = add i32 %.91536, %spec.select1338
  br i1 %76, label %586, label %._crit_edge1579

586:                                              ; preds = %584
  tail call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %0, i32 noundef %585, i32 noundef 0) #5
  br label %._crit_edge1579

._crit_edge1579:                                  ; preds = %584, %586
  %587 = load i32, ptr %109, align 4, !tbaa !24
  %588 = load i32, ptr %112, align 4, !tbaa !27
  %589 = load i32, ptr %536, align 4, !tbaa !30
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %587, i32 noundef %588, i32 noundef %585, i32 noundef %589, i32 noundef %571, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %574, i8 noundef zeroext %70) #5
  br label %590

590:                                              ; preds = %566, %._crit_edge1579
  %591 = add nuw i32 %.91536, 1
  %exitcond1577.not = icmp eq i32 %591, %umax1568
  br i1 %exitcond1577.not, label %.loopexit, label %539, !llvm.loop !50

.loopexit:                                        ; preds = %590, %381
  br i1 %72, label %592, label %593

592:                                              ; preds = %.loopexit
  tail call void @libxsmm_aarch64_instruction_sm(ptr noundef %0, i32 noundef -721205633) #5
  br label %593

593:                                              ; preds = %.loopexit, %592, %100, %84
  ret void
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.umax.i8(i8, i8) #4

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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }
attributes #6 = { 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, !7, i64 0}
!6 = !{!"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}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!11, !12, i64 29}
!11 = !{!"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, !12, i64 27, !12, i64 29, !8, i64 31}
!12 = !{!"short", !8, i64 0}
!13 = !{!11, !12, i64 27}
!14 = !{!6, !7, i64 8}
!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 = !{!11, !7, i64 0}
!19 = !{!11, !7, i64 8}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !7, i64 4}
!22 = !{!"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}
!23 = !{!22, !7, i64 64}
!24 = !{!22, !7, i64 68}
!25 = !{!22, !7, i64 96}
!26 = !{!22, !7, i64 100}
!27 = !{!22, !7, i64 140}
!28 = !{!22, !7, i64 0}
!29 = !{!11, !7, i64 12}
!30 = !{!6, !7, i64 20}
!31 = !{!11, !7, i64 4}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}
!37 = distinct !{!37, !33}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}
!42 = distinct !{!42, !33}
!43 = distinct !{!43, !33}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !33}
!46 = distinct !{!46, !33}
!47 = distinct !{!47, !33}
!48 = distinct !{!48, !33}
!49 = distinct !{!49, !33}
!50 = distinct !{!50, !33}


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