; LLVM IR from libxsmm/libxsmm :: src (generator_common_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_gemm_descriptor = type <{ i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], i8, i64, i64, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, i32, i32, i32, i8 }>
%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }

@.str.1 = external hidden unnamed_addr constant [80 x i8], align 1
@__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_instr_zip = external hidden unnamed_addr constant [2 x i32], align 4
@__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c = external hidden unnamed_addr constant [24 x i32], align 16
@.str.10 = external hidden unnamed_addr constant [281 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve = external hidden unnamed_addr constant [414 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [306 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [316 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [311 x i8], align 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) #0

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(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) #0

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #0

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) #0

declare void @libxsmm_generator_gemm_getval_stack_var_aarch64(ptr noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_store_2dregblock_mmla_aarch64_sve(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12, i32 noundef %13, i32 noundef %14, i8 noundef zeroext %15) #1 {
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca i32, align 4
  %34 = alloca [2 x i32], align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca [2 x i32], align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca [2 x i32], align 4
  %42 = alloca i32, align 4
  %43 = alloca [24 x i32], align 16
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i8, align 1
  %49 = alloca i8, align 1
  %50 = alloca i8, align 1
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  %53 = alloca i8, align 1
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store i32 %3, ptr %20, align 4, !tbaa !9
  store i32 %4, ptr %21, align 4, !tbaa !9
  store i32 %5, ptr %22, align 4, !tbaa !9
  store i32 %6, ptr %23, align 4, !tbaa !9
  store i32 %7, ptr %24, align 4, !tbaa !9
  store i32 %8, ptr %25, align 4, !tbaa !9
  store i32 %9, ptr %26, align 4, !tbaa !9
  store i32 %10, ptr %27, align 4, !tbaa !9
  store i32 %11, ptr %28, align 4, !tbaa !9
  store i32 %12, ptr %29, align 4, !tbaa !9
  store i32 %13, ptr %30, align 4, !tbaa !9
  store i32 %14, ptr %31, align 4, !tbaa !9
  store i8 %15, ptr %32, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  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 4, ptr %36) #6
  %62 = load i32, ptr %28, align 4, !tbaa !9
  %63 = add i32 %62, 1
  %64 = udiv i32 %63, 2
  store i32 %64, ptr %36, align 4, !tbaa !9
  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 8, ptr %38) #6
  call void @llvm.memset.p0.i64(ptr align 4 %38, i8 0, i64 8, i1 false)
  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 8, ptr %41) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 4 @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_instr_zip, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store i32 3, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr %43) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %43, ptr align 16 @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %65 = load ptr, ptr %19, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %65, i32 0, i32 8
  %67 = getelementptr inbounds [3 x i8], ptr %66, i64 0, i64 0
  %68 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %67)
  %69 = icmp eq i32 2, %68
  %70 = zext i1 %69 to i64
  %71 = select i1 %69, i32 1, i32 0
  store i32 %71, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %72 = load ptr, ptr %19, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %72, i32 0, i32 8
  %74 = getelementptr inbounds [3 x i8], ptr %73, i64 0, i64 0
  %75 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %74)
  %76 = icmp eq i32 1, %75
  br i1 %76, label %77, label %83

77:                                               ; preds = %16
  %78 = load ptr, ptr %19, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %78, i32 0, i32 8
  %80 = getelementptr inbounds [3 x i8], ptr %79, i64 0, i64 0
  %81 = call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef %80)
  %82 = icmp eq i32 12, %81
  br label %83

83:                                               ; preds = %77, %16
  %84 = phi i1 [ false, %16 ], [ %82, %77 ]
  %85 = zext i1 %84 to i64
  %86 = select i1 %84, i32 1, i32 0
  store i32 %86, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  store i32 2, 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 1, ptr %48) #6
  store i8 0, ptr %48, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  store i8 6, ptr %49, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  store i8 5, ptr %50, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  store i8 4, ptr %51, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  store i8 7, ptr %52, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #6
  store i8 3, ptr %53, align 1, !tbaa !11
  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 4, ptr %55) #6
  store i32 0, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  %87 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %87, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %88 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %88, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  %89 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %89, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  %90 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  store i32 %90, ptr %59, align 4, !tbaa !9
  %91 = load i32, ptr %26, align 4, !tbaa !9
  %92 = load i32, ptr %31, align 4, !tbaa !9
  %93 = load i8, ptr %32, align 1, !tbaa !11
  %94 = load i32, ptr %27, align 4, !tbaa !9
  %95 = load i32, ptr %25, align 4, !tbaa !9
  %96 = udiv i32 %94, %95
  %97 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 0
  store i32 %96, ptr %97, align 4, !tbaa !9
  %98 = load i32, ptr %27, align 4, !tbaa !9
  %99 = load i32, ptr %25, align 4, !tbaa !9
  %100 = urem i32 %98, %99
  store i32 %100, ptr %40, align 4, !tbaa !9
  %101 = load i32, ptr %40, align 4, !tbaa !9
  %102 = icmp ugt i32 %101, 0
  %103 = zext i1 %102 to i32
  %104 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 1
  store i32 %103, ptr %104, align 4, !tbaa !9
  %105 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 0
  %106 = load i32, ptr %105, align 4, !tbaa !9
  %107 = load i32, ptr %25, align 4, !tbaa !9
  %108 = mul i32 %106, %107
  %109 = load i32, ptr %30, align 4, !tbaa !9
  %110 = mul i32 %108, %109
  %111 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 1
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = load i32, ptr %27, align 4, !tbaa !9
  %114 = load i32, ptr %25, align 4, !tbaa !9
  %115 = urem i32 %113, %114
  %116 = mul i32 %112, %115
  %117 = load i32, ptr %30, align 4, !tbaa !9
  %118 = mul i32 %116, %117
  %119 = add i32 %110, %118
  store i32 %119, ptr %39, align 4, !tbaa !9
  %120 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 0
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 1
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = add i32 %121, %123
  store i32 %124, ptr %47, align 4, !tbaa !9
  %125 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 0
  %126 = load i32, ptr %125, align 16, !tbaa !9
  store i32 %126, ptr %33, align 4, !tbaa !9
  %127 = load i32, ptr %33, align 4, !tbaa !9
  %128 = sub i32 %127, 2
  %129 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 %128, ptr %129, align 4, !tbaa !9
  %130 = load i32, ptr %33, align 4, !tbaa !9
  %131 = sub i32 %130, 1
  %132 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 %131, ptr %132, align 4, !tbaa !9
  %133 = load i32, ptr %33, align 4, !tbaa !9
  %134 = sub i32 %133, 3
  store i32 %134, ptr %54, align 4, !tbaa !9
  %135 = load i32, ptr %33, align 4, !tbaa !9
  %136 = sub i32 %135, 4
  store i32 %136, ptr %55, align 4, !tbaa !9
  %137 = load ptr, ptr %18, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %137, i32 0, i32 30
  %139 = load i32, ptr %138, align 8, !tbaa !12
  %140 = icmp ugt i32 %139, 0
  br i1 %140, label %146, label %141

141:                                              ; preds = %83
  %142 = load ptr, ptr %18, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %142, i32 0, i32 31
  %144 = load i32, ptr %143, align 4, !tbaa !16
  %145 = icmp ugt i32 %144, 0
  br i1 %145, label %146, label %154

146:                                              ; preds = %141, %83
  %147 = load ptr, ptr %17, align 8, !tbaa !5
  %148 = load i32, ptr %55, align 4, !tbaa !9
  %149 = load i32, ptr %55, align 4, !tbaa !9
  %150 = load i32, ptr %55, align 4, !tbaa !9
  %151 = load i8, ptr %48, align 1, !tbaa !11
  %152 = zext i8 %151 to i32
  %153 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %147, i32 noundef 77606915, i32 noundef %148, i32 noundef %149, i8 noundef zeroext 0, i32 noundef %150, i32 noundef %152, i32 noundef %153)
  br label %154

154:                                              ; preds = %146, %141
  %155 = load ptr, ptr %18, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %155, i32 0, i32 30
  %157 = load i32, ptr %156, align 8, !tbaa !12
  %158 = icmp ugt i32 %157, 0
  br i1 %158, label %159, label %162

159:                                              ; preds = %154
  %160 = load ptr, ptr %17, align 8, !tbaa !5
  %161 = load i32, ptr %57, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var_aarch64(ptr noundef %160, i32 noundef 8, i32 noundef %161)
  br label %162

162:                                              ; preds = %159, %154
  %163 = load i32, ptr %45, align 4, !tbaa !9
  %164 = icmp ugt i32 %163, 0
  br i1 %164, label %165, label %169

165:                                              ; preds = %162
  %166 = load ptr, ptr %17, align 8, !tbaa !5
  %167 = load i32, ptr %56, align 4, !tbaa !9
  %168 = load i32, ptr %54, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %166, i32 noundef -2059353978, i32 noundef %167, i32 noundef 0, i32 noundef 0, i32 noundef %168, i32 noundef 0)
  br label %169

169:                                              ; preds = %165, %162
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %1172, %169
  %171 = load i32, ptr %35, align 4, !tbaa !9
  %172 = load i32, ptr %36, align 4, !tbaa !9
  %173 = icmp ult i32 %171, %172
  br i1 %173, label %174, label %1175

174:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  store i32 0, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  store i32 0, ptr %61, align 4, !tbaa !9
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = load i32, ptr %20, align 4, !tbaa !9
  %177 = load i32, ptr %21, align 4, !tbaa !9
  %178 = load i32, ptr %21, align 4, !tbaa !9
  %179 = load i32, ptr %29, align 4, !tbaa !9
  %180 = zext i32 %179 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %175, i32 noundef 4096, i32 noundef %176, i32 noundef %177, i32 noundef %178, i64 noundef %180)
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %181, i32 0, i32 30
  %183 = load i32, ptr %182, align 8, !tbaa !12
  %184 = icmp ugt i32 %183, 0
  br i1 %184, label %185, label %195

185:                                              ; preds = %174
  %186 = load ptr, ptr %17, align 8, !tbaa !5
  %187 = load i32, ptr %57, align 4, !tbaa !9
  %188 = load i32, ptr %58, align 4, !tbaa !9
  %189 = load i32, ptr %58, align 4, !tbaa !9
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %190, i32 0, i32 30
  %192 = load i32, ptr %191, align 1, !tbaa !17
  %193 = udiv i32 %192, 8
  %194 = zext i32 %193 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %186, i32 noundef 4096, i32 noundef %187, i32 noundef %188, i32 noundef %189, i64 noundef %194)
  br label %195

195:                                              ; preds = %185, %174
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %641, %195
  %197 = load i32, ptr %37, align 4, !tbaa !9
  %198 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 0
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp ult i32 %197, %199
  br i1 %200, label %201, label %644

201:                                              ; preds = %196
  %202 = load ptr, ptr %17, align 8, !tbaa !5
  %203 = getelementptr inbounds [2 x i32], ptr %41, i64 0, i64 0
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = load i32, ptr %35, align 4, !tbaa !9
  %206 = mul i32 8, %205
  %207 = load i32, ptr %37, align 4, !tbaa !9
  %208 = mul i32 2, %207
  %209 = add i32 %206, %208
  %210 = zext i32 %209 to i64
  %211 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = load i32, ptr %35, align 4, !tbaa !9
  %214 = mul i32 8, %213
  %215 = load i32, ptr %37, align 4, !tbaa !9
  %216 = mul i32 2, %215
  %217 = add i32 %214, %216
  %218 = add i32 %217, 1
  %219 = zext i32 %218 to i64
  %220 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %219
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %202, i32 noundef %204, i32 noundef %212, i32 noundef %221, i8 noundef zeroext 0, i32 noundef %223, i32 noundef 127, i32 noundef %224)
  %225 = load ptr, ptr %17, align 8, !tbaa !5
  %226 = getelementptr inbounds [2 x i32], ptr %41, i64 0, i64 1
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = load i32, ptr %35, align 4, !tbaa !9
  %229 = mul i32 8, %228
  %230 = load i32, ptr %37, align 4, !tbaa !9
  %231 = mul i32 2, %230
  %232 = add i32 %229, %231
  %233 = zext i32 %232 to i64
  %234 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %233
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = load i32, ptr %35, align 4, !tbaa !9
  %237 = mul i32 8, %236
  %238 = load i32, ptr %37, align 4, !tbaa !9
  %239 = mul i32 2, %238
  %240 = add i32 %237, %239
  %241 = add i32 %240, 1
  %242 = zext i32 %241 to i64
  %243 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %225, i32 noundef %227, i32 noundef %235, i32 noundef %244, i8 noundef zeroext 0, i32 noundef %246, i32 noundef 127, i32 noundef %247)
  %248 = load ptr, ptr %18, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %248, i32 0, i32 30
  %250 = load i32, ptr %249, align 8, !tbaa !12
  %251 = icmp ugt i32 %250, 0
  br i1 %251, label %252, label %361

252:                                              ; preds = %201
  %253 = load ptr, ptr %17, align 8, !tbaa !5
  %254 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = load i8, ptr %49, align 1, !tbaa !11
  %257 = zext i8 %256 to i32
  %258 = load i8, ptr %48, align 1, !tbaa !11
  %259 = zext i8 %258 to i32
  %260 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %253, i32 noundef 1695555730, i32 noundef %255, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %257, i32 noundef %259, i32 noundef %260)
  %261 = load ptr, ptr %17, align 8, !tbaa !5
  %262 = load i32, ptr %27, align 4, !tbaa !9
  %263 = load i32, ptr %37, align 4, !tbaa !9
  %264 = load i32, ptr %47, align 4, !tbaa !9
  %265 = load i32, ptr %54, align 4, !tbaa !9
  %266 = trunc i32 %265 to i8
  %267 = zext i8 %266 to i32
  %268 = icmp eq i32 0, %267
  br i1 %268, label %274, label %269

269:                                              ; preds = %252
  %270 = load i32, ptr %54, align 4, !tbaa !9
  %271 = trunc i32 %270 to i8
  %272 = zext i8 %271 to i32
  %273 = icmp slt i32 0, %272
  br i1 %273, label %274, label %292

274:                                              ; preds = %269, %252
  %275 = load i32, ptr %54, align 4, !tbaa !9
  %276 = zext i32 %275 to i64
  %277 = mul i64 1, %276
  %278 = icmp ult i64 %277, 255
  br i1 %278, label %279, label %283

279:                                              ; preds = %274
  %280 = load i32, ptr %54, align 4, !tbaa !9
  %281 = zext i32 %280 to i64
  %282 = mul i64 1, %281
  br label %284

283:                                              ; preds = %274
  br label %284

284:                                              ; preds = %283, %279
  %285 = phi i64 [ %282, %279 ], [ 255, %283 ]
  %286 = icmp ule i64 %285, 255
  br i1 %286, label %287, label %292

287:                                              ; preds = %284
  %288 = load i32, ptr %54, align 4, !tbaa !9
  %289 = uitofp i32 %288 to double
  %290 = fcmp ole double 0.000000e+00, %289
  br i1 %290, label %291, label %292

291:                                              ; preds = %287
  br label %293

292:                                              ; preds = %287, %284, %269
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 1738, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

293:                                              ; preds = %291
  %294 = load i32, ptr %54, align 4, !tbaa !9
  %295 = trunc i32 %294 to i8
  %296 = load i32, ptr %57, align 4, !tbaa !9
  %297 = trunc i32 %296 to i8
  %298 = zext i8 %297 to i32
  %299 = icmp eq i32 0, %298
  br i1 %299, label %305, label %300

300:                                              ; preds = %293
  %301 = load i32, ptr %57, align 4, !tbaa !9
  %302 = trunc i32 %301 to i8
  %303 = zext i8 %302 to i32
  %304 = icmp slt i32 0, %303
  br i1 %304, label %305, label %323

305:                                              ; preds = %300, %293
  %306 = load i32, ptr %57, align 4, !tbaa !9
  %307 = zext i32 %306 to i64
  %308 = mul i64 1, %307
  %309 = icmp ult i64 %308, 255
  br i1 %309, label %310, label %314

310:                                              ; preds = %305
  %311 = load i32, ptr %57, align 4, !tbaa !9
  %312 = zext i32 %311 to i64
  %313 = mul i64 1, %312
  br label %315

314:                                              ; preds = %305
  br label %315

315:                                              ; preds = %314, %310
  %316 = phi i64 [ %313, %310 ], [ 255, %314 ]
  %317 = icmp ule i64 %316, 255
  br i1 %317, label %318, label %323

318:                                              ; preds = %315
  %319 = load i32, ptr %57, align 4, !tbaa !9
  %320 = uitofp i32 %319 to double
  %321 = fcmp ole double 0.000000e+00, %320
  br i1 %321, label %322, label %323

322:                                              ; preds = %318
  br label %324

323:                                              ; preds = %318, %315, %300
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 1738, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

324:                                              ; preds = %322
  %325 = load i32, ptr %57, align 4, !tbaa !9
  %326 = trunc i32 %325 to i8
  %327 = load i8, ptr %49, align 1, !tbaa !11
  %328 = load i8, ptr %50, align 1, !tbaa !11
  %329 = load i8, ptr %51, align 1, !tbaa !11
  %330 = load i32, ptr %22, align 4, !tbaa !9
  %331 = trunc i32 %330 to i8
  %332 = zext i8 %331 to i32
  %333 = icmp eq i32 0, %332
  br i1 %333, label %339, label %334

334:                                              ; preds = %324
  %335 = load i32, ptr %22, align 4, !tbaa !9
  %336 = trunc i32 %335 to i8
  %337 = zext i8 %336 to i32
  %338 = icmp slt i32 0, %337
  br i1 %338, label %339, label %357

339:                                              ; preds = %334, %324
  %340 = load i32, ptr %22, align 4, !tbaa !9
  %341 = zext i32 %340 to i64
  %342 = mul i64 1, %341
  %343 = icmp ult i64 %342, 255
  br i1 %343, label %344, label %348

344:                                              ; preds = %339
  %345 = load i32, ptr %22, align 4, !tbaa !9
  %346 = zext i32 %345 to i64
  %347 = mul i64 1, %346
  br label %349

348:                                              ; preds = %339
  br label %349

349:                                              ; preds = %348, %344
  %350 = phi i64 [ %347, %344 ], [ 255, %348 ]
  %351 = icmp ule i64 %350, 255
  br i1 %351, label %352, label %357

352:                                              ; preds = %349
  %353 = load i32, ptr %22, align 4, !tbaa !9
  %354 = uitofp i32 %353 to double
  %355 = fcmp ole double 0.000000e+00, %354
  br i1 %355, label %356, label %357

356:                                              ; preds = %352
  br label %358

357:                                              ; preds = %352, %349, %334
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 1739, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

358:                                              ; preds = %356
  %359 = load i32, ptr %22, align 4, !tbaa !9
  %360 = trunc i32 %359 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %261, i32 noundef %262, i32 noundef %263, i32 noundef %264, i8 noundef zeroext %295, i8 noundef zeroext %326, i8 noundef zeroext %327, i8 noundef zeroext %328, i8 noundef zeroext %329, i8 noundef zeroext %360, ptr noundef %60)
  br label %361

361:                                              ; preds = %358, %201
  %362 = load ptr, ptr %18, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %362, i32 0, i32 30
  %364 = load i32, ptr %363, align 8, !tbaa !12
  %365 = icmp ugt i32 %364, 0
  br i1 %365, label %371, label %366

366:                                              ; preds = %361
  %367 = load ptr, ptr %18, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %367, i32 0, i32 31
  %369 = load i32, ptr %368, align 4, !tbaa !16
  %370 = icmp ugt i32 %369, 0
  br i1 %370, label %371, label %381

371:                                              ; preds = %366, %361
  %372 = load ptr, ptr %17, align 8, !tbaa !5
  %373 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = load i32, ptr %55, align 4, !tbaa !9
  %376 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = load i8, ptr %48, align 1, !tbaa !11
  %379 = zext i8 %378 to i32
  %380 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %372, i32 noundef 1694924962, i32 noundef %374, i32 noundef %375, i8 noundef zeroext 0, i32 noundef %377, i32 noundef %379, i32 noundef %380)
  br label %381

381:                                              ; preds = %371, %366
  %382 = load i32, ptr %44, align 4, !tbaa !9
  %383 = icmp eq i32 %382, 0
  br i1 %383, label %384, label %423

384:                                              ; preds = %381
  %385 = load i32, ptr %45, align 4, !tbaa !9
  %386 = icmp ugt i32 %385, 0
  br i1 %386, label %387, label %418

387:                                              ; preds = %384
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  %389 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %388, i32 noundef 1704239234, i32 noundef %390, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %392, i32 noundef 0, i32 noundef %393)
  %394 = load ptr, ptr %17, align 8, !tbaa !5
  %395 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = load i32, ptr %54, align 4, !tbaa !9
  %398 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %394, i32 noundef 1694500867, i32 noundef %396, i32 noundef %397, i8 noundef zeroext 0, i32 noundef %399, i32 noundef 0, i32 noundef %400)
  %401 = load ptr, ptr %19, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %401, i32 0, i32 6
  %403 = load i32, ptr %402, align 1, !tbaa !20
  %404 = and i32 4, %403
  %405 = icmp eq i32 0, %404
  br i1 %405, label %406, label %417

406:                                              ; preds = %387
  %407 = load ptr, ptr %17, align 8, !tbaa !5
  %408 = load i32, ptr %20, align 4, !tbaa !9
  %409 = load i32, ptr %55, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %407, i32 noundef -2055192570, i32 noundef %408, i32 noundef 127, i32 noundef 0, i32 noundef %409, i32 noundef 127)
  %410 = load ptr, ptr %17, align 8, !tbaa !5
  %411 = load i32, ptr %55, align 4, !tbaa !9
  %412 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %410, i32 noundef 1694498819, i32 noundef %411, i32 noundef %413, i8 noundef zeroext 0, i32 noundef %415, i32 noundef 0, i32 noundef %416)
  br label %417

417:                                              ; preds = %406, %387
  br label %418

418:                                              ; preds = %417, %384
  %419 = load ptr, ptr %17, align 8, !tbaa !5
  %420 = load i32, ptr %20, align 4, !tbaa !9
  %421 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %422 = load i32, ptr %421, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %419, i32 noundef -444579834, i32 noundef %420, i32 noundef 127, i32 noundef 0, i32 noundef %422, i32 noundef 127)
  br label %432

423:                                              ; preds = %381
  %424 = load ptr, ptr %17, align 8, !tbaa !5
  %425 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %426 = load i32, ptr %425, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %424, i32 noundef %426, i32 noundef 0)
  %427 = load ptr, ptr %17, align 8, !tbaa !5
  %428 = load i32, ptr %20, align 4, !tbaa !9
  %429 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %427, i32 noundef -459218810, i32 noundef %428, i32 noundef 127, i32 noundef 0, i32 noundef %430, i32 noundef %431)
  br label %432

432:                                              ; preds = %423, %418
  %433 = load ptr, ptr %17, align 8, !tbaa !5
  %434 = load i32, ptr %20, align 4, !tbaa !9
  %435 = load i32, ptr %20, align 4, !tbaa !9
  %436 = load i32, ptr %25, align 4, !tbaa !9
  %437 = load i32, ptr %30, align 4, !tbaa !9
  %438 = mul i32 %436, %437
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %433, i32 noundef 285212678, i32 noundef %434, i32 noundef %435, i32 noundef %438, i8 noundef zeroext 0)
  %439 = load i32, ptr %28, align 4, !tbaa !9
  %440 = urem i32 %439, 2
  %441 = icmp eq i32 %440, 1
  br i1 %441, label %442, label %448

442:                                              ; preds = %432
  %443 = load i32, ptr %35, align 4, !tbaa !9
  %444 = load i32, ptr %36, align 4, !tbaa !9
  %445 = sub i32 %444, 1
  %446 = icmp eq i32 %443, %445
  br i1 %446, label %447, label %448

447:                                              ; preds = %442
  br label %634

448:                                              ; preds = %442, %432
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %449, i32 0, i32 30
  %451 = load i32, ptr %450, align 8, !tbaa !12
  %452 = icmp ugt i32 %451, 0
  br i1 %452, label %453, label %562

453:                                              ; preds = %448
  %454 = load ptr, ptr %17, align 8, !tbaa !5
  %455 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load i8, ptr %49, align 1, !tbaa !11
  %458 = zext i8 %457 to i32
  %459 = load i8, ptr %48, align 1, !tbaa !11
  %460 = zext i8 %459 to i32
  %461 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %454, i32 noundef 1695555730, i32 noundef %456, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %458, i32 noundef %460, i32 noundef %461)
  %462 = load ptr, ptr %17, align 8, !tbaa !5
  %463 = load i32, ptr %27, align 4, !tbaa !9
  %464 = load i32, ptr %37, align 4, !tbaa !9
  %465 = load i32, ptr %47, align 4, !tbaa !9
  %466 = load i32, ptr %54, align 4, !tbaa !9
  %467 = trunc i32 %466 to i8
  %468 = zext i8 %467 to i32
  %469 = icmp eq i32 0, %468
  br i1 %469, label %475, label %470

470:                                              ; preds = %453
  %471 = load i32, ptr %54, align 4, !tbaa !9
  %472 = trunc i32 %471 to i8
  %473 = zext i8 %472 to i32
  %474 = icmp slt i32 0, %473
  br i1 %474, label %475, label %493

475:                                              ; preds = %470, %453
  %476 = load i32, ptr %54, align 4, !tbaa !9
  %477 = zext i32 %476 to i64
  %478 = mul i64 1, %477
  %479 = icmp ult i64 %478, 255
  br i1 %479, label %480, label %484

480:                                              ; preds = %475
  %481 = load i32, ptr %54, align 4, !tbaa !9
  %482 = zext i32 %481 to i64
  %483 = mul i64 1, %482
  br label %485

484:                                              ; preds = %475
  br label %485

485:                                              ; preds = %484, %480
  %486 = phi i64 [ %483, %480 ], [ 255, %484 ]
  %487 = icmp ule i64 %486, 255
  br i1 %487, label %488, label %493

488:                                              ; preds = %485
  %489 = load i32, ptr %54, align 4, !tbaa !9
  %490 = uitofp i32 %489 to double
  %491 = fcmp ole double 0.000000e+00, %490
  br i1 %491, label %492, label %493

492:                                              ; preds = %488
  br label %494

493:                                              ; preds = %488, %485, %470
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 1803, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

494:                                              ; preds = %492
  %495 = load i32, ptr %54, align 4, !tbaa !9
  %496 = trunc i32 %495 to i8
  %497 = load i32, ptr %58, align 4, !tbaa !9
  %498 = trunc i32 %497 to i8
  %499 = zext i8 %498 to i32
  %500 = icmp eq i32 0, %499
  br i1 %500, label %506, label %501

501:                                              ; preds = %494
  %502 = load i32, ptr %58, align 4, !tbaa !9
  %503 = trunc i32 %502 to i8
  %504 = zext i8 %503 to i32
  %505 = icmp slt i32 0, %504
  br i1 %505, label %506, label %524

506:                                              ; preds = %501, %494
  %507 = load i32, ptr %58, align 4, !tbaa !9
  %508 = zext i32 %507 to i64
  %509 = mul i64 1, %508
  %510 = icmp ult i64 %509, 255
  br i1 %510, label %511, label %515

511:                                              ; preds = %506
  %512 = load i32, ptr %58, align 4, !tbaa !9
  %513 = zext i32 %512 to i64
  %514 = mul i64 1, %513
  br label %516

515:                                              ; preds = %506
  br label %516

516:                                              ; preds = %515, %511
  %517 = phi i64 [ %514, %511 ], [ 255, %515 ]
  %518 = icmp ule i64 %517, 255
  br i1 %518, label %519, label %524

519:                                              ; preds = %516
  %520 = load i32, ptr %58, align 4, !tbaa !9
  %521 = uitofp i32 %520 to double
  %522 = fcmp ole double 0.000000e+00, %521
  br i1 %522, label %523, label %524

523:                                              ; preds = %519
  br label %525

524:                                              ; preds = %519, %516, %501
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 1803, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

525:                                              ; preds = %523
  %526 = load i32, ptr %58, align 4, !tbaa !9
  %527 = trunc i32 %526 to i8
  %528 = load i8, ptr %49, align 1, !tbaa !11
  %529 = load i8, ptr %52, align 1, !tbaa !11
  %530 = load i8, ptr %53, align 1, !tbaa !11
  %531 = load i32, ptr %22, align 4, !tbaa !9
  %532 = trunc i32 %531 to i8
  %533 = zext i8 %532 to i32
  %534 = icmp eq i32 0, %533
  br i1 %534, label %540, label %535

535:                                              ; preds = %525
  %536 = load i32, ptr %22, align 4, !tbaa !9
  %537 = trunc i32 %536 to i8
  %538 = zext i8 %537 to i32
  %539 = icmp slt i32 0, %538
  br i1 %539, label %540, label %558

540:                                              ; preds = %535, %525
  %541 = load i32, ptr %22, align 4, !tbaa !9
  %542 = zext i32 %541 to i64
  %543 = mul i64 1, %542
  %544 = icmp ult i64 %543, 255
  br i1 %544, label %545, label %549

545:                                              ; preds = %540
  %546 = load i32, ptr %22, align 4, !tbaa !9
  %547 = zext i32 %546 to i64
  %548 = mul i64 1, %547
  br label %550

549:                                              ; preds = %540
  br label %550

550:                                              ; preds = %549, %545
  %551 = phi i64 [ %548, %545 ], [ 255, %549 ]
  %552 = icmp ule i64 %551, 255
  br i1 %552, label %553, label %558

553:                                              ; preds = %550
  %554 = load i32, ptr %22, align 4, !tbaa !9
  %555 = uitofp i32 %554 to double
  %556 = fcmp ole double 0.000000e+00, %555
  br i1 %556, label %557, label %558

557:                                              ; preds = %553
  br label %559

558:                                              ; preds = %553, %550, %535
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 1804, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

559:                                              ; preds = %557
  %560 = load i32, ptr %22, align 4, !tbaa !9
  %561 = trunc i32 %560 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %462, i32 noundef %463, i32 noundef %464, i32 noundef %465, i8 noundef zeroext %496, i8 noundef zeroext %527, i8 noundef zeroext %528, i8 noundef zeroext %529, i8 noundef zeroext %530, i8 noundef zeroext %561, ptr noundef %61)
  br label %562

562:                                              ; preds = %559, %448
  %563 = load ptr, ptr %18, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %563, i32 0, i32 30
  %565 = load i32, ptr %564, align 8, !tbaa !12
  %566 = icmp ugt i32 %565, 0
  br i1 %566, label %572, label %567

567:                                              ; preds = %562
  %568 = load ptr, ptr %18, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %568, i32 0, i32 31
  %570 = load i32, ptr %569, align 4, !tbaa !16
  %571 = icmp ugt i32 %570, 0
  br i1 %571, label %572, label %582

572:                                              ; preds = %567, %562
  %573 = load ptr, ptr %17, align 8, !tbaa !5
  %574 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = load i32, ptr %55, align 4, !tbaa !9
  %577 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = load i8, ptr %48, align 1, !tbaa !11
  %580 = zext i8 %579 to i32
  %581 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %573, i32 noundef 1694924962, i32 noundef %575, i32 noundef %576, i8 noundef zeroext 0, i32 noundef %578, i32 noundef %580, i32 noundef %581)
  br label %582

582:                                              ; preds = %572, %567
  %583 = load i32, ptr %44, align 4, !tbaa !9
  %584 = icmp eq i32 %583, 0
  br i1 %584, label %585, label %624

585:                                              ; preds = %582
  %586 = load i32, ptr %45, align 4, !tbaa !9
  %587 = icmp ugt i32 %586, 0
  br i1 %587, label %588, label %619

588:                                              ; preds = %585
  %589 = load ptr, ptr %17, align 8, !tbaa !5
  %590 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %591 = load i32, ptr %590, align 4, !tbaa !9
  %592 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %589, i32 noundef 1704239234, i32 noundef %591, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %593, i32 noundef 0, i32 noundef %594)
  %595 = load ptr, ptr %17, align 8, !tbaa !5
  %596 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = load i32, ptr %54, align 4, !tbaa !9
  %599 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %595, i32 noundef 1694500867, i32 noundef %597, i32 noundef %598, i8 noundef zeroext 0, i32 noundef %600, i32 noundef 0, i32 noundef %601)
  %602 = load ptr, ptr %19, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %602, i32 0, i32 6
  %604 = load i32, ptr %603, align 1, !tbaa !20
  %605 = and i32 4, %604
  %606 = icmp eq i32 0, %605
  br i1 %606, label %607, label %618

607:                                              ; preds = %588
  %608 = load ptr, ptr %17, align 8, !tbaa !5
  %609 = load i32, ptr %21, align 4, !tbaa !9
  %610 = load i32, ptr %55, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %608, i32 noundef -2055192570, i32 noundef %609, i32 noundef 127, i32 noundef 0, i32 noundef %610, i32 noundef 127)
  %611 = load ptr, ptr %17, align 8, !tbaa !5
  %612 = load i32, ptr %55, align 4, !tbaa !9
  %613 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %614 = load i32, ptr %613, align 4, !tbaa !9
  %615 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %616 = load i32, ptr %615, align 4, !tbaa !9
  %617 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %611, i32 noundef 1694498819, i32 noundef %612, i32 noundef %614, i8 noundef zeroext 0, i32 noundef %616, i32 noundef 0, i32 noundef %617)
  br label %618

618:                                              ; preds = %607, %588
  br label %619

619:                                              ; preds = %618, %585
  %620 = load ptr, ptr %17, align 8, !tbaa !5
  %621 = load i32, ptr %21, align 4, !tbaa !9
  %622 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %623 = load i32, ptr %622, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %620, i32 noundef -444579834, i32 noundef %621, i32 noundef 127, i32 noundef 0, i32 noundef %623, i32 noundef 127)
  br label %633

624:                                              ; preds = %582
  %625 = load ptr, ptr %17, align 8, !tbaa !5
  %626 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %627 = load i32, ptr %626, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %625, i32 noundef %627, i32 noundef 0)
  %628 = load ptr, ptr %17, align 8, !tbaa !5
  %629 = load i32, ptr %21, align 4, !tbaa !9
  %630 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %631 = load i32, ptr %630, align 4, !tbaa !9
  %632 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %628, i32 noundef -459218810, i32 noundef %629, i32 noundef 127, i32 noundef 0, i32 noundef %631, i32 noundef %632)
  br label %633

633:                                              ; preds = %624, %619
  br label %634

634:                                              ; preds = %633, %447
  %635 = load ptr, ptr %17, align 8, !tbaa !5
  %636 = load i32, ptr %21, align 4, !tbaa !9
  %637 = load i32, ptr %21, align 4, !tbaa !9
  %638 = load i32, ptr %25, align 4, !tbaa !9
  %639 = load i32, ptr %30, align 4, !tbaa !9
  %640 = mul i32 %638, %639
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %635, i32 noundef 285212678, i32 noundef %636, i32 noundef %637, i32 noundef %640, i8 noundef zeroext 0)
  br label %641

641:                                              ; preds = %634
  %642 = load i32, ptr %37, align 4, !tbaa !9
  %643 = add i32 %642, 1
  store i32 %643, ptr %37, align 4, !tbaa !9
  br label %196, !llvm.loop !21

644:                                              ; preds = %196
  %645 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 0
  %646 = load i32, ptr %645, align 4, !tbaa !9
  store i32 %646, ptr %37, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %1097, %644
  %648 = load i32, ptr %37, align 4, !tbaa !9
  %649 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 0
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 1
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = add i32 %650, %652
  %654 = icmp ult i32 %648, %653
  br i1 %654, label %655, label %1100

655:                                              ; preds = %647
  %656 = load ptr, ptr %17, align 8, !tbaa !5
  %657 = getelementptr inbounds [2 x i32], ptr %41, i64 0, i64 0
  %658 = load i32, ptr %657, align 4, !tbaa !9
  %659 = load i32, ptr %35, align 4, !tbaa !9
  %660 = mul i32 8, %659
  %661 = load i32, ptr %37, align 4, !tbaa !9
  %662 = mul i32 2, %661
  %663 = add i32 %660, %662
  %664 = zext i32 %663 to i64
  %665 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %664
  %666 = load i32, ptr %665, align 4, !tbaa !9
  %667 = load i32, ptr %35, align 4, !tbaa !9
  %668 = mul i32 8, %667
  %669 = load i32, ptr %37, align 4, !tbaa !9
  %670 = mul i32 2, %669
  %671 = add i32 %668, %670
  %672 = add i32 %671, 1
  %673 = zext i32 %672 to i64
  %674 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %673
  %675 = load i32, ptr %674, align 4, !tbaa !9
  %676 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %677 = load i32, ptr %676, align 4, !tbaa !9
  %678 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %656, i32 noundef %658, i32 noundef %666, i32 noundef %675, i8 noundef zeroext 0, i32 noundef %677, i32 noundef 127, i32 noundef %678)
  %679 = load ptr, ptr %17, align 8, !tbaa !5
  %680 = getelementptr inbounds [2 x i32], ptr %41, i64 0, i64 1
  %681 = load i32, ptr %680, align 4, !tbaa !9
  %682 = load i32, ptr %35, align 4, !tbaa !9
  %683 = mul i32 8, %682
  %684 = load i32, ptr %37, align 4, !tbaa !9
  %685 = mul i32 2, %684
  %686 = add i32 %683, %685
  %687 = zext i32 %686 to i64
  %688 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %687
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = load i32, ptr %35, align 4, !tbaa !9
  %691 = mul i32 8, %690
  %692 = load i32, ptr %37, align 4, !tbaa !9
  %693 = mul i32 2, %692
  %694 = add i32 %691, %693
  %695 = add i32 %694, 1
  %696 = zext i32 %695 to i64
  %697 = getelementptr inbounds [24 x i32], ptr %43, i64 0, i64 %696
  %698 = load i32, ptr %697, align 4, !tbaa !9
  %699 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %700 = load i32, ptr %699, align 4, !tbaa !9
  %701 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %679, i32 noundef %681, i32 noundef %689, i32 noundef %698, i8 noundef zeroext 0, i32 noundef %700, i32 noundef 127, i32 noundef %701)
  %702 = load ptr, ptr %18, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %702, i32 0, i32 30
  %704 = load i32, ptr %703, align 8, !tbaa !12
  %705 = icmp ugt i32 %704, 0
  br i1 %705, label %706, label %815

706:                                              ; preds = %655
  %707 = load ptr, ptr %17, align 8, !tbaa !5
  %708 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = load i8, ptr %49, align 1, !tbaa !11
  %711 = zext i8 %710 to i32
  %712 = load i8, ptr %48, align 1, !tbaa !11
  %713 = zext i8 %712 to i32
  %714 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %707, i32 noundef 1695555730, i32 noundef %709, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %711, i32 noundef %713, i32 noundef %714)
  %715 = load ptr, ptr %17, align 8, !tbaa !5
  %716 = load i32, ptr %27, align 4, !tbaa !9
  %717 = load i32, ptr %37, align 4, !tbaa !9
  %718 = load i32, ptr %47, align 4, !tbaa !9
  %719 = load i32, ptr %54, align 4, !tbaa !9
  %720 = trunc i32 %719 to i8
  %721 = zext i8 %720 to i32
  %722 = icmp eq i32 0, %721
  br i1 %722, label %728, label %723

723:                                              ; preds = %706
  %724 = load i32, ptr %54, align 4, !tbaa !9
  %725 = trunc i32 %724 to i8
  %726 = zext i8 %725 to i32
  %727 = icmp slt i32 0, %726
  br i1 %727, label %728, label %746

728:                                              ; preds = %723, %706
  %729 = load i32, ptr %54, align 4, !tbaa !9
  %730 = zext i32 %729 to i64
  %731 = mul i64 1, %730
  %732 = icmp ult i64 %731, 255
  br i1 %732, label %733, label %737

733:                                              ; preds = %728
  %734 = load i32, ptr %54, align 4, !tbaa !9
  %735 = zext i32 %734 to i64
  %736 = mul i64 1, %735
  br label %738

737:                                              ; preds = %728
  br label %738

738:                                              ; preds = %737, %733
  %739 = phi i64 [ %736, %733 ], [ 255, %737 ]
  %740 = icmp ule i64 %739, 255
  br i1 %740, label %741, label %746

741:                                              ; preds = %738
  %742 = load i32, ptr %54, align 4, !tbaa !9
  %743 = uitofp i32 %742 to double
  %744 = fcmp ole double 0.000000e+00, %743
  br i1 %744, label %745, label %746

745:                                              ; preds = %741
  br label %747

746:                                              ; preds = %741, %738, %723
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 1886, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

747:                                              ; preds = %745
  %748 = load i32, ptr %54, align 4, !tbaa !9
  %749 = trunc i32 %748 to i8
  %750 = load i32, ptr %57, align 4, !tbaa !9
  %751 = trunc i32 %750 to i8
  %752 = zext i8 %751 to i32
  %753 = icmp eq i32 0, %752
  br i1 %753, label %759, label %754

754:                                              ; preds = %747
  %755 = load i32, ptr %57, align 4, !tbaa !9
  %756 = trunc i32 %755 to i8
  %757 = zext i8 %756 to i32
  %758 = icmp slt i32 0, %757
  br i1 %758, label %759, label %777

759:                                              ; preds = %754, %747
  %760 = load i32, ptr %57, align 4, !tbaa !9
  %761 = zext i32 %760 to i64
  %762 = mul i64 1, %761
  %763 = icmp ult i64 %762, 255
  br i1 %763, label %764, label %768

764:                                              ; preds = %759
  %765 = load i32, ptr %57, align 4, !tbaa !9
  %766 = zext i32 %765 to i64
  %767 = mul i64 1, %766
  br label %769

768:                                              ; preds = %759
  br label %769

769:                                              ; preds = %768, %764
  %770 = phi i64 [ %767, %764 ], [ 255, %768 ]
  %771 = icmp ule i64 %770, 255
  br i1 %771, label %772, label %777

772:                                              ; preds = %769
  %773 = load i32, ptr %57, align 4, !tbaa !9
  %774 = uitofp i32 %773 to double
  %775 = fcmp ole double 0.000000e+00, %774
  br i1 %775, label %776, label %777

776:                                              ; preds = %772
  br label %778

777:                                              ; preds = %772, %769, %754
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 1886, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

778:                                              ; preds = %776
  %779 = load i32, ptr %57, align 4, !tbaa !9
  %780 = trunc i32 %779 to i8
  %781 = load i8, ptr %49, align 1, !tbaa !11
  %782 = load i8, ptr %50, align 1, !tbaa !11
  %783 = load i8, ptr %51, align 1, !tbaa !11
  %784 = load i32, ptr %22, align 4, !tbaa !9
  %785 = trunc i32 %784 to i8
  %786 = zext i8 %785 to i32
  %787 = icmp eq i32 0, %786
  br i1 %787, label %793, label %788

788:                                              ; preds = %778
  %789 = load i32, ptr %22, align 4, !tbaa !9
  %790 = trunc i32 %789 to i8
  %791 = zext i8 %790 to i32
  %792 = icmp slt i32 0, %791
  br i1 %792, label %793, label %811

793:                                              ; preds = %788, %778
  %794 = load i32, ptr %22, align 4, !tbaa !9
  %795 = zext i32 %794 to i64
  %796 = mul i64 1, %795
  %797 = icmp ult i64 %796, 255
  br i1 %797, label %798, label %802

798:                                              ; preds = %793
  %799 = load i32, ptr %22, align 4, !tbaa !9
  %800 = zext i32 %799 to i64
  %801 = mul i64 1, %800
  br label %803

802:                                              ; preds = %793
  br label %803

803:                                              ; preds = %802, %798
  %804 = phi i64 [ %801, %798 ], [ 255, %802 ]
  %805 = icmp ule i64 %804, 255
  br i1 %805, label %806, label %811

806:                                              ; preds = %803
  %807 = load i32, ptr %22, align 4, !tbaa !9
  %808 = uitofp i32 %807 to double
  %809 = fcmp ole double 0.000000e+00, %808
  br i1 %809, label %810, label %811

810:                                              ; preds = %806
  br label %812

811:                                              ; preds = %806, %803, %788
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 1887, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

812:                                              ; preds = %810
  %813 = load i32, ptr %22, align 4, !tbaa !9
  %814 = trunc i32 %813 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %715, i32 noundef %716, i32 noundef %717, i32 noundef %718, i8 noundef zeroext %749, i8 noundef zeroext %780, i8 noundef zeroext %781, i8 noundef zeroext %782, i8 noundef zeroext %783, i8 noundef zeroext %814, ptr noundef %60)
  br label %815

815:                                              ; preds = %812, %655
  %816 = load ptr, ptr %18, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %816, i32 0, i32 30
  %818 = load i32, ptr %817, align 8, !tbaa !12
  %819 = icmp ugt i32 %818, 0
  br i1 %819, label %825, label %820

820:                                              ; preds = %815
  %821 = load ptr, ptr %18, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %821, i32 0, i32 31
  %823 = load i32, ptr %822, align 4, !tbaa !16
  %824 = icmp ugt i32 %823, 0
  br i1 %824, label %825, label %835

825:                                              ; preds = %820, %815
  %826 = load ptr, ptr %17, align 8, !tbaa !5
  %827 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %828 = load i32, ptr %827, align 4, !tbaa !9
  %829 = load i32, ptr %55, align 4, !tbaa !9
  %830 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %831 = load i32, ptr %830, align 4, !tbaa !9
  %832 = load i8, ptr %48, align 1, !tbaa !11
  %833 = zext i8 %832 to i32
  %834 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %826, i32 noundef 1694924962, i32 noundef %828, i32 noundef %829, i8 noundef zeroext 0, i32 noundef %831, i32 noundef %833, i32 noundef %834)
  br label %835

835:                                              ; preds = %825, %820
  %836 = load i32, ptr %44, align 4, !tbaa !9
  %837 = icmp eq i32 %836, 0
  br i1 %837, label %838, label %877

838:                                              ; preds = %835
  %839 = load i32, ptr %45, align 4, !tbaa !9
  %840 = icmp ugt i32 %839, 0
  br i1 %840, label %841, label %872

841:                                              ; preds = %838
  %842 = load ptr, ptr %17, align 8, !tbaa !5
  %843 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %844 = load i32, ptr %843, align 4, !tbaa !9
  %845 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %846 = load i32, ptr %845, align 4, !tbaa !9
  %847 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %842, i32 noundef 1704239234, i32 noundef %844, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %846, i32 noundef 1, i32 noundef %847)
  %848 = load ptr, ptr %17, align 8, !tbaa !5
  %849 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = load i32, ptr %54, align 4, !tbaa !9
  %852 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %848, i32 noundef 1694500867, i32 noundef %850, i32 noundef %851, i8 noundef zeroext 0, i32 noundef %853, i32 noundef 0, i32 noundef %854)
  %855 = load ptr, ptr %19, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %855, i32 0, i32 6
  %857 = load i32, ptr %856, align 1, !tbaa !20
  %858 = and i32 4, %857
  %859 = icmp eq i32 0, %858
  br i1 %859, label %860, label %871

860:                                              ; preds = %841
  %861 = load ptr, ptr %17, align 8, !tbaa !5
  %862 = load i32, ptr %20, align 4, !tbaa !9
  %863 = load i32, ptr %55, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %861, i32 noundef -1522491258, i32 noundef %862, i32 noundef 127, i32 noundef 0, i32 noundef %863, i32 noundef 1)
  %864 = load ptr, ptr %17, align 8, !tbaa !5
  %865 = load i32, ptr %55, align 4, !tbaa !9
  %866 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %867 = load i32, ptr %866, align 4, !tbaa !9
  %868 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %869 = load i32, ptr %868, align 4, !tbaa !9
  %870 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %864, i32 noundef 1694498819, i32 noundef %865, i32 noundef %867, i8 noundef zeroext 0, i32 noundef %869, i32 noundef 0, i32 noundef %870)
  br label %871

871:                                              ; preds = %860, %841
  br label %872

872:                                              ; preds = %871, %838
  %873 = load ptr, ptr %17, align 8, !tbaa !5
  %874 = load i32, ptr %20, align 4, !tbaa !9
  %875 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %876 = load i32, ptr %875, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %873, i32 noundef -448733050, i32 noundef %874, i32 noundef 127, i32 noundef 0, i32 noundef %876, i32 noundef 1)
  br label %885

877:                                              ; preds = %835
  %878 = load ptr, ptr %17, align 8, !tbaa !5
  %879 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %880 = load i32, ptr %879, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %878, i32 noundef %880, i32 noundef 0)
  %881 = load ptr, ptr %17, align 8, !tbaa !5
  %882 = load i32, ptr %20, align 4, !tbaa !9
  %883 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  %884 = load i32, ptr %883, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %881, i32 noundef -459218810, i32 noundef %882, i32 noundef 127, i32 noundef 0, i32 noundef %884, i32 noundef 1)
  br label %885

885:                                              ; preds = %877, %872
  %886 = load ptr, ptr %17, align 8, !tbaa !5
  %887 = load i32, ptr %20, align 4, !tbaa !9
  %888 = load i32, ptr %20, align 4, !tbaa !9
  %889 = load i32, ptr %27, align 4, !tbaa !9
  %890 = load i32, ptr %25, align 4, !tbaa !9
  %891 = urem i32 %889, %890
  %892 = load i32, ptr %30, align 4, !tbaa !9
  %893 = mul i32 %891, %892
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %886, i32 noundef 285212678, i32 noundef %887, i32 noundef %888, i32 noundef %893, i8 noundef zeroext 0)
  %894 = load i32, ptr %28, align 4, !tbaa !9
  %895 = urem i32 %894, 2
  %896 = icmp eq i32 %895, 1
  br i1 %896, label %897, label %903

897:                                              ; preds = %885
  %898 = load i32, ptr %35, align 4, !tbaa !9
  %899 = load i32, ptr %36, align 4, !tbaa !9
  %900 = sub i32 %899, 1
  %901 = icmp eq i32 %898, %900
  br i1 %901, label %902, label %903

902:                                              ; preds = %897
  br label %1088

903:                                              ; preds = %897, %885
  %904 = load ptr, ptr %18, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %904, i32 0, i32 30
  %906 = load i32, ptr %905, align 8, !tbaa !12
  %907 = icmp ugt i32 %906, 0
  br i1 %907, label %908, label %1017

908:                                              ; preds = %903
  %909 = load ptr, ptr %17, align 8, !tbaa !5
  %910 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %911 = load i32, ptr %910, align 4, !tbaa !9
  %912 = load i8, ptr %49, align 1, !tbaa !11
  %913 = zext i8 %912 to i32
  %914 = load i8, ptr %48, align 1, !tbaa !11
  %915 = zext i8 %914 to i32
  %916 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %909, i32 noundef 1695555730, i32 noundef %911, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %913, i32 noundef %915, i32 noundef %916)
  %917 = load ptr, ptr %17, align 8, !tbaa !5
  %918 = load i32, ptr %27, align 4, !tbaa !9
  %919 = load i32, ptr %37, align 4, !tbaa !9
  %920 = load i32, ptr %47, align 4, !tbaa !9
  %921 = load i32, ptr %54, align 4, !tbaa !9
  %922 = trunc i32 %921 to i8
  %923 = zext i8 %922 to i32
  %924 = icmp eq i32 0, %923
  br i1 %924, label %930, label %925

925:                                              ; preds = %908
  %926 = load i32, ptr %54, align 4, !tbaa !9
  %927 = trunc i32 %926 to i8
  %928 = zext i8 %927 to i32
  %929 = icmp slt i32 0, %928
  br i1 %929, label %930, label %948

930:                                              ; preds = %925, %908
  %931 = load i32, ptr %54, align 4, !tbaa !9
  %932 = zext i32 %931 to i64
  %933 = mul i64 1, %932
  %934 = icmp ult i64 %933, 255
  br i1 %934, label %935, label %939

935:                                              ; preds = %930
  %936 = load i32, ptr %54, align 4, !tbaa !9
  %937 = zext i32 %936 to i64
  %938 = mul i64 1, %937
  br label %940

939:                                              ; preds = %930
  br label %940

940:                                              ; preds = %939, %935
  %941 = phi i64 [ %938, %935 ], [ 255, %939 ]
  %942 = icmp ule i64 %941, 255
  br i1 %942, label %943, label %948

943:                                              ; preds = %940
  %944 = load i32, ptr %54, align 4, !tbaa !9
  %945 = uitofp i32 %944 to double
  %946 = fcmp ole double 0.000000e+00, %945
  br i1 %946, label %947, label %948

947:                                              ; preds = %943
  br label %949

948:                                              ; preds = %943, %940, %925
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 1952, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

949:                                              ; preds = %947
  %950 = load i32, ptr %54, align 4, !tbaa !9
  %951 = trunc i32 %950 to i8
  %952 = load i32, ptr %58, align 4, !tbaa !9
  %953 = trunc i32 %952 to i8
  %954 = zext i8 %953 to i32
  %955 = icmp eq i32 0, %954
  br i1 %955, label %961, label %956

956:                                              ; preds = %949
  %957 = load i32, ptr %58, align 4, !tbaa !9
  %958 = trunc i32 %957 to i8
  %959 = zext i8 %958 to i32
  %960 = icmp slt i32 0, %959
  br i1 %960, label %961, label %979

961:                                              ; preds = %956, %949
  %962 = load i32, ptr %58, align 4, !tbaa !9
  %963 = zext i32 %962 to i64
  %964 = mul i64 1, %963
  %965 = icmp ult i64 %964, 255
  br i1 %965, label %966, label %970

966:                                              ; preds = %961
  %967 = load i32, ptr %58, align 4, !tbaa !9
  %968 = zext i32 %967 to i64
  %969 = mul i64 1, %968
  br label %971

970:                                              ; preds = %961
  br label %971

971:                                              ; preds = %970, %966
  %972 = phi i64 [ %969, %966 ], [ 255, %970 ]
  %973 = icmp ule i64 %972, 255
  br i1 %973, label %974, label %979

974:                                              ; preds = %971
  %975 = load i32, ptr %58, align 4, !tbaa !9
  %976 = uitofp i32 %975 to double
  %977 = fcmp ole double 0.000000e+00, %976
  br i1 %977, label %978, label %979

978:                                              ; preds = %974
  br label %980

979:                                              ; preds = %974, %971, %956
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 1952, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

980:                                              ; preds = %978
  %981 = load i32, ptr %58, align 4, !tbaa !9
  %982 = trunc i32 %981 to i8
  %983 = load i8, ptr %49, align 1, !tbaa !11
  %984 = load i8, ptr %52, align 1, !tbaa !11
  %985 = load i8, ptr %53, align 1, !tbaa !11
  %986 = load i32, ptr %22, align 4, !tbaa !9
  %987 = trunc i32 %986 to i8
  %988 = zext i8 %987 to i32
  %989 = icmp eq i32 0, %988
  br i1 %989, label %995, label %990

990:                                              ; preds = %980
  %991 = load i32, ptr %22, align 4, !tbaa !9
  %992 = trunc i32 %991 to i8
  %993 = zext i8 %992 to i32
  %994 = icmp slt i32 0, %993
  br i1 %994, label %995, label %1013

995:                                              ; preds = %990, %980
  %996 = load i32, ptr %22, align 4, !tbaa !9
  %997 = zext i32 %996 to i64
  %998 = mul i64 1, %997
  %999 = icmp ult i64 %998, 255
  br i1 %999, label %1000, label %1004

1000:                                             ; preds = %995
  %1001 = load i32, ptr %22, align 4, !tbaa !9
  %1002 = zext i32 %1001 to i64
  %1003 = mul i64 1, %1002
  br label %1005

1004:                                             ; preds = %995
  br label %1005

1005:                                             ; preds = %1004, %1000
  %1006 = phi i64 [ %1003, %1000 ], [ 255, %1004 ]
  %1007 = icmp ule i64 %1006, 255
  br i1 %1007, label %1008, label %1013

1008:                                             ; preds = %1005
  %1009 = load i32, ptr %22, align 4, !tbaa !9
  %1010 = uitofp i32 %1009 to double
  %1011 = fcmp ole double 0.000000e+00, %1010
  br i1 %1011, label %1012, label %1013

1012:                                             ; preds = %1008
  br label %1014

1013:                                             ; preds = %1008, %1005, %990
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 1953, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_store_2dregblock_mmla_aarch64_sve) #7
  unreachable

1014:                                             ; preds = %1012
  %1015 = load i32, ptr %22, align 4, !tbaa !9
  %1016 = trunc i32 %1015 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %917, i32 noundef %918, i32 noundef %919, i32 noundef %920, i8 noundef zeroext %951, i8 noundef zeroext %982, i8 noundef zeroext %983, i8 noundef zeroext %984, i8 noundef zeroext %985, i8 noundef zeroext %1016, ptr noundef %61)
  br label %1017

1017:                                             ; preds = %1014, %903
  %1018 = load ptr, ptr %18, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1018, i32 0, i32 30
  %1020 = load i32, ptr %1019, align 8, !tbaa !12
  %1021 = icmp ugt i32 %1020, 0
  br i1 %1021, label %1027, label %1022

1022:                                             ; preds = %1017
  %1023 = load ptr, ptr %18, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1023, i32 0, i32 31
  %1025 = load i32, ptr %1024, align 4, !tbaa !16
  %1026 = icmp ugt i32 %1025, 0
  br i1 %1026, label %1027, label %1037

1027:                                             ; preds = %1022, %1017
  %1028 = load ptr, ptr %17, align 8, !tbaa !5
  %1029 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  %1031 = load i32, ptr %55, align 4, !tbaa !9
  %1032 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = load i8, ptr %48, align 1, !tbaa !11
  %1035 = zext i8 %1034 to i32
  %1036 = load i32, ptr %59, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1028, i32 noundef 1694924962, i32 noundef %1030, i32 noundef %1031, i8 noundef zeroext 0, i32 noundef %1033, i32 noundef %1035, i32 noundef %1036)
  br label %1037

1037:                                             ; preds = %1027, %1022
  %1038 = load i32, ptr %44, align 4, !tbaa !9
  %1039 = icmp eq i32 %1038, 0
  br i1 %1039, label %1040, label %1079

1040:                                             ; preds = %1037
  %1041 = load i32, ptr %45, align 4, !tbaa !9
  %1042 = icmp ugt i32 %1041, 0
  br i1 %1042, label %1043, label %1074

1043:                                             ; preds = %1040
  %1044 = load ptr, ptr %17, align 8, !tbaa !5
  %1045 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1046 = load i32, ptr %1045, align 4, !tbaa !9
  %1047 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1048 = load i32, ptr %1047, align 4, !tbaa !9
  %1049 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1044, i32 noundef 1704239234, i32 noundef %1046, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %1048, i32 noundef 1, i32 noundef %1049)
  %1050 = load ptr, ptr %17, align 8, !tbaa !5
  %1051 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1052 = load i32, ptr %1051, align 4, !tbaa !9
  %1053 = load i32, ptr %54, align 4, !tbaa !9
  %1054 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1055 = load i32, ptr %1054, align 4, !tbaa !9
  %1056 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1050, i32 noundef 1694500867, i32 noundef %1052, i32 noundef %1053, i8 noundef zeroext 0, i32 noundef %1055, i32 noundef 0, i32 noundef %1056)
  %1057 = load ptr, ptr %19, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1057, i32 0, i32 6
  %1059 = load i32, ptr %1058, align 1, !tbaa !20
  %1060 = and i32 4, %1059
  %1061 = icmp eq i32 0, %1060
  br i1 %1061, label %1062, label %1073

1062:                                             ; preds = %1043
  %1063 = load ptr, ptr %17, align 8, !tbaa !5
  %1064 = load i32, ptr %21, align 4, !tbaa !9
  %1065 = load i32, ptr %55, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %1063, i32 noundef -1522491258, i32 noundef %1064, i32 noundef 127, i32 noundef 0, i32 noundef %1065, i32 noundef 1)
  %1066 = load ptr, ptr %17, align 8, !tbaa !5
  %1067 = load i32, ptr %55, align 4, !tbaa !9
  %1068 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1069 = load i32, ptr %1068, align 4, !tbaa !9
  %1070 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1071 = load i32, ptr %1070, align 4, !tbaa !9
  %1072 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1066, i32 noundef 1694498819, i32 noundef %1067, i32 noundef %1069, i8 noundef zeroext 0, i32 noundef %1071, i32 noundef 0, i32 noundef %1072)
  br label %1073

1073:                                             ; preds = %1062, %1043
  br label %1074

1074:                                             ; preds = %1073, %1040
  %1075 = load ptr, ptr %17, align 8, !tbaa !5
  %1076 = load i32, ptr %21, align 4, !tbaa !9
  %1077 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1078 = load i32, ptr %1077, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %1075, i32 noundef -448733050, i32 noundef %1076, i32 noundef 127, i32 noundef 0, i32 noundef %1078, i32 noundef 1)
  br label %1087

1079:                                             ; preds = %1037
  %1080 = load ptr, ptr %17, align 8, !tbaa !5
  %1081 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %1080, i32 noundef %1082, i32 noundef 0)
  %1083 = load ptr, ptr %17, align 8, !tbaa !5
  %1084 = load i32, ptr %21, align 4, !tbaa !9
  %1085 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  %1086 = load i32, ptr %1085, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %1083, i32 noundef -459218810, i32 noundef %1084, i32 noundef 127, i32 noundef 0, i32 noundef %1086, i32 noundef 1)
  br label %1087

1087:                                             ; preds = %1079, %1074
  br label %1088

1088:                                             ; preds = %1087, %902
  %1089 = load ptr, ptr %17, align 8, !tbaa !5
  %1090 = load i32, ptr %21, align 4, !tbaa !9
  %1091 = load i32, ptr %21, align 4, !tbaa !9
  %1092 = load i32, ptr %27, align 4, !tbaa !9
  %1093 = load i32, ptr %25, align 4, !tbaa !9
  %1094 = urem i32 %1092, %1093
  %1095 = load i32, ptr %30, align 4, !tbaa !9
  %1096 = mul i32 %1094, %1095
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %1089, i32 noundef 285212678, i32 noundef %1090, i32 noundef %1091, i32 noundef %1096, i8 noundef zeroext 0)
  br label %1097

1097:                                             ; preds = %1088
  %1098 = load i32, ptr %37, align 4, !tbaa !9
  %1099 = add i32 %1098, 1
  store i32 %1099, ptr %37, align 4, !tbaa !9
  br label %647, !llvm.loop !23

1100:                                             ; preds = %647
  %1101 = load i32, ptr %28, align 4, !tbaa !9
  %1102 = urem i32 %1101, 2
  %1103 = icmp eq i32 %1102, 1
  br i1 %1103, label %1104, label %1140

1104:                                             ; preds = %1100
  %1105 = load i32, ptr %35, align 4, !tbaa !9
  %1106 = load i32, ptr %36, align 4, !tbaa !9
  %1107 = sub i32 %1106, 1
  %1108 = icmp eq i32 %1105, %1107
  br i1 %1108, label %1109, label %1140

1109:                                             ; preds = %1104
  %1110 = load ptr, ptr %17, align 8, !tbaa !5
  %1111 = load i32, ptr %20, align 4, !tbaa !9
  %1112 = load i32, ptr %21, align 4, !tbaa !9
  %1113 = load i32, ptr %20, align 4, !tbaa !9
  %1114 = load i32, ptr %29, align 4, !tbaa !9
  %1115 = zext i32 %1114 to i64
  %1116 = mul i64 1, %1115
  %1117 = load i32, ptr %39, align 4, !tbaa !9
  %1118 = zext i32 %1117 to i64
  %1119 = sub i64 %1116, %1118
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1110, i32 noundef 4096, i32 noundef %1111, i32 noundef %1112, i32 noundef %1113, i64 noundef %1119)
  %1120 = load ptr, ptr %18, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1120, i32 0, i32 30
  %1122 = load i32, ptr %1121, align 8, !tbaa !12
  %1123 = icmp ugt i32 %1122, 0
  br i1 %1123, label %1124, label %1139

1124:                                             ; preds = %1109
  %1125 = load ptr, ptr %17, align 8, !tbaa !5
  %1126 = load i32, ptr %57, align 4, !tbaa !9
  %1127 = load i32, ptr %22, align 4, !tbaa !9
  %1128 = load i32, ptr %57, align 4, !tbaa !9
  %1129 = load ptr, ptr %19, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1129, i32 0, i32 30
  %1131 = load i32, ptr %1130, align 1, !tbaa !17
  %1132 = zext i32 %1131 to i64
  %1133 = mul i64 1, %1132
  %1134 = load i32, ptr %60, align 4, !tbaa !9
  %1135 = zext i32 %1134 to i64
  %1136 = mul i64 8, %1135
  %1137 = sub i64 %1133, %1136
  %1138 = udiv i64 %1137, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1125, i32 noundef 4096, i32 noundef %1126, i32 noundef %1127, i32 noundef %1128, i64 noundef %1138)
  br label %1139

1139:                                             ; preds = %1124, %1109
  br label %1171

1140:                                             ; preds = %1104, %1100
  %1141 = load ptr, ptr %17, align 8, !tbaa !5
  %1142 = load i32, ptr %20, align 4, !tbaa !9
  %1143 = load i32, ptr %21, align 4, !tbaa !9
  %1144 = load i32, ptr %20, align 4, !tbaa !9
  %1145 = load i32, ptr %29, align 4, !tbaa !9
  %1146 = zext i32 %1145 to i64
  %1147 = mul i64 2, %1146
  %1148 = load i32, ptr %39, align 4, !tbaa !9
  %1149 = zext i32 %1148 to i64
  %1150 = sub i64 %1147, %1149
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1141, i32 noundef 4096, i32 noundef %1142, i32 noundef %1143, i32 noundef %1144, i64 noundef %1150)
  %1151 = load ptr, ptr %18, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1151, i32 0, i32 30
  %1153 = load i32, ptr %1152, align 8, !tbaa !12
  %1154 = icmp ugt i32 %1153, 0
  br i1 %1154, label %1155, label %1170

1155:                                             ; preds = %1140
  %1156 = load ptr, ptr %17, align 8, !tbaa !5
  %1157 = load i32, ptr %57, align 4, !tbaa !9
  %1158 = load i32, ptr %22, align 4, !tbaa !9
  %1159 = load i32, ptr %57, align 4, !tbaa !9
  %1160 = load ptr, ptr %19, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1160, i32 0, i32 30
  %1162 = load i32, ptr %1161, align 1, !tbaa !17
  %1163 = zext i32 %1162 to i64
  %1164 = mul i64 2, %1163
  %1165 = load i32, ptr %60, align 4, !tbaa !9
  %1166 = zext i32 %1165 to i64
  %1167 = mul i64 8, %1166
  %1168 = sub i64 %1164, %1167
  %1169 = udiv i64 %1168, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1156, i32 noundef 4096, i32 noundef %1157, i32 noundef %1158, i32 noundef %1159, i64 noundef %1169)
  br label %1170

1170:                                             ; preds = %1155, %1140
  br label %1171

1171:                                             ; preds = %1170, %1139
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  br label %1172

1172:                                             ; preds = %1171
  %1173 = load i32, ptr %35, align 4, !tbaa !9
  %1174 = add i32 %1173, 1
  store i32 %1174, ptr %35, align 4, !tbaa !9
  br label %170, !llvm.loop !24

1175:                                             ; preds = %170
  %1176 = load ptr, ptr %17, align 8, !tbaa !5
  %1177 = load i32, ptr %20, align 4, !tbaa !9
  %1178 = load i32, ptr %21, align 4, !tbaa !9
  %1179 = load i32, ptr %20, align 4, !tbaa !9
  %1180 = load i32, ptr %29, align 4, !tbaa !9
  %1181 = zext i32 %1180 to i64
  %1182 = load i32, ptr %28, align 4, !tbaa !9
  %1183 = zext i32 %1182 to i64
  %1184 = mul nsw i64 %1181, %1183
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1176, i32 noundef 4097, i32 noundef %1177, i32 noundef %1178, i32 noundef %1179, i64 noundef %1184)
  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 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 1, 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 96, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  ret void
}

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

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }
attributes #7 = { 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 = !{!7, !7, i64 0}
!12 = !{!13, !10, i64 120}
!13 = !{!"libxsmm_micro_kernel_config", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !7, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !7, i64 364, !7, i64 380, !7, i64 396, !7, i64 412, !7, i64 428, !7, i64 444, !10, i64 460, !7, i64 464, !14, i64 520, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !6, i64 592, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !6, i64 616, !10, i64 624, !10, i64 628, !10, i64 632, !10, i64 636, !10, i64 640, !10, i64 644, !10, i64 648, !10, i64 652, !10, i64 656, !10, i64 660, !10, i64 664, !10, i64 668, !10, i64 672, !10, i64 676, !10, i64 680}
!14 = !{!"libxsmm_tile_config", !7, i64 0, !15, i64 2, !7, i64 4, !15, i64 6, !7, i64 8, !15, i64 10, !7, i64 12, !15, i64 14, !7, i64 16, !15, i64 18, !7, i64 20, !15, i64 22, !7, i64 24, !15, i64 26, !7, i64 28, !15, i64 30, !7, i64 32}
!15 = !{!"short", !7, i64 0}
!16 = !{!13, !10, i64 124}
!17 = !{!18, !10, i64 90}
!18 = !{!"libxsmm_gemm_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 28, !7, i64 29, !7, i64 32, !19, i64 33, !19, i64 41, !7, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !15, i64 62, !15, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !15, i64 70, !15, i64 72, !15, i64 74, !15, i64 76, !15, i64 78, !15, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !7, i64 94}
!19 = !{!"long long", !7, i64 0}
!20 = !{!18, !10, i64 24}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}


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

@__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_instr_zip = external hidden unnamed_addr constant [2 x i32], align 4
@__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c = external hidden unnamed_addr constant [24 x i32], align 16

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(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 #0

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

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

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

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

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #0

declare i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_store_2dregblock_mmla_aarch64_sve(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12, i32 noundef %13, i32 noundef %14, i8 noundef zeroext %15) local_unnamed_addr #1 {
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = add i32 %11, 1
  %20 = lshr i32 %19, 1
  %.sroa.0.0.copyload = load i32, ptr @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_instr_zip, align 4
  %.sroa.5.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_instr_zip, i64 4), align 4
  %21 = getelementptr inbounds i8, ptr %2, i64 29
  %22 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %21) #3
  %.not435 = icmp eq i32 %22, 2
  %23 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %21) #3
  %24 = icmp eq i32 %23, 1
  br i1 %24, label %25, label %28

25:                                               ; preds = %16
  %26 = tail call i32 @LIBXSMM_GEMM_GETENUM_AB_COMMON_PREC(ptr noundef nonnull %21) #3
  %27 = icmp eq i32 %26, 12
  br label %28

28:                                               ; preds = %25, %16
  %29 = phi i1 [ false, %16 ], [ %27, %25 ]
  %30 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  %31 = udiv i32 %10, %8
  %32 = urem i32 %10, %8
  %33 = icmp ne i32 %32, 0
  %34 = zext i1 %33 to i32
  %35 = mul i32 %31, %8
  %36 = add i32 %35, %32
  %37 = mul i32 %36, %13
  %38 = add i32 %31, %34
  %39 = load i32, ptr @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c, align 16, !tbaa !5
  %40 = add i32 %39, -2
  %41 = add i32 %39, -1
  %42 = add i32 %39, -3
  %43 = add i32 %39, -4
  %44 = getelementptr inbounds i8, ptr %1, i64 120
  %45 = load i32, ptr %44, align 8, !tbaa !9
  %.not = icmp eq i32 %45, 0
  br i1 %.not, label %46, label %49

46:                                               ; preds = %28
  %47 = getelementptr inbounds i8, ptr %1, i64 124
  %48 = load i32, ptr %47, align 4, !tbaa !14
  %.not419 = icmp eq i32 %48, 0
  br i1 %.not419, label %.thread473, label %49

49:                                               ; preds = %28, %46
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 77606915, i32 noundef %43, i32 noundef %43, i8 noundef zeroext 0, i32 noundef %43, i32 noundef 0, i32 noundef %30) #3
  %.pre = load i32, ptr %44, align 8, !tbaa !9
  %50 = icmp eq i32 %.pre, 0
  br i1 %50, label %.thread473, label %51

51:                                               ; preds = %49
  tail call void @libxsmm_generator_gemm_getval_stack_var_aarch64(ptr noundef %0, i32 noundef 8, i32 noundef %6) #3
  br label %.thread473

.thread473:                                       ; preds = %46, %51, %49
  br i1 %29, label %52, label %53

52:                                               ; preds = %.thread473
  tail call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -2059353978, i32 noundef %7, i32 noundef 0, i32 noundef 0, i32 noundef %42, i32 noundef 0) #3
  br label %53

53:                                               ; preds = %52, %.thread473
  %.not466 = icmp ult i32 %19, 2
  %.pre472 = zext i32 %12 to i64
  br i1 %.not466, label %._crit_edge465, label %.lr.ph464

.lr.ph464:                                        ; preds = %53
  %54 = getelementptr inbounds i8, ptr %2, i64 90
  %.not467 = icmp ugt i32 %8, %10
  %55 = trunc i32 %42 to i8
  %56 = trunc i32 %6 to i8
  %57 = trunc i32 %5 to i8
  %58 = getelementptr inbounds i8, ptr %1, i64 124
  %59 = getelementptr inbounds i8, ptr %2, i64 24
  %60 = mul i32 %13, %8
  %61 = and i32 %11, 1
  %.not436 = icmp ne i32 %61, 0
  %62 = add nsw i32 %20, -1
  %63 = trunc i32 %7 to i8
  %64 = icmp ult i32 %31, %38
  %65 = mul i32 %32, %13
  %66 = shl nuw nsw i64 %.pre472, 1
  %67 = zext i32 %37 to i64
  %68 = sub nsw i64 %66, %67
  %69 = sub nsw i64 %.pre472, %67
  %70 = zext i32 %31 to i64
  br label %71

71:                                               ; preds = %.lr.ph464, %189
  %.0462 = phi i32 [ 0, %.lr.ph464 ], [ %190, %189 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #3
  store i32 0, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #3
  store i32 0, ptr %18, align 4, !tbaa !5
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %3, i32 noundef %4, i32 noundef %4, i64 noundef %.pre472) #3
  %72 = load i32, ptr %44, align 8, !tbaa !9
  %.not421 = icmp eq i32 %72, 0
  br i1 %.not421, label %77, label %73

73:                                               ; preds = %71
  %74 = load i32, ptr %54, align 1, !tbaa !15
  %75 = lshr i32 %74, 3
  %76 = zext nneg i32 %75 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %6, i32 noundef %7, i32 noundef %7, i64 noundef %76) #3
  br label %77

77:                                               ; preds = %73, %71
  br i1 %.not467, label %.preheader, label %.lr.ph

.lr.ph:                                           ; preds = %77
  %78 = shl i32 %.0462, 3
  %79 = icmp eq i32 %.0462, %62
  %or.cond = select i1 %.not436, i1 %79, i1 false
  br label %82

.preheader:                                       ; preds = %127, %77
  br i1 %64, label %.lr.ph461, label %._crit_edge

.lr.ph461:                                        ; preds = %.preheader
  %80 = shl i32 %.0462, 3
  %81 = icmp eq i32 %.0462, %62
  %or.cond442 = select i1 %.not436, i1 %81, i1 false
  br label %129

82:                                               ; preds = %.lr.ph, %127
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %127 ]
  %83 = trunc nuw i64 %indvars.iv to i32
  %84 = shl i32 %83, 1
  %85 = add i32 %84, %78
  %86 = zext i32 %85 to i64
  %87 = getelementptr inbounds [24 x i32], ptr @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c, i64 0, i64 %86
  %88 = load i32, ptr %87, align 8, !tbaa !5
  %89 = or disjoint i32 %85, 1
  %90 = zext i32 %89 to i64
  %91 = getelementptr inbounds [24 x i32], ptr @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c, i64 0, i64 %90
  %92 = load i32, ptr %91, align 4, !tbaa !5
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.sroa.0.0.copyload, i32 noundef %88, i32 noundef %92, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 127, i32 noundef 3) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.sroa.5.0.copyload, i32 noundef %88, i32 noundef %92, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 127, i32 noundef 3) #3
  %93 = load i32, ptr %44, align 8, !tbaa !9
  %.not432 = icmp eq i32 %93, 0
  br i1 %.not432, label %.thread, label %94

94:                                               ; preds = %82
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1695555730, i32 noundef %40, i32 noundef 127, i8 noundef zeroext 0, i32 noundef 6, i32 noundef 0, i32 noundef %30) #3
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %0, i32 noundef %10, i32 noundef %83, i32 noundef %38, i8 noundef zeroext %55, i8 noundef zeroext %56, i8 noundef zeroext 6, i8 noundef zeroext 5, i8 noundef zeroext 4, i8 noundef zeroext %57, ptr noundef nonnull %17) #3
  %.pr = load i32, ptr %44, align 8, !tbaa !9
  %.not433 = icmp eq i32 %.pr, 0
  br i1 %.not433, label %.thread, label %96

.thread:                                          ; preds = %82, %94
  %95 = load i32, ptr %58, align 4, !tbaa !14
  %.not434 = icmp eq i32 %95, 0
  br i1 %.not434, label %97, label %96

96:                                               ; preds = %.thread, %94
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694924962, i32 noundef %40, i32 noundef %43, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 0, i32 noundef %30) #3
  br label %97

97:                                               ; preds = %96, %.thread
  br i1 %.not435, label %108, label %98

98:                                               ; preds = %97
  br i1 %29, label %99, label %107

99:                                               ; preds = %98
  %100 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1704239234, i32 noundef %40, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 0, i32 noundef %100) #3
  %101 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694500867, i32 noundef %40, i32 noundef %42, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 0, i32 noundef %101) #3
  %102 = load i32, ptr %59, align 1, !tbaa !18
  %103 = and i32 %102, 4
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %105, label %107

105:                                              ; preds = %99
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -2055192570, i32 noundef %3, i32 noundef 127, i32 noundef 0, i32 noundef %43, i32 noundef 127) #3
  %106 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694498819, i32 noundef %43, i32 noundef %40, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 0, i32 noundef %106) #3
  br label %107

107:                                              ; preds = %99, %105, %98
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -444579834, i32 noundef %3, i32 noundef 127, i32 noundef 0, i32 noundef %40, i32 noundef 127) #3
  br label %109

108:                                              ; preds = %97
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %0, i32 noundef %40, i32 noundef 0)
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -459218810, i32 noundef %3, i32 noundef 127, i32 noundef 0, i32 noundef %40, i32 noundef 2) #3
  br label %109

109:                                              ; preds = %108, %107
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef %3, i32 noundef %3, i32 noundef %60, i8 noundef zeroext 0) #3
  br i1 %or.cond, label %127, label %110

110:                                              ; preds = %109
  %111 = load i32, ptr %44, align 8, !tbaa !9
  %.not437 = icmp eq i32 %111, 0
  br i1 %.not437, label %.thread447, label %112

112:                                              ; preds = %110
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1695555730, i32 noundef %41, i32 noundef 127, i8 noundef zeroext 0, i32 noundef 6, i32 noundef 0, i32 noundef %30) #3
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %0, i32 noundef %10, i32 noundef %83, i32 noundef %38, i8 noundef zeroext %55, i8 noundef zeroext %63, i8 noundef zeroext 6, i8 noundef zeroext 7, i8 noundef zeroext 3, i8 noundef zeroext %57, ptr noundef nonnull %18) #3
  %.pr446 = load i32, ptr %44, align 8, !tbaa !9
  %.not438 = icmp eq i32 %.pr446, 0
  br i1 %.not438, label %.thread447, label %114

.thread447:                                       ; preds = %110, %112
  %113 = load i32, ptr %58, align 4, !tbaa !14
  %.not439 = icmp eq i32 %113, 0
  br i1 %.not439, label %115, label %114

114:                                              ; preds = %.thread447, %112
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694924962, i32 noundef %41, i32 noundef %43, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 0, i32 noundef %30) #3
  br label %115

115:                                              ; preds = %114, %.thread447
  br i1 %.not435, label %126, label %116

116:                                              ; preds = %115
  br i1 %29, label %117, label %125

117:                                              ; preds = %116
  %118 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1704239234, i32 noundef %41, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 0, i32 noundef %118) #3
  %119 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694500867, i32 noundef %41, i32 noundef %42, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 0, i32 noundef %119) #3
  %120 = load i32, ptr %59, align 1, !tbaa !18
  %121 = and i32 %120, 4
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %123, label %125

123:                                              ; preds = %117
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -2055192570, i32 noundef %4, i32 noundef 127, i32 noundef 0, i32 noundef %43, i32 noundef 127) #3
  %124 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694498819, i32 noundef %43, i32 noundef %41, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 0, i32 noundef %124) #3
  br label %125

125:                                              ; preds = %117, %123, %116
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -444579834, i32 noundef %4, i32 noundef 127, i32 noundef 0, i32 noundef %41, i32 noundef 127) #3
  br label %127

126:                                              ; preds = %115
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %0, i32 noundef %41, i32 noundef 0)
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -459218810, i32 noundef %4, i32 noundef 127, i32 noundef 0, i32 noundef %41, i32 noundef 2) #3
  br label %127

127:                                              ; preds = %109, %125, %126
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef %4, i32 noundef %4, i32 noundef %60, i8 noundef zeroext 0) #3
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %128 = icmp ult i64 %indvars.iv.next, %70
  br i1 %128, label %82, label %.preheader, !llvm.loop !19

129:                                              ; preds = %.lr.ph461, %172
  %indvars.iv469 = phi i64 [ %70, %.lr.ph461 ], [ %indvars.iv.next470, %172 ]
  %130 = trunc nuw i64 %indvars.iv469 to i32
  %131 = shl i32 %130, 1
  %132 = add i32 %131, %80
  %133 = zext i32 %132 to i64
  %134 = getelementptr inbounds [24 x i32], ptr @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c, i64 0, i64 %133
  %135 = load i32, ptr %134, align 8, !tbaa !5
  %136 = or disjoint i32 %132, 1
  %137 = zext i32 %136 to i64
  %138 = getelementptr inbounds [24 x i32], ptr @__const.libxsmm_generator_store_2dregblock_mmla_aarch64_sve.l_vr_c, i64 0, i64 %137
  %139 = load i32, ptr %138, align 4, !tbaa !5
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.sroa.0.0.copyload, i32 noundef %135, i32 noundef %139, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 127, i32 noundef 3) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.sroa.5.0.copyload, i32 noundef %135, i32 noundef %139, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 127, i32 noundef 3) #3
  %140 = load i32, ptr %44, align 8, !tbaa !9
  %.not425 = icmp eq i32 %140, 0
  br i1 %.not425, label %.thread450, label %141

141:                                              ; preds = %129
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1695555730, i32 noundef %40, i32 noundef 127, i8 noundef zeroext 0, i32 noundef 6, i32 noundef 0, i32 noundef %30) #3
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %0, i32 noundef %10, i32 noundef %130, i32 noundef %38, i8 noundef zeroext %55, i8 noundef zeroext %56, i8 noundef zeroext 6, i8 noundef zeroext 5, i8 noundef zeroext 4, i8 noundef zeroext %57, ptr noundef nonnull %17) #3
  %.pr449 = load i32, ptr %44, align 8, !tbaa !9
  %.not426 = icmp eq i32 %.pr449, 0
  br i1 %.not426, label %.thread450, label %143

.thread450:                                       ; preds = %129, %141
  %142 = load i32, ptr %58, align 4, !tbaa !14
  %.not427 = icmp eq i32 %142, 0
  br i1 %.not427, label %144, label %143

143:                                              ; preds = %.thread450, %141
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694924962, i32 noundef %40, i32 noundef %43, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 0, i32 noundef %30) #3
  br label %144

144:                                              ; preds = %143, %.thread450
  br i1 %.not435, label %154, label %145

145:                                              ; preds = %144
  br i1 %29, label %146, label %155

146:                                              ; preds = %145
  %147 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1704239234, i32 noundef %40, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 1, i32 noundef %147) #3
  %148 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694500867, i32 noundef %40, i32 noundef %42, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 0, i32 noundef %148) #3
  %149 = load i32, ptr %59, align 1, !tbaa !18
  %150 = and i32 %149, 4
  %151 = icmp eq i32 %150, 0
  br i1 %151, label %152, label %155

152:                                              ; preds = %146
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -1522491258, i32 noundef %3, i32 noundef 127, i32 noundef 0, i32 noundef %43, i32 noundef 1) #3
  %153 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694498819, i32 noundef %43, i32 noundef %40, i8 noundef zeroext 0, i32 noundef %40, i32 noundef 0, i32 noundef %153) #3
  br label %155

154:                                              ; preds = %144
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %0, i32 noundef %40, i32 noundef 0)
  br label %155

155:                                              ; preds = %145, %152, %146, %154
  %.sink = phi i32 [ -459218810, %154 ], [ -448733050, %146 ], [ -448733050, %152 ], [ -448733050, %145 ]
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef %.sink, i32 noundef %3, i32 noundef 127, i32 noundef 0, i32 noundef %40, i32 noundef 1) #3
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef %3, i32 noundef %3, i32 noundef %65, i8 noundef zeroext 0) #3
  br i1 %or.cond442, label %172, label %156

156:                                              ; preds = %155
  %157 = load i32, ptr %44, align 8, !tbaa !9
  %.not429 = icmp eq i32 %157, 0
  br i1 %.not429, label %.thread453, label %158

158:                                              ; preds = %156
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1695555730, i32 noundef %41, i32 noundef 127, i8 noundef zeroext 0, i32 noundef 6, i32 noundef 0, i32 noundef %30) #3
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %0, i32 noundef %10, i32 noundef %130, i32 noundef %38, i8 noundef zeroext %55, i8 noundef zeroext %63, i8 noundef zeroext 6, i8 noundef zeroext 7, i8 noundef zeroext 3, i8 noundef zeroext %57, ptr noundef nonnull %18) #3
  %.pr452 = load i32, ptr %44, align 8, !tbaa !9
  %.not430 = icmp eq i32 %.pr452, 0
  br i1 %.not430, label %.thread453, label %160

.thread453:                                       ; preds = %156, %158
  %159 = load i32, ptr %58, align 4, !tbaa !14
  %.not431 = icmp eq i32 %159, 0
  br i1 %.not431, label %161, label %160

160:                                              ; preds = %.thread453, %158
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694924962, i32 noundef %41, i32 noundef %43, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 0, i32 noundef %30) #3
  br label %161

161:                                              ; preds = %160, %.thread453
  br i1 %.not435, label %171, label %162

162:                                              ; preds = %161
  br i1 %29, label %163, label %.sink.split

163:                                              ; preds = %162
  %164 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1704239234, i32 noundef %41, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 1, i32 noundef %164) #3
  %165 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694500867, i32 noundef %41, i32 noundef %42, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 0, i32 noundef %165) #3
  %166 = load i32, ptr %59, align 1, !tbaa !18
  %167 = and i32 %166, 4
  %168 = icmp eq i32 %167, 0
  br i1 %168, label %169, label %.sink.split

169:                                              ; preds = %163
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef -1522491258, i32 noundef %4, i32 noundef 127, i32 noundef 0, i32 noundef %43, i32 noundef 1) #3
  %170 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694498819, i32 noundef %43, i32 noundef %41, i8 noundef zeroext 0, i32 noundef %41, i32 noundef 0, i32 noundef %170) #3
  br label %.sink.split

171:                                              ; preds = %161
  call void @libxsmm_generator_vcvt_f32bf16_aarch64_sve(ptr noundef %0, i32 noundef %41, i32 noundef 0)
  br label %.sink.split

.sink.split:                                      ; preds = %162, %169, %163, %171
  %.sink475 = phi i32 [ -459218810, %171 ], [ -448733050, %163 ], [ -448733050, %169 ], [ -448733050, %162 ]
  call void @libxsmm_aarch64_instruction_sve_move(ptr noundef %0, i32 noundef %.sink475, i32 noundef %4, i32 noundef 127, i32 noundef 0, i32 noundef %41, i32 noundef 1) #3
  br label %172

172:                                              ; preds = %.sink.split, %155
  call void @libxsmm_aarch64_instruction_alu_compute_imm12(ptr noundef %0, i32 noundef 285212678, i32 noundef %4, i32 noundef %4, i32 noundef %65, i8 noundef zeroext 0) #3
  %indvars.iv.next470 = add nuw nsw i64 %indvars.iv469, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next470 to i32
  %exitcond.not = icmp eq i32 %38, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge, label %129, !llvm.loop !21

._crit_edge:                                      ; preds = %172, %.preheader
  %173 = icmp eq i32 %.0462, %62
  %or.cond444 = select i1 %.not436, i1 %173, i1 false
  br i1 %or.cond444, label %174, label %179

174:                                              ; preds = %._crit_edge
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %3, i32 noundef %4, i32 noundef %3, i64 noundef %69) #3
  %175 = load i32, ptr %44, align 8, !tbaa !9
  %.not424 = icmp eq i32 %175, 0
  br i1 %.not424, label %189, label %176

176:                                              ; preds = %174
  %177 = load i32, ptr %54, align 1, !tbaa !15
  %178 = zext i32 %177 to i64
  br label %.sink.split476

179:                                              ; preds = %._crit_edge
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %3, i32 noundef %4, i32 noundef %3, i64 noundef %68) #3
  %180 = load i32, ptr %44, align 8, !tbaa !9
  %.not423 = icmp eq i32 %180, 0
  br i1 %.not423, label %189, label %181

181:                                              ; preds = %179
  %182 = load i32, ptr %54, align 1, !tbaa !15
  %183 = zext i32 %182 to i64
  %184 = shl nuw nsw i64 %183, 1
  br label %.sink.split476

.sink.split476:                                   ; preds = %176, %181
  %.sink479 = phi i64 [ %184, %181 ], [ %178, %176 ]
  %.sink482 = load i32, ptr %17, align 4, !tbaa !5
  %185 = zext i32 %.sink482 to i64
  %186 = shl nuw nsw i64 %185, 3
  %187 = sub nsw i64 %.sink479, %186
  %188 = lshr i64 %187, 3
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %6, i32 noundef %5, i32 noundef %6, i64 noundef %188) #3
  br label %189

189:                                              ; preds = %.sink.split476, %179, %174
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #3
  %190 = add nuw nsw i32 %.0462, 1
  %exitcond471.not = icmp eq i32 %190, %20
  br i1 %exitcond471.not, label %._crit_edge465, label %71, !llvm.loop !22

._crit_edge465:                                   ; preds = %189, %53
  %191 = zext i32 %11 to i64
  %192 = mul nuw nsw i64 %.pre472, %191
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %3, i32 noundef %4, i32 noundef %3, i64 noundef %192) #3
  ret void
}

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

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 120}
!10 = !{!"libxsmm_micro_kernel_config", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !7, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224, !6, i64 228, !6, i64 232, !6, i64 236, !6, i64 240, !6, i64 244, !6, i64 248, !6, i64 252, !6, i64 256, !6, i64 260, !6, i64 264, !6, i64 268, !6, i64 272, !6, i64 276, !6, i64 280, !6, i64 284, !6, i64 288, !6, i64 292, !6, i64 296, !6, i64 300, !6, i64 304, !6, i64 308, !6, i64 312, !6, i64 316, !6, i64 320, !6, i64 324, !6, i64 328, !6, i64 332, !6, i64 336, !6, i64 340, !6, i64 344, !6, i64 348, !6, i64 352, !6, i64 356, !6, i64 360, !7, i64 364, !7, i64 380, !7, i64 396, !7, i64 412, !7, i64 428, !7, i64 444, !6, i64 460, !7, i64 464, !11, i64 520, !6, i64 556, !6, i64 560, !6, i64 564, !6, i64 568, !6, i64 572, !6, i64 576, !6, i64 580, !6, i64 584, !13, i64 592, !6, i64 600, !6, i64 604, !6, i64 608, !6, i64 612, !13, i64 616, !6, i64 624, !6, i64 628, !6, i64 632, !6, i64 636, !6, i64 640, !6, i64 644, !6, i64 648, !6, i64 652, !6, i64 656, !6, i64 660, !6, i64 664, !6, i64 668, !6, i64 672, !6, i64 676, !6, i64 680}
!11 = !{!"libxsmm_tile_config", !7, i64 0, !12, i64 2, !7, i64 4, !12, i64 6, !7, i64 8, !12, i64 10, !7, i64 12, !12, i64 14, !7, i64 16, !12, i64 18, !7, i64 20, !12, i64 22, !7, i64 24, !12, i64 26, !7, i64 28, !12, i64 30, !7, i64 32}
!12 = !{!"short", !7, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!10, !6, i64 124}
!15 = !{!16, !6, i64 90}
!16 = !{!"libxsmm_gemm_descriptor", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !7, i64 28, !7, i64 29, !7, i64 32, !17, i64 33, !17, i64 41, !7, i64 49, !6, i64 50, !6, i64 54, !6, i64 58, !12, i64 62, !12, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !12, i64 70, !12, i64 72, !12, i64 74, !12, i64 76, !12, i64 78, !12, i64 80, !6, i64 82, !6, i64 86, !6, i64 90, !7, i64 94}
!17 = !{!"long long", !7, i64 0}
!18 = !{!16, !6, i64 24}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}


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