; 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_jump_label_tracker_struct = type { [512 x i32], [512 x %struct.libxsmm_jump_source_struct] }
%struct.libxsmm_jump_source_struct = type { [512 x i32], [512 x i32], i32 }
%struct.libxsmm_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%struct.libxsmm_mateltwise_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_mateltwise_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [91 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_index_aarch64_microkernel = external hidden unnamed_addr constant [230 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_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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_setval_stack_var_aarch64(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

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

96:                                               ; preds = %5
  %97 = load ptr, ptr %6, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %97, i32 0, i32 6
  %99 = load i32, ptr %98, align 4, !tbaa !17
  %100 = icmp ule i32 %99, 2999
  br label %101

101:                                              ; preds = %96, %5
  %102 = phi i1 [ false, %5 ], [ %100, %96 ]
  %103 = zext i1 %102 to i32
  %104 = trunc i32 %103 to i8
  store i8 %104, ptr %55, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #6
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %105, i32 0, i32 6
  %107 = load i32, ptr %106, align 4, !tbaa !17
  %108 = icmp uge i32 %107, 2501
  br i1 %108, label %109, label %114

109:                                              ; preds = %101
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %110, i32 0, i32 6
  %112 = load i32, ptr %111, align 4, !tbaa !17
  %113 = icmp ule i32 %112, 2999
  br label %114

114:                                              ; preds = %109, %101
  %115 = phi i1 [ false, %101 ], [ %113, %109 ]
  %116 = zext i1 %115 to i32
  %117 = trunc i32 %116 to i8
  store i8 %117, ptr %56, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %118 = load i8, ptr %55, align 1, !tbaa !16
  %119 = zext i8 %118 to i32
  %120 = icmp ne i32 %119, 0
  %121 = zext i1 %120 to i64
  %122 = select i1 %120, i32 5, i32 30
  store i32 %122, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  %123 = load i8, ptr %55, align 1, !tbaa !16
  %124 = zext i8 %123 to i32
  %125 = icmp ne i32 %124, 0
  %126 = zext i1 %125 to i64
  %127 = select i1 %125, i32 6, i32 29
  store i32 %127, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  store i32 32, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  store i32 80, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  %128 = call ptr @getenv(ptr noundef @.str.13) #6
  store ptr %128, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2101248, ptr %62) #6
  call void @libxsmm_reset_jump_label_tracker(ptr noundef %62)
  %129 = load i8, ptr %55, align 1, !tbaa !16
  %130 = zext i8 %129 to i32
  %131 = icmp ne i32 %130, 0
  %132 = zext i1 %131 to i64
  %133 = select i1 %131, i32 1694498819, i32 237032459
  store i32 %133, ptr %48, align 4, !tbaa !9
  %134 = load ptr, ptr %10, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %134, i32 0, i32 10
  %136 = load i16, ptr %135, align 1, !tbaa !19
  %137 = zext i16 %136 to i32
  %138 = icmp eq i32 %137, 53
  br i1 %138, label %145, label %139

139:                                              ; preds = %114
  %140 = load ptr, ptr %10, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %140, i32 0, i32 10
  %142 = load i16, ptr %141, align 1, !tbaa !19
  %143 = zext i16 %142 to i32
  %144 = icmp eq i32 %143, 68
  br i1 %144, label %145, label %206

145:                                              ; preds = %139, %114
  %146 = load ptr, ptr %10, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %146, i32 0, i32 10
  %148 = load i16, ptr %147, align 1, !tbaa !19
  %149 = zext i16 %148 to i32
  %150 = icmp eq i32 %149, 53
  br i1 %150, label %151, label %167

151:                                              ; preds = %145
  store i32 1, ptr %41, align 4, !tbaa !9
  %152 = load i8, ptr %55, align 1, !tbaa !16
  %153 = zext i8 %152 to i32
  %154 = icmp ne i32 %153, 0
  %155 = zext i1 %154 to i64
  %156 = select i1 %154, i32 1694924962, i32 237040651
  store i32 %156, ptr %48, align 4, !tbaa !9
  %157 = load i8, ptr %55, align 1, !tbaa !16
  %158 = zext i8 %157 to i32
  %159 = icmp ne i32 %158, 0
  %160 = zext i1 %159 to i64
  %161 = select i1 %159, i32 1694515603, i32 773907467
  store i32 %161, ptr %49, align 4, !tbaa !9
  %162 = load i8, ptr %55, align 1, !tbaa !16
  %163 = zext i8 %162 to i32
  %164 = icmp ne i32 %163, 0
  %165 = zext i1 %164 to i64
  %166 = select i1 %164, i32 86032515, i32 782244883
  store i32 %166, ptr %50, align 4, !tbaa !9
  br label %167

167:                                              ; preds = %151, %145
  %168 = load ptr, ptr %10, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %168, i32 0, i32 10
  %170 = load i16, ptr %169, align 1, !tbaa !19
  %171 = zext i16 %170 to i32
  %172 = icmp eq i32 %171, 68
  br i1 %172, label %173, label %189

173:                                              ; preds = %167
  store i32 1, ptr %42, align 4, !tbaa !9
  %174 = load i8, ptr %55, align 1, !tbaa !16
  %175 = zext i8 %174 to i32
  %176 = icmp ne i32 %175, 0
  %177 = zext i1 %176 to i64
  %178 = select i1 %176, i32 1694990498, i32 245429259
  store i32 %178, ptr %48, align 4, !tbaa !9
  %179 = load i8, ptr %55, align 1, !tbaa !16
  %180 = zext i8 %179 to i32
  %181 = icmp ne i32 %180, 0
  %182 = zext i1 %181 to i64
  %183 = select i1 %181, i32 1694515347, i32 782296075
  store i32 %183, ptr %49, align 4, !tbaa !9
  %184 = load i8, ptr %55, align 1, !tbaa !16
  %185 = zext i8 %184 to i32
  %186 = icmp ne i32 %185, 0
  %187 = zext i1 %186 to i64
  %188 = select i1 %186, i32 86032515, i32 786439187
  store i32 %188, ptr %50, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %173, %167
  %190 = load ptr, ptr %10, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %190, i32 0, i32 9
  %192 = load i16, ptr %191, align 1, !tbaa !11
  %193 = zext i16 %192 to i32
  %194 = and i32 %193, 2048
  %195 = icmp sgt i32 %194, 0
  br i1 %195, label %196, label %197

196:                                              ; preds = %189
  store i32 1, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %197

197:                                              ; preds = %196, %189
  %198 = load ptr, ptr %10, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %198, i32 0, i32 9
  %200 = load i16, ptr %199, align 1, !tbaa !11
  %201 = zext i16 %200 to i32
  %202 = and i32 %201, 512
  %203 = icmp sgt i32 %202, 0
  br i1 %203, label %204, label %205

204:                                              ; preds = %197
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %205

205:                                              ; preds = %204, %197
  br label %206

206:                                              ; preds = %205, %139
  store i32 16, ptr %15, align 4, !tbaa !9
  %207 = load i32, ptr %40, align 4, !tbaa !9
  %208 = icmp ugt i32 %207, 0
  br i1 %208, label %209, label %215

209:                                              ; preds = %206
  %210 = load i32, ptr %24, align 4, !tbaa !9
  %211 = icmp eq i32 %210, 4
  br i1 %211, label %212, label %213

212:                                              ; preds = %209
  store i32 10, ptr %15, align 4, !tbaa !9
  br label %214

213:                                              ; preds = %209
  store i32 7, ptr %15, align 4, !tbaa !9
  br label %214

214:                                              ; preds = %213, %212
  br label %215

215:                                              ; preds = %214, %206
  %216 = load ptr, ptr %61, align 8, !tbaa !5
  %217 = icmp eq ptr null, %216
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  br label %222

219:                                              ; preds = %215
  %220 = load ptr, ptr %61, align 8, !tbaa !5
  %221 = call i32 @atoi(ptr noundef %220) #7
  store i32 %221, ptr %25, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %219, %218
  %223 = load ptr, ptr %10, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %223, i32 0, i32 9
  %225 = load i16, ptr %224, align 1, !tbaa !11
  %226 = zext i16 %225 to i32
  %227 = and i32 %226, 64
  %228 = icmp sgt i32 %227, 0
  br i1 %228, label %229, label %230

229:                                              ; preds = %222
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %231

230:                                              ; preds = %222
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %230, %229
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %232, i32 0, i32 9
  %234 = load i16, ptr %233, align 1, !tbaa !11
  %235 = zext i16 %234 to i32
  %236 = and i32 %235, 512
  %237 = icmp sgt i32 %236, 0
  br i1 %237, label %238, label %239

238:                                              ; preds = %231
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %238, %231
  %240 = load ptr, ptr %8, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %240, i32 0, i32 26
  store i32 41, ptr %241, align 4, !tbaa !20
  %242 = load ptr, ptr %8, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %242, i32 0, i32 27
  store i32 42, ptr %243, align 4, !tbaa !22
  %244 = load ptr, ptr %8, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %244, i32 0, i32 28
  store i32 43, ptr %245, align 4, !tbaa !23
  %246 = load ptr, ptr %8, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %246, i32 0, i32 6
  store i32 44, ptr %247, align 4, !tbaa !24
  %248 = load ptr, ptr %8, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %248, i32 0, i32 24
  store i32 45, ptr %249, align 4, !tbaa !25
  %250 = load ptr, ptr %8, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %250, i32 0, i32 25
  store i32 46, ptr %251, align 4, !tbaa !26
  %252 = load ptr, ptr %8, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %252, i32 0, i32 1
  store i32 47, ptr %253, align 4, !tbaa !27
  %254 = load i32, ptr %24, align 4, !tbaa !9
  %255 = icmp eq i32 %254, 8
  %256 = zext i1 %255 to i64
  %257 = select i1 %255, i32 48, i32 16
  store i32 %257, ptr %22, align 4, !tbaa !9
  store i32 48, ptr %21, align 4, !tbaa !9
  %258 = load ptr, ptr %8, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %258, i32 0, i32 35
  store i32 49, ptr %259, align 4, !tbaa !28
  store i32 33, ptr %23, align 4, !tbaa !9
  store i32 39, ptr %46, align 4, !tbaa !9
  store i32 38, ptr %47, align 4, !tbaa !9
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %261, i32 0, i32 0
  %263 = load i32, ptr %262, align 4, !tbaa !29
  %264 = load i32, ptr %59, align 4, !tbaa !9
  %265 = add nsw i32 %264, 16
  %266 = load ptr, ptr %8, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %266, i32 0, i32 26
  %268 = load i32, ptr %267, align 4, !tbaa !20
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %260, i32 noundef -1186988026, i32 noundef %263, i32 noundef 127, i32 noundef %265, i32 noundef %268)
  %269 = load ptr, ptr %6, align 8, !tbaa !5
  %270 = load ptr, ptr %8, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %270, i32 0, i32 26
  %272 = load i32, ptr %271, align 4, !tbaa !20
  %273 = load ptr, ptr %8, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %273, i32 0, i32 26
  %275 = load i32, ptr %274, align 4, !tbaa !20
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %269, i32 noundef -1186988026, i32 noundef %272, i32 noundef 127, i32 noundef 0, i32 noundef %275)
  %276 = load ptr, ptr %6, align 8, !tbaa !5
  %277 = load ptr, ptr %8, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %277, i32 0, i32 26
  %279 = load i32, ptr %278, align 4, !tbaa !20
  %280 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_cond_jump_to_label(ptr noundef %276, i32 noundef 872415232, i32 noundef %279, i32 noundef %280, ptr noundef %62)
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  %282 = load ptr, ptr %8, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %282, i32 0, i32 0
  %284 = load i32, ptr %283, align 4, !tbaa !29
  %285 = load i32, ptr %59, align 4, !tbaa !9
  %286 = add nsw i32 %285, 8
  %287 = load ptr, ptr %8, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %287, i32 0, i32 27
  %289 = load i32, ptr %288, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %281, i32 noundef -1186988026, i32 noundef %284, i32 noundef 127, i32 noundef %286, i32 noundef %289)
  %290 = load ptr, ptr %6, align 8, !tbaa !5
  %291 = load ptr, ptr %8, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %291, i32 0, i32 0
  %293 = load i32, ptr %292, align 4, !tbaa !29
  %294 = load i32, ptr %59, align 4, !tbaa !9
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %295, i32 0, i32 28
  %297 = load i32, ptr %296, align 4, !tbaa !23
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %290, i32 noundef -1186988026, i32 noundef %293, i32 noundef 127, i32 noundef %294, i32 noundef %297)
  %298 = load ptr, ptr %6, align 8, !tbaa !5
  %299 = load ptr, ptr %8, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %299, i32 0, i32 0
  %301 = load i32, ptr %300, align 4, !tbaa !29
  %302 = load i32, ptr %60, align 4, !tbaa !9
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %303, i32 0, i32 6
  %305 = load i32, ptr %304, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %298, i32 noundef -1186988026, i32 noundef %301, i32 noundef 127, i32 noundef %302, i32 noundef %305)
  %306 = load i32, ptr %40, align 4, !tbaa !9
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %316

308:                                              ; preds = %239
  %309 = load ptr, ptr %6, align 8, !tbaa !5
  %310 = load ptr, ptr %8, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %310, i32 0, i32 0
  %312 = load i32, ptr %311, align 4, !tbaa !29
  %313 = load i32, ptr %60, align 4, !tbaa !9
  %314 = add nsw i32 %313, 8
  %315 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %309, i32 noundef -1186988026, i32 noundef %312, i32 noundef 127, i32 noundef %314, i32 noundef %315)
  br label %316

316:                                              ; preds = %308, %239
  %317 = load ptr, ptr %6, align 8, !tbaa !5
  %318 = load i32, ptr %21, align 4, !tbaa !9
  %319 = load i32, ptr %21, align 4, !tbaa !9
  %320 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %317, i32 noundef 1241513991, i32 noundef %318, i32 noundef %319, i32 noundef %320, i32 noundef 0, i32 noundef 0)
  %321 = load ptr, ptr %6, align 8, !tbaa !5
  %322 = load i32, ptr %23, align 4, !tbaa !9
  %323 = load ptr, ptr %10, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %323, i32 0, i32 2
  %325 = load i32, ptr %324, align 1, !tbaa !30
  %326 = zext i32 %325 to i64
  %327 = load ptr, ptr %9, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %327, i32 0, i32 2
  %329 = load i32, ptr %328, align 4, !tbaa !31
  %330 = zext i32 %329 to i64
  %331 = mul nsw i64 %326, %330
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %321, i32 noundef %322, i64 noundef %331)
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %332, i32 0, i32 0
  %334 = load i32, ptr %333, align 1, !tbaa !32
  store i32 %334, ptr %11, align 4, !tbaa !9
  %335 = load i32, ptr %11, align 4, !tbaa !9
  %336 = load i32, ptr %27, align 4, !tbaa !9
  %337 = urem i32 %335, %336
  %338 = icmp eq i32 %337, 0
  %339 = zext i1 %338 to i64
  %340 = select i1 %338, i32 0, i32 1
  store i32 %340, ptr %13, align 4, !tbaa !9
  %341 = load i32, ptr %11, align 4, !tbaa !9
  %342 = load i32, ptr %27, align 4, !tbaa !9
  %343 = add i32 %341, %342
  %344 = sub i32 %343, 1
  %345 = load i32, ptr %27, align 4, !tbaa !9
  %346 = udiv i32 %344, %345
  store i32 %346, ptr %14, align 4, !tbaa !9
  %347 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %347, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  %348 = load i8, ptr %56, align 1, !tbaa !16
  %349 = icmp ne i8 %348, 0
  br i1 %349, label %350, label %352

350:                                              ; preds = %316
  %351 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_sm(ptr noundef %351, i32 noundef -721205377)
  br label %352

352:                                              ; preds = %350, %316
  %353 = load i8, ptr %55, align 1, !tbaa !16
  %354 = icmp ne i8 %353, 0
  br i1 %354, label %355, label %362

355:                                              ; preds = %352
  %356 = load ptr, ptr %6, align 8, !tbaa !5
  %357 = load i8, ptr %29, align 1, !tbaa !16
  %358 = zext i8 %357 to i32
  %359 = load ptr, ptr %8, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %359, i32 0, i32 35
  %361 = load i32, ptr %360, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %356, i32 noundef %358, i32 noundef -1, i32 noundef %361)
  br label %362

362:                                              ; preds = %355, %352
  %363 = load i32, ptr %13, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 1
  br i1 %364, label %365, label %401

365:                                              ; preds = %362
  %366 = load i32, ptr %11, align 4, !tbaa !9
  %367 = load i32, ptr %27, align 4, !tbaa !9
  %368 = urem i32 %366, %367
  store i32 %368, ptr %19, align 4, !tbaa !9
  %369 = load i8, ptr %55, align 1, !tbaa !16
  %370 = icmp ne i8 %369, 0
  br i1 %370, label %371, label %383

371:                                              ; preds = %365
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  %373 = load i8, ptr %30, align 1, !tbaa !16
  %374 = zext i8 %373 to i32
  %375 = load ptr, ptr %9, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %375, i32 0, i32 2
  %377 = load i32, ptr %376, align 4, !tbaa !31
  %378 = load i32, ptr %19, align 4, !tbaa !9
  %379 = mul i32 %377, %378
  %380 = load ptr, ptr %8, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %380, i32 0, i32 35
  %382 = load i32, ptr %381, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %372, i32 noundef %374, i32 noundef %379, i32 noundef %382)
  br label %383

383:                                              ; preds = %371, %365
  %384 = load i32, ptr %24, align 4, !tbaa !9
  %385 = icmp eq i32 %384, 4
  br i1 %385, label %386, label %400

386:                                              ; preds = %383
  %387 = load i8, ptr %55, align 1, !tbaa !16
  %388 = icmp ne i8 %387, 0
  br i1 %388, label %389, label %399

389:                                              ; preds = %386
  %390 = load ptr, ptr %6, align 8, !tbaa !5
  %391 = load i8, ptr %32, align 1, !tbaa !16
  %392 = zext i8 %391 to i32
  %393 = load i32, ptr %24, align 4, !tbaa !9
  %394 = load i32, ptr %19, align 4, !tbaa !9
  %395 = mul i32 %393, %394
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %396, i32 0, i32 35
  %398 = load i32, ptr %397, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %390, i32 noundef %392, i32 noundef %395, i32 noundef %398)
  br label %399

399:                                              ; preds = %389, %386
  br label %400

400:                                              ; preds = %399, %383
  br label %401

401:                                              ; preds = %400, %362
  %402 = load i32, ptr %51, align 4, !tbaa !9
  %403 = icmp ugt i32 %402, 0
  br i1 %403, label %404, label %407

404:                                              ; preds = %401
  %405 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %405, i32 noundef 285212678, i32 noundef 63, i32 noundef 61, i32 noundef 0, i8 noundef zeroext 0)
  %406 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %406, i32 noundef 1358954502, i32 noundef 63, i32 noundef 63, i32 noundef 40, i8 noundef zeroext 0)
  br label %407

407:                                              ; preds = %404, %401
  %408 = load i32, ptr %41, align 4, !tbaa !9
  %409 = icmp ne i32 %408, 0
  br i1 %409, label %413, label %410

410:                                              ; preds = %407
  %411 = load i32, ptr %42, align 4, !tbaa !9
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %436

413:                                              ; preds = %410, %407
  %414 = load i32, ptr %25, align 4, !tbaa !9
  %415 = icmp eq i32 %414, 0
  br i1 %415, label %416, label %435

416:                                              ; preds = %413
  %417 = load i32, ptr %41, align 4, !tbaa !9
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %419, label %422

419:                                              ; preds = %416
  %420 = load ptr, ptr %6, align 8, !tbaa !5
  %421 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %420, i32 noundef %421, i64 noundef 4286578688)
  br label %422

422:                                              ; preds = %419, %416
  %423 = load i32, ptr %42, align 4, !tbaa !9
  %424 = icmp ne i32 %423, 0
  br i1 %424, label %425, label %428

425:                                              ; preds = %422
  %426 = load ptr, ptr %6, align 8, !tbaa !5
  %427 = load i32, ptr %47, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef %426, i32 noundef %427, i64 noundef 2139095040)
  br label %428

428:                                              ; preds = %425, %422
  %429 = load ptr, ptr %6, align 8, !tbaa !5
  %430 = load i32, ptr %44, align 4, !tbaa !9
  %431 = load i32, ptr %47, align 4, !tbaa !9
  %432 = load ptr, ptr %8, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %432, i32 0, i32 35
  %434 = load i32, ptr %433, align 4, !tbaa !28
  call void @libxsmm_generator_setval_stack_var_aarch64(ptr noundef %429, i32 noundef %430, i32 noundef %431, i32 noundef %434)
  br label %435

435:                                              ; preds = %428, %413
  br label %436

436:                                              ; preds = %435, %410
  %437 = load i32, ptr %27, align 4, !tbaa !9
  %438 = udiv i32 %437, 2
  %439 = icmp ne i32 0, %438
  br i1 %439, label %440, label %441

440:                                              ; preds = %436
  br label %442

441:                                              ; preds = %436
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 1582, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_index_aarch64_microkernel) #8
  unreachable

442:                                              ; preds = %440
  %443 = load i32, ptr %24, align 4, !tbaa !9
  %444 = icmp eq i32 %443, 8
  br i1 %444, label %445, label %472

445:                                              ; preds = %442
  %446 = load i32, ptr %11, align 4, !tbaa !9
  %447 = load i32, ptr %27, align 4, !tbaa !9
  %448 = udiv i32 %447, 2
  %449 = urem i32 %446, %448
  %450 = icmp ne i32 %449, 0
  br i1 %450, label %451, label %472

451:                                              ; preds = %445
  %452 = load i32, ptr %40, align 4, !tbaa !9
  %453 = icmp ugt i32 %452, 0
  br i1 %453, label %454, label %472

454:                                              ; preds = %451
  %455 = load i32, ptr %11, align 4, !tbaa !9
  %456 = load i32, ptr %27, align 4, !tbaa !9
  %457 = udiv i32 %456, 2
  %458 = urem i32 %455, %457
  store i32 %458, ptr %28, align 4, !tbaa !9
  %459 = load i8, ptr %55, align 1, !tbaa !16
  %460 = icmp ne i8 %459, 0
  br i1 %460, label %461, label %471

461:                                              ; preds = %454
  %462 = load ptr, ptr %6, align 8, !tbaa !5
  %463 = load i8, ptr %33, align 1, !tbaa !16
  %464 = zext i8 %463 to i32
  %465 = load i32, ptr %24, align 4, !tbaa !9
  %466 = load i32, ptr %28, align 4, !tbaa !9
  %467 = mul i32 %465, %466
  %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 !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %462, i32 noundef %464, i32 noundef %467, i32 noundef %470)
  br label %471

471:                                              ; preds = %461, %454
  br label %472

472:                                              ; preds = %471, %451, %445, %442
  %473 = load i8, ptr %55, align 1, !tbaa !16
  %474 = zext i8 %473 to i32
  %475 = icmp sgt i32 %474, 0
  br i1 %475, label %476, label %505

476:                                              ; preds = %472
  %477 = load i32, ptr %52, align 4, !tbaa !9
  %478 = icmp ugt i32 %477, 0
  br i1 %478, label %482, label %479

479:                                              ; preds = %476
  %480 = load i32, ptr %53, align 4, !tbaa !9
  %481 = icmp ugt i32 %480, 0
  br i1 %481, label %482, label %505

482:                                              ; preds = %479, %476
  %483 = load ptr, ptr %6, align 8, !tbaa !5
  %484 = load i8, ptr %31, align 1, !tbaa !16
  %485 = zext i8 %484 to i32
  %486 = load i32, ptr %52, align 4, !tbaa !9
  %487 = icmp ugt i32 %486, 0
  br i1 %487, label %488, label %494

488:                                              ; preds = %482
  %489 = load ptr, ptr %9, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %489, i32 0, i32 2
  %491 = load i32, ptr %490, align 4, !tbaa !31
  %492 = load i32, ptr %27, align 4, !tbaa !9
  %493 = mul i32 %491, %492
  br label %500

494:                                              ; preds = %482
  %495 = load ptr, ptr %9, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %495, i32 0, i32 5
  %497 = load i32, ptr %496, align 4, !tbaa !33
  %498 = load i32, ptr %27, align 4, !tbaa !9
  %499 = mul i32 %497, %498
  br label %500

500:                                              ; preds = %494, %488
  %501 = phi i32 [ %493, %488 ], [ %499, %494 ]
  %502 = load ptr, ptr %8, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %502, i32 0, i32 35
  %504 = load i32, ptr %503, align 4, !tbaa !28
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %483, i32 noundef %485, i32 noundef %501, i32 noundef %504)
  br label %505

505:                                              ; preds = %500, %479, %472
  %506 = load i32, ptr %16, align 4, !tbaa !9
  %507 = load i32, ptr %15, align 4, !tbaa !9
  %508 = icmp ugt i32 %506, %507
  br i1 %508, label %509, label %533

509:                                              ; preds = %505
  %510 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %510, ptr %16, align 4, !tbaa !9
  %511 = load i32, ptr %14, align 4, !tbaa !9
  %512 = load i32, ptr %16, align 4, !tbaa !9
  %513 = udiv i32 %511, %512
  store i32 %513, ptr %17, align 4, !tbaa !9
  %514 = load i32, ptr %14, align 4, !tbaa !9
  %515 = load i32, ptr %16, align 4, !tbaa !9
  %516 = load i32, ptr %17, align 4, !tbaa !9
  %517 = mul i32 %515, %516
  %518 = sub i32 %514, %517
  store i32 %518, ptr %18, align 4, !tbaa !9
  %519 = load i32, ptr %13, align 4, !tbaa !9
  %520 = icmp ugt i32 %519, 0
  br i1 %520, label %521, label %532

521:                                              ; preds = %509
  %522 = load i32, ptr %18, align 4, !tbaa !9
  %523 = icmp eq i32 %522, 0
  br i1 %523, label %524, label %532

524:                                              ; preds = %521
  %525 = load i32, ptr %17, align 4, !tbaa !9
  %526 = add i32 %525, -1
  store i32 %526, ptr %17, align 4, !tbaa !9
  %527 = load i32, ptr %14, align 4, !tbaa !9
  %528 = load i32, ptr %16, align 4, !tbaa !9
  %529 = load i32, ptr %17, align 4, !tbaa !9
  %530 = mul i32 %528, %529
  %531 = sub i32 %527, %530
  store i32 %531, ptr %18, align 4, !tbaa !9
  br label %532

532:                                              ; preds = %524, %521, %509
  br label %548

533:                                              ; preds = %505
  %534 = load i32, ptr %13, align 4, !tbaa !9
  %535 = icmp ugt i32 %534, 0
  br i1 %535, label %536, label %547

536:                                              ; preds = %533
  %537 = load i32, ptr %18, align 4, !tbaa !9
  %538 = icmp eq i32 %537, 0
  br i1 %538, label %539, label %547

539:                                              ; preds = %536
  %540 = load i32, ptr %17, align 4, !tbaa !9
  %541 = add i32 %540, -1
  store i32 %541, ptr %17, align 4, !tbaa !9
  %542 = load i32, ptr %14, align 4, !tbaa !9
  %543 = load i32, ptr %16, align 4, !tbaa !9
  %544 = load i32, ptr %17, align 4, !tbaa !9
  %545 = mul i32 %543, %544
  %546 = sub i32 %542, %545
  store i32 %546, ptr %18, align 4, !tbaa !9
  br label %547

547:                                              ; preds = %539, %536, %533
  br label %548

548:                                              ; preds = %547, %532
  %549 = load i32, ptr %17, align 4, !tbaa !9
  %550 = icmp uge i32 %549, 1
  br i1 %550, label %551, label %554

551:                                              ; preds = %548
  %552 = load i32, ptr %38, align 4, !tbaa !9
  %553 = add i32 %552, 1
  store i32 %553, ptr %38, align 4, !tbaa !9
  br label %554

554:                                              ; preds = %551, %548
  %555 = load i32, ptr %18, align 4, !tbaa !9
  %556 = icmp ugt i32 %555, 0
  br i1 %556, label %557, label %560

557:                                              ; preds = %554
  %558 = load i32, ptr %38, align 4, !tbaa !9
  %559 = add i32 %558, 1
  store i32 %559, ptr %38, align 4, !tbaa !9
  br label %560

560:                                              ; preds = %557, %554
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %561

561:                                              ; preds = %1479, %560
  %562 = load i32, ptr %39, align 4, !tbaa !9
  %563 = load i32, ptr %38, align 4, !tbaa !9
  %564 = icmp ult i32 %562, %563
  br i1 %564, label %565, label %1482

565:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  store i32 0, ptr %63, align 4, !tbaa !9
  %566 = load i32, ptr %17, align 4, !tbaa !9
  %567 = icmp ugt i32 %566, 1
  br i1 %567, label %568, label %578

568:                                              ; preds = %565
  %569 = load i32, ptr %39, align 4, !tbaa !9
  %570 = icmp eq i32 %569, 0
  br i1 %570, label %571, label %578

571:                                              ; preds = %568
  %572 = load ptr, ptr %6, align 8, !tbaa !5
  %573 = load ptr, ptr %7, align 8, !tbaa !5
  %574 = load ptr, ptr %8, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %574, i32 0, i32 24
  %576 = load i32, ptr %575, align 4, !tbaa !25
  %577 = load i32, ptr %17, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %572, ptr noundef %573, i32 noundef %576, i32 noundef %577)
  br label %578

578:                                              ; preds = %571, %568, %565
  %579 = load i32, ptr %18, align 4, !tbaa !9
  %580 = icmp ugt i32 %579, 0
  br i1 %580, label %581, label %622

581:                                              ; preds = %578
  %582 = load i32, ptr %39, align 4, !tbaa !9
  %583 = load i32, ptr %38, align 4, !tbaa !9
  %584 = sub i32 %583, 1
  %585 = icmp eq i32 %582, %584
  br i1 %585, label %586, label %622

586:                                              ; preds = %581
  %587 = load i32, ptr %17, align 4, !tbaa !9
  %588 = icmp uge i32 %587, 1
  br i1 %588, label %589, label %597

589:                                              ; preds = %586
  %590 = load ptr, ptr %6, align 8, !tbaa !5
  %591 = load ptr, ptr %8, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %591, i32 0, i32 0
  %593 = load i32, ptr %592, align 4, !tbaa !29
  %594 = load ptr, ptr %8, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %594, i32 0, i32 27
  %596 = load i32, ptr %595, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %590, i32 noundef -1186988026, i32 noundef %593, i32 noundef 127, i32 noundef 40, i32 noundef %596)
  br label %597

597:                                              ; preds = %589, %586
  %598 = load i32, ptr %17, align 4, !tbaa !9
  %599 = icmp eq i32 %598, 1
  br i1 %599, label %600, label %621

600:                                              ; preds = %597
  %601 = load ptr, ptr %6, align 8, !tbaa !5
  %602 = load ptr, ptr %8, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %602, i32 0, i32 28
  %604 = load i32, ptr %603, align 4, !tbaa !23
  %605 = load ptr, ptr %8, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %605, i32 0, i32 35
  %607 = load i32, ptr %606, align 4, !tbaa !28
  %608 = load ptr, ptr %8, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %608, i32 0, i32 28
  %610 = load i32, ptr %609, align 4, !tbaa !23
  %611 = load ptr, ptr %9, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %611, i32 0, i32 2
  %613 = load i32, ptr %612, align 4, !tbaa !31
  %614 = zext i32 %613 to i64
  %615 = load i32, ptr %27, align 4, !tbaa !9
  %616 = zext i32 %615 to i64
  %617 = mul nsw i64 %614, %616
  %618 = load i32, ptr %16, align 4, !tbaa !9
  %619 = zext i32 %618 to i64
  %620 = mul nsw i64 %617, %619
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %601, i32 noundef 4096, i32 noundef %604, i32 noundef %607, i32 noundef %610, i64 noundef %620)
  br label %621

621:                                              ; preds = %600, %597
  br label %622

622:                                              ; preds = %621, %581, %578
  %623 = load i32, ptr %17, align 4, !tbaa !9
  %624 = icmp eq i32 %623, 0
  br i1 %624, label %636, label %625

625:                                              ; preds = %622
  %626 = load i32, ptr %17, align 4, !tbaa !9
  %627 = icmp uge i32 %626, 1
  br i1 %627, label %628, label %638

628:                                              ; preds = %625
  %629 = load i32, ptr %18, align 4, !tbaa !9
  %630 = icmp ugt i32 %629, 0
  br i1 %630, label %631, label %638

631:                                              ; preds = %628
  %632 = load i32, ptr %39, align 4, !tbaa !9
  %633 = load i32, ptr %38, align 4, !tbaa !9
  %634 = sub i32 %633, 1
  %635 = icmp eq i32 %632, %634
  br i1 %635, label %636, label %638

636:                                              ; preds = %631, %622
  %637 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %637, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %638

638:                                              ; preds = %636, %631, %628, %625
  %639 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %639, ptr %54, align 4, !tbaa !9
  %640 = load i32, ptr %54, align 4, !tbaa !9
  %641 = mul i32 2, %640
  store i32 %641, ptr %34, align 4, !tbaa !9
  %642 = load i32, ptr %54, align 4, !tbaa !9
  %643 = mul i32 3, %642
  store i32 %643, ptr %35, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %644

644:                                              ; preds = %845, %638
  %645 = load i32, ptr %12, align 4, !tbaa !9
  %646 = load i32, ptr %16, align 4, !tbaa !9
  %647 = icmp ult i32 %645, %646
  br i1 %647, label %648, label %848

648:                                              ; preds = %644
  %649 = load i32, ptr %25, align 4, !tbaa !9
  %650 = icmp eq i32 %649, 0
  br i1 %650, label %651, label %709

651:                                              ; preds = %648
  %652 = load i32, ptr %41, align 4, !tbaa !9
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %657, label %654

654:                                              ; preds = %651
  %655 = load i32, ptr %42, align 4, !tbaa !9
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %657, label %694

657:                                              ; preds = %654, %651
  %658 = load i32, ptr %12, align 4, !tbaa !9
  %659 = icmp eq i32 %658, 0
  br i1 %659, label %660, label %683

660:                                              ; preds = %657
  %661 = load ptr, ptr %6, align 8, !tbaa !5
  %662 = load ptr, ptr %8, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %662, i32 0, i32 35
  %664 = load i32, ptr %663, align 4, !tbaa !28
  %665 = load i32, ptr %45, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %661, i32 noundef 1358954502, i32 noundef 61, i32 noundef %664, i32 noundef %665, i8 noundef zeroext 0)
  %666 = load i8, ptr %55, align 1, !tbaa !16
  %667 = icmp ne i8 %666, 0
  br i1 %667, label %668, label %676

668:                                              ; preds = %660
  %669 = load ptr, ptr %6, align 8, !tbaa !5
  %670 = load ptr, ptr %8, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %670, i32 0, i32 35
  %672 = load i32, ptr %671, align 4, !tbaa !28
  %673 = load i32, ptr %12, align 4, !tbaa !9
  %674 = load i8, ptr %29, align 1, !tbaa !16
  %675 = zext i8 %674 to i32
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %669, i32 noundef -2059353978, i32 noundef %672, i32 noundef 127, i32 noundef 0, i32 noundef %673, i32 noundef %675)
  br label %682

676:                                              ; preds = %660
  %677 = load ptr, ptr %6, align 8, !tbaa !5
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %678, i32 0, i32 35
  %680 = load i32, ptr %679, align 4, !tbaa !28
  %681 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_struct_r_move(ptr noundef %677, i32 noundef 222347266, i32 noundef %680, i32 noundef 127, i32 noundef %681, i32 noundef 5)
  br label %682

682:                                              ; preds = %676, %668
  br label %693

683:                                              ; preds = %657
  %684 = load i8, ptr %55, align 1, !tbaa !16
  %685 = icmp ne i8 %684, 0
  br i1 %685, label %686, label %689

686:                                              ; preds = %683
  %687 = load ptr, ptr %6, align 8, !tbaa !5
  %688 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %687, i32 noundef 73412611, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %688, i32 noundef 0, i32 noundef 2)
  br label %692

689:                                              ; preds = %683
  %690 = load ptr, ptr %6, align 8, !tbaa !5
  %691 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %690, i32 noundef 245373971, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %691, i32 noundef 5)
  br label %692

692:                                              ; preds = %689, %686
  br label %693

693:                                              ; preds = %692, %682
  br label %708

694:                                              ; preds = %654
  %695 = load i8, ptr %55, align 1, !tbaa !16
  %696 = icmp ne i8 %695, 0
  br i1 %696, label %697, label %702

697:                                              ; preds = %694
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  %699 = load i32, ptr %12, align 4, !tbaa !9
  %700 = load i32, ptr %12, align 4, !tbaa !9
  %701 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %698, i32 noundef 77606915, i32 noundef %699, i32 noundef %700, i8 noundef zeroext 0, i32 noundef %701, i32 noundef 0, i32 noundef 2)
  br label %707

702:                                              ; preds = %694
  %703 = load ptr, ptr %6, align 8, !tbaa !5
  %704 = load i32, ptr %12, align 4, !tbaa !9
  %705 = load i32, ptr %12, align 4, !tbaa !9
  %706 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %703, i32 noundef 773856275, i32 noundef %704, i32 noundef %705, i8 noundef zeroext 0, i32 noundef %706, i32 noundef 1)
  br label %707

707:                                              ; preds = %702, %697
  br label %708

708:                                              ; preds = %707, %693
  br label %787

709:                                              ; preds = %648
  %710 = load i32, ptr %12, align 4, !tbaa !9
  %711 = load i32, ptr %18, align 4, !tbaa !9
  %712 = sub i32 %711, 1
  %713 = icmp eq i32 %710, %712
  br i1 %713, label %714, label %722

714:                                              ; preds = %709
  %715 = load i32, ptr %13, align 4, !tbaa !9
  %716 = icmp ugt i32 %715, 0
  br i1 %716, label %717, label %722

717:                                              ; preds = %714
  %718 = load i32, ptr %63, align 4, !tbaa !9
  %719 = icmp ugt i32 %718, 0
  br i1 %719, label %720, label %722

720:                                              ; preds = %717
  %721 = load i32, ptr %19, align 4, !tbaa !9
  br label %723

722:                                              ; preds = %717, %714, %709
  br label %723

723:                                              ; preds = %722, %720
  %724 = phi i32 [ %721, %720 ], [ 0, %722 ]
  store i32 %724, ptr %20, align 4, !tbaa !9
  %725 = load i32, ptr %53, align 4, !tbaa !9
  %726 = icmp eq i32 %725, 0
  br i1 %726, label %727, label %729

727:                                              ; preds = %723
  %728 = load i32, ptr %20, align 4, !tbaa !9
  br label %738

729:                                              ; preds = %723
  %730 = load i32, ptr %20, align 4, !tbaa !9
  %731 = icmp ugt i32 %730, 0
  br i1 %731, label %732, label %734

732:                                              ; preds = %729
  %733 = load i32, ptr %20, align 4, !tbaa !9
  br label %736

734:                                              ; preds = %729
  %735 = load i32, ptr %27, align 4, !tbaa !9
  br label %736

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

738:                                              ; preds = %736, %727
  %739 = phi i32 [ %728, %727 ], [ %737, %736 ]
  store i32 %739, ptr %37, align 4, !tbaa !9
  %740 = load i32, ptr %53, align 4, !tbaa !9
  %741 = icmp eq i32 %740, 0
  br i1 %741, label %742, label %753

742:                                              ; preds = %738
  %743 = load i32, ptr %20, align 4, !tbaa !9
  %744 = icmp ugt i32 %743, 0
  br i1 %744, label %745, label %748

745:                                              ; preds = %742
  %746 = load i8, ptr %30, align 1, !tbaa !16
  %747 = zext i8 %746 to i32
  br label %751

748:                                              ; preds = %742
  %749 = load i8, ptr %29, align 1, !tbaa !16
  %750 = zext i8 %749 to i32
  br label %751

751:                                              ; preds = %748, %745
  %752 = phi i32 [ %747, %745 ], [ %750, %748 ]
  br label %764

753:                                              ; preds = %738
  %754 = load i32, ptr %20, align 4, !tbaa !9
  %755 = icmp ugt i32 %754, 0
  br i1 %755, label %756, label %759

756:                                              ; preds = %753
  %757 = load i8, ptr %30, align 1, !tbaa !16
  %758 = zext i8 %757 to i32
  br label %762

759:                                              ; preds = %753
  %760 = load i8, ptr %31, align 1, !tbaa !16
  %761 = zext i8 %760 to i32
  br label %762

762:                                              ; preds = %759, %756
  %763 = phi i32 [ %758, %756 ], [ %761, %759 ]
  br label %764

764:                                              ; preds = %762, %751
  %765 = phi i32 [ %752, %751 ], [ %763, %762 ]
  %766 = trunc i32 %765 to i8
  store i8 %766, ptr %36, align 1, !tbaa !16
  %767 = load ptr, ptr %6, align 8, !tbaa !5
  %768 = load ptr, ptr %8, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %768, i32 0, i32 6
  %770 = load i32, ptr %769, align 4, !tbaa !24
  %771 = load ptr, ptr %8, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %771, i32 0, i32 35
  %773 = load i32, ptr %772, align 4, !tbaa !28
  %774 = load i32, ptr %12, align 4, !tbaa !9
  %775 = load ptr, ptr %9, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %775, i32 0, i32 5
  %777 = load i32, ptr %776, align 4, !tbaa !33
  %778 = load i32, ptr %37, align 4, !tbaa !9
  %779 = load i8, ptr %36, align 1, !tbaa !16
  %780 = load i8, ptr %55, align 1, !tbaa !16
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %767, i32 noundef %770, i32 noundef %773, i32 noundef %774, i32 noundef %777, i32 noundef %778, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %779, i8 noundef zeroext %780)
  %781 = load i32, ptr %53, align 4, !tbaa !9
  %782 = icmp ugt i32 %781, 0
  br i1 %782, label %783, label %786

783:                                              ; preds = %764
  %784 = load ptr, ptr %6, align 8, !tbaa !5
  %785 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %784, i32 noundef %785, i32 noundef 0)
  br label %786

786:                                              ; preds = %783, %764
  br label %787

787:                                              ; preds = %786, %708
  %788 = load i32, ptr %40, align 4, !tbaa !9
  %789 = icmp ugt i32 %788, 0
  br i1 %789, label %790, label %844

790:                                              ; preds = %787
  %791 = load i8, ptr %55, align 1, !tbaa !16
  %792 = icmp ne i8 %791, 0
  br i1 %792, label %793, label %818

793:                                              ; preds = %790
  %794 = load ptr, ptr %6, align 8, !tbaa !5
  %795 = load i32, ptr %12, align 4, !tbaa !9
  %796 = load i32, ptr %34, align 4, !tbaa !9
  %797 = add i32 %795, %796
  %798 = load i32, ptr %12, align 4, !tbaa !9
  %799 = load i32, ptr %34, align 4, !tbaa !9
  %800 = add i32 %798, %799
  %801 = load i32, ptr %12, align 4, !tbaa !9
  %802 = load i32, ptr %34, align 4, !tbaa !9
  %803 = add i32 %801, %802
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %794, i32 noundef 77606915, i32 noundef %797, i32 noundef %800, i8 noundef zeroext 0, i32 noundef %803, i32 noundef 0, i32 noundef 2)
  %804 = load i32, ptr %24, align 4, !tbaa !9
  %805 = icmp eq i32 %804, 8
  br i1 %805, label %806, label %817

806:                                              ; preds = %793
  %807 = load ptr, ptr %6, align 8, !tbaa !5
  %808 = load i32, ptr %12, align 4, !tbaa !9
  %809 = load i32, ptr %35, align 4, !tbaa !9
  %810 = add i32 %808, %809
  %811 = load i32, ptr %12, align 4, !tbaa !9
  %812 = load i32, ptr %35, align 4, !tbaa !9
  %813 = add i32 %811, %812
  %814 = load i32, ptr %12, align 4, !tbaa !9
  %815 = load i32, ptr %35, align 4, !tbaa !9
  %816 = add i32 %814, %815
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %807, i32 noundef 77606915, i32 noundef %810, i32 noundef %813, i8 noundef zeroext 0, i32 noundef %816, i32 noundef 0, i32 noundef 2)
  br label %817

817:                                              ; preds = %806, %793
  br label %843

818:                                              ; preds = %790
  %819 = load ptr, ptr %6, align 8, !tbaa !5
  %820 = load i32, ptr %12, align 4, !tbaa !9
  %821 = load i32, ptr %34, align 4, !tbaa !9
  %822 = add i32 %820, %821
  %823 = load i32, ptr %12, align 4, !tbaa !9
  %824 = load i32, ptr %34, align 4, !tbaa !9
  %825 = add i32 %823, %824
  %826 = load i32, ptr %12, align 4, !tbaa !9
  %827 = load i32, ptr %34, align 4, !tbaa !9
  %828 = add i32 %826, %827
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %819, i32 noundef 773856275, i32 noundef %822, i32 noundef %825, i8 noundef zeroext 0, i32 noundef %828, i32 noundef 1)
  %829 = load i32, ptr %24, align 4, !tbaa !9
  %830 = icmp eq i32 %829, 8
  br i1 %830, label %831, label %842

831:                                              ; preds = %818
  %832 = load ptr, ptr %6, align 8, !tbaa !5
  %833 = load i32, ptr %12, align 4, !tbaa !9
  %834 = load i32, ptr %35, align 4, !tbaa !9
  %835 = add i32 %833, %834
  %836 = load i32, ptr %12, align 4, !tbaa !9
  %837 = load i32, ptr %35, align 4, !tbaa !9
  %838 = add i32 %836, %837
  %839 = load i32, ptr %12, align 4, !tbaa !9
  %840 = load i32, ptr %35, align 4, !tbaa !9
  %841 = add i32 %839, %840
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %832, i32 noundef 773856275, i32 noundef %835, i32 noundef %838, i8 noundef zeroext 0, i32 noundef %841, i32 noundef 1)
  br label %842

842:                                              ; preds = %831, %818
  br label %843

843:                                              ; preds = %842, %817
  br label %844

844:                                              ; preds = %843, %787
  br label %845

845:                                              ; preds = %844
  %846 = load i32, ptr %12, align 4, !tbaa !9
  %847 = add i32 %846, 1
  store i32 %847, ptr %12, align 4, !tbaa !9
  br label %644, !llvm.loop !34

848:                                              ; preds = %644
  %849 = load i32, ptr %25, align 4, !tbaa !9
  %850 = icmp eq i32 %849, 1
  br i1 %850, label %851, label %899

851:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  %852 = load i32, ptr %16, align 4, !tbaa !9
  %853 = load i32, ptr %27, align 4, !tbaa !9
  %854 = mul i32 %852, %853
  %855 = load ptr, ptr %9, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %855, i32 0, i32 5
  %857 = load i32, ptr %856, align 4, !tbaa !33
  %858 = mul i32 %854, %857
  %859 = zext i32 %858 to i64
  store i64 %859, ptr %64, align 8, !tbaa !36
  %860 = load i32, ptr %63, align 4, !tbaa !9
  %861 = icmp ne i32 %860, 0
  br i1 %861, label %862, label %887

862:                                              ; preds = %851
  %863 = load i32, ptr %18, align 4, !tbaa !9
  %864 = zext i32 %863 to i64
  %865 = load ptr, ptr %9, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %865, i32 0, i32 5
  %867 = load i32, ptr %866, align 4, !tbaa !33
  %868 = zext i32 %867 to i64
  %869 = mul nsw i64 %864, %868
  %870 = load i32, ptr %27, align 4, !tbaa !9
  %871 = zext i32 %870 to i64
  %872 = mul nsw i64 %869, %871
  %873 = load i32, ptr %13, align 4, !tbaa !9
  %874 = zext i32 %873 to i64
  %875 = load i32, ptr %27, align 4, !tbaa !9
  %876 = zext i32 %875 to i64
  %877 = load i32, ptr %19, align 4, !tbaa !9
  %878 = zext i32 %877 to i64
  %879 = sub nsw i64 %876, %878
  %880 = mul nsw i64 %874, %879
  %881 = load ptr, ptr %9, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %881, i32 0, i32 5
  %883 = load i32, ptr %882, align 4, !tbaa !33
  %884 = zext i32 %883 to i64
  %885 = mul nsw i64 %880, %884
  %886 = sub nsw i64 %872, %885
  store i64 %886, ptr %64, align 8, !tbaa !36
  br label %887

887:                                              ; preds = %862, %851
  %888 = load ptr, ptr %6, align 8, !tbaa !5
  %889 = load ptr, ptr %8, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %889, i32 0, i32 6
  %891 = load i32, ptr %890, align 4, !tbaa !24
  %892 = load ptr, ptr %8, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %892, i32 0, i32 35
  %894 = load i32, ptr %893, align 4, !tbaa !28
  %895 = load ptr, ptr %8, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %895, i32 0, i32 6
  %897 = load i32, ptr %896, align 4, !tbaa !24
  %898 = load i64, ptr %64, align 8, !tbaa !36
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %888, i32 noundef 4097, i32 noundef %891, i32 noundef %894, i32 noundef %897, i64 noundef %898)
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  br label %899

899:                                              ; preds = %887, %848
  %900 = load ptr, ptr %6, align 8, !tbaa !5
  %901 = load ptr, ptr %7, align 8, !tbaa !5
  %902 = load ptr, ptr %8, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %902, i32 0, i32 25
  %904 = load i32, ptr %903, align 4, !tbaa !26
  %905 = load ptr, ptr %8, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %905, i32 0, i32 26
  %907 = load i32, ptr %906, align 4, !tbaa !20
  call void @libxsmm_generator_loop_header_gp_reg_bound_aarch64(ptr noundef %900, ptr noundef %901, i32 noundef %904, i32 noundef %907)
  %908 = load ptr, ptr %6, align 8, !tbaa !5
  %909 = load ptr, ptr %8, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %909, i32 0, i32 27
  %911 = load i32, ptr %910, align 4, !tbaa !22
  %912 = load i32, ptr %24, align 4, !tbaa !9
  %913 = load i32, ptr %22, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %908, i32 noundef -1203764218, i32 noundef %911, i32 noundef 127, i32 noundef %912, i32 noundef %913)
  %914 = load i32, ptr %40, align 4, !tbaa !9
  %915 = icmp ugt i32 %914, 0
  br i1 %915, label %916, label %937

916:                                              ; preds = %899
  %917 = load i8, ptr %55, align 1, !tbaa !16
  %918 = icmp ne i8 %917, 0
  br i1 %918, label %919, label %928

919:                                              ; preds = %916
  %920 = load ptr, ptr %6, align 8, !tbaa !5
  %921 = load i32, ptr %21, align 4, !tbaa !9
  %922 = load i32, ptr %21, align 4, !tbaa !9
  %923 = load i32, ptr %43, align 4, !tbaa !9
  %924 = load i32, ptr %24, align 4, !tbaa !9
  %925 = icmp eq i32 %924, 8
  %926 = zext i1 %925 to i64
  %927 = select i1 %925, i32 3, i32 2
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %920, i32 noundef 85997570, i32 noundef %921, i32 noundef %922, i8 noundef zeroext 0, i32 noundef %923, i32 noundef 0, i32 noundef %927)
  br label %936

928:                                              ; preds = %916
  %929 = load ptr, ptr %6, align 8, !tbaa !5
  %930 = load i32, ptr %21, align 4, !tbaa !9
  %931 = load i32, ptr %43, align 4, !tbaa !9
  %932 = load i32, ptr %24, align 4, !tbaa !9
  %933 = icmp eq i32 %932, 8
  %934 = zext i1 %933 to i64
  %935 = select i1 %933, i32 6, i32 4
  call void @libxsmm_aarch64_instruction_asimd_gpr_move(ptr noundef %929, i32 noundef 1308625950, i32 noundef %930, i32 noundef %931, i16 noundef signext 0, i32 noundef %935)
  br label %936

936:                                              ; preds = %928, %919
  br label %937

937:                                              ; preds = %936, %899
  %938 = load ptr, ptr %6, align 8, !tbaa !5
  %939 = load i32, ptr %21, align 4, !tbaa !9
  %940 = load i32, ptr %23, align 4, !tbaa !9
  %941 = load ptr, ptr %8, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %941, i32 0, i32 1
  %943 = load i32, ptr %942, align 4, !tbaa !27
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %938, i32 noundef 453016595, i32 noundef %939, i32 noundef %940, i32 noundef %943, i32 noundef 0, i32 noundef 0)
  %944 = load ptr, ptr %6, align 8, !tbaa !5
  %945 = load ptr, ptr %8, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %945, i32 0, i32 1
  %947 = load i32, ptr %946, align 4, !tbaa !27
  %948 = load ptr, ptr %8, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %948, i32 0, i32 28
  %950 = load i32, ptr %949, align 4, !tbaa !23
  %951 = load ptr, ptr %8, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %951, i32 0, i32 1
  %953 = load i32, ptr %952, align 4, !tbaa !27
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %944, i32 noundef 184549383, i32 noundef %947, i32 noundef %950, i32 noundef %953, i32 noundef 0, i32 noundef 0)
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %954

954:                                              ; preds = %1154, %937
  %955 = load i32, ptr %12, align 4, !tbaa !9
  %956 = load i32, ptr %16, align 4, !tbaa !9
  %957 = icmp ult i32 %955, %956
  br i1 %957, label %958, label %1157

958:                                              ; preds = %954
  %959 = load i32, ptr %12, align 4, !tbaa !9
  %960 = load i32, ptr %18, align 4, !tbaa !9
  %961 = sub i32 %960, 1
  %962 = icmp eq i32 %959, %961
  br i1 %962, label %963, label %971

963:                                              ; preds = %958
  %964 = load i32, ptr %13, align 4, !tbaa !9
  %965 = icmp ugt i32 %964, 0
  br i1 %965, label %966, label %971

966:                                              ; preds = %963
  %967 = load i32, ptr %63, align 4, !tbaa !9
  %968 = icmp ugt i32 %967, 0
  br i1 %968, label %969, label %971

969:                                              ; preds = %966
  %970 = load i32, ptr %19, align 4, !tbaa !9
  br label %972

971:                                              ; preds = %966, %963, %958
  br label %972

972:                                              ; preds = %971, %969
  %973 = phi i32 [ %970, %969 ], [ 0, %971 ]
  store i32 %973, ptr %20, align 4, !tbaa !9
  %974 = load i32, ptr %52, align 4, !tbaa !9
  %975 = icmp eq i32 %974, 0
  br i1 %975, label %976, label %978

976:                                              ; preds = %972
  %977 = load i32, ptr %20, align 4, !tbaa !9
  br label %987

978:                                              ; preds = %972
  %979 = load i32, ptr %20, align 4, !tbaa !9
  %980 = icmp ugt i32 %979, 0
  br i1 %980, label %981, label %983

981:                                              ; preds = %978
  %982 = load i32, ptr %20, align 4, !tbaa !9
  br label %985

983:                                              ; preds = %978
  %984 = load i32, ptr %27, align 4, !tbaa !9
  br label %985

985:                                              ; preds = %983, %981
  %986 = phi i32 [ %982, %981 ], [ %984, %983 ]
  br label %987

987:                                              ; preds = %985, %976
  %988 = phi i32 [ %977, %976 ], [ %986, %985 ]
  store i32 %988, ptr %37, align 4, !tbaa !9
  %989 = load i32, ptr %52, align 4, !tbaa !9
  %990 = icmp eq i32 %989, 0
  br i1 %990, label %991, label %1002

991:                                              ; preds = %987
  %992 = load i32, ptr %20, align 4, !tbaa !9
  %993 = icmp ugt i32 %992, 0
  br i1 %993, label %994, label %997

994:                                              ; preds = %991
  %995 = load i8, ptr %30, align 1, !tbaa !16
  %996 = zext i8 %995 to i32
  br label %1000

997:                                              ; preds = %991
  %998 = load i8, ptr %29, align 1, !tbaa !16
  %999 = zext i8 %998 to i32
  br label %1000

1000:                                             ; preds = %997, %994
  %1001 = phi i32 [ %996, %994 ], [ %999, %997 ]
  br label %1013

1002:                                             ; preds = %987
  %1003 = load i32, ptr %20, align 4, !tbaa !9
  %1004 = icmp ugt i32 %1003, 0
  br i1 %1004, label %1005, label %1008

1005:                                             ; preds = %1002
  %1006 = load i8, ptr %30, align 1, !tbaa !16
  %1007 = zext i8 %1006 to i32
  br label %1011

1008:                                             ; preds = %1002
  %1009 = load i8, ptr %31, align 1, !tbaa !16
  %1010 = zext i8 %1009 to i32
  br label %1011

1011:                                             ; preds = %1008, %1005
  %1012 = phi i32 [ %1007, %1005 ], [ %1010, %1008 ]
  br label %1013

1013:                                             ; preds = %1011, %1000
  %1014 = phi i32 [ %1001, %1000 ], [ %1012, %1011 ]
  %1015 = trunc i32 %1014 to i8
  store i8 %1015, ptr %36, align 1, !tbaa !16
  %1016 = load ptr, ptr %6, align 8, !tbaa !5
  %1017 = load ptr, ptr %8, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1017, i32 0, i32 1
  %1019 = load i32, ptr %1018, align 4, !tbaa !27
  %1020 = load ptr, ptr %8, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1020, i32 0, i32 35
  %1022 = load i32, ptr %1021, align 4, !tbaa !28
  %1023 = load i32, ptr %54, align 4, !tbaa !9
  %1024 = load i32, ptr %12, align 4, !tbaa !9
  %1025 = add i32 %1023, %1024
  %1026 = load ptr, ptr %9, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1026, i32 0, i32 2
  %1028 = load i32, ptr %1027, align 4, !tbaa !31
  %1029 = load i32, ptr %37, align 4, !tbaa !9
  %1030 = load i8, ptr %36, align 1, !tbaa !16
  %1031 = load i8, ptr %55, align 1, !tbaa !16
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1016, i32 noundef %1019, i32 noundef %1022, i32 noundef %1025, i32 noundef %1028, i32 noundef %1029, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1030, i8 noundef zeroext %1031)
  %1032 = load i32, ptr %52, align 4, !tbaa !9
  %1033 = icmp ugt i32 %1032, 0
  br i1 %1033, label %1034, label %1039

1034:                                             ; preds = %1013
  %1035 = load ptr, ptr %6, align 8, !tbaa !5
  %1036 = load i32, ptr %54, align 4, !tbaa !9
  %1037 = load i32, ptr %12, align 4, !tbaa !9
  %1038 = add i32 %1036, %1037
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1035, i32 noundef %1038, i32 noundef 0)
  br label %1039

1039:                                             ; preds = %1034, %1013
  %1040 = load i8, ptr %55, align 1, !tbaa !16
  %1041 = icmp ne i8 %1040, 0
  br i1 %1041, label %1042, label %1102

1042:                                             ; preds = %1039
  %1043 = load i32, ptr %40, align 4, !tbaa !9
  %1044 = icmp ne i32 %1043, 0
  br i1 %1044, label %1045, label %1094

1045:                                             ; preds = %1042
  %1046 = load ptr, ptr %6, align 8, !tbaa !5
  %1047 = load i32, ptr %49, align 4, !tbaa !9
  %1048 = load i32, ptr %12, align 4, !tbaa !9
  %1049 = load i32, ptr %54, align 4, !tbaa !9
  %1050 = add i32 %1048, %1049
  %1051 = load i32, ptr %12, align 4, !tbaa !9
  %1052 = load i32, ptr %57, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1046, i32 noundef %1047, i32 noundef %1050, i32 noundef %1051, i8 noundef zeroext 0, i32 noundef %1052, i32 noundef 0, i32 noundef 2)
  %1053 = load i32, ptr %24, align 4, !tbaa !9
  %1054 = icmp eq i32 %1053, 4
  br i1 %1054, label %1055, label %1066

1055:                                             ; preds = %1045
  %1056 = load ptr, ptr %6, align 8, !tbaa !5
  %1057 = load i32, ptr %50, align 4, !tbaa !9
  %1058 = load i32, ptr %12, align 4, !tbaa !9
  %1059 = load i32, ptr %34, align 4, !tbaa !9
  %1060 = add i32 %1058, %1059
  %1061 = load i32, ptr %43, align 4, !tbaa !9
  %1062 = load i32, ptr %12, align 4, !tbaa !9
  %1063 = load i32, ptr %34, align 4, !tbaa !9
  %1064 = add i32 %1062, %1063
  %1065 = load i32, ptr %57, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1056, i32 noundef %1057, i32 noundef %1060, i32 noundef %1061, i8 noundef zeroext 0, i32 noundef %1064, i32 noundef %1065, i32 noundef 2)
  br label %1093

1066:                                             ; preds = %1045
  %1067 = load ptr, ptr %6, align 8, !tbaa !5
  %1068 = load i32, ptr %57, align 4, !tbaa !9
  %1069 = load i32, ptr %58, align 4, !tbaa !9
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %1067, i32 noundef %1068, i32 noundef %1069, i32 noundef 0)
  %1070 = load ptr, ptr %6, align 8, !tbaa !5
  %1071 = load i32, ptr %50, align 4, !tbaa !9
  %1072 = load i32, ptr %12, align 4, !tbaa !9
  %1073 = load i32, ptr %34, align 4, !tbaa !9
  %1074 = add i32 %1072, %1073
  %1075 = load i32, ptr %43, align 4, !tbaa !9
  %1076 = load i32, ptr %12, align 4, !tbaa !9
  %1077 = load i32, ptr %34, align 4, !tbaa !9
  %1078 = add i32 %1076, %1077
  %1079 = load i32, ptr %58, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1070, i32 noundef %1071, i32 noundef %1074, i32 noundef %1075, i8 noundef zeroext 0, i32 noundef %1078, i32 noundef %1079, i32 noundef 3)
  %1080 = load ptr, ptr %6, align 8, !tbaa !5
  %1081 = load i32, ptr %57, align 4, !tbaa !9
  %1082 = load i32, ptr %58, align 4, !tbaa !9
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %1080, i32 noundef %1081, i32 noundef %1082, i32 noundef 1)
  %1083 = load ptr, ptr %6, align 8, !tbaa !5
  %1084 = load i32, ptr %50, align 4, !tbaa !9
  %1085 = load i32, ptr %12, align 4, !tbaa !9
  %1086 = load i32, ptr %35, align 4, !tbaa !9
  %1087 = add i32 %1085, %1086
  %1088 = load i32, ptr %43, align 4, !tbaa !9
  %1089 = load i32, ptr %12, align 4, !tbaa !9
  %1090 = load i32, ptr %35, align 4, !tbaa !9
  %1091 = add i32 %1089, %1090
  %1092 = load i32, ptr %58, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1083, i32 noundef %1084, i32 noundef %1087, i32 noundef %1088, i8 noundef zeroext 0, i32 noundef %1091, i32 noundef %1092, i32 noundef 3)
  br label %1093

1093:                                             ; preds = %1066, %1055
  br label %1094

1094:                                             ; preds = %1093, %1042
  %1095 = load ptr, ptr %6, align 8, !tbaa !5
  %1096 = load i32, ptr %48, align 4, !tbaa !9
  %1097 = load i32, ptr %12, align 4, !tbaa !9
  %1098 = load i32, ptr %54, align 4, !tbaa !9
  %1099 = add i32 %1097, %1098
  %1100 = load i32, ptr %12, align 4, !tbaa !9
  %1101 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1095, i32 noundef %1096, i32 noundef %1099, i32 noundef %1100, i8 noundef zeroext 0, i32 noundef %1101, i32 noundef 0, i32 noundef 2)
  br label %1153

1102:                                             ; preds = %1039
  %1103 = load i32, ptr %40, align 4, !tbaa !9
  %1104 = icmp ne i32 %1103, 0
  br i1 %1104, label %1105, label %1145

1105:                                             ; preds = %1102
  %1106 = load ptr, ptr %6, align 8, !tbaa !5
  %1107 = load i32, ptr %49, align 4, !tbaa !9
  %1108 = load i32, ptr %12, align 4, !tbaa !9
  %1109 = load i32, ptr %54, align 4, !tbaa !9
  %1110 = add i32 %1108, %1109
  %1111 = load i32, ptr %12, align 4, !tbaa !9
  %1112 = load i32, ptr %57, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1106, i32 noundef %1107, i32 noundef %1110, i32 noundef %1111, i8 noundef zeroext 0, i32 noundef %1112, i32 noundef 5)
  %1113 = load i32, ptr %24, align 4, !tbaa !9
  %1114 = icmp eq i32 %1113, 4
  br i1 %1114, label %1115, label %1123

1115:                                             ; preds = %1105
  %1116 = load ptr, ptr %6, align 8, !tbaa !5
  %1117 = load i32, ptr %50, align 4, !tbaa !9
  %1118 = load i32, ptr %43, align 4, !tbaa !9
  %1119 = load i32, ptr %57, align 4, !tbaa !9
  %1120 = load i32, ptr %12, align 4, !tbaa !9
  %1121 = load i32, ptr %34, align 4, !tbaa !9
  %1122 = add i32 %1120, %1121
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1116, i32 noundef %1117, i32 noundef %1118, i32 noundef %1119, i8 noundef zeroext 0, i32 noundef %1122, i32 noundef 1)
  br label %1144

1123:                                             ; preds = %1105
  %1124 = load ptr, ptr %6, align 8, !tbaa !5
  %1125 = load i32, ptr %57, align 4, !tbaa !9
  %1126 = load i32, ptr %58, align 4, !tbaa !9
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %1124, i32 noundef %1125, i32 noundef %1126, i32 noundef 0)
  %1127 = load ptr, ptr %6, align 8, !tbaa !5
  %1128 = load i32, ptr %50, align 4, !tbaa !9
  %1129 = load i32, ptr %43, align 4, !tbaa !9
  %1130 = load i32, ptr %58, align 4, !tbaa !9
  %1131 = load i32, ptr %12, align 4, !tbaa !9
  %1132 = load i32, ptr %34, align 4, !tbaa !9
  %1133 = add i32 %1131, %1132
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1127, i32 noundef %1128, i32 noundef %1129, i32 noundef %1130, i8 noundef zeroext 0, i32 noundef %1133, i32 noundef 1)
  %1134 = load ptr, ptr %6, align 8, !tbaa !5
  %1135 = load i32, ptr %57, align 4, !tbaa !9
  %1136 = load i32, ptr %58, align 4, !tbaa !9
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %1134, i32 noundef %1135, i32 noundef %1136, i32 noundef 1)
  %1137 = load ptr, ptr %6, align 8, !tbaa !5
  %1138 = load i32, ptr %50, align 4, !tbaa !9
  %1139 = load i32, ptr %43, align 4, !tbaa !9
  %1140 = load i32, ptr %58, align 4, !tbaa !9
  %1141 = load i32, ptr %12, align 4, !tbaa !9
  %1142 = load i32, ptr %35, align 4, !tbaa !9
  %1143 = add i32 %1141, %1142
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1137, i32 noundef %1138, i32 noundef %1139, i32 noundef %1140, i8 noundef zeroext 0, i32 noundef %1143, i32 noundef 1)
  br label %1144

1144:                                             ; preds = %1123, %1115
  br label %1145

1145:                                             ; preds = %1144, %1102
  %1146 = load ptr, ptr %6, align 8, !tbaa !5
  %1147 = load i32, ptr %48, align 4, !tbaa !9
  %1148 = load i32, ptr %12, align 4, !tbaa !9
  %1149 = load i32, ptr %54, align 4, !tbaa !9
  %1150 = add i32 %1148, %1149
  %1151 = load i32, ptr %12, align 4, !tbaa !9
  %1152 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1146, i32 noundef %1147, i32 noundef %1150, i32 noundef %1151, i8 noundef zeroext 0, i32 noundef %1152, i32 noundef 5)
  br label %1153

1153:                                             ; preds = %1145, %1094
  br label %1154

1154:                                             ; preds = %1153
  %1155 = load i32, ptr %12, align 4, !tbaa !9
  %1156 = add i32 %1155, 1
  store i32 %1156, ptr %12, align 4, !tbaa !9
  br label %954, !llvm.loop !38

1157:                                             ; preds = %954
  %1158 = load ptr, ptr %6, align 8, !tbaa !5
  %1159 = load ptr, ptr %7, align 8, !tbaa !5
  %1160 = load ptr, ptr %8, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1160, i32 0, i32 25
  %1162 = load i32, ptr %1161, align 4, !tbaa !26
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1158, ptr noundef %1159, i32 noundef %1162, i32 noundef 1)
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1163

1163:                                             ; preds = %1245, %1157
  %1164 = load i32, ptr %12, align 4, !tbaa !9
  %1165 = load i32, ptr %16, align 4, !tbaa !9
  %1166 = icmp ult i32 %1164, %1165
  br i1 %1166, label %1167, label %1248

1167:                                             ; preds = %1163
  %1168 = load i32, ptr %12, align 4, !tbaa !9
  %1169 = load i32, ptr %18, align 4, !tbaa !9
  %1170 = sub i32 %1169, 1
  %1171 = icmp eq i32 %1168, %1170
  br i1 %1171, label %1172, label %1180

1172:                                             ; preds = %1167
  %1173 = load i32, ptr %13, align 4, !tbaa !9
  %1174 = icmp ugt i32 %1173, 0
  br i1 %1174, label %1175, label %1180

1175:                                             ; preds = %1172
  %1176 = load i32, ptr %63, align 4, !tbaa !9
  %1177 = icmp ugt i32 %1176, 0
  br i1 %1177, label %1178, label %1180

1178:                                             ; preds = %1175
  %1179 = load i32, ptr %19, align 4, !tbaa !9
  br label %1181

1180:                                             ; preds = %1175, %1172, %1167
  br label %1181

1181:                                             ; preds = %1180, %1178
  %1182 = phi i32 [ %1179, %1178 ], [ 0, %1180 ]
  store i32 %1182, ptr %20, align 4, !tbaa !9
  %1183 = load i32, ptr %53, align 4, !tbaa !9
  %1184 = icmp eq i32 %1183, 0
  br i1 %1184, label %1185, label %1187

1185:                                             ; preds = %1181
  %1186 = load i32, ptr %20, align 4, !tbaa !9
  br label %1196

1187:                                             ; preds = %1181
  %1188 = load i32, ptr %20, align 4, !tbaa !9
  %1189 = icmp ugt i32 %1188, 0
  br i1 %1189, label %1190, label %1192

1190:                                             ; preds = %1187
  %1191 = load i32, ptr %20, align 4, !tbaa !9
  br label %1194

1192:                                             ; preds = %1187
  %1193 = load i32, ptr %27, align 4, !tbaa !9
  br label %1194

1194:                                             ; preds = %1192, %1190
  %1195 = phi i32 [ %1191, %1190 ], [ %1193, %1192 ]
  br label %1196

1196:                                             ; preds = %1194, %1185
  %1197 = phi i32 [ %1186, %1185 ], [ %1195, %1194 ]
  store i32 %1197, ptr %37, align 4, !tbaa !9
  %1198 = load i32, ptr %53, align 4, !tbaa !9
  %1199 = icmp eq i32 %1198, 0
  br i1 %1199, label %1200, label %1211

1200:                                             ; preds = %1196
  %1201 = load i32, ptr %20, align 4, !tbaa !9
  %1202 = icmp ugt i32 %1201, 0
  br i1 %1202, label %1203, label %1206

1203:                                             ; preds = %1200
  %1204 = load i8, ptr %30, align 1, !tbaa !16
  %1205 = zext i8 %1204 to i32
  br label %1209

1206:                                             ; preds = %1200
  %1207 = load i8, ptr %29, align 1, !tbaa !16
  %1208 = zext i8 %1207 to i32
  br label %1209

1209:                                             ; preds = %1206, %1203
  %1210 = phi i32 [ %1205, %1203 ], [ %1208, %1206 ]
  br label %1222

1211:                                             ; preds = %1196
  %1212 = load i32, ptr %20, align 4, !tbaa !9
  %1213 = icmp ugt i32 %1212, 0
  br i1 %1213, label %1214, label %1217

1214:                                             ; preds = %1211
  %1215 = load i8, ptr %30, align 1, !tbaa !16
  %1216 = zext i8 %1215 to i32
  br label %1220

1217:                                             ; preds = %1211
  %1218 = load i8, ptr %31, align 1, !tbaa !16
  %1219 = zext i8 %1218 to i32
  br label %1220

1220:                                             ; preds = %1217, %1214
  %1221 = phi i32 [ %1216, %1214 ], [ %1219, %1217 ]
  br label %1222

1222:                                             ; preds = %1220, %1209
  %1223 = phi i32 [ %1210, %1209 ], [ %1221, %1220 ]
  %1224 = trunc i32 %1223 to i8
  store i8 %1224, ptr %36, align 1, !tbaa !16
  %1225 = load i32, ptr %53, align 4, !tbaa !9
  %1226 = icmp ugt i32 %1225, 0
  br i1 %1226, label %1227, label %1230

1227:                                             ; preds = %1222
  %1228 = load ptr, ptr %6, align 8, !tbaa !5
  %1229 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %1228, i32 noundef %1229, i32 noundef 0)
  br label %1230

1230:                                             ; preds = %1227, %1222
  %1231 = load ptr, ptr %6, align 8, !tbaa !5
  %1232 = load ptr, ptr %8, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1232, i32 0, i32 6
  %1234 = load i32, ptr %1233, align 4, !tbaa !24
  %1235 = load ptr, ptr %8, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1235, i32 0, i32 35
  %1237 = load i32, ptr %1236, align 4, !tbaa !28
  %1238 = load i32, ptr %12, align 4, !tbaa !9
  %1239 = load ptr, ptr %9, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1239, i32 0, i32 5
  %1241 = load i32, ptr %1240, align 4, !tbaa !33
  %1242 = load i32, ptr %37, align 4, !tbaa !9
  %1243 = load i8, ptr %36, align 1, !tbaa !16
  %1244 = load i8, ptr %55, align 1, !tbaa !16
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1231, i32 noundef %1234, i32 noundef %1237, i32 noundef %1238, i32 noundef %1241, i32 noundef %1242, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1243, i8 noundef zeroext %1244)
  br label %1245

1245:                                             ; preds = %1230
  %1246 = load i32, ptr %12, align 4, !tbaa !9
  %1247 = add i32 %1246, 1
  store i32 %1247, ptr %12, align 4, !tbaa !9
  br label %1163, !llvm.loop !39

1248:                                             ; preds = %1163
  %1249 = load i32, ptr %40, align 4, !tbaa !9
  %1250 = icmp ugt i32 %1249, 0
  br i1 %1250, label %1251, label %1439

1251:                                             ; preds = %1248
  %1252 = load i32, ptr %24, align 4, !tbaa !9
  %1253 = icmp eq i32 %1252, 4
  br i1 %1253, label %1254, label %1301

1254:                                             ; preds = %1251
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1255

1255:                                             ; preds = %1297, %1254
  %1256 = load i32, ptr %12, align 4, !tbaa !9
  %1257 = load i32, ptr %16, align 4, !tbaa !9
  %1258 = icmp ult i32 %1256, %1257
  br i1 %1258, label %1259, label %1300

1259:                                             ; preds = %1255
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  %1260 = load i32, ptr %12, align 4, !tbaa !9
  %1261 = load i32, ptr %34, align 4, !tbaa !9
  %1262 = add i32 %1260, %1261
  store i32 %1262, ptr %65, align 4, !tbaa !9
  %1263 = load i32, ptr %12, align 4, !tbaa !9
  %1264 = load i32, ptr %18, align 4, !tbaa !9
  %1265 = sub i32 %1264, 1
  %1266 = icmp eq i32 %1263, %1265
  br i1 %1266, label %1267, label %1275

1267:                                             ; preds = %1259
  %1268 = load i32, ptr %13, align 4, !tbaa !9
  %1269 = icmp ugt i32 %1268, 0
  br i1 %1269, label %1270, label %1275

1270:                                             ; preds = %1267
  %1271 = load i32, ptr %63, align 4, !tbaa !9
  %1272 = icmp ugt i32 %1271, 0
  br i1 %1272, label %1273, label %1275

1273:                                             ; preds = %1270
  %1274 = load i32, ptr %19, align 4, !tbaa !9
  br label %1276

1275:                                             ; preds = %1270, %1267, %1259
  br label %1276

1276:                                             ; preds = %1275, %1273
  %1277 = phi i32 [ %1274, %1273 ], [ 0, %1275 ]
  store i32 %1277, ptr %20, align 4, !tbaa !9
  %1278 = load ptr, ptr %6, align 8, !tbaa !5
  %1279 = load i32, ptr %46, align 4, !tbaa !9
  %1280 = load ptr, ptr %8, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1280, i32 0, i32 35
  %1282 = load i32, ptr %1281, align 4, !tbaa !28
  %1283 = load i32, ptr %65, align 4, !tbaa !9
  %1284 = load i32, ptr %20, align 4, !tbaa !9
  %1285 = load i32, ptr %20, align 4, !tbaa !9
  %1286 = icmp ne i32 %1285, 0
  br i1 %1286, label %1287, label %1290

1287:                                             ; preds = %1276
  %1288 = load i8, ptr %32, align 1, !tbaa !16
  %1289 = zext i8 %1288 to i32
  br label %1293

1290:                                             ; preds = %1276
  %1291 = load i8, ptr %29, align 1, !tbaa !16
  %1292 = zext i8 %1291 to i32
  br label %1293

1293:                                             ; preds = %1290, %1287
  %1294 = phi i32 [ %1289, %1287 ], [ %1292, %1290 ]
  %1295 = trunc i32 %1294 to i8
  %1296 = load i8, ptr %55, align 1, !tbaa !16
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1278, i32 noundef %1279, i32 noundef %1282, i32 noundef %1283, i32 noundef 4, i32 noundef %1284, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1295, i8 noundef zeroext %1296)
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  br label %1297

1297:                                             ; preds = %1293
  %1298 = load i32, ptr %12, align 4, !tbaa !9
  %1299 = add i32 %1298, 1
  store i32 %1299, ptr %12, align 4, !tbaa !9
  br label %1255, !llvm.loop !40

1300:                                             ; preds = %1255
  br label %1438

1301:                                             ; preds = %1251
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1302

1302:                                             ; preds = %1434, %1301
  %1303 = load i32, ptr %12, align 4, !tbaa !9
  %1304 = load i32, ptr %16, align 4, !tbaa !9
  %1305 = icmp ult i32 %1303, %1304
  br i1 %1305, label %1306, label %1437

1306:                                             ; preds = %1302
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %1307 = load i32, ptr %12, align 4, !tbaa !9
  %1308 = load i32, ptr %18, align 4, !tbaa !9
  %1309 = sub i32 %1308, 1
  %1310 = icmp eq i32 %1307, %1309
  br i1 %1310, label %1311, label %1328

1311:                                             ; preds = %1306
  %1312 = load i32, ptr %63, align 4, !tbaa !9
  %1313 = icmp ugt i32 %1312, 0
  br i1 %1313, label %1314, label %1328

1314:                                             ; preds = %1311
  %1315 = load i32, ptr %11, align 4, !tbaa !9
  %1316 = load i32, ptr %27, align 4, !tbaa !9
  %1317 = urem i32 %1315, %1316
  %1318 = load i32, ptr %27, align 4, !tbaa !9
  %1319 = udiv i32 %1318, 2
  %1320 = icmp ult i32 %1317, %1319
  br i1 %1320, label %1321, label %1326

1321:                                             ; preds = %1314
  %1322 = load i32, ptr %11, align 4, !tbaa !9
  %1323 = load i32, ptr %27, align 4, !tbaa !9
  %1324 = urem i32 %1322, %1323
  %1325 = icmp ne i32 %1324, 0
  br label %1326

1326:                                             ; preds = %1321, %1314
  %1327 = phi i1 [ false, %1314 ], [ %1325, %1321 ]
  br label %1328

1328:                                             ; preds = %1326, %1311, %1306
  %1329 = phi i1 [ false, %1311 ], [ false, %1306 ], [ %1327, %1326 ]
  %1330 = zext i1 %1329 to i64
  %1331 = select i1 %1329, i32 1, i32 0
  store i32 %1331, ptr %66, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %1332 = load i32, ptr %12, align 4, !tbaa !9
  %1333 = load i32, ptr %18, align 4, !tbaa !9
  %1334 = sub i32 %1333, 1
  %1335 = icmp eq i32 %1332, %1334
  br i1 %1335, label %1336, label %1353

1336:                                             ; preds = %1328
  %1337 = load i32, ptr %63, align 4, !tbaa !9
  %1338 = icmp ugt i32 %1337, 0
  br i1 %1338, label %1339, label %1353

1339:                                             ; preds = %1336
  %1340 = load i32, ptr %11, align 4, !tbaa !9
  %1341 = load i32, ptr %27, align 4, !tbaa !9
  %1342 = urem i32 %1340, %1341
  %1343 = load i32, ptr %27, align 4, !tbaa !9
  %1344 = udiv i32 %1343, 2
  %1345 = icmp ugt i32 %1342, %1344
  br i1 %1345, label %1346, label %1351

1346:                                             ; preds = %1339
  %1347 = load i32, ptr %11, align 4, !tbaa !9
  %1348 = load i32, ptr %27, align 4, !tbaa !9
  %1349 = urem i32 %1347, %1348
  %1350 = icmp ne i32 %1349, 0
  br label %1351

1351:                                             ; preds = %1346, %1339
  %1352 = phi i1 [ false, %1339 ], [ %1350, %1346 ]
  br label %1353

1353:                                             ; preds = %1351, %1336, %1328
  %1354 = phi i1 [ false, %1336 ], [ false, %1328 ], [ %1352, %1351 ]
  %1355 = zext i1 %1354 to i64
  %1356 = select i1 %1354, i32 1, i32 0
  store i32 %1356, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  %1357 = load i32, ptr %12, align 4, !tbaa !9
  %1358 = load i32, ptr %34, align 4, !tbaa !9
  %1359 = add i32 %1357, %1358
  store i32 %1359, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %1360 = load i32, ptr %12, align 4, !tbaa !9
  %1361 = load i32, ptr %35, align 4, !tbaa !9
  %1362 = add i32 %1360, %1361
  store i32 %1362, ptr %69, align 4, !tbaa !9
  %1363 = load i32, ptr %66, align 4, !tbaa !9
  %1364 = icmp ne i32 %1363, 0
  br i1 %1364, label %1365, label %1367

1365:                                             ; preds = %1353
  %1366 = load i32, ptr %28, align 4, !tbaa !9
  br label %1368

1367:                                             ; preds = %1353
  br label %1368

1368:                                             ; preds = %1367, %1365
  %1369 = phi i32 [ %1366, %1365 ], [ 0, %1367 ]
  store i32 %1369, ptr %20, align 4, !tbaa !9
  %1370 = load ptr, ptr %6, align 8, !tbaa !5
  %1371 = load i32, ptr %46, align 4, !tbaa !9
  %1372 = load ptr, ptr %8, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1372, i32 0, i32 35
  %1374 = load i32, ptr %1373, align 4, !tbaa !28
  %1375 = load i32, ptr %68, align 4, !tbaa !9
  %1376 = load i32, ptr %20, align 4, !tbaa !9
  %1377 = load i32, ptr %20, align 4, !tbaa !9
  %1378 = icmp eq i32 %1377, 0
  br i1 %1378, label %1379, label %1382

1379:                                             ; preds = %1368
  %1380 = load i8, ptr %29, align 1, !tbaa !16
  %1381 = zext i8 %1380 to i32
  br label %1385

1382:                                             ; preds = %1368
  %1383 = load i8, ptr %33, align 1, !tbaa !16
  %1384 = zext i8 %1383 to i32
  br label %1385

1385:                                             ; preds = %1382, %1379
  %1386 = phi i32 [ %1381, %1379 ], [ %1384, %1382 ]
  %1387 = trunc i32 %1386 to i8
  %1388 = load i8, ptr %55, align 1, !tbaa !16
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1370, i32 noundef %1371, i32 noundef %1374, i32 noundef %1375, i32 noundef 8, i32 noundef %1376, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1387, i8 noundef zeroext %1388)
  %1389 = load i32, ptr %66, align 4, !tbaa !9
  %1390 = icmp eq i32 %1389, 0
  br i1 %1390, label %1391, label %1433

1391:                                             ; preds = %1385
  %1392 = load i32, ptr %11, align 4, !tbaa !9
  %1393 = load i32, ptr %27, align 4, !tbaa !9
  %1394 = urem i32 %1392, %1393
  %1395 = load i32, ptr %27, align 4, !tbaa !9
  %1396 = udiv i32 %1395, 2
  %1397 = icmp eq i32 %1394, %1396
  br i1 %1397, label %1398, label %1406

1398:                                             ; preds = %1391
  %1399 = load i32, ptr %12, align 4, !tbaa !9
  %1400 = load i32, ptr %18, align 4, !tbaa !9
  %1401 = sub i32 %1400, 1
  %1402 = icmp eq i32 %1399, %1401
  br i1 %1402, label %1403, label %1406

1403:                                             ; preds = %1398
  %1404 = load i32, ptr %63, align 4, !tbaa !9
  %1405 = icmp ugt i32 %1404, 0
  br i1 %1405, label %1433, label %1406

1406:                                             ; preds = %1403, %1398, %1391
  %1407 = load i32, ptr %67, align 4, !tbaa !9
  %1408 = icmp ne i32 %1407, 0
  br i1 %1408, label %1409, label %1411

1409:                                             ; preds = %1406
  %1410 = load i32, ptr %28, align 4, !tbaa !9
  br label %1412

1411:                                             ; preds = %1406
  br label %1412

1412:                                             ; preds = %1411, %1409
  %1413 = phi i32 [ %1410, %1409 ], [ 0, %1411 ]
  store i32 %1413, ptr %20, align 4, !tbaa !9
  %1414 = load ptr, ptr %6, align 8, !tbaa !5
  %1415 = load i32, ptr %46, align 4, !tbaa !9
  %1416 = load ptr, ptr %8, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1416, i32 0, i32 35
  %1418 = load i32, ptr %1417, align 4, !tbaa !28
  %1419 = load i32, ptr %69, align 4, !tbaa !9
  %1420 = load i32, ptr %20, align 4, !tbaa !9
  %1421 = load i32, ptr %20, align 4, !tbaa !9
  %1422 = icmp eq i32 %1421, 0
  br i1 %1422, label %1423, label %1426

1423:                                             ; preds = %1412
  %1424 = load i8, ptr %29, align 1, !tbaa !16
  %1425 = zext i8 %1424 to i32
  br label %1429

1426:                                             ; preds = %1412
  %1427 = load i8, ptr %33, align 1, !tbaa !16
  %1428 = zext i8 %1427 to i32
  br label %1429

1429:                                             ; preds = %1426, %1423
  %1430 = phi i32 [ %1425, %1423 ], [ %1428, %1426 ]
  %1431 = trunc i32 %1430 to i8
  %1432 = load i8, ptr %55, align 1, !tbaa !16
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1414, i32 noundef %1415, i32 noundef %1418, i32 noundef %1419, i32 noundef 8, i32 noundef %1420, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %1431, i8 noundef zeroext %1432)
  br label %1433

1433:                                             ; preds = %1429, %1403, %1385
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  br label %1434

1434:                                             ; preds = %1433
  %1435 = load i32, ptr %12, align 4, !tbaa !9
  %1436 = add i32 %1435, 1
  store i32 %1436, ptr %12, align 4, !tbaa !9
  br label %1302, !llvm.loop !41

1437:                                             ; preds = %1302
  br label %1438

1438:                                             ; preds = %1437, %1300
  br label %1439

1439:                                             ; preds = %1438, %1248
  %1440 = load i32, ptr %17, align 4, !tbaa !9
  %1441 = icmp ugt i32 %1440, 1
  br i1 %1441, label %1442, label %1478

1442:                                             ; preds = %1439
  %1443 = load i32, ptr %39, align 4, !tbaa !9
  %1444 = icmp eq i32 %1443, 0
  br i1 %1444, label %1445, label %1478

1445:                                             ; preds = %1442
  %1446 = load ptr, ptr %6, align 8, !tbaa !5
  %1447 = load ptr, ptr %8, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1447, i32 0, i32 0
  %1449 = load i32, ptr %1448, align 4, !tbaa !29
  %1450 = load ptr, ptr %8, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1450, i32 0, i32 27
  %1452 = load i32, ptr %1451, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %1446, i32 noundef -1186988026, i32 noundef %1449, i32 noundef 127, i32 noundef 40, i32 noundef %1452)
  %1453 = load ptr, ptr %6, align 8, !tbaa !5
  %1454 = load ptr, ptr %8, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1454, i32 0, i32 28
  %1456 = load i32, ptr %1455, align 4, !tbaa !23
  %1457 = load ptr, ptr %8, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1457, i32 0, i32 35
  %1459 = load i32, ptr %1458, align 4, !tbaa !28
  %1460 = load ptr, ptr %8, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1460, i32 0, i32 28
  %1462 = load i32, ptr %1461, align 4, !tbaa !23
  %1463 = load ptr, ptr %9, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1463, i32 0, i32 2
  %1465 = load i32, ptr %1464, align 4, !tbaa !31
  %1466 = zext i32 %1465 to i64
  %1467 = load i32, ptr %27, align 4, !tbaa !9
  %1468 = zext i32 %1467 to i64
  %1469 = mul nsw i64 %1466, %1468
  %1470 = load i32, ptr %16, align 4, !tbaa !9
  %1471 = zext i32 %1470 to i64
  %1472 = mul nsw i64 %1469, %1471
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1453, i32 noundef 4096, i32 noundef %1456, i32 noundef %1459, i32 noundef %1462, i64 noundef %1472)
  %1473 = load ptr, ptr %6, align 8, !tbaa !5
  %1474 = load ptr, ptr %7, align 8, !tbaa !5
  %1475 = load ptr, ptr %8, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1475, i32 0, i32 24
  %1477 = load i32, ptr %1476, align 4, !tbaa !25
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1473, ptr noundef %1474, i32 noundef %1477, i32 noundef 1)
  br label %1478

1478:                                             ; preds = %1445, %1442, %1439
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  br label %1479

1479:                                             ; preds = %1478
  %1480 = load i32, ptr %39, align 4, !tbaa !9
  %1481 = add i32 %1480, 1
  store i32 %1481, ptr %39, align 4, !tbaa !9
  br label %561, !llvm.loop !42

1482:                                             ; preds = %561
  %1483 = load i8, ptr %56, align 1, !tbaa !16
  %1484 = icmp ne i8 %1483, 0
  br i1 %1484, label %1485, label %1487

1485:                                             ; preds = %1482
  %1486 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_sm(ptr noundef %1486, i32 noundef -721205633)
  br label %1487

1487:                                             ; preds = %1485, %1482
  %1488 = load i32, ptr %51, align 4, !tbaa !9
  %1489 = icmp ugt i32 %1488, 0
  br i1 %1489, label %1490, label %1492

1490:                                             ; preds = %1487
  %1491 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %1491, i32 noundef 285212678, i32 noundef 61, i32 noundef 63, i32 noundef 0, i8 noundef zeroext 0)
  br label %1492

1492:                                             ; preds = %1490, %1487
  %1493 = load ptr, ptr %6, align 8, !tbaa !5
  %1494 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_register_jump_label(ptr noundef %1493, i32 noundef %1494, ptr noundef %62)
  call void @llvm.lifetime.end.p0(i64 2101248, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  ret void
}

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #4

declare void @libxsmm_reset_jump_label_tracker(ptr noundef) #1

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #5

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

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

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

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

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

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

declare void @libxsmm_aarch64_instruction_asimd_gpr_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i16 noundef signext, i32 noundef) #1

declare void @libxsmm_aarch64_instruction_register_jump_label(ptr noundef, i32 noundef, ptr 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 "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 #5 = { inlinehint nounwind willreturn memory(read) 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 #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(read) }
attributes #8 = { 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, !13, i64 27}
!12 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !13, i64 27, !13, i64 29, !7, i64 31}
!13 = !{!"short", !7, i64 0}
!14 = !{!15, !10, i64 0}
!15 = !{!"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}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !10, i64 28}
!18 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!19 = !{!12, !13, i64 29}
!20 = !{!21, !10, i64 104}
!21 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144}
!22 = !{!21, !10, i64 108}
!23 = !{!21, !10, i64 112}
!24 = !{!21, !10, i64 24}
!25 = !{!21, !10, i64 96}
!26 = !{!21, !10, i64 100}
!27 = !{!21, !10, i64 4}
!28 = !{!21, !10, i64 140}
!29 = !{!21, !10, i64 0}
!30 = !{!12, !10, i64 8}
!31 = !{!15, !10, i64 8}
!32 = !{!12, !10, i64 0}
!33 = !{!15, !10, i64 20}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !37, i64 0}
!37 = !{!"long long", !7, i64 0}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}
!42 = distinct !{!42, !35}


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

%struct.libxsmm_jump_label_tracker_struct = type { [512 x i32], [512 x %struct.libxsmm_jump_source_struct] }
%struct.libxsmm_jump_source_struct = type { [512 x i32], [512 x i32], i32 }

@.str = external hidden unnamed_addr constant [91 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_index_aarch64_microkernel = external hidden unnamed_addr constant [230 x i8], align 1

; Function Attrs: mustprogress 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) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress 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) local_unnamed_addr #1

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_setval_stack_var_aarch64(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_reduce_cols_index_aarch64_microkernel(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4) local_unnamed_addr #3 {
  %6 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  %7 = getelementptr inbounds i8, ptr %4, i64 27
  %8 = load i16, ptr %7, align 1, !tbaa !5
  %9 = and i16 %8, 256
  %.not = icmp eq i16 %9, 0
  %10 = select i1 %.not, i32 4, i32 8
  %11 = load i32, ptr %3, align 4, !tbaa !11
  %12 = tail call i32 @libxsmm_cpuid_vlen32(i32 noundef %11) #5
  %13 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #5
  %14 = icmp eq i32 %13, 2
  %15 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 3) #5
  %16 = icmp eq i32 %15, 2
  %17 = getelementptr inbounds i8, ptr %0, i64 28
  %18 = load i32, ptr %17, align 4, !tbaa !13
  %19 = icmp ult i32 %18, 3000
  %20 = add i32 %18, -2201
  %spec.select = icmp ult i32 %20, 799
  %21 = zext i1 %spec.select to i8
  %22 = add i32 %18, -2501
  %23 = icmp ult i32 %22, 499
  %24 = tail call ptr @getenv(ptr noundef nonnull @.str.13) #5
  call void @llvm.lifetime.start.p0(i64 2101248, ptr nonnull %6) #5
  call void @libxsmm_reset_jump_label_tracker(ptr noundef nonnull %6) #5
  %25 = getelementptr inbounds i8, ptr %4, i64 29
  %26 = load i16, ptr %25, align 1, !tbaa !16
  switch i16 %26, label %._crit_edge757 [
    i16 53, label %.thread
    i16 68, label %30
  ]

._crit_edge757:                                   ; preds = %5
  %27 = select i1 %spec.select, i32 1694498819, i32 237032459
  %.pre = load i16, ptr %7, align 1, !tbaa !5
  %.pre758 = and i16 %.pre, 512
  br label %38

.thread:                                          ; preds = %5
  %28 = select i1 %spec.select, i32 1694924962, i32 237040651
  %29 = select i1 %spec.select, i32 1694515603, i32 773907467
  br label %33

30:                                               ; preds = %5
  %31 = select i1 %spec.select, i32 1694990498, i32 245429259
  %32 = select i1 %spec.select, i32 1694515347, i32 782296075
  br label %33

33:                                               ; preds = %.thread, %30
  %.sink = phi i32 [ 782244883, %.thread ], [ 786439187, %30 ]
  %.0648707 = phi i32 [ 1, %.thread ], [ 0, %30 ]
  %.0646 = phi i32 [ 0, %.thread ], [ 1, %30 ]
  %.1642 = phi i32 [ %28, %.thread ], [ %31, %30 ]
  %.1639 = phi i32 [ %29, %.thread ], [ %32, %30 ]
  %34 = select i1 %spec.select, i32 86032515, i32 %.sink
  %35 = load i16, ptr %7, align 1, !tbaa !5
  %36 = lshr i16 %35, 11
  %.lobit = and i16 %36, 1
  %spec.select686 = zext nneg i16 %.lobit to i32
  %37 = and i16 %35, 512
  %.not663 = icmp eq i16 %37, 0
  %spec.select700 = select i1 %.not663, i32 %spec.select686, i32 1
  br label %38

38:                                               ; preds = %._crit_edge757, %33
  %.pre-phi = phi i16 [ %.pre758, %._crit_edge757 ], [ %37, %33 ]
  %39 = phi i16 [ %.pre, %._crit_edge757 ], [ %35, %33 ]
  %.1651 = phi i32 [ 0, %._crit_edge757 ], [ %spec.select686, %33 ]
  %.1649 = phi i32 [ 0, %._crit_edge757 ], [ %.0648707, %33 ]
  %.1647 = phi i32 [ 0, %._crit_edge757 ], [ %.0646, %33 ]
  %.2643 = phi i32 [ %27, %._crit_edge757 ], [ %.1642, %33 ]
  %.2640 = phi i32 [ 0, %._crit_edge757 ], [ %.1639, %33 ]
  %.2637 = phi i32 [ 0, %._crit_edge757 ], [ %34, %33 ]
  %.1634 = phi i32 [ 0, %._crit_edge757 ], [ %spec.select700, %33 ]
  %40 = icmp eq i32 %.1651, 0
  %. = select i1 %.not, i32 10, i32 7
  %.0621 = select i1 %40, i32 16, i32 %.
  %.not665 = icmp ne i16 %.pre-phi, 0
  %41 = getelementptr inbounds i8, ptr %2, i64 104
  %42 = getelementptr inbounds i8, ptr %2, i64 108
  %43 = getelementptr inbounds i8, ptr %2, i64 112
  store i32 43, ptr %43, align 4, !tbaa !17
  %44 = getelementptr inbounds i8, ptr %2, i64 24
  store i32 44, ptr %44, align 4, !tbaa !19
  %45 = getelementptr inbounds i8, ptr %2, i64 96
  %46 = getelementptr inbounds i8, ptr %2, i64 100
  store <4 x i32> <i32 45, i32 46, i32 41, i32 42>, ptr %45, align 4, !tbaa !20
  %47 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 47, ptr %47, align 4, !tbaa !21
  %48 = select i1 %.not, i32 16, i32 48
  %49 = getelementptr inbounds i8, ptr %2, i64 140
  store i32 49, ptr %49, align 4, !tbaa !22
  %50 = load i32, ptr %2, align 4, !tbaa !23
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %50, i32 noundef 127, i32 noundef 48, i32 noundef 41) #5
  %51 = load i32, ptr %41, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %51, i32 noundef 127, i32 noundef 0, i32 noundef %51) #5
  %52 = load i32, ptr %41, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_cond_jump_to_label(ptr noundef nonnull %0, i32 noundef 872415232, i32 noundef %52, i32 noundef 1, ptr noundef nonnull %6) #5
  %53 = load i32, ptr %2, align 4, !tbaa !23
  %54 = load i32, ptr %42, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %53, i32 noundef 127, i32 noundef 40, i32 noundef %54) #5
  %55 = load i32, ptr %2, align 4, !tbaa !23
  %56 = load i32, ptr %43, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %55, i32 noundef 127, i32 noundef 32, i32 noundef %56) #5
  %57 = load i32, ptr %2, align 4, !tbaa !23
  %58 = load i32, ptr %44, align 4, !tbaa !19
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %57, i32 noundef 127, i32 noundef 80, i32 noundef %58) #5
  br i1 %40, label %61, label %59

59:                                               ; preds = %38
  %60 = load i32, ptr %2, align 4, !tbaa !23
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %60, i32 noundef 127, i32 noundef 88, i32 noundef 39) #5
  br label %61

61:                                               ; preds = %59, %38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 1241513991, i32 noundef 48, i32 noundef 48, i32 noundef 48, i32 noundef 0, i32 noundef 0) #5
  %62 = getelementptr inbounds i8, ptr %4, i64 8
  %63 = load i32, ptr %62, align 1, !tbaa !26
  %64 = zext i32 %63 to i64
  %65 = getelementptr inbounds i8, ptr %3, i64 8
  %66 = load i32, ptr %65, align 4, !tbaa !27
  %67 = zext i32 %66 to i64
  %68 = mul nuw nsw i64 %67, %64
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef nonnull %0, i32 noundef 33, i64 noundef %68) #5
  %69 = load i32, ptr %4, align 1, !tbaa !28
  %70 = urem i32 %69, %12
  %71 = icmp ne i32 %70, 0
  %72 = add i32 %12, -1
  %73 = add i32 %72, %69
  %74 = udiv i32 %73, %12
  br i1 %23, label %75, label %76

75:                                               ; preds = %61
  call void @libxsmm_aarch64_instruction_sm(ptr noundef nonnull %0, i32 noundef -721205377) #5
  br label %76

76:                                               ; preds = %75, %61
  br i1 %spec.select, label %77, label %.thread710

77:                                               ; preds = %76
  %78 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 0, i32 noundef -1, i32 noundef %78) #5
  br i1 %71, label %79, label %.thread710

79:                                               ; preds = %77
  %80 = load i32, ptr %65, align 4, !tbaa !27
  %81 = mul i32 %80, %70
  %82 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %81, i32 noundef %82) #5
  %or.cond41 = and i1 %.not, %19
  br i1 %or.cond41, label %83, label %.thread710

83:                                               ; preds = %79
  %84 = shl i32 %70, 2
  %85 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 3, i32 noundef %84, i32 noundef %85) #5
  br label %.thread710

.thread710:                                       ; preds = %76, %79, %83, %77
  %.0629 = phi i32 [ %70, %83 ], [ %70, %79 ], [ 0, %77 ], [ %70, %76 ]
  %.not667 = icmp eq i32 %.1634, 0
  br i1 %.not667, label %87, label %86

86:                                               ; preds = %.thread710
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef nonnull %0, i32 noundef 285212678, i32 noundef 63, i32 noundef 61, i32 noundef 0, i8 noundef zeroext 0) #5
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef nonnull %0, i32 noundef 1358954502, i32 noundef 63, i32 noundef 63, i32 noundef 40, i8 noundef zeroext 0) #5
  br label %87

87:                                               ; preds = %86, %.thread710
  %.not669 = icmp eq i32 %.1647, 0
  %88 = or i32 %.1647, %.1649
  %or.cond = icmp ne i32 %88, 0
  %89 = and i16 %39, 64
  %90 = icmp eq i16 %89, 0
  %91 = select i1 %.not665, i1 true, i1 %90
  %or.cond43 = and i1 %or.cond, %91
  br i1 %or.cond43, label %92, label %98

92:                                               ; preds = %87
  %.not668 = icmp eq i32 %.1649, 0
  br i1 %.not668, label %94, label %93

93:                                               ; preds = %92
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef nonnull %0, i32 noundef 38, i64 noundef 4286578688) #5
  br label %94

94:                                               ; preds = %93, %92
  br i1 %.not669, label %96, label %95

95:                                               ; preds = %94
  call void @libxsmm_aarch64_instruction_alu_set_imm64(ptr noundef nonnull %0, i32 noundef 38, i64 noundef 2139095040) #5
  br label %96

96:                                               ; preds = %95, %94
  %97 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_generator_setval_stack_var_aarch64(ptr noundef nonnull %0, i32 noundef -32, i32 noundef 38, i32 noundef %97)
  br label %98

98:                                               ; preds = %96, %87
  %99 = lshr i32 %12, 1
  %.not670 = icmp ult i32 %12, 2
  br i1 %.not670, label %100, label %101

100:                                              ; preds = %98
  call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str, i32 noundef 1582, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_reduce_cols_index_aarch64_microkernel) #6
  unreachable

101:                                              ; preds = %98
  br i1 %.not, label %108, label %102

102:                                              ; preds = %101
  %103 = urem i32 %69, %99
  %104 = icmp eq i32 %103, 0
  %or.cond3.not720 = or i1 %40, %104
  %spec.select.not = xor i1 %spec.select, true
  %brmerge = select i1 %or.cond3.not720, i1 true, i1 %spec.select.not
  %.mux = select i1 %40, i32 0, i32 %103
  br i1 %brmerge, label %108, label %105

105:                                              ; preds = %102
  %106 = shl i32 %103, 3
  %107 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 4, i32 noundef %106, i32 noundef %107) #5
  br label %108

108:                                              ; preds = %102, %105, %101
  %.0632 = phi i32 [ %103, %105 ], [ %.mux, %102 ], [ 0, %101 ]
  %or.cond5 = select i1 %14, i1 true, i1 %16
  %or.cond687 = select i1 %spec.select, i1 %or.cond5, i1 false
  br i1 %or.cond687, label %109, label %113

109:                                              ; preds = %108
  %110 = getelementptr inbounds i8, ptr %3, i64 20
  %.pn.in = select i1 %14, ptr %65, ptr %110
  %.pn = load i32, ptr %.pn.in, align 4, !tbaa !20
  %111 = mul i32 %.pn, %12
  %112 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %111, i32 noundef %112) #5
  br label %113

113:                                              ; preds = %109, %108
  %114 = icmp ugt i32 %74, %.0621
  br i1 %114, label %115, label %123

115:                                              ; preds = %113
  %116 = udiv i32 %74, %.0621
  %117 = mul i32 %116, %.0621
  %.recomposed = urem i32 %74, %.0621
  %118 = icmp eq i32 %.recomposed, 0
  %or.cond7 = select i1 %71, i1 %118, i1 false
  br i1 %or.cond7, label %119, label %124

119:                                              ; preds = %115
  %120 = add nsw i32 %116, -1
  %121 = mul i32 %120, %.0621
  %122 = sub i32 %74, %121
  br label %124

123:                                              ; preds = %113
  %spec.select688 = select i1 %71, i32 %74, i32 0
  %not. = xor i1 %71, true
  %spec.select689 = zext i1 %not. to i32
  br label %124

124:                                              ; preds = %123, %115, %119
  %.0626 = phi i32 [ %122, %119 ], [ %.recomposed, %115 ], [ %spec.select688, %123 ]
  %.0625 = phi i32 [ %120, %119 ], [ %116, %115 ], [ %spec.select689, %123 ]
  %.0622 = phi i32 [ %.0621, %119 ], [ %.0621, %115 ], [ %74, %123 ]
  %.not671 = icmp ne i32 %.0625, 0
  %spec.select690 = zext i1 %.not671 to i32
  %.not672 = icmp ne i32 %.0626, 0
  %125 = select i1 %.not671, i32 2, i32 1
  %.1645 = select i1 %.not672, i32 %125, i32 %spec.select690
  %.not744 = icmp eq i32 %.1645, 0
  br i1 %.not744, label %._crit_edge743, label %.lr.ph742

.lr.ph742:                                        ; preds = %124
  %126 = icmp ugt i32 %.0625, 1
  %127 = add nsw i32 %.1645, -1
  %cond = icmp eq i32 %.0625, 1
  %128 = zext i32 %12 to i64
  %129 = add i32 %.0626, -1
  %130 = getelementptr inbounds i8, ptr %3, i64 20
  %131 = zext i32 %.0626 to i64
  %132 = mul nuw i64 %131, %128
  %133 = zext i32 %.0629 to i64
  %.neg = sub nsw i64 %133, %128
  %.neg674 = select i1 %71, i64 %.neg, i64 0
  %reass.add = add i64 %132, %.neg674
  %134 = select i1 %.not, i32 4, i32 6
  %135 = select i1 %.not, i32 2, i32 3
  %136 = icmp ult i32 %70, %99
  %137 = and i1 %136, %71
  %138 = icmp ugt i32 %70, %99
  %139 = icmp eq i32 %70, %99
  %140 = icmp eq i32 %129, 0
  %or.cond17.peel = select i1 %140, i1 %71, i1 false
  %141 = or i1 %137, %139
  br label %142

142:                                              ; preds = %.lr.ph742, %316
  %.1623740 = phi i32 [ %.0622, %.lr.ph742 ], [ %.2624, %316 ]
  %.0652739 = phi i32 [ 0, %.lr.ph742 ], [ %317, %316 ]
  %143 = icmp eq i32 %.0652739, 0
  %or.cond11 = and i1 %126, %143
  br i1 %or.cond11, label %144, label %146

144:                                              ; preds = %142
  %145 = load i32, ptr %45, align 4, !tbaa !29
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %145, i32 noundef %.0625) #5
  br label %146

146:                                              ; preds = %144, %142
  %147 = icmp eq i32 %.0652739, %127
  %or.cond692 = select i1 %.not672, i1 %147, i1 false
  br i1 %or.cond692, label %148, label %159

148:                                              ; preds = %146
  br i1 %.not671, label %149, label %.thread712

149:                                              ; preds = %148
  %150 = load i32, ptr %2, align 4, !tbaa !23
  %151 = load i32, ptr %42, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef %150, i32 noundef 127, i32 noundef 40, i32 noundef %151) #5
  br i1 %cond, label %.thread713, label %.thread712

.thread713:                                       ; preds = %149
  %152 = load i32, ptr %43, align 4, !tbaa !17
  %153 = load i32, ptr %49, align 4, !tbaa !22
  %154 = load i32, ptr %65, align 4, !tbaa !27
  %155 = zext i32 %154 to i64
  %156 = zext i32 %.1623740 to i64
  %157 = mul nuw i64 %156, %128
  %158 = mul i64 %157, %155
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %152, i32 noundef %153, i32 noundef %152, i64 noundef %158) #5
  br label %.thread712

159:                                              ; preds = %146
  br i1 %.not671, label %160, label %.thread712

.thread712:                                       ; preds = %149, %.thread713, %148, %159
  br label %160

160:                                              ; preds = %159, %.thread712
  %.not673 = phi i1 [ false, %.thread712 ], [ true, %159 ]
  %161 = phi i1 [ true, %.thread712 ], [ false, %159 ]
  %.2624 = phi i32 [ %.0626, %.thread712 ], [ %.1623740, %159 ]
  %162 = shl i32 %.2624, 1
  %163 = mul i32 %.2624, 3
  %.not745 = icmp eq i32 %.2624, 0
  br i1 %.not745, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %160
  br i1 %91, label %175, label %164

164:                                              ; preds = %.lr.ph.preheader
  %or.cond19.peel = and i1 %161, %or.cond17.peel
  %165 = select i1 %or.cond19.peel, i32 %.0629, i32 0
  %.not683.peel = icmp eq i32 %165, 0
  %166 = and i1 %16, %.not683.peel
  %167 = select i1 %166, i32 %12, i32 %165
  %.not685.peel = icmp ne i32 %165, 0
  %168 = zext i1 %.not685.peel to i8
  %169 = select i1 %.not683.peel, i8 2, i8 1
  %170 = select i1 %16, i8 %169, i8 %168
  %171 = load i32, ptr %44, align 4, !tbaa !19
  %172 = load i32, ptr %49, align 4, !tbaa !22
  %173 = load i32, ptr %130, align 4, !tbaa !30
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %171, i32 noundef %172, i32 noundef 0, i32 noundef %173, i32 noundef %167, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %170, i8 noundef zeroext %21) #5
  br i1 %16, label %174, label %184

174:                                              ; preds = %164
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef 0, i32 noundef 0) #5
  br label %184

175:                                              ; preds = %.lr.ph.preheader
  br i1 %or.cond, label %179, label %176

176:                                              ; preds = %175
  br i1 %spec.select, label %178, label %177

177:                                              ; preds = %176
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0, i32 noundef 1) #5
  br label %184

178:                                              ; preds = %176
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0, i32 noundef 0, i32 noundef 2) #5
  br label %184

179:                                              ; preds = %175
  %180 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 1358954502, i32 noundef 61, i32 noundef %180, i32 noundef 32, i8 noundef zeroext 0) #5
  %181 = load i32, ptr %49, align 4, !tbaa !22
  br i1 %spec.select, label %183, label %182

182:                                              ; preds = %179
  call void @libxsmm_aarch64_instruction_asimd_struct_r_move(ptr noundef %0, i32 noundef 222347266, i32 noundef %181, i32 noundef 127, i32 noundef 0, i32 noundef 5) #5
  br label %184

183:                                              ; preds = %179
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -2059353978, i32 noundef %181, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef 0) #5
  br label %184

184:                                              ; preds = %183, %182, %178, %177, %174, %164
  br i1 %40, label %190, label %185

185:                                              ; preds = %184
  br i1 %spec.select, label %188, label %186

186:                                              ; preds = %185
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %162, i32 noundef %162, i8 noundef zeroext 0, i32 noundef %162, i32 noundef 1) #5
  br i1 %.not, label %190, label %187

187:                                              ; preds = %186
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %163, i32 noundef %163, i8 noundef zeroext 0, i32 noundef %163, i32 noundef 1) #5
  br label %190

188:                                              ; preds = %185
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %162, i32 noundef %162, i8 noundef zeroext 0, i32 noundef %162, i32 noundef 0, i32 noundef 2) #5
  br i1 %.not, label %190, label %189

189:                                              ; preds = %188
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %163, i32 noundef %163, i8 noundef zeroext 0, i32 noundef %163, i32 noundef 0, i32 noundef 2) #5
  br label %190

190:                                              ; preds = %189, %188, %187, %186, %184
  %exitcond.peel.not = icmp eq i32 %.2624, 1
  br i1 %exitcond.peel.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %190, %219
  %.0726 = phi i32 [ %220, %219 ], [ 1, %190 ]
  br i1 %91, label %191, label %198

191:                                              ; preds = %.lr.ph
  br i1 %or.cond, label %192, label %195

192:                                              ; preds = %191
  br i1 %spec.select, label %193, label %194

193:                                              ; preds = %192
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %.0726, i32 noundef 0, i32 noundef 2) #5
  br label %210

194:                                              ; preds = %192
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245373971, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %.0726, i32 noundef 5) #5
  br label %210

195:                                              ; preds = %191
  br i1 %spec.select, label %196, label %197

196:                                              ; preds = %195
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %.0726, i32 noundef %.0726, i8 noundef zeroext 0, i32 noundef %.0726, i32 noundef 0, i32 noundef 2) #5
  br label %210

197:                                              ; preds = %195
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %.0726, i32 noundef %.0726, i8 noundef zeroext 0, i32 noundef %.0726, i32 noundef 1) #5
  br label %210

198:                                              ; preds = %.lr.ph
  %199 = icmp eq i32 %.0726, %129
  %or.cond17 = select i1 %199, i1 %71, i1 false
  %or.cond19 = and i1 %161, %or.cond17
  %200 = select i1 %or.cond19, i32 %.0629, i32 0
  %.not683 = icmp eq i32 %200, 0
  %201 = and i1 %16, %.not683
  %202 = select i1 %201, i32 %12, i32 %200
  %.not685 = icmp ne i32 %200, 0
  %203 = zext i1 %.not685 to i8
  %204 = select i1 %.not683, i8 2, i8 1
  %205 = select i1 %16, i8 %204, i8 %203
  %206 = load i32, ptr %44, align 4, !tbaa !19
  %207 = load i32, ptr %49, align 4, !tbaa !22
  %208 = load i32, ptr %130, align 4, !tbaa !30
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %206, i32 noundef %207, i32 noundef %.0726, i32 noundef %208, i32 noundef %202, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %205, i8 noundef zeroext %21) #5
  br i1 %16, label %209, label %210

209:                                              ; preds = %198
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %.0726, i32 noundef 0) #5
  br label %210

210:                                              ; preds = %198, %209, %193, %194, %197, %196
  br i1 %40, label %219, label %211

211:                                              ; preds = %210
  %212 = add i32 %.0726, %162
  br i1 %spec.select, label %213, label %216

213:                                              ; preds = %211
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %212, i32 noundef %212, i8 noundef zeroext 0, i32 noundef %212, i32 noundef 0, i32 noundef 2) #5
  br i1 %.not, label %219, label %214

214:                                              ; preds = %213
  %215 = add i32 %.0726, %163
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %215, i32 noundef %215, i8 noundef zeroext 0, i32 noundef %215, i32 noundef 0, i32 noundef 2) #5
  br label %219

216:                                              ; preds = %211
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %212, i32 noundef %212, i8 noundef zeroext 0, i32 noundef %212, i32 noundef 1) #5
  br i1 %.not, label %219, label %217

217:                                              ; preds = %216
  %218 = add i32 %.0726, %163
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773856275, i32 noundef %218, i32 noundef %218, i8 noundef zeroext 0, i32 noundef %218, i32 noundef 1) #5
  br label %219

219:                                              ; preds = %210, %216, %217, %213, %214
  %220 = add nuw i32 %.0726, 1
  %exitcond.not = icmp eq i32 %220, %.2624
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !31

._crit_edge:                                      ; preds = %219, %190, %160
  br i1 %91, label %229, label %221

221:                                              ; preds = %._crit_edge
  %222 = mul i32 %.2624, %12
  %223 = load i32, ptr %130, align 4, !tbaa !30
  %224 = mul i32 %222, %223
  %225 = zext i32 %224 to i64
  %226 = zext i32 %223 to i64
  %reass.mul = mul i64 %reass.add, %226
  %.0627 = select i1 %.not673, i64 %225, i64 %reass.mul
  %227 = load i32, ptr %44, align 4, !tbaa !19
  %228 = load i32, ptr %49, align 4, !tbaa !22
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %227, i32 noundef %228, i32 noundef %227, i64 noundef %.0627) #5
  br label %229

229:                                              ; preds = %221, %._crit_edge
  %230 = load i32, ptr %46, align 4, !tbaa !34
  %231 = load i32, ptr %41, align 4, !tbaa !24
  call void @libxsmm_generator_loop_header_gp_reg_bound_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %230, i32 noundef %231) #5
  %232 = load i32, ptr %42, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1203764218, i32 noundef %232, i32 noundef 127, i32 noundef %10, i32 noundef %48) #5
  br i1 %40, label %236, label %233

233:                                              ; preds = %229
  br i1 %spec.select, label %234, label %235

234:                                              ; preds = %233
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 85997570, i32 noundef 48, i32 noundef 48, i8 noundef zeroext 0, i32 noundef 31, i32 noundef 0, i32 noundef %135) #5
  br label %236

235:                                              ; preds = %233
  call void @libxsmm_aarch64_instruction_asimd_gpr_move(ptr noundef %0, i32 noundef 1308625950, i32 noundef 48, i32 noundef 31, i16 noundef signext 0, i32 noundef %134) #5
  br label %236

236:                                              ; preds = %234, %235, %229
  %237 = load i32, ptr %47, align 4, !tbaa !21
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 453016595, i32 noundef 48, i32 noundef 33, i32 noundef %237, i32 noundef 0, i32 noundef 0) #5
  %238 = load i32, ptr %47, align 4, !tbaa !21
  %239 = load i32, ptr %43, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %0, i32 noundef 184549383, i32 noundef %238, i32 noundef %239, i32 noundef %238, i32 noundef 0, i32 noundef 0) #5
  br i1 %.not745, label %._crit_edge730.thread, label %.lr.ph729

._crit_edge730.thread:                            ; preds = %236
  %240 = load i32, ptr %46, align 4, !tbaa !34
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %240, i32 noundef 1) #5
  br label %._crit_edge734

.lr.ph729:                                        ; preds = %236, %268
  %.1727 = phi i32 [ %269, %268 ], [ 0, %236 ]
  %241 = icmp eq i32 %.1727, %129
  %or.cond21 = select i1 %241, i1 %71, i1 false
  %or.cond23 = and i1 %161, %or.cond21
  %242 = select i1 %or.cond23, i32 %.0629, i32 0
  %.not680 = icmp eq i32 %242, 0
  %243 = and i1 %14, %.not680
  %244 = select i1 %243, i32 %12, i32 %242
  %.not682 = icmp ne i32 %242, 0
  %245 = zext i1 %.not682 to i8
  %246 = select i1 %.not680, i8 2, i8 1
  %247 = select i1 %14, i8 %246, i8 %245
  %248 = load i32, ptr %47, align 4, !tbaa !21
  %249 = load i32, ptr %49, align 4, !tbaa !22
  %250 = add i32 %.1727, %.2624
  %251 = load i32, ptr %65, align 4, !tbaa !27
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, i32 noundef %244, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %247, i8 noundef zeroext %21) #5
  br i1 %14, label %252, label %253

252:                                              ; preds = %.lr.ph729
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %250, i32 noundef 0) #5
  br label %253

253:                                              ; preds = %252, %.lr.ph729
  br i1 %spec.select, label %254, label %262

254:                                              ; preds = %253
  br i1 %40, label %261, label %255

255:                                              ; preds = %254
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2640, i32 noundef %250, i32 noundef %.1727, i8 noundef zeroext 0, i32 noundef 5, i32 noundef 0, i32 noundef 2) #5
  br i1 %.not, label %256, label %258

256:                                              ; preds = %255
  %257 = add i32 %.1727, %162
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2637, i32 noundef %257, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %257, i32 noundef 5, i32 noundef 2) #5
  br label %261

258:                                              ; preds = %255
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %0, i32 noundef 5, i32 noundef 6, i32 noundef 0)
  %259 = add i32 %.1727, %162
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2637, i32 noundef %259, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %259, i32 noundef 6, i32 noundef 3) #5
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %0, i32 noundef 5, i32 noundef 6, i32 noundef 1)
  %260 = add i32 %.1727, %163
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2637, i32 noundef %260, i32 noundef 31, i8 noundef zeroext 0, i32 noundef %260, i32 noundef 6, i32 noundef 3) #5
  br label %261

261:                                              ; preds = %256, %258, %254
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2643, i32 noundef %250, i32 noundef %.1727, i8 noundef zeroext 0, i32 noundef %.1727, i32 noundef 0, i32 noundef 2) #5
  br label %268

262:                                              ; preds = %253
  br i1 %40, label %267, label %263

263:                                              ; preds = %262
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.2640, i32 noundef %250, i32 noundef %.1727, i8 noundef zeroext 0, i32 noundef 30, i32 noundef 5) #5
  br i1 %.not, label %.sink.split, label %264

264:                                              ; preds = %263
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %0, i32 noundef 30, i32 noundef 29, i32 noundef 0)
  %265 = add i32 %.1727, %162
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.2637, i32 noundef 31, i32 noundef 29, i8 noundef zeroext 0, i32 noundef %265, i32 noundef 1) #5
  call void @libxsmm_aarch64_extract_mask2_from_mask4(ptr noundef %0, i32 noundef 30, i32 noundef 29, i32 noundef 1)
  br label %.sink.split

.sink.split:                                      ; preds = %263, %264
  %.sink762 = phi i32 [ %163, %264 ], [ %162, %263 ]
  %.sink760 = phi i32 [ 29, %264 ], [ 30, %263 ]
  %266 = add i32 %.1727, %.sink762
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.2637, i32 noundef 31, i32 noundef %.sink760, i8 noundef zeroext 0, i32 noundef %266, i32 noundef 1) #5
  br label %267

267:                                              ; preds = %.sink.split, %262
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.2643, i32 noundef %250, i32 noundef %.1727, i8 noundef zeroext 0, i32 noundef %.1727, i32 noundef 5) #5
  br label %268

268:                                              ; preds = %261, %267
  %269 = add nuw i32 %.1727, 1
  %exitcond752.not = icmp eq i32 %269, %.2624
  br i1 %exitcond752.not, label %.lr.ph733.preheader, label %.lr.ph729, !llvm.loop !35

.lr.ph733.preheader:                              ; preds = %268
  %270 = load i32, ptr %46, align 4, !tbaa !34
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %270, i32 noundef 1) #5
  br label %.lr.ph733

.lr.ph733:                                        ; preds = %.lr.ph733.preheader, %279
  %.2731 = phi i32 [ %283, %279 ], [ 0, %.lr.ph733.preheader ]
  %271 = icmp eq i32 %.2731, %129
  %or.cond25 = select i1 %271, i1 %71, i1 false
  %or.cond27 = and i1 %161, %or.cond25
  %272 = select i1 %or.cond27, i32 %.0629, i32 0
  %.not677 = icmp eq i32 %272, 0
  %273 = select i1 %16, i1 %.not677, i1 false
  %274 = select i1 %273, i32 %12, i32 %272
  %.not679 = icmp ne i32 %272, 0
  %275 = zext i1 %.not679 to i8
  %276 = select i1 %.not677, i8 2, i8 1
  %277 = select i1 %16, i8 %276, i8 %275
  br i1 %16, label %278, label %279

278:                                              ; preds = %.lr.ph733
  call void @libxsmm_generator_vcvt_f32bf16_aarch64(ptr noundef %0, i32 noundef %.2731, i32 noundef 0) #5
  br label %279

279:                                              ; preds = %278, %.lr.ph733
  %280 = load i32, ptr %44, align 4, !tbaa !19
  %281 = load i32, ptr %49, align 4, !tbaa !22
  %282 = load i32, ptr %130, align 4, !tbaa !30
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %280, i32 noundef %281, i32 noundef %.2731, i32 noundef %282, i32 noundef %274, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %277, i8 noundef zeroext %21) #5
  %283 = add nuw i32 %.2731, 1
  %exitcond753.not = icmp eq i32 %283, %.2624
  br i1 %exitcond753.not, label %._crit_edge734, label %.lr.ph733, !llvm.loop !36

._crit_edge734:                                   ; preds = %279, %._crit_edge730.thread
  br i1 %40, label %.loopexit, label %284

284:                                              ; preds = %._crit_edge734
  br i1 %.not, label %.preheader, label %.preheader724

.preheader724:                                    ; preds = %284
  br i1 %.not745, label %.loopexit, label %.lr.ph736

.preheader:                                       ; preds = %284
  br i1 %.not745, label %.loopexit, label %.lr.ph738

.lr.ph738:                                        ; preds = %.preheader, %.lr.ph738
  %.3737 = phi i32 [ %290, %.lr.ph738 ], [ 0, %.preheader ]
  %285 = add i32 %.3737, %162
  %286 = icmp eq i32 %.3737, %129
  %or.cond29 = select i1 %286, i1 %71, i1 false
  %or.cond31 = and i1 %161, %or.cond29
  %287 = select i1 %or.cond31, i32 %.0629, i32 0
  %288 = load i32, ptr %49, align 4, !tbaa !22
  %.not676 = icmp eq i32 %287, 0
  %289 = select i1 %.not676, i8 0, i8 3
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef 39, i32 noundef %288, i32 noundef %285, i32 noundef 4, i32 noundef %287, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %289, i8 noundef zeroext %21) #5
  %290 = add nuw i32 %.3737, 1
  %exitcond755.not = icmp eq i32 %290, %.2624
  br i1 %exitcond755.not, label %.loopexit, label %.lr.ph738, !llvm.loop !37

.lr.ph736:                                        ; preds = %.preheader724, %303
  %.4735 = phi i32 [ %304, %303 ], [ 0, %.preheader724 ]
  %291 = icmp eq i32 %.4735, %129
  %or.cond33 = and i1 %161, %291
  %spec.select701 = select i1 %or.cond33, i1 %137, i1 false
  %292 = add i32 %.4735, %162
  %293 = select i1 %spec.select701, i32 %.0632, i32 0
  %294 = load i32, ptr %49, align 4, !tbaa !22
  %295 = icmp eq i32 %293, 0
  %296 = select i1 %295, i8 0, i8 4
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef 39, i32 noundef %294, i32 noundef %292, i32 noundef 8, i32 noundef %293, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %296, i8 noundef zeroext %21) #5
  %or.cond723 = select i1 %or.cond33, i1 %141, i1 false
  br i1 %or.cond723, label %303, label %297

297:                                              ; preds = %.lr.ph736
  %298 = add i32 %.4735, %163
  %or.cond697 = select i1 %or.cond33, i1 %138, i1 false
  %299 = select i1 %or.cond697, i32 %.0632, i32 0
  %300 = load i32, ptr %49, align 4, !tbaa !22
  %301 = icmp eq i32 %299, 0
  %302 = select i1 %301, i8 0, i8 4
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef 39, i32 noundef %300, i32 noundef %298, i32 noundef 8, i32 noundef %299, i32 noundef 1, i32 noundef 1, i8 noundef zeroext %302, i8 noundef zeroext %21) #5
  br label %303

303:                                              ; preds = %297, %.lr.ph736
  %304 = add nuw i32 %.4735, 1
  %exitcond754.not = icmp eq i32 %304, %.2624
  br i1 %exitcond754.not, label %.loopexit, label %.lr.ph736, !llvm.loop !38

.loopexit:                                        ; preds = %303, %.lr.ph738, %.preheader724, %.preheader, %._crit_edge734
  br i1 %or.cond11, label %305, label %316

305:                                              ; preds = %.loopexit
  %306 = load i32, ptr %2, align 4, !tbaa !23
  %307 = load i32, ptr %42, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef %306, i32 noundef 127, i32 noundef 40, i32 noundef %307) #5
  %308 = load i32, ptr %43, align 4, !tbaa !17
  %309 = load i32, ptr %49, align 4, !tbaa !22
  %310 = load i32, ptr %65, align 4, !tbaa !27
  %311 = zext i32 %310 to i64
  %312 = zext i32 %.2624 to i64
  %313 = mul nuw i64 %312, %128
  %314 = mul i64 %313, %311
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %308, i32 noundef %309, i32 noundef %308, i64 noundef %314) #5
  %315 = load i32, ptr %45, align 4, !tbaa !29
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %0, ptr noundef %1, i32 noundef %315, i32 noundef 1) #5
  br label %316

316:                                              ; preds = %305, %.loopexit
  %317 = add nuw nsw i32 %.0652739, 1
  %exitcond756.not = icmp eq i32 %317, %.1645
  br i1 %exitcond756.not, label %._crit_edge743, label %142, !llvm.loop !39

._crit_edge743:                                   ; preds = %316, %124
  br i1 %23, label %318, label %319

318:                                              ; preds = %._crit_edge743
  call void @libxsmm_aarch64_instruction_sm(ptr noundef %0, i32 noundef -721205633) #5
  br label %319

319:                                              ; preds = %318, %._crit_edge743
  br i1 %.not667, label %321, label %320

320:                                              ; preds = %319
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef 61, i32 noundef 63, i32 noundef 0, i8 noundef zeroext 0) #5
  br label %321

321:                                              ; preds = %320, %319
  call void @libxsmm_aarch64_instruction_register_jump_label(ptr noundef %0, i32 noundef 1, ptr noundef nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 2101248, ptr nonnull %6) #5
  ret void
}

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #4

declare void @libxsmm_reset_jump_label_tracker(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

declare void @libxsmm_aarch64_instruction_asimd_gpr_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i16 noundef signext, i32 noundef) local_unnamed_addr #1

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

attributes #0 = { mustprogress 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 = { nofree nounwind memory(read) "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 #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, !10, i64 27}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!12, !7, i64 0}
!12 = !{!"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}
!13 = !{!14, !7, i64 28}
!14 = !{!"libxsmm_generated_code", !15, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!6, !10, i64 29}
!17 = !{!18, !7, i64 112}
!18 = !{!"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}
!19 = !{!18, !7, i64 24}
!20 = !{!7, !7, i64 0}
!21 = !{!18, !7, i64 4}
!22 = !{!18, !7, i64 140}
!23 = !{!18, !7, i64 0}
!24 = !{!18, !7, i64 104}
!25 = !{!18, !7, i64 108}
!26 = !{!6, !7, i64 8}
!27 = !{!12, !7, i64 8}
!28 = !{!6, !7, i64 0}
!29 = !{!18, !7, i64 96}
!30 = !{!12, !7, i64 20}
!31 = distinct !{!31, !32, !33}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!"llvm.loop.peeled.count", i32 1}
!34 = !{!18, !7, i64 100}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}


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