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

; 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_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_loop_label_tracker_struct = type { [512 x i32], i32 }
%struct.libxsmm_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%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_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_aarch64_kernel_sme_het_blocking(ptr noundef %0, ptr noundef %1) #0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %6 = alloca %struct.libxsmm_loop_label_tracker_struct, align 4
  %7 = alloca %struct.libxsmm_gp_reg_mapping_struct, align 4
  %8 = alloca ptr, align 8
  %9 = alloca %struct.libxsmm_gemm_descriptor, align 1
  %10 = alloca [2 x i32], align 4
  %11 = alloca [2 x i32], align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 688, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 2052, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 132, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 95, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.memset.p0.i64(ptr align 4 %10, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.memset.p0.i64(ptr align 4 %11, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 64, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 0, ptr %20, align 4, !tbaa !9
  %24 = load ptr, ptr %4, align 8, !tbaa !5
  %25 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 0
  %26 = getelementptr inbounds [2 x i32], ptr %11, i64 0, i64 0
  call void @libxsmm_generator_gemm_aarch64_setup_blocking_sme(ptr noundef %24, ptr noundef %25, ptr noundef %26)
  %27 = load ptr, ptr %3, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %27, i32 0, i32 6
  %29 = load i32, ptr %28, align 4, !tbaa !11
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_init_micro_kernel_config_aarch64(ptr noundef %5, i32 noundef %29, ptr noundef %30)
  call void @libxsmm_reset_aarch64_gp_reg_mapping(ptr noundef %7)
  %31 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 0
  store i32 32, ptr %31, align 4, !tbaa !13
  %32 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  store i32 32, ptr %32, align 4, !tbaa !15
  %33 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  store i32 33, ptr %33, align 4, !tbaa !16
  %34 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  store i32 34, ptr %34, align 4, !tbaa !17
  %35 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  store i32 35, ptr %35, align 4, !tbaa !18
  %36 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 7
  store i32 36, ptr %36, align 4, !tbaa !19
  %37 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 9
  store i32 37, ptr %37, align 4, !tbaa !20
  %38 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  store i32 38, ptr %38, align 4, !tbaa !21
  %39 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 11
  store i32 39, ptr %39, align 4, !tbaa !22
  %40 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 12
  store i32 40, ptr %40, align 4, !tbaa !23
  %41 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  store i32 41, ptr %41, align 4, !tbaa !24
  %42 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  store i32 42, ptr %42, align 4, !tbaa !25
  %43 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  store i32 43, ptr %43, align 4, !tbaa !26
  %44 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 20
  store i32 45, ptr %44, align 4, !tbaa !27
  %45 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  store i32 49, ptr %45, align 4, !tbaa !28
  call void @libxsmm_reset_loop_label_tracker(ptr noundef %6)
  %46 = load ptr, ptr %3, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_open_stream(ptr noundef %46, i16 noundef zeroext 3599)
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %9, ptr align 1 %47, i64 95, i1 false), !tbaa.struct !29
  store ptr %9, ptr %8, align 8, !tbaa !5
  %48 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 1
  %49 = load i32, ptr %48, align 4, !tbaa !9
  %50 = icmp ugt i32 %49, 0
  br i1 %50, label %51, label %59

51:                                               ; preds = %2
  %52 = load ptr, ptr %8, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %52, i32 0, i32 0
  %54 = load i32, ptr %53, align 1, !tbaa !35
  %55 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 0
  %56 = load i32, ptr %55, align 4, !tbaa !9
  %57 = mul i32 %56, 32
  %58 = sub i32 %54, %57
  store i32 %58, ptr %12, align 4, !tbaa !9
  br label %59

59:                                               ; preds = %51, %2
  %60 = getelementptr inbounds [2 x i32], ptr %11, i64 0, i64 1
  %61 = load i32, ptr %60, align 4, !tbaa !9
  %62 = icmp ugt i32 %61, 0
  br i1 %62, label %63, label %71

63:                                               ; preds = %59
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %64, i32 0, i32 1
  %66 = load i32, ptr %65, align 1, !tbaa !37
  %67 = getelementptr inbounds [2 x i32], ptr %11, i64 0, i64 0
  %68 = load i32, ptr %67, align 4, !tbaa !9
  %69 = mul i32 %68, 64
  %70 = sub i32 %66, %69
  store i32 %70, ptr %13, align 4, !tbaa !9
  br label %71

71:                                               ; preds = %63, %59
  %72 = load ptr, ptr %8, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %72, i32 0, i32 6
  %74 = load i32, ptr %73, align 1, !tbaa !38
  %75 = and i32 16384, %74
  %76 = icmp eq i32 %75, 16384
  br i1 %76, label %83, label %77

77:                                               ; preds = %71
  %78 = load ptr, ptr %8, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %78, i32 0, i32 6
  %80 = load i32, ptr %79, align 1, !tbaa !38
  %81 = and i32 32768, %80
  %82 = icmp eq i32 %81, 32768
  br i1 %82, label %83, label %109

83:                                               ; preds = %77, %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 32, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  store i32 80, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store i32 128, ptr %23, align 4, !tbaa !9
  %84 = load ptr, ptr %3, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 0
  %86 = load i32, ptr %85, align 4, !tbaa !13
  %87 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 0
  %88 = load i32, ptr %87, align 4, !tbaa !13
  %89 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %90 = load i32, ptr %89, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %84, i32 noundef 167772167, i32 noundef %86, i32 noundef %88, i32 noundef %90, i32 noundef 0, i32 noundef 0)
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %93 = load i32, ptr %92, align 4, !tbaa !25
  %94 = load i32, ptr %21, align 4, !tbaa !9
  %95 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %96 = load i32, ptr %95, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %91, i32 noundef -1186988026, i32 noundef %93, i32 noundef 127, i32 noundef %94, i32 noundef %96)
  %97 = load ptr, ptr %3, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %99 = load i32, ptr %98, align 4, !tbaa !25
  %100 = load i32, ptr %22, align 4, !tbaa !9
  %101 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %102 = load i32, ptr %101, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %97, i32 noundef -1186988026, i32 noundef %99, i32 noundef 127, i32 noundef %100, i32 noundef %102)
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %105 = load i32, ptr %104, align 4, !tbaa !25
  %106 = load i32, ptr %23, align 4, !tbaa !9
  %107 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %108 = load i32, ptr %107, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %103, i32 noundef -1186988026, i32 noundef %105, i32 noundef 127, i32 noundef %106, i32 noundef %108)
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %109

109:                                              ; preds = %83, %77
  %110 = load ptr, ptr %3, align 8, !tbaa !5
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_setup_stack_frame_aarch64(ptr noundef %110, ptr noundef %111, ptr noundef %7, ptr noundef %5)
  %112 = load ptr, ptr %3, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_sm(ptr noundef %112, i32 noundef -721205377)
  call void @libxsmm_reset_loop_label_tracker(ptr noundef %6)
  %113 = getelementptr inbounds [2 x i32], ptr %11, i64 0, i64 0
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = icmp ugt i32 %114, 0
  br i1 %115, label %116, label %789

116:                                              ; preds = %109
  %117 = load ptr, ptr %3, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 11
  %119 = load i32, ptr %118, align 4, !tbaa !22
  %120 = getelementptr inbounds [2 x i32], ptr %11, i64 0, i64 0
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = mul i32 %121, 64
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %117, ptr noundef %6, i32 noundef %119, i32 noundef %122)
  %123 = load ptr, ptr %8, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %123, i32 0, i32 6
  %125 = load i32, ptr %124, align 1, !tbaa !38
  %126 = and i32 %125, 2
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %225

128:                                              ; preds = %116
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %131 = load i32, ptr %130, align 4, !tbaa !25
  %132 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %133 = load i32, ptr %132, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %129, i32 noundef 4096, i32 noundef 63, i32 noundef %131, i32 noundef %133, i64 noundef 0)
  %134 = load ptr, ptr %3, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %136 = load i32, ptr %135, align 4, !tbaa !25
  %137 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %138 = load i32, ptr %137, align 4, !tbaa !39
  %139 = mul i32 64, %138
  %140 = load ptr, ptr %8, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %140, i32 0, i32 2
  %142 = load i32, ptr %141, align 1, !tbaa !42
  %143 = mul i32 %139, %142
  %144 = zext i32 %143 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %134, i32 noundef 4097, i32 noundef 63, i32 noundef %136, i32 noundef 63, i64 noundef %144)
  %145 = load ptr, ptr %3, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %147 = load i32, ptr %146, align 4, !tbaa !25
  %148 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %149 = load i32, ptr %148, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %145, i32 noundef 4096, i32 noundef 63, i32 noundef %147, i32 noundef %149, i64 noundef 0)
  %150 = load ptr, ptr %3, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %152 = load i32, ptr %151, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %150, i32 noundef 4096, i32 noundef 63, i32 noundef %152, i32 noundef 58, i64 noundef 0)
  %153 = load ptr, ptr %8, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %153, i32 0, i32 2
  %155 = load i32, ptr %154, align 1, !tbaa !42
  %156 = udiv i32 %155, 16
  store i32 %156, ptr %15, align 4, !tbaa !9
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %157, i32 0, i32 2
  %159 = load i32, ptr %158, align 1, !tbaa !42
  %160 = urem i32 %159, 16
  store i32 %160, ptr %16, align 4, !tbaa !9
  %161 = load i32, ptr %15, align 4, !tbaa !9
  %162 = icmp ugt i32 %161, 0
  br i1 %162, label %163, label %190

163:                                              ; preds = %128
  %164 = load ptr, ptr %3, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %166 = load i32, ptr %165, align 4, !tbaa !26
  %167 = load i32, ptr %15, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %164, ptr noundef %6, i32 noundef %166, i32 noundef %167)
  %168 = load ptr, ptr %3, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %170 = load i32, ptr %169, align 4, !tbaa !16
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %171, i32 0, i32 4
  %173 = load i32, ptr %172, align 1, !tbaa !43
  %174 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %175 = load i32, ptr %174, align 4, !tbaa !24
  call void @libxsmm_generator_sme_transpose_64(ptr noundef %168, i32 noundef %170, i32 noundef %173, i32 noundef 0, i32 noundef 64, i32 noundef %175)
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %178 = load i32, ptr %177, align 4, !tbaa !16
  %179 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %180 = load i32, ptr %179, align 4, !tbaa !24
  %181 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %182 = load i32, ptr %181, align 4, !tbaa !16
  %183 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %184 = load i32, ptr %183, align 4, !tbaa !39
  %185 = zext i32 %184 to i64
  %186 = mul nsw i64 16, %185
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %176, i32 noundef 4096, i32 noundef %178, i32 noundef %180, i32 noundef %182, i64 noundef %186)
  %187 = load ptr, ptr %3, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %189 = load i32, ptr %188, align 4, !tbaa !26
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %187, ptr noundef %6, i32 noundef %189, i32 noundef 1)
  br label %190

190:                                              ; preds = %163, %128
  %191 = load i32, ptr %16, align 4, !tbaa !9
  %192 = icmp ugt i32 %191, 0
  br i1 %192, label %193, label %203

193:                                              ; preds = %190
  %194 = load ptr, ptr %3, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %196 = load i32, ptr %195, align 4, !tbaa !16
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %197, i32 0, i32 4
  %199 = load i32, ptr %198, align 1, !tbaa !43
  %200 = load i32, ptr %16, align 4, !tbaa !9
  %201 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %202 = load i32, ptr %201, align 4, !tbaa !24
  call void @libxsmm_generator_sme_transpose_64(ptr noundef %194, i32 noundef %196, i32 noundef %199, i32 noundef %200, i32 noundef 64, i32 noundef %202)
  br label %203

203:                                              ; preds = %193, %190
  %204 = load ptr, ptr %3, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %206 = load i32, ptr %205, align 4, !tbaa !25
  %207 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %208 = load i32, ptr %207, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %204, i32 noundef 4096, i32 noundef %206, i32 noundef %208, i32 noundef 63, i64 noundef 0)
  %209 = load ptr, ptr %3, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %211 = load i32, ptr %210, align 4, !tbaa !16
  %212 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %213 = load i32, ptr %212, align 4, !tbaa !24
  %214 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %215 = load i32, ptr %214, align 4, !tbaa !16
  %216 = load ptr, ptr %8, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %216, i32 0, i32 2
  %218 = load i32, ptr %217, align 1, !tbaa !42
  %219 = load i32, ptr %16, align 4, !tbaa !9
  %220 = sub i32 %218, %219
  %221 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %222 = load i32, ptr %221, align 4, !tbaa !39
  %223 = mul i32 %220, %222
  %224 = zext i32 %223 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %209, i32 noundef 4097, i32 noundef %211, i32 noundef %213, i32 noundef %215, i64 noundef %224)
  br label %231

225:                                              ; preds = %116
  %226 = load ptr, ptr %3, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %228 = load i32, ptr %227, align 4, !tbaa !16
  %229 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %230 = load i32, ptr %229, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %226, i32 noundef 4096, i32 noundef %228, i32 noundef %230, i32 noundef 58, i64 noundef 0)
  br label %231

231:                                              ; preds = %225, %203
  %232 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 0
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = icmp ugt i32 %233, 0
  br i1 %234, label %235, label %457

235:                                              ; preds = %231
  %236 = load ptr, ptr %3, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %238 = load i32, ptr %237, align 4, !tbaa !21
  %239 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 0
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = mul i32 %240, 32
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %236, ptr noundef %6, i32 noundef %238, i32 noundef %241)
  %242 = load ptr, ptr %3, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %244 = load i32, ptr %243, align 4, !tbaa !17
  %245 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %246 = load i32, ptr %245, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %242, i32 noundef 704643079, i32 noundef 63, i32 noundef %244, i32 noundef %246, i32 noundef 0, i32 noundef 0)
  %247 = load ptr, ptr %3, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %249 = load i32, ptr %248, align 4, !tbaa !17
  %250 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %251 = load i32, ptr %250, align 4, !tbaa !24
  %252 = load ptr, ptr %8, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %252, i32 0, i32 5
  %254 = load i32, ptr %253, align 1, !tbaa !44
  %255 = zext i32 %254 to i64
  %256 = mul nsw i64 %255, 16
  %257 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %258 = load i32, ptr %257, align 4, !tbaa !45
  %259 = zext i32 %258 to i64
  %260 = mul nsw i64 %256, %259
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %247, i32 noundef 4096, i32 noundef %249, i32 noundef 43, i32 noundef %251, i64 noundef %260)
  %261 = load ptr, ptr %3, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %263 = load i32, ptr %262, align 4, !tbaa !17
  %264 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %265 = load i32, ptr %264, align 4, !tbaa !24
  %266 = load ptr, ptr %8, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %266, i32 0, i32 5
  %268 = load i32, ptr %267, align 1, !tbaa !44
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef %261, i32 noundef %263, i32 noundef %265, i32 noundef 32, i32 noundef 32, i32 noundef %268)
  %269 = load ptr, ptr %3, align 8, !tbaa !5
  %270 = load ptr, ptr %8, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %269, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %270, i32 noundef 32, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %271 = load ptr, ptr %3, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %273 = load i32, ptr %272, align 4, !tbaa !28
  %274 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %275 = load i32, ptr %274, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %271, i32 noundef 704643079, i32 noundef 63, i32 noundef %273, i32 noundef %275, i32 noundef 0, i32 noundef 0)
  %276 = load ptr, ptr %3, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %278 = load i32, ptr %277, align 4, !tbaa !17
  %279 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %280 = load i32, ptr %279, align 4, !tbaa !24
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %281, i32 0, i32 5
  %283 = load i32, ptr %282, align 1, !tbaa !44
  %284 = zext i32 %283 to i64
  %285 = mul nsw i64 %284, 16
  %286 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %287 = load i32, ptr %286, align 4, !tbaa !45
  %288 = zext i32 %287 to i64
  %289 = mul nsw i64 %285, %288
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %276, i32 noundef 4096, i32 noundef %278, i32 noundef 43, i32 noundef %280, i64 noundef %289)
  %290 = load ptr, ptr %3, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %292 = load i32, ptr %291, align 4, !tbaa !17
  %293 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %294 = load i32, ptr %293, align 4, !tbaa !24
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %295, i32 0, i32 5
  %297 = load i32, ptr %296, align 1, !tbaa !44
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef %290, i32 noundef %292, i32 noundef %294, i32 noundef 32, i32 noundef 32, i32 noundef %297, i32 noundef 1)
  %298 = load ptr, ptr %3, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %300 = load i32, ptr %299, align 4, !tbaa !28
  %301 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %302 = load i32, ptr %301, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %298, i32 noundef 704643079, i32 noundef 63, i32 noundef %300, i32 noundef %302, i32 noundef 0, i32 noundef 0)
  %303 = load ptr, ptr %3, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %305 = load i32, ptr %304, align 4, !tbaa !17
  %306 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %307 = load i32, ptr %306, align 4, !tbaa !26
  %308 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %309 = load i32, ptr %308, align 4, !tbaa !17
  %310 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %311 = load i32, ptr %310, align 4, !tbaa !39
  %312 = zext i32 %311 to i64
  %313 = mul nsw i64 32, %312
  %314 = load ptr, ptr %8, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %314, i32 0, i32 5
  %316 = load i32, ptr %315, align 1, !tbaa !44
  %317 = zext i32 %316 to i64
  %318 = mul nsw i64 %313, %317
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %303, i32 noundef 4096, i32 noundef %305, i32 noundef %307, i32 noundef %309, i64 noundef %318)
  %319 = load ptr, ptr %8, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %319, i32 0, i32 6
  %321 = load i32, ptr %320, align 1, !tbaa !38
  %322 = and i32 %321, 2
  %323 = icmp ugt i32 %322, 0
  br i1 %323, label %324, label %336

324:                                              ; preds = %235
  %325 = load ptr, ptr %3, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %327 = load i32, ptr %326, align 4, !tbaa !16
  %328 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %329 = load i32, ptr %328, align 4, !tbaa !25
  %330 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %331 = load i32, ptr %330, align 4, !tbaa !16
  %332 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %333 = load i32, ptr %332, align 4, !tbaa !39
  %334 = zext i32 %333 to i64
  %335 = mul nsw i64 32, %334
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %325, i32 noundef 4096, i32 noundef %327, i32 noundef %329, i32 noundef %331, i64 noundef %335)
  br label %348

336:                                              ; preds = %235
  %337 = load ptr, ptr %3, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %339 = load i32, ptr %338, align 4, !tbaa !18
  %340 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %341 = load i32, ptr %340, align 4, !tbaa !25
  %342 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %343 = load i32, ptr %342, align 4, !tbaa !18
  %344 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %345 = load i32, ptr %344, align 4, !tbaa !39
  %346 = zext i32 %345 to i64
  %347 = mul nsw i64 32, %346
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %337, i32 noundef 4096, i32 noundef %339, i32 noundef %341, i32 noundef %343, i64 noundef %347)
  br label %348

348:                                              ; preds = %336, %324
  %349 = load ptr, ptr %3, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %351 = load i32, ptr %350, align 4, !tbaa !17
  %352 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %353 = load i32, ptr %352, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %349, i32 noundef 704643079, i32 noundef 63, i32 noundef %351, i32 noundef %353, i32 noundef 0, i32 noundef 0)
  %354 = load ptr, ptr %3, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %356 = load i32, ptr %355, align 4, !tbaa !17
  %357 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %358 = load i32, ptr %357, align 4, !tbaa !24
  %359 = load ptr, ptr %8, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %359, i32 0, i32 5
  %361 = load i32, ptr %360, align 1, !tbaa !44
  %362 = mul i32 %361, 16
  %363 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %364 = load i32, ptr %363, align 4, !tbaa !45
  %365 = mul i32 %362, %364
  %366 = zext i32 %365 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %354, i32 noundef 4096, i32 noundef %356, i32 noundef 43, i32 noundef %358, i64 noundef %366)
  %367 = load ptr, ptr %3, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %369 = load i32, ptr %368, align 4, !tbaa !17
  %370 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %371 = load i32, ptr %370, align 4, !tbaa !24
  %372 = load ptr, ptr %8, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %372, i32 0, i32 5
  %374 = load i32, ptr %373, align 1, !tbaa !44
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef %367, i32 noundef %369, i32 noundef %371, i32 noundef 32, i32 noundef 32, i32 noundef %374)
  %375 = load ptr, ptr %3, align 8, !tbaa !5
  %376 = load ptr, ptr %8, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %375, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %376, i32 noundef 32, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %377 = load ptr, ptr %3, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %379 = load i32, ptr %378, align 4, !tbaa !28
  %380 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %381 = load i32, ptr %380, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %377, i32 noundef 704643079, i32 noundef 63, i32 noundef %379, i32 noundef %381, i32 noundef 0, i32 noundef 0)
  %382 = load ptr, ptr %3, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %384 = load i32, ptr %383, align 4, !tbaa !17
  %385 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %386 = load i32, ptr %385, align 4, !tbaa !24
  %387 = load ptr, ptr %8, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %387, i32 0, i32 5
  %389 = load i32, ptr %388, align 1, !tbaa !44
  %390 = mul i32 %389, 16
  %391 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %392 = load i32, ptr %391, align 4, !tbaa !45
  %393 = mul i32 %390, %392
  %394 = zext i32 %393 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %382, i32 noundef 4096, i32 noundef %384, i32 noundef 43, i32 noundef %386, i64 noundef %394)
  %395 = load ptr, ptr %3, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %397 = load i32, ptr %396, align 4, !tbaa !17
  %398 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %399 = load i32, ptr %398, align 4, !tbaa !24
  %400 = load ptr, ptr %8, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %400, i32 0, i32 5
  %402 = load i32, ptr %401, align 1, !tbaa !44
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef %395, i32 noundef %397, i32 noundef %399, i32 noundef 32, i32 noundef 32, i32 noundef %402, i32 noundef 1)
  %403 = load ptr, ptr %3, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %405 = load i32, ptr %404, align 4, !tbaa !28
  %406 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %407 = load i32, ptr %406, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %403, i32 noundef 704643079, i32 noundef 63, i32 noundef %405, i32 noundef %407, i32 noundef 0, i32 noundef 0)
  %408 = load ptr, ptr %3, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %410 = load i32, ptr %409, align 4, !tbaa !17
  %411 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %412 = load i32, ptr %411, align 4, !tbaa !17
  %413 = load ptr, ptr %8, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %413, i32 0, i32 5
  %415 = load i32, ptr %414, align 1, !tbaa !44
  %416 = zext i32 %415 to i64
  %417 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %418 = load i32, ptr %417, align 4, !tbaa !39
  %419 = zext i32 %418 to i64
  %420 = mul nsw i64 %416, %419
  %421 = mul nsw i64 %420, 32
  %422 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %423 = load i32, ptr %422, align 4, !tbaa !39
  %424 = mul i32 32, %423
  %425 = zext i32 %424 to i64
  %426 = sub nsw i64 %421, %425
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %408, i32 noundef 4097, i32 noundef %410, i32 noundef 43, i32 noundef %412, i64 noundef %426)
  %427 = load ptr, ptr %8, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %427, i32 0, i32 6
  %429 = load i32, ptr %428, align 1, !tbaa !38
  %430 = and i32 %429, 2
  %431 = icmp eq i32 %430, 0
  br i1 %431, label %432, label %438

432:                                              ; preds = %348
  %433 = load ptr, ptr %3, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %435 = load i32, ptr %434, align 4, !tbaa !25
  %436 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %437 = load i32, ptr %436, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %433, i32 noundef 4096, i32 noundef 58, i32 noundef %435, i32 noundef %437, i64 noundef 0)
  br label %444

438:                                              ; preds = %348
  %439 = load ptr, ptr %3, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %441 = load i32, ptr %440, align 4, !tbaa !25
  %442 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %443 = load i32, ptr %442, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %439, i32 noundef 4096, i32 noundef 58, i32 noundef %441, i32 noundef %443, i64 noundef 0)
  br label %444

444:                                              ; preds = %438, %432
  %445 = load ptr, ptr %3, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %447 = load i32, ptr %446, align 4, !tbaa !15
  %448 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %449 = load i32, ptr %448, align 4, !tbaa !15
  %450 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %451 = load i32, ptr %450, align 4, !tbaa !39
  %452 = zext i32 %451 to i64
  %453 = mul nsw i64 32, %452
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %445, i32 noundef 4096, i32 noundef %447, i32 noundef 43, i32 noundef %449, i64 noundef %453)
  %454 = load ptr, ptr %3, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %456 = load i32, ptr %455, align 4, !tbaa !21
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %454, ptr noundef %6, i32 noundef %456, i32 noundef 32)
  br label %457

457:                                              ; preds = %444, %231
  %458 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 1
  %459 = load i32, ptr %458, align 4, !tbaa !9
  %460 = icmp ugt i32 %459, 0
  br i1 %460, label %461, label %497

461:                                              ; preds = %457
  %462 = load i32, ptr %12, align 4, !tbaa !9
  %463 = icmp ult i32 %462, 17
  br i1 %463, label %464, label %497

464:                                              ; preds = %461
  %465 = load ptr, ptr %3, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %467 = load i32, ptr %466, align 4, !tbaa !17
  %468 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %469 = load i32, ptr %468, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %465, i32 noundef 704643079, i32 noundef 63, i32 noundef %467, i32 noundef %469, i32 noundef 0, i32 noundef 0)
  %470 = load ptr, ptr %3, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %472 = load i32, ptr %471, align 4, !tbaa !17
  %473 = load i32, ptr %12, align 4, !tbaa !9
  %474 = load ptr, ptr %8, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %474, i32 0, i32 5
  %476 = load i32, ptr %475, align 1, !tbaa !44
  call void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef %470, i32 noundef %472, i32 noundef %473, i32 noundef 64, i32 noundef %476)
  %477 = load ptr, ptr %3, align 8, !tbaa !5
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  %479 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %477, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %478, i32 noundef %479, i32 noundef 64, i32 noundef 2, i32 noundef 64)
  %480 = load ptr, ptr %3, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %482 = load i32, ptr %481, align 4, !tbaa !28
  %483 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %484 = load i32, ptr %483, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %480, i32 noundef 704643079, i32 noundef 63, i32 noundef %482, i32 noundef %484, i32 noundef 0, i32 noundef 0)
  %485 = load ptr, ptr %3, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %487 = load i32, ptr %486, align 4, !tbaa !17
  %488 = load i32, ptr %12, align 4, !tbaa !9
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %489, i32 0, i32 5
  %491 = load i32, ptr %490, align 1, !tbaa !44
  call void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef %485, i32 noundef %487, i32 noundef %488, i32 noundef 64, i32 noundef %491)
  %492 = load ptr, ptr %3, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %494 = load i32, ptr %493, align 4, !tbaa !28
  %495 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %496 = load i32, ptr %495, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %492, i32 noundef 704643079, i32 noundef 63, i32 noundef %494, i32 noundef %496, i32 noundef 0, i32 noundef 0)
  br label %712

497:                                              ; preds = %461, %457
  %498 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 1
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = icmp ugt i32 %499, 0
  br i1 %500, label %501, label %711

501:                                              ; preds = %497
  %502 = load i32, ptr %12, align 4, !tbaa !9
  %503 = icmp ugt i32 %502, 16
  br i1 %503, label %504, label %711

504:                                              ; preds = %501
  %505 = load ptr, ptr %3, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %507 = load i32, ptr %506, align 4, !tbaa !17
  %508 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %509 = load i32, ptr %508, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %505, i32 noundef 704643079, i32 noundef 63, i32 noundef %507, i32 noundef %509, i32 noundef 0, i32 noundef 0)
  %510 = load ptr, ptr %3, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %512 = load i32, ptr %511, align 4, !tbaa !17
  %513 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %514 = load i32, ptr %513, align 4, !tbaa !24
  %515 = load ptr, ptr %8, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %515, i32 0, i32 5
  %517 = load i32, ptr %516, align 1, !tbaa !44
  %518 = zext i32 %517 to i64
  %519 = mul nsw i64 %518, 16
  %520 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %521 = load i32, ptr %520, align 4, !tbaa !45
  %522 = zext i32 %521 to i64
  %523 = mul nsw i64 %519, %522
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %510, i32 noundef 4096, i32 noundef %512, i32 noundef 43, i32 noundef %514, i64 noundef %523)
  %524 = load ptr, ptr %3, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %526 = load i32, ptr %525, align 4, !tbaa !17
  %527 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %528 = load i32, ptr %527, align 4, !tbaa !24
  %529 = load i32, ptr %12, align 4, !tbaa !9
  %530 = load ptr, ptr %8, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %530, i32 0, i32 5
  %532 = load i32, ptr %531, align 1, !tbaa !44
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef %524, i32 noundef %526, i32 noundef %528, i32 noundef %529, i32 noundef 32, i32 noundef %532)
  %533 = load ptr, ptr %3, align 8, !tbaa !5
  %534 = load ptr, ptr %8, align 8, !tbaa !5
  %535 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %533, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %534, i32 noundef %535, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %536 = load ptr, ptr %3, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %538 = load i32, ptr %537, align 4, !tbaa !28
  %539 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %540 = load i32, ptr %539, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %536, i32 noundef 704643079, i32 noundef 63, i32 noundef %538, i32 noundef %540, i32 noundef 0, i32 noundef 0)
  %541 = load ptr, ptr %3, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %543 = load i32, ptr %542, align 4, !tbaa !17
  %544 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %545 = load i32, ptr %544, align 4, !tbaa !24
  %546 = load ptr, ptr %8, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %546, i32 0, i32 5
  %548 = load i32, ptr %547, align 1, !tbaa !44
  %549 = zext i32 %548 to i64
  %550 = mul nsw i64 %549, 16
  %551 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %552 = load i32, ptr %551, align 4, !tbaa !45
  %553 = zext i32 %552 to i64
  %554 = mul nsw i64 %550, %553
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %541, i32 noundef 4096, i32 noundef %543, i32 noundef 43, i32 noundef %545, i64 noundef %554)
  %555 = load ptr, ptr %3, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %557 = load i32, ptr %556, align 4, !tbaa !17
  %558 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %559 = load i32, ptr %558, align 4, !tbaa !24
  %560 = load i32, ptr %12, align 4, !tbaa !9
  %561 = load ptr, ptr %8, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %561, i32 0, i32 5
  %563 = load i32, ptr %562, align 1, !tbaa !44
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef %555, i32 noundef %557, i32 noundef %559, i32 noundef %560, i32 noundef 32, i32 noundef %563, i32 noundef 1)
  %564 = load ptr, ptr %3, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %566 = load i32, ptr %565, align 4, !tbaa !28
  %567 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %568 = load i32, ptr %567, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %564, i32 noundef 704643079, i32 noundef 63, i32 noundef %566, i32 noundef %568, i32 noundef 0, i32 noundef 0)
  %569 = load ptr, ptr %3, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %571 = load i32, ptr %570, align 4, !tbaa !17
  %572 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %573 = load i32, ptr %572, align 4, !tbaa !26
  %574 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %575 = load i32, ptr %574, align 4, !tbaa !17
  %576 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %577 = load i32, ptr %576, align 4, !tbaa !45
  %578 = zext i32 %577 to i64
  %579 = mul nsw i64 32, %578
  %580 = load ptr, ptr %8, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %580, i32 0, i32 5
  %582 = load i32, ptr %581, align 1, !tbaa !44
  %583 = zext i32 %582 to i64
  %584 = mul nsw i64 %579, %583
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %569, i32 noundef 4096, i32 noundef %571, i32 noundef %573, i32 noundef %575, i64 noundef %584)
  %585 = load ptr, ptr %8, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %585, i32 0, i32 6
  %587 = load i32, ptr %586, align 1, !tbaa !38
  %588 = and i32 %587, 2
  %589 = icmp ugt i32 %588, 0
  br i1 %589, label %590, label %602

590:                                              ; preds = %504
  %591 = load ptr, ptr %3, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %593 = load i32, ptr %592, align 4, !tbaa !16
  %594 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %595 = load i32, ptr %594, align 4, !tbaa !25
  %596 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %597 = load i32, ptr %596, align 4, !tbaa !16
  %598 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %599 = load i32, ptr %598, align 4, !tbaa !39
  %600 = zext i32 %599 to i64
  %601 = mul nsw i64 32, %600
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %591, i32 noundef 4096, i32 noundef %593, i32 noundef %595, i32 noundef %597, i64 noundef %601)
  br label %614

602:                                              ; preds = %504
  %603 = load ptr, ptr %3, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %605 = load i32, ptr %604, align 4, !tbaa !18
  %606 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %607 = load i32, ptr %606, align 4, !tbaa !25
  %608 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %609 = load i32, ptr %608, align 4, !tbaa !18
  %610 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %611 = load i32, ptr %610, align 4, !tbaa !39
  %612 = zext i32 %611 to i64
  %613 = mul nsw i64 32, %612
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %603, i32 noundef 4096, i32 noundef %605, i32 noundef %607, i32 noundef %609, i64 noundef %613)
  br label %614

614:                                              ; preds = %602, %590
  %615 = load ptr, ptr %3, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %617 = load i32, ptr %616, align 4, !tbaa !17
  %618 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %619 = load i32, ptr %618, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %615, i32 noundef 704643079, i32 noundef 63, i32 noundef %617, i32 noundef %619, i32 noundef 0, i32 noundef 0)
  %620 = load ptr, ptr %3, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %622 = load i32, ptr %621, align 4, !tbaa !17
  %623 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %624 = load i32, ptr %623, align 4, !tbaa !24
  %625 = load ptr, ptr %8, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %625, i32 0, i32 5
  %627 = load i32, ptr %626, align 1, !tbaa !44
  %628 = zext i32 %627 to i64
  %629 = mul nsw i64 %628, 16
  %630 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %631 = load i32, ptr %630, align 4, !tbaa !39
  %632 = zext i32 %631 to i64
  %633 = mul nsw i64 %629, %632
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %620, i32 noundef 4096, i32 noundef %622, i32 noundef 43, i32 noundef %624, i64 noundef %633)
  %634 = load ptr, ptr %3, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %636 = load i32, ptr %635, align 4, !tbaa !17
  %637 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %638 = load i32, ptr %637, align 4, !tbaa !24
  %639 = load i32, ptr %12, align 4, !tbaa !9
  %640 = load ptr, ptr %8, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %640, i32 0, i32 5
  %642 = load i32, ptr %641, align 1, !tbaa !44
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef %634, i32 noundef %636, i32 noundef %638, i32 noundef %639, i32 noundef 32, i32 noundef %642)
  %643 = load ptr, ptr %3, align 8, !tbaa !5
  %644 = load ptr, ptr %8, align 8, !tbaa !5
  %645 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %643, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %644, i32 noundef %645, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %646 = load ptr, ptr %3, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %648 = load i32, ptr %647, align 4, !tbaa !28
  %649 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %650 = load i32, ptr %649, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %646, i32 noundef 704643079, i32 noundef 63, i32 noundef %648, i32 noundef %650, i32 noundef 0, i32 noundef 0)
  %651 = load ptr, ptr %3, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %653 = load i32, ptr %652, align 4, !tbaa !17
  %654 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %655 = load i32, ptr %654, align 4, !tbaa !24
  %656 = load ptr, ptr %8, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %656, i32 0, i32 5
  %658 = load i32, ptr %657, align 1, !tbaa !44
  %659 = zext i32 %658 to i64
  %660 = mul nsw i64 %659, 16
  %661 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %662 = load i32, ptr %661, align 4, !tbaa !45
  %663 = zext i32 %662 to i64
  %664 = mul nsw i64 %660, %663
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %651, i32 noundef 4096, i32 noundef %653, i32 noundef 43, i32 noundef %655, i64 noundef %664)
  %665 = load ptr, ptr %3, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %667 = load i32, ptr %666, align 4, !tbaa !17
  %668 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %669 = load i32, ptr %668, align 4, !tbaa !24
  %670 = load i32, ptr %12, align 4, !tbaa !9
  %671 = load ptr, ptr %8, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %671, i32 0, i32 5
  %673 = load i32, ptr %672, align 1, !tbaa !44
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef %665, i32 noundef %667, i32 noundef %669, i32 noundef %670, i32 noundef 32, i32 noundef %673, i32 noundef 1)
  %674 = load ptr, ptr %3, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %676 = load i32, ptr %675, align 4, !tbaa !28
  %677 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %678 = load i32, ptr %677, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %674, i32 noundef 704643079, i32 noundef 63, i32 noundef %676, i32 noundef %678, i32 noundef 0, i32 noundef 0)
  %679 = load ptr, ptr %8, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %679, i32 0, i32 6
  %681 = load i32, ptr %680, align 1, !tbaa !38
  %682 = and i32 %681, 2
  %683 = icmp eq i32 %682, 0
  br i1 %683, label %684, label %690

684:                                              ; preds = %614
  %685 = load ptr, ptr %3, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %687 = load i32, ptr %686, align 4, !tbaa !25
  %688 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %689 = load i32, ptr %688, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %685, i32 noundef 4096, i32 noundef 58, i32 noundef %687, i32 noundef %689, i64 noundef 0)
  br label %696

690:                                              ; preds = %614
  %691 = load ptr, ptr %3, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %693 = load i32, ptr %692, align 4, !tbaa !25
  %694 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %695 = load i32, ptr %694, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %691, i32 noundef 4096, i32 noundef 58, i32 noundef %693, i32 noundef %695, i64 noundef 0)
  br label %696

696:                                              ; preds = %690, %684
  %697 = load ptr, ptr %3, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %699 = load i32, ptr %698, align 4, !tbaa !17
  %700 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %701 = load i32, ptr %700, align 4, !tbaa !17
  %702 = load ptr, ptr %8, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %702, i32 0, i32 5
  %704 = load i32, ptr %703, align 1, !tbaa !44
  %705 = zext i32 %704 to i64
  %706 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %707 = load i32, ptr %706, align 4, !tbaa !45
  %708 = zext i32 %707 to i64
  %709 = mul nsw i64 %705, %708
  %710 = mul nsw i64 %709, 32
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %697, i32 noundef 4097, i32 noundef %699, i32 noundef 43, i32 noundef %701, i64 noundef %710)
  br label %711

711:                                              ; preds = %696, %501, %497
  br label %712

712:                                              ; preds = %711, %464
  %713 = load ptr, ptr %3, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %715 = load i32, ptr %714, align 4, !tbaa !15
  %716 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %717 = load i32, ptr %716, align 4, !tbaa !24
  %718 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %719 = load i32, ptr %718, align 4, !tbaa !15
  %720 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 0
  %721 = load i32, ptr %720, align 4, !tbaa !9
  %722 = zext i32 %721 to i64
  %723 = mul nsw i64 %722, 32
  %724 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %725 = load i32, ptr %724, align 4, !tbaa !39
  %726 = zext i32 %725 to i64
  %727 = mul nsw i64 %723, %726
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %713, i32 noundef 4097, i32 noundef %715, i32 noundef %717, i32 noundef %719, i64 noundef %727)
  %728 = load ptr, ptr %8, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %728, i32 0, i32 6
  %730 = load i32, ptr %729, align 1, !tbaa !38
  %731 = and i32 %730, 2
  %732 = icmp eq i32 %731, 0
  br i1 %732, label %733, label %750

733:                                              ; preds = %712
  %734 = load ptr, ptr %3, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %736 = load i32, ptr %735, align 4, !tbaa !16
  %737 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %738 = load i32, ptr %737, align 4, !tbaa !24
  %739 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %740 = load i32, ptr %739, align 4, !tbaa !16
  %741 = load ptr, ptr %8, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %741, i32 0, i32 4
  %743 = load i32, ptr %742, align 1, !tbaa !43
  %744 = zext i32 %743 to i64
  %745 = mul nsw i64 %744, 64
  %746 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %747 = load i32, ptr %746, align 4, !tbaa !39
  %748 = zext i32 %747 to i64
  %749 = mul nsw i64 %745, %748
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %734, i32 noundef 4096, i32 noundef %736, i32 noundef %738, i32 noundef %740, i64 noundef %749)
  br label %762

750:                                              ; preds = %712
  %751 = load ptr, ptr %3, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %753 = load i32, ptr %752, align 4, !tbaa !16
  %754 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %755 = load i32, ptr %754, align 4, !tbaa !24
  %756 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %757 = load i32, ptr %756, align 4, !tbaa !16
  %758 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %759 = load i32, ptr %758, align 4, !tbaa !39
  %760 = zext i32 %759 to i64
  %761 = mul nsw i64 64, %760
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %751, i32 noundef 4096, i32 noundef %753, i32 noundef %755, i32 noundef %757, i64 noundef %761)
  br label %762

762:                                              ; preds = %750, %733
  %763 = load ptr, ptr %3, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %765 = load i32, ptr %764, align 4, !tbaa !17
  %766 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %767 = load i32, ptr %766, align 4, !tbaa !24
  %768 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %769 = load i32, ptr %768, align 4, !tbaa !17
  %770 = load ptr, ptr %8, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %770, i32 0, i32 5
  %772 = load i32, ptr %771, align 1, !tbaa !44
  %773 = mul i32 %772, 64
  %774 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %775 = load i32, ptr %774, align 4, !tbaa !45
  %776 = mul i32 %773, %775
  %777 = zext i32 %776 to i64
  %778 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 0
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = mul i32 %779, 32
  %781 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %782 = load i32, ptr %781, align 4, !tbaa !45
  %783 = mul i32 %780, %782
  %784 = zext i32 %783 to i64
  %785 = sub nsw i64 %777, %784
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %763, i32 noundef 4096, i32 noundef %765, i32 noundef %767, i32 noundef %769, i64 noundef %785)
  %786 = load ptr, ptr %3, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 11
  %788 = load i32, ptr %787, align 4, !tbaa !22
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %786, ptr noundef %6, i32 noundef %788, i32 noundef 64)
  br label %789

789:                                              ; preds = %762, %109
  %790 = load i32, ptr %13, align 4, !tbaa !9
  %791 = icmp ugt i32 %790, 0
  br i1 %791, label %792, label %1058

792:                                              ; preds = %789
  %793 = load i32, ptr %13, align 4, !tbaa !9
  %794 = icmp ult i32 %793, 17
  br i1 %794, label %795, label %1058

795:                                              ; preds = %792
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %796, i32 0, i32 6
  %798 = load i32, ptr %797, align 1, !tbaa !38
  %799 = and i32 %798, 2
  %800 = icmp eq i32 %799, 0
  br i1 %800, label %801, label %914

801:                                              ; preds = %795
  %802 = load ptr, ptr %3, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %804 = load i32, ptr %803, align 4, !tbaa !25
  %805 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %806 = load i32, ptr %805, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %802, i32 noundef 4096, i32 noundef 63, i32 noundef %804, i32 noundef %806, i64 noundef 0)
  %807 = load ptr, ptr %3, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %809 = load i32, ptr %808, align 4, !tbaa !25
  %810 = load ptr, ptr %8, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %810, i32 0, i32 2
  %812 = load i32, ptr %811, align 1, !tbaa !42
  %813 = zext i32 %812 to i64
  %814 = mul nsw i64 16, %813
  %815 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %816 = load i32, ptr %815, align 4, !tbaa !39
  %817 = zext i32 %816 to i64
  %818 = mul nsw i64 %814, %817
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %807, i32 noundef 4097, i32 noundef 63, i32 noundef %809, i32 noundef 63, i64 noundef %818)
  %819 = load ptr, ptr %3, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %821 = load i32, ptr %820, align 4, !tbaa !25
  %822 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %823 = load i32, ptr %822, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %819, i32 noundef 4096, i32 noundef 63, i32 noundef %821, i32 noundef %823, i64 noundef 0)
  %824 = load ptr, ptr %3, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %826 = load i32, ptr %825, align 4, !tbaa !18
  %827 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %828 = load i32, ptr %827, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %824, i32 noundef 4096, i32 noundef %826, i32 noundef %828, i32 noundef 63, i64 noundef 0)
  %829 = load ptr, ptr %8, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %829, i32 0, i32 2
  %831 = load i32, ptr %830, align 1, !tbaa !42
  %832 = udiv i32 %831, 32
  store i32 %832, ptr %15, align 4, !tbaa !9
  %833 = load ptr, ptr %8, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %833, i32 0, i32 2
  %835 = load i32, ptr %834, align 1, !tbaa !42
  %836 = urem i32 %835, 32
  store i32 %836, ptr %16, align 4, !tbaa !9
  %837 = load i32, ptr %15, align 4, !tbaa !9
  %838 = icmp ugt i32 %837, 0
  br i1 %838, label %839, label %867

839:                                              ; preds = %801
  %840 = load ptr, ptr %3, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %842 = load i32, ptr %841, align 4, !tbaa !26
  %843 = load i32, ptr %15, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %840, ptr noundef %6, i32 noundef %842, i32 noundef %843)
  %844 = load ptr, ptr %3, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %846 = load i32, ptr %845, align 4, !tbaa !16
  %847 = load ptr, ptr %8, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %847, i32 0, i32 4
  %849 = load i32, ptr %848, align 1, !tbaa !43
  %850 = load i32, ptr %13, align 4, !tbaa !9
  %851 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %852 = load i32, ptr %851, align 4, !tbaa !24
  call void @libxsmm_generator_transpose_sme(ptr noundef %844, i32 noundef %846, i32 noundef %849, i32 noundef 32, i32 noundef %850, i32 noundef %852)
  %853 = load ptr, ptr %3, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %855 = load i32, ptr %854, align 4, !tbaa !16
  %856 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %857 = load i32, ptr %856, align 4, !tbaa !25
  %858 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %859 = load i32, ptr %858, align 4, !tbaa !16
  %860 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %861 = load i32, ptr %860, align 4, !tbaa !39
  %862 = mul i32 32, %861
  %863 = zext i32 %862 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %853, i32 noundef 4096, i32 noundef %855, i32 noundef %857, i32 noundef %859, i64 noundef %863)
  %864 = load ptr, ptr %3, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %866 = load i32, ptr %865, align 4, !tbaa !26
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %864, ptr noundef %6, i32 noundef %866, i32 noundef 1)
  br label %867

867:                                              ; preds = %839, %801
  %868 = load i32, ptr %16, align 4, !tbaa !9
  %869 = icmp ugt i32 %868, 0
  br i1 %869, label %870, label %893

870:                                              ; preds = %867
  %871 = load ptr, ptr %3, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %873 = load i32, ptr %872, align 4, !tbaa !16
  %874 = load ptr, ptr %8, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %874, i32 0, i32 4
  %876 = load i32, ptr %875, align 1, !tbaa !43
  %877 = load i32, ptr %16, align 4, !tbaa !9
  %878 = load i32, ptr %13, align 4, !tbaa !9
  %879 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %880 = load i32, ptr %879, align 4, !tbaa !24
  call void @libxsmm_generator_transpose_sme(ptr noundef %871, i32 noundef %873, i32 noundef %876, i32 noundef %877, i32 noundef %878, i32 noundef %880)
  %881 = load ptr, ptr %3, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %883 = load i32, ptr %882, align 4, !tbaa !16
  %884 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %885 = load i32, ptr %884, align 4, !tbaa !25
  %886 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %887 = load i32, ptr %886, align 4, !tbaa !16
  %888 = load i32, ptr %16, align 4, !tbaa !9
  %889 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %890 = load i32, ptr %889, align 4, !tbaa !39
  %891 = mul i32 %888, %890
  %892 = zext i32 %891 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %881, i32 noundef 4096, i32 noundef %883, i32 noundef %885, i32 noundef %887, i64 noundef %892)
  br label %893

893:                                              ; preds = %870, %867
  %894 = load ptr, ptr %3, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %896 = load i32, ptr %895, align 4, !tbaa !25
  %897 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %898 = load i32, ptr %897, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %894, i32 noundef 4096, i32 noundef %896, i32 noundef %898, i32 noundef 63, i64 noundef 0)
  %899 = load ptr, ptr %3, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %901 = load i32, ptr %900, align 4, !tbaa !16
  %902 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %903 = load i32, ptr %902, align 4, !tbaa !25
  %904 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %905 = load i32, ptr %904, align 4, !tbaa !16
  %906 = load ptr, ptr %8, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %906, i32 0, i32 2
  %908 = load i32, ptr %907, align 1, !tbaa !42
  %909 = zext i32 %908 to i64
  %910 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %911 = load i32, ptr %910, align 4, !tbaa !39
  %912 = zext i32 %911 to i64
  %913 = mul nsw i64 %909, %912
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %899, i32 noundef 4097, i32 noundef %901, i32 noundef %903, i32 noundef %905, i64 noundef %913)
  br label %914

914:                                              ; preds = %893, %795
  store i32 64, ptr %17, align 4, !tbaa !9
  %915 = load ptr, ptr %8, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %915, i32 0, i32 0
  %917 = load i32, ptr %916, align 1, !tbaa !35
  %918 = udiv i32 %917, 64
  store i32 %918, ptr %18, align 4, !tbaa !9
  %919 = load ptr, ptr %8, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %919, i32 0, i32 0
  %921 = load i32, ptr %920, align 1, !tbaa !35
  %922 = urem i32 %921, 64
  store i32 %922, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %923

923:                                              ; preds = %1054, %914
  %924 = load i32, ptr %14, align 4, !tbaa !9
  %925 = icmp ult i32 %924, 2
  br i1 %925, label %926, label %1057

926:                                              ; preds = %923
  %927 = load i32, ptr %19, align 4, !tbaa !9
  %928 = icmp eq i32 %927, 0
  br i1 %928, label %929, label %932

929:                                              ; preds = %926
  %930 = load i32, ptr %14, align 4, !tbaa !9
  %931 = icmp eq i32 %930, 1
  br i1 %931, label %938, label %932

932:                                              ; preds = %929, %926
  %933 = load i32, ptr %18, align 4, !tbaa !9
  %934 = icmp eq i32 %933, 0
  br i1 %934, label %935, label %939

935:                                              ; preds = %932
  %936 = load i32, ptr %14, align 4, !tbaa !9
  %937 = icmp eq i32 %936, 0
  br i1 %937, label %938, label %939

938:                                              ; preds = %935, %929
  br label %1054

939:                                              ; preds = %935, %932
  %940 = load i32, ptr %14, align 4, !tbaa !9
  %941 = icmp eq i32 %940, 0
  br i1 %941, label %942, label %944

942:                                              ; preds = %939
  %943 = load i32, ptr %17, align 4, !tbaa !9
  br label %946

944:                                              ; preds = %939
  %945 = load i32, ptr %19, align 4, !tbaa !9
  br label %946

946:                                              ; preds = %944, %942
  %947 = phi i32 [ %943, %942 ], [ %945, %944 ]
  store i32 %947, ptr %20, align 4, !tbaa !9
  %948 = load ptr, ptr %3, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %950 = load i32, ptr %949, align 4, !tbaa !21
  %951 = load i32, ptr %14, align 4, !tbaa !9
  %952 = icmp eq i32 %951, 0
  br i1 %952, label %953, label %957

953:                                              ; preds = %946
  %954 = load i32, ptr %17, align 4, !tbaa !9
  %955 = load i32, ptr %18, align 4, !tbaa !9
  %956 = mul i32 %954, %955
  br label %959

957:                                              ; preds = %946
  %958 = load i32, ptr %19, align 4, !tbaa !9
  br label %959

959:                                              ; preds = %957, %953
  %960 = phi i32 [ %956, %953 ], [ %958, %957 ]
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %948, ptr noundef %6, i32 noundef %950, i32 noundef %960)
  %961 = load ptr, ptr %3, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %963 = load i32, ptr %962, align 4, !tbaa !17
  %964 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %965 = load i32, ptr %964, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %961, i32 noundef 704643079, i32 noundef 63, i32 noundef %963, i32 noundef %965, i32 noundef 0, i32 noundef 0)
  %966 = load ptr, ptr %3, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %968 = load i32, ptr %967, align 4, !tbaa !17
  %969 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %970 = load i32, ptr %969, align 4, !tbaa !24
  %971 = load ptr, ptr %8, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %971, i32 0, i32 5
  %973 = load i32, ptr %972, align 1, !tbaa !44
  %974 = zext i32 %973 to i64
  %975 = mul nsw i64 %974, 16
  %976 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %977 = load i32, ptr %976, align 4, !tbaa !45
  %978 = zext i32 %977 to i64
  %979 = mul nsw i64 %975, %978
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %966, i32 noundef 4096, i32 noundef %968, i32 noundef 43, i32 noundef %970, i64 noundef %979)
  %980 = load ptr, ptr %3, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %982 = load i32, ptr %981, align 4, !tbaa !17
  %983 = load i32, ptr %20, align 4, !tbaa !9
  %984 = load i32, ptr %13, align 4, !tbaa !9
  %985 = load ptr, ptr %8, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %985, i32 0, i32 5
  %987 = load i32, ptr %986, align 1, !tbaa !44
  call void @libxsmm_generator_load_64x16_aarch64_sme(ptr noundef %980, i32 noundef %982, i32 noundef %983, i32 noundef %984, i32 noundef %987)
  %988 = load ptr, ptr %3, align 8, !tbaa !5
  %989 = load ptr, ptr %8, align 8, !tbaa !5
  %990 = load i32, ptr %20, align 4, !tbaa !9
  %991 = load i32, ptr %13, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %988, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %989, i32 noundef %990, i32 noundef %991, i32 noundef 1, i32 noundef 16)
  %992 = load ptr, ptr %3, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %994 = load i32, ptr %993, align 4, !tbaa !28
  %995 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %996 = load i32, ptr %995, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %992, i32 noundef 704643079, i32 noundef 63, i32 noundef %994, i32 noundef %996, i32 noundef 0, i32 noundef 0)
  %997 = load ptr, ptr %3, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %999 = load i32, ptr %998, align 4, !tbaa !17
  %1000 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1001 = load i32, ptr %1000, align 4, !tbaa !24
  %1002 = load ptr, ptr %8, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1002, i32 0, i32 5
  %1004 = load i32, ptr %1003, align 1, !tbaa !44
  %1005 = zext i32 %1004 to i64
  %1006 = mul nsw i64 %1005, 16
  %1007 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1008 = load i32, ptr %1007, align 4, !tbaa !45
  %1009 = zext i32 %1008 to i64
  %1010 = mul nsw i64 %1006, %1009
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %997, i32 noundef 4096, i32 noundef %999, i32 noundef 43, i32 noundef %1001, i64 noundef %1010)
  %1011 = load ptr, ptr %3, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1013 = load i32, ptr %1012, align 4, !tbaa !17
  %1014 = load i32, ptr %20, align 4, !tbaa !9
  %1015 = load i32, ptr %13, align 4, !tbaa !9
  %1016 = load ptr, ptr %8, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1016, i32 0, i32 5
  %1018 = load i32, ptr %1017, align 1, !tbaa !44
  call void @libxsmm_generated_store_64x16_aarch64_sme(ptr noundef %1011, i32 noundef %1013, i32 noundef %1014, i32 noundef %1015, i32 noundef %1018)
  %1019 = load ptr, ptr %3, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1021 = load i32, ptr %1020, align 4, !tbaa !28
  %1022 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1023 = load i32, ptr %1022, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1019, i32 noundef 704643079, i32 noundef 63, i32 noundef %1021, i32 noundef %1023, i32 noundef 0, i32 noundef 0)
  %1024 = load ptr, ptr %3, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1026 = load i32, ptr %1025, align 4, !tbaa !17
  %1027 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1028 = load i32, ptr %1027, align 4, !tbaa !26
  %1029 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1030 = load i32, ptr %1029, align 4, !tbaa !17
  %1031 = load i32, ptr %20, align 4, !tbaa !9
  %1032 = zext i32 %1031 to i64
  %1033 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1034 = load i32, ptr %1033, align 4, !tbaa !45
  %1035 = zext i32 %1034 to i64
  %1036 = mul nsw i64 %1032, %1035
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1024, i32 noundef 4096, i32 noundef %1026, i32 noundef %1028, i32 noundef %1030, i64 noundef %1036)
  %1037 = load ptr, ptr %3, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1039 = load i32, ptr %1038, align 4, !tbaa !15
  %1040 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1041 = load i32, ptr %1040, align 4, !tbaa !24
  %1042 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1043 = load i32, ptr %1042, align 4, !tbaa !15
  %1044 = load i32, ptr %20, align 4, !tbaa !9
  %1045 = zext i32 %1044 to i64
  %1046 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1047 = load i32, ptr %1046, align 4, !tbaa !45
  %1048 = zext i32 %1047 to i64
  %1049 = mul nsw i64 %1045, %1048
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1037, i32 noundef 4096, i32 noundef %1039, i32 noundef %1041, i32 noundef %1043, i64 noundef %1049)
  %1050 = load ptr, ptr %3, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %1052 = load i32, ptr %1051, align 4, !tbaa !21
  %1053 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1050, ptr noundef %6, i32 noundef %1052, i32 noundef %1053)
  br label %1054

1054:                                             ; preds = %959, %938
  %1055 = load i32, ptr %14, align 4, !tbaa !9
  %1056 = add i32 %1055, 1
  store i32 %1056, ptr %14, align 4, !tbaa !9
  br label %923, !llvm.loop !46

1057:                                             ; preds = %923
  br label %2202

1058:                                             ; preds = %792, %789
  %1059 = load i32, ptr %13, align 4, !tbaa !9
  %1060 = icmp ugt i32 %1059, 16
  br i1 %1060, label %1061, label %1329

1061:                                             ; preds = %1058
  %1062 = load i32, ptr %13, align 4, !tbaa !9
  %1063 = icmp ult i32 %1062, 33
  br i1 %1063, label %1064, label %1329

1064:                                             ; preds = %1061
  %1065 = load ptr, ptr %8, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1065, i32 0, i32 6
  %1067 = load i32, ptr %1066, align 1, !tbaa !38
  %1068 = and i32 %1067, 2
  %1069 = icmp eq i32 %1068, 0
  br i1 %1069, label %1070, label %1181

1070:                                             ; preds = %1064
  %1071 = load ptr, ptr %3, align 8, !tbaa !5
  %1072 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1073 = load i32, ptr %1072, align 4, !tbaa !25
  %1074 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1075 = load i32, ptr %1074, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1071, i32 noundef 4096, i32 noundef 63, i32 noundef %1073, i32 noundef %1075, i64 noundef 0)
  %1076 = load ptr, ptr %3, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1078 = load i32, ptr %1077, align 4, !tbaa !25
  %1079 = load ptr, ptr %8, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1079, i32 0, i32 2
  %1081 = load i32, ptr %1080, align 1, !tbaa !42
  %1082 = mul i32 32, %1081
  %1083 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1084 = load i32, ptr %1083, align 4, !tbaa !45
  %1085 = mul i32 %1082, %1084
  %1086 = zext i32 %1085 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1076, i32 noundef 4097, i32 noundef 63, i32 noundef %1078, i32 noundef 63, i64 noundef %1086)
  %1087 = load ptr, ptr %3, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1089 = load i32, ptr %1088, align 4, !tbaa !25
  %1090 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %1091 = load i32, ptr %1090, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1087, i32 noundef 4096, i32 noundef 63, i32 noundef %1089, i32 noundef %1091, i64 noundef 0)
  %1092 = load ptr, ptr %3, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %1094 = load i32, ptr %1093, align 4, !tbaa !18
  %1095 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1096 = load i32, ptr %1095, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1092, i32 noundef 4096, i32 noundef %1094, i32 noundef %1096, i32 noundef 63, i64 noundef 0)
  %1097 = load ptr, ptr %8, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1097, i32 0, i32 2
  %1099 = load i32, ptr %1098, align 1, !tbaa !42
  %1100 = udiv i32 %1099, 16
  store i32 %1100, ptr %15, align 4, !tbaa !9
  %1101 = load ptr, ptr %8, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1101, i32 0, i32 2
  %1103 = load i32, ptr %1102, align 1, !tbaa !42
  %1104 = urem i32 %1103, 16
  store i32 %1104, ptr %16, align 4, !tbaa !9
  %1105 = load i32, ptr %15, align 4, !tbaa !9
  %1106 = icmp ugt i32 %1105, 0
  br i1 %1106, label %1107, label %1135

1107:                                             ; preds = %1070
  %1108 = load ptr, ptr %3, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1110 = load i32, ptr %1109, align 4, !tbaa !26
  %1111 = load i32, ptr %15, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %1108, ptr noundef %6, i32 noundef %1110, i32 noundef %1111)
  %1112 = load ptr, ptr %3, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1114 = load i32, ptr %1113, align 4, !tbaa !16
  %1115 = load ptr, ptr %8, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1115, i32 0, i32 4
  %1117 = load i32, ptr %1116, align 1, !tbaa !43
  %1118 = load i32, ptr %13, align 4, !tbaa !9
  %1119 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1120 = load i32, ptr %1119, align 4, !tbaa !24
  call void @libxsmm_generator_transpose_sme(ptr noundef %1112, i32 noundef %1114, i32 noundef %1117, i32 noundef 16, i32 noundef %1118, i32 noundef %1120)
  %1121 = load ptr, ptr %3, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1123 = load i32, ptr %1122, align 4, !tbaa !16
  %1124 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1125 = load i32, ptr %1124, align 4, !tbaa !25
  %1126 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1127 = load i32, ptr %1126, align 4, !tbaa !16
  %1128 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1129 = load i32, ptr %1128, align 4, !tbaa !39
  %1130 = mul i32 16, %1129
  %1131 = zext i32 %1130 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1121, i32 noundef 4096, i32 noundef %1123, i32 noundef %1125, i32 noundef %1127, i64 noundef %1131)
  %1132 = load ptr, ptr %3, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1134 = load i32, ptr %1133, align 4, !tbaa !26
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1132, ptr noundef %6, i32 noundef %1134, i32 noundef 1)
  br label %1135

1135:                                             ; preds = %1107, %1070
  %1136 = load i32, ptr %16, align 4, !tbaa !9
  %1137 = icmp ugt i32 %1136, 0
  br i1 %1137, label %1138, label %1161

1138:                                             ; preds = %1135
  %1139 = load ptr, ptr %3, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1141 = load i32, ptr %1140, align 4, !tbaa !16
  %1142 = load ptr, ptr %8, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1142, i32 0, i32 4
  %1144 = load i32, ptr %1143, align 1, !tbaa !43
  %1145 = load i32, ptr %16, align 4, !tbaa !9
  %1146 = load i32, ptr %13, align 4, !tbaa !9
  %1147 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1148 = load i32, ptr %1147, align 4, !tbaa !24
  call void @libxsmm_generator_transpose_sme(ptr noundef %1139, i32 noundef %1141, i32 noundef %1144, i32 noundef %1145, i32 noundef %1146, i32 noundef %1148)
  %1149 = load ptr, ptr %3, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1151 = load i32, ptr %1150, align 4, !tbaa !16
  %1152 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1153 = load i32, ptr %1152, align 4, !tbaa !25
  %1154 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1155 = load i32, ptr %1154, align 4, !tbaa !16
  %1156 = load i32, ptr %16, align 4, !tbaa !9
  %1157 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1158 = load i32, ptr %1157, align 4, !tbaa !39
  %1159 = mul i32 %1156, %1158
  %1160 = zext i32 %1159 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1149, i32 noundef 4096, i32 noundef %1151, i32 noundef %1153, i32 noundef %1155, i64 noundef %1160)
  br label %1161

1161:                                             ; preds = %1138, %1135
  %1162 = load ptr, ptr %3, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1164 = load i32, ptr %1163, align 4, !tbaa !25
  %1165 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1166 = load i32, ptr %1165, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1162, i32 noundef 4096, i32 noundef %1164, i32 noundef %1166, i32 noundef 63, i64 noundef 0)
  %1167 = load ptr, ptr %3, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1169 = load i32, ptr %1168, align 4, !tbaa !16
  %1170 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1171 = load i32, ptr %1170, align 4, !tbaa !25
  %1172 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1173 = load i32, ptr %1172, align 4, !tbaa !16
  %1174 = load ptr, ptr %8, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1174, i32 0, i32 2
  %1176 = load i32, ptr %1175, align 1, !tbaa !42
  %1177 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1178 = load i32, ptr %1177, align 4, !tbaa !39
  %1179 = mul i32 %1176, %1178
  %1180 = zext i32 %1179 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1167, i32 noundef 4097, i32 noundef %1169, i32 noundef %1171, i32 noundef %1173, i64 noundef %1180)
  br label %1181

1181:                                             ; preds = %1161, %1064
  store i32 32, ptr %17, align 4, !tbaa !9
  %1182 = load ptr, ptr %8, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1182, i32 0, i32 0
  %1184 = load i32, ptr %1183, align 1, !tbaa !35
  %1185 = udiv i32 %1184, 32
  store i32 %1185, ptr %18, align 4, !tbaa !9
  %1186 = load ptr, ptr %8, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1186, i32 0, i32 0
  %1188 = load i32, ptr %1187, align 1, !tbaa !35
  %1189 = urem i32 %1188, 32
  store i32 %1189, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1190

1190:                                             ; preds = %1325, %1181
  %1191 = load i32, ptr %14, align 4, !tbaa !9
  %1192 = icmp ult i32 %1191, 2
  br i1 %1192, label %1193, label %1328

1193:                                             ; preds = %1190
  %1194 = load i32, ptr %19, align 4, !tbaa !9
  %1195 = icmp eq i32 %1194, 0
  br i1 %1195, label %1196, label %1199

1196:                                             ; preds = %1193
  %1197 = load i32, ptr %14, align 4, !tbaa !9
  %1198 = icmp eq i32 %1197, 1
  br i1 %1198, label %1205, label %1199

1199:                                             ; preds = %1196, %1193
  %1200 = load i32, ptr %18, align 4, !tbaa !9
  %1201 = icmp eq i32 %1200, 0
  br i1 %1201, label %1202, label %1206

1202:                                             ; preds = %1199
  %1203 = load i32, ptr %14, align 4, !tbaa !9
  %1204 = icmp eq i32 %1203, 0
  br i1 %1204, label %1205, label %1206

1205:                                             ; preds = %1202, %1196
  br label %1325

1206:                                             ; preds = %1202, %1199
  %1207 = load i32, ptr %14, align 4, !tbaa !9
  %1208 = icmp eq i32 %1207, 0
  br i1 %1208, label %1209, label %1211

1209:                                             ; preds = %1206
  %1210 = load i32, ptr %17, align 4, !tbaa !9
  br label %1213

1211:                                             ; preds = %1206
  %1212 = load i32, ptr %19, align 4, !tbaa !9
  br label %1213

1213:                                             ; preds = %1211, %1209
  %1214 = phi i32 [ %1210, %1209 ], [ %1212, %1211 ]
  store i32 %1214, ptr %20, align 4, !tbaa !9
  %1215 = load ptr, ptr %3, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %1217 = load i32, ptr %1216, align 4, !tbaa !21
  %1218 = load i32, ptr %14, align 4, !tbaa !9
  %1219 = icmp eq i32 %1218, 0
  br i1 %1219, label %1220, label %1224

1220:                                             ; preds = %1213
  %1221 = load i32, ptr %17, align 4, !tbaa !9
  %1222 = load i32, ptr %18, align 4, !tbaa !9
  %1223 = mul i32 %1221, %1222
  br label %1226

1224:                                             ; preds = %1213
  %1225 = load i32, ptr %19, align 4, !tbaa !9
  br label %1226

1226:                                             ; preds = %1224, %1220
  %1227 = phi i32 [ %1223, %1220 ], [ %1225, %1224 ]
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %1215, ptr noundef %6, i32 noundef %1217, i32 noundef %1227)
  %1228 = load ptr, ptr %3, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1230 = load i32, ptr %1229, align 4, !tbaa !17
  %1231 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1232 = load i32, ptr %1231, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1228, i32 noundef 704643079, i32 noundef 63, i32 noundef %1230, i32 noundef %1232, i32 noundef 0, i32 noundef 0)
  %1233 = load ptr, ptr %3, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1235 = load i32, ptr %1234, align 4, !tbaa !17
  %1236 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1237 = load i32, ptr %1236, align 4, !tbaa !24
  %1238 = load ptr, ptr %8, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1238, i32 0, i32 5
  %1240 = load i32, ptr %1239, align 1, !tbaa !44
  %1241 = zext i32 %1240 to i64
  %1242 = mul nsw i64 %1241, 16
  %1243 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1244 = load i32, ptr %1243, align 4, !tbaa !45
  %1245 = zext i32 %1244 to i64
  %1246 = mul nsw i64 %1242, %1245
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1233, i32 noundef 4096, i32 noundef %1235, i32 noundef 43, i32 noundef %1237, i64 noundef %1246)
  %1247 = load ptr, ptr %3, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1249 = load i32, ptr %1248, align 4, !tbaa !17
  %1250 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1251 = load i32, ptr %1250, align 4, !tbaa !24
  %1252 = load i32, ptr %20, align 4, !tbaa !9
  %1253 = load i32, ptr %13, align 4, !tbaa !9
  %1254 = load ptr, ptr %8, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1254, i32 0, i32 5
  %1256 = load i32, ptr %1255, align 1, !tbaa !44
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef %1247, i32 noundef %1249, i32 noundef %1251, i32 noundef %1252, i32 noundef %1253, i32 noundef %1256)
  %1257 = load ptr, ptr %3, align 8, !tbaa !5
  %1258 = load ptr, ptr %8, align 8, !tbaa !5
  %1259 = load i32, ptr %20, align 4, !tbaa !9
  %1260 = load i32, ptr %13, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %1257, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %1258, i32 noundef %1259, i32 noundef %1260, i32 noundef 0, i32 noundef 32)
  %1261 = load ptr, ptr %3, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1263 = load i32, ptr %1262, align 4, !tbaa !28
  %1264 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1265 = load i32, ptr %1264, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1261, i32 noundef 704643079, i32 noundef 63, i32 noundef %1263, i32 noundef %1265, i32 noundef 0, i32 noundef 0)
  %1266 = load ptr, ptr %3, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1268 = load i32, ptr %1267, align 4, !tbaa !17
  %1269 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1270 = load i32, ptr %1269, align 4, !tbaa !24
  %1271 = load ptr, ptr %8, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1271, i32 0, i32 5
  %1273 = load i32, ptr %1272, align 1, !tbaa !44
  %1274 = zext i32 %1273 to i64
  %1275 = mul nsw i64 %1274, 16
  %1276 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1277 = load i32, ptr %1276, align 4, !tbaa !45
  %1278 = zext i32 %1277 to i64
  %1279 = mul nsw i64 %1275, %1278
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1266, i32 noundef 4096, i32 noundef %1268, i32 noundef 43, i32 noundef %1270, i64 noundef %1279)
  %1280 = load ptr, ptr %3, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1282 = load i32, ptr %1281, align 4, !tbaa !17
  %1283 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1284 = load i32, ptr %1283, align 4, !tbaa !24
  %1285 = load i32, ptr %20, align 4, !tbaa !9
  %1286 = load i32, ptr %13, align 4, !tbaa !9
  %1287 = load ptr, ptr %8, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1287, i32 0, i32 5
  %1289 = load i32, ptr %1288, align 1, !tbaa !44
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef %1280, i32 noundef %1282, i32 noundef %1284, i32 noundef %1285, i32 noundef %1286, i32 noundef %1289, i32 noundef 1)
  %1290 = load ptr, ptr %3, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1292 = load i32, ptr %1291, align 4, !tbaa !28
  %1293 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1294 = load i32, ptr %1293, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1290, i32 noundef 704643079, i32 noundef 63, i32 noundef %1292, i32 noundef %1294, i32 noundef 0, i32 noundef 0)
  %1295 = load ptr, ptr %3, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1297 = load i32, ptr %1296, align 4, !tbaa !17
  %1298 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1299 = load i32, ptr %1298, align 4, !tbaa !26
  %1300 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1301 = load i32, ptr %1300, align 4, !tbaa !17
  %1302 = load i32, ptr %20, align 4, !tbaa !9
  %1303 = zext i32 %1302 to i64
  %1304 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1305 = load i32, ptr %1304, align 4, !tbaa !45
  %1306 = zext i32 %1305 to i64
  %1307 = mul nsw i64 %1303, %1306
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1295, i32 noundef 4096, i32 noundef %1297, i32 noundef %1299, i32 noundef %1301, i64 noundef %1307)
  %1308 = load ptr, ptr %3, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1310 = load i32, ptr %1309, align 4, !tbaa !15
  %1311 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1312 = load i32, ptr %1311, align 4, !tbaa !24
  %1313 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1314 = load i32, ptr %1313, align 4, !tbaa !15
  %1315 = load i32, ptr %20, align 4, !tbaa !9
  %1316 = zext i32 %1315 to i64
  %1317 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1318 = load i32, ptr %1317, align 4, !tbaa !39
  %1319 = zext i32 %1318 to i64
  %1320 = mul nsw i64 %1316, %1319
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1308, i32 noundef 4096, i32 noundef %1310, i32 noundef %1312, i32 noundef %1314, i64 noundef %1320)
  %1321 = load ptr, ptr %3, align 8, !tbaa !5
  %1322 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %1323 = load i32, ptr %1322, align 4, !tbaa !21
  %1324 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1321, ptr noundef %6, i32 noundef %1323, i32 noundef %1324)
  br label %1325

1325:                                             ; preds = %1226, %1205
  %1326 = load i32, ptr %14, align 4, !tbaa !9
  %1327 = add i32 %1326, 1
  store i32 %1327, ptr %14, align 4, !tbaa !9
  br label %1190, !llvm.loop !48

1328:                                             ; preds = %1190
  br label %2201

1329:                                             ; preds = %1061, %1058
  %1330 = load i32, ptr %13, align 4, !tbaa !9
  %1331 = icmp ugt i32 %1330, 32
  br i1 %1331, label %1332, label %1974

1332:                                             ; preds = %1329
  %1333 = load i32, ptr %13, align 4, !tbaa !9
  %1334 = icmp ule i32 %1333, 48
  br i1 %1334, label %1335, label %1974

1335:                                             ; preds = %1332
  %1336 = load ptr, ptr %8, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1336, i32 0, i32 0
  %1338 = load i32, ptr %1337, align 1, !tbaa !35
  %1339 = icmp ugt i32 %1338, 16
  br i1 %1339, label %1340, label %1974

1340:                                             ; preds = %1335
  %1341 = load ptr, ptr %8, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1341, i32 0, i32 6
  %1343 = load i32, ptr %1342, align 1, !tbaa !38
  %1344 = and i32 %1343, 2
  %1345 = icmp eq i32 %1344, 0
  br i1 %1345, label %1346, label %1446

1346:                                             ; preds = %1340
  %1347 = load ptr, ptr %3, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1349 = load i32, ptr %1348, align 4, !tbaa !25
  %1350 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1351 = load i32, ptr %1350, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1347, i32 noundef 4096, i32 noundef 63, i32 noundef %1349, i32 noundef %1351, i64 noundef 0)
  %1352 = load ptr, ptr %3, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1354 = load i32, ptr %1353, align 4, !tbaa !25
  %1355 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1356 = load i32, ptr %1355, align 4, !tbaa !39
  %1357 = zext i32 %1356 to i64
  %1358 = mul nsw i64 64, %1357
  %1359 = load ptr, ptr %8, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1359, i32 0, i32 2
  %1361 = load i32, ptr %1360, align 1, !tbaa !42
  %1362 = zext i32 %1361 to i64
  %1363 = mul nsw i64 %1358, %1362
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1352, i32 noundef 4097, i32 noundef 63, i32 noundef %1354, i32 noundef 63, i64 noundef %1363)
  %1364 = load ptr, ptr %3, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1366 = load i32, ptr %1365, align 4, !tbaa !25
  %1367 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %1368 = load i32, ptr %1367, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1364, i32 noundef 4096, i32 noundef 63, i32 noundef %1366, i32 noundef %1368, i64 noundef 0)
  %1369 = load ptr, ptr %3, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1371 = load i32, ptr %1370, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1369, i32 noundef 4096, i32 noundef 63, i32 noundef %1371, i32 noundef 58, i64 noundef 0)
  %1372 = load ptr, ptr %8, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1372, i32 0, i32 2
  %1374 = load i32, ptr %1373, align 1, !tbaa !42
  %1375 = udiv i32 %1374, 16
  store i32 %1375, ptr %15, align 4, !tbaa !9
  %1376 = load ptr, ptr %8, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1376, i32 0, i32 2
  %1378 = load i32, ptr %1377, align 1, !tbaa !42
  %1379 = urem i32 %1378, 16
  store i32 %1379, ptr %16, align 4, !tbaa !9
  %1380 = load i32, ptr %15, align 4, !tbaa !9
  %1381 = icmp ugt i32 %1380, 0
  br i1 %1381, label %1382, label %1410

1382:                                             ; preds = %1346
  %1383 = load ptr, ptr %3, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1385 = load i32, ptr %1384, align 4, !tbaa !26
  %1386 = load i32, ptr %15, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %1383, ptr noundef %6, i32 noundef %1385, i32 noundef %1386)
  %1387 = load ptr, ptr %3, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1389 = load i32, ptr %1388, align 4, !tbaa !16
  %1390 = load ptr, ptr %8, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1390, i32 0, i32 4
  %1392 = load i32, ptr %1391, align 1, !tbaa !43
  %1393 = load i32, ptr %13, align 4, !tbaa !9
  %1394 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1395 = load i32, ptr %1394, align 4, !tbaa !24
  call void @libxsmm_generator_sme_transpose_64(ptr noundef %1387, i32 noundef %1389, i32 noundef %1392, i32 noundef 0, i32 noundef %1393, i32 noundef %1395)
  %1396 = load ptr, ptr %3, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1398 = load i32, ptr %1397, align 4, !tbaa !16
  %1399 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1400 = load i32, ptr %1399, align 4, !tbaa !24
  %1401 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1402 = load i32, ptr %1401, align 4, !tbaa !16
  %1403 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1404 = load i32, ptr %1403, align 4, !tbaa !39
  %1405 = mul i32 16, %1404
  %1406 = zext i32 %1405 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1396, i32 noundef 4096, i32 noundef %1398, i32 noundef %1400, i32 noundef %1402, i64 noundef %1406)
  %1407 = load ptr, ptr %3, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1409 = load i32, ptr %1408, align 4, !tbaa !26
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1407, ptr noundef %6, i32 noundef %1409, i32 noundef 1)
  br label %1410

1410:                                             ; preds = %1382, %1346
  %1411 = load i32, ptr %16, align 4, !tbaa !9
  %1412 = icmp ugt i32 %1411, 0
  br i1 %1412, label %1413, label %1424

1413:                                             ; preds = %1410
  %1414 = load ptr, ptr %3, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1416 = load i32, ptr %1415, align 4, !tbaa !16
  %1417 = load ptr, ptr %8, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1417, i32 0, i32 4
  %1419 = load i32, ptr %1418, align 1, !tbaa !43
  %1420 = load i32, ptr %16, align 4, !tbaa !9
  %1421 = load i32, ptr %13, align 4, !tbaa !9
  %1422 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1423 = load i32, ptr %1422, align 4, !tbaa !24
  call void @libxsmm_generator_sme_transpose_64(ptr noundef %1414, i32 noundef %1416, i32 noundef %1419, i32 noundef %1420, i32 noundef %1421, i32 noundef %1423)
  br label %1424

1424:                                             ; preds = %1413, %1410
  %1425 = load ptr, ptr %3, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1427 = load i32, ptr %1426, align 4, !tbaa !25
  %1428 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1429 = load i32, ptr %1428, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1425, i32 noundef 4096, i32 noundef %1427, i32 noundef %1429, i32 noundef 63, i64 noundef 0)
  %1430 = load ptr, ptr %3, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1432 = load i32, ptr %1431, align 4, !tbaa !16
  %1433 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1434 = load i32, ptr %1433, align 4, !tbaa !24
  %1435 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1436 = load i32, ptr %1435, align 4, !tbaa !16
  %1437 = load ptr, ptr %8, align 8, !tbaa !5
  %1438 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1437, i32 0, i32 2
  %1439 = load i32, ptr %1438, align 1, !tbaa !42
  %1440 = load i32, ptr %16, align 4, !tbaa !9
  %1441 = sub i32 %1439, %1440
  %1442 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1443 = load i32, ptr %1442, align 4, !tbaa !39
  %1444 = mul i32 %1441, %1443
  %1445 = zext i32 %1444 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1430, i32 noundef 4097, i32 noundef %1432, i32 noundef %1434, i32 noundef %1436, i64 noundef %1445)
  br label %1446

1446:                                             ; preds = %1424, %1340
  store i32 32, ptr %17, align 4, !tbaa !9
  %1447 = load ptr, ptr %8, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1447, i32 0, i32 0
  %1449 = load i32, ptr %1448, align 1, !tbaa !35
  %1450 = udiv i32 %1449, 32
  store i32 %1450, ptr %18, align 4, !tbaa !9
  %1451 = load ptr, ptr %8, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1451, i32 0, i32 0
  %1453 = load i32, ptr %1452, align 1, !tbaa !35
  %1454 = urem i32 %1453, 32
  store i32 %1454, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1455

1455:                                             ; preds = %1599, %1446
  %1456 = load i32, ptr %14, align 4, !tbaa !9
  %1457 = icmp ult i32 %1456, 2
  br i1 %1457, label %1458, label %1602

1458:                                             ; preds = %1455
  %1459 = load i32, ptr %19, align 4, !tbaa !9
  %1460 = icmp eq i32 %1459, 0
  br i1 %1460, label %1461, label %1464

1461:                                             ; preds = %1458
  %1462 = load i32, ptr %14, align 4, !tbaa !9
  %1463 = icmp eq i32 %1462, 1
  br i1 %1463, label %1479, label %1464

1464:                                             ; preds = %1461, %1458
  %1465 = load i32, ptr %18, align 4, !tbaa !9
  %1466 = icmp eq i32 %1465, 0
  br i1 %1466, label %1467, label %1470

1467:                                             ; preds = %1464
  %1468 = load i32, ptr %14, align 4, !tbaa !9
  %1469 = icmp eq i32 %1468, 0
  br i1 %1469, label %1479, label %1470

1470:                                             ; preds = %1467, %1464
  %1471 = load i32, ptr %14, align 4, !tbaa !9
  %1472 = icmp eq i32 %1471, 1
  br i1 %1472, label %1473, label %1480

1473:                                             ; preds = %1470
  %1474 = load ptr, ptr %8, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1474, i32 0, i32 0
  %1476 = load i32, ptr %1475, align 1, !tbaa !35
  %1477 = urem i32 %1476, 32
  %1478 = icmp ule i32 %1477, 16
  br i1 %1478, label %1479, label %1480

1479:                                             ; preds = %1473, %1467, %1461
  br label %1599

1480:                                             ; preds = %1473, %1470
  %1481 = load i32, ptr %14, align 4, !tbaa !9
  %1482 = icmp eq i32 %1481, 0
  br i1 %1482, label %1483, label %1485

1483:                                             ; preds = %1480
  %1484 = load i32, ptr %17, align 4, !tbaa !9
  br label %1487

1485:                                             ; preds = %1480
  %1486 = load i32, ptr %19, align 4, !tbaa !9
  br label %1487

1487:                                             ; preds = %1485, %1483
  %1488 = phi i32 [ %1484, %1483 ], [ %1486, %1485 ]
  store i32 %1488, ptr %20, align 4, !tbaa !9
  %1489 = load ptr, ptr %3, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %1491 = load i32, ptr %1490, align 4, !tbaa !21
  %1492 = load i32, ptr %14, align 4, !tbaa !9
  %1493 = icmp eq i32 %1492, 0
  br i1 %1493, label %1494, label %1498

1494:                                             ; preds = %1487
  %1495 = load i32, ptr %17, align 4, !tbaa !9
  %1496 = load i32, ptr %18, align 4, !tbaa !9
  %1497 = mul i32 %1495, %1496
  br label %1500

1498:                                             ; preds = %1487
  %1499 = load i32, ptr %19, align 4, !tbaa !9
  br label %1500

1500:                                             ; preds = %1498, %1494
  %1501 = phi i32 [ %1497, %1494 ], [ %1499, %1498 ]
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %1489, ptr noundef %6, i32 noundef %1491, i32 noundef %1501)
  %1502 = load ptr, ptr %3, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1504 = load i32, ptr %1503, align 4, !tbaa !17
  %1505 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1506 = load i32, ptr %1505, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1502, i32 noundef 704643079, i32 noundef 63, i32 noundef %1504, i32 noundef %1506, i32 noundef 0, i32 noundef 0)
  %1507 = load ptr, ptr %3, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1509 = load i32, ptr %1508, align 4, !tbaa !17
  %1510 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1511 = load i32, ptr %1510, align 4, !tbaa !24
  %1512 = load ptr, ptr %8, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1512, i32 0, i32 5
  %1514 = load i32, ptr %1513, align 1, !tbaa !44
  %1515 = zext i32 %1514 to i64
  %1516 = mul nsw i64 %1515, 16
  %1517 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1518 = load i32, ptr %1517, align 4, !tbaa !45
  %1519 = zext i32 %1518 to i64
  %1520 = mul nsw i64 %1516, %1519
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1507, i32 noundef 4096, i32 noundef %1509, i32 noundef 43, i32 noundef %1511, i64 noundef %1520)
  %1521 = load ptr, ptr %3, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1523 = load i32, ptr %1522, align 4, !tbaa !17
  %1524 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1525 = load i32, ptr %1524, align 4, !tbaa !24
  %1526 = load i32, ptr %20, align 4, !tbaa !9
  %1527 = load i32, ptr %13, align 4, !tbaa !9
  %1528 = load ptr, ptr %8, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1528, i32 0, i32 5
  %1530 = load i32, ptr %1529, align 1, !tbaa !44
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef %1521, i32 noundef %1523, i32 noundef %1525, i32 noundef %1526, i32 noundef %1527, i32 noundef %1530)
  %1531 = load ptr, ptr %3, align 8, !tbaa !5
  %1532 = load ptr, ptr %8, align 8, !tbaa !5
  %1533 = load i32, ptr %20, align 4, !tbaa !9
  %1534 = load i32, ptr %13, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %1531, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %1532, i32 noundef %1533, i32 noundef %1534, i32 noundef 0, i32 noundef 64)
  %1535 = load ptr, ptr %3, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1537 = load i32, ptr %1536, align 4, !tbaa !28
  %1538 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1539 = load i32, ptr %1538, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1535, i32 noundef 704643079, i32 noundef 63, i32 noundef %1537, i32 noundef %1539, i32 noundef 0, i32 noundef 0)
  %1540 = load ptr, ptr %3, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1542 = load i32, ptr %1541, align 4, !tbaa !17
  %1543 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1544 = load i32, ptr %1543, align 4, !tbaa !24
  %1545 = load ptr, ptr %8, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1545, i32 0, i32 5
  %1547 = load i32, ptr %1546, align 1, !tbaa !44
  %1548 = zext i32 %1547 to i64
  %1549 = mul nsw i64 %1548, 16
  %1550 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1551 = load i32, ptr %1550, align 4, !tbaa !45
  %1552 = zext i32 %1551 to i64
  %1553 = mul nsw i64 %1549, %1552
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1540, i32 noundef 4096, i32 noundef %1542, i32 noundef 43, i32 noundef %1544, i64 noundef %1553)
  %1554 = load ptr, ptr %3, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1556 = load i32, ptr %1555, align 4, !tbaa !17
  %1557 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1558 = load i32, ptr %1557, align 4, !tbaa !24
  %1559 = load i32, ptr %20, align 4, !tbaa !9
  %1560 = load i32, ptr %13, align 4, !tbaa !9
  %1561 = load ptr, ptr %8, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1561, i32 0, i32 5
  %1563 = load i32, ptr %1562, align 1, !tbaa !44
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef %1554, i32 noundef %1556, i32 noundef %1558, i32 noundef %1559, i32 noundef %1560, i32 noundef %1563, i32 noundef 1)
  %1564 = load ptr, ptr %3, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1566 = load i32, ptr %1565, align 4, !tbaa !28
  %1567 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1568 = load i32, ptr %1567, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1564, i32 noundef 704643079, i32 noundef 63, i32 noundef %1566, i32 noundef %1568, i32 noundef 0, i32 noundef 0)
  %1569 = load ptr, ptr %3, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1571 = load i32, ptr %1570, align 4, !tbaa !17
  %1572 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1573 = load i32, ptr %1572, align 4, !tbaa !26
  %1574 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1575 = load i32, ptr %1574, align 4, !tbaa !17
  %1576 = load i32, ptr %20, align 4, !tbaa !9
  %1577 = zext i32 %1576 to i64
  %1578 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1579 = load i32, ptr %1578, align 4, !tbaa !45
  %1580 = zext i32 %1579 to i64
  %1581 = mul nsw i64 %1577, %1580
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1569, i32 noundef 4096, i32 noundef %1571, i32 noundef %1573, i32 noundef %1575, i64 noundef %1581)
  %1582 = load ptr, ptr %3, align 8, !tbaa !5
  %1583 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1584 = load i32, ptr %1583, align 4, !tbaa !15
  %1585 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1586 = load i32, ptr %1585, align 4, !tbaa !24
  %1587 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1588 = load i32, ptr %1587, align 4, !tbaa !15
  %1589 = load i32, ptr %20, align 4, !tbaa !9
  %1590 = zext i32 %1589 to i64
  %1591 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1592 = load i32, ptr %1591, align 4, !tbaa !39
  %1593 = zext i32 %1592 to i64
  %1594 = mul nsw i64 %1590, %1593
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1582, i32 noundef 4096, i32 noundef %1584, i32 noundef %1586, i32 noundef %1588, i64 noundef %1594)
  %1595 = load ptr, ptr %3, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %1597 = load i32, ptr %1596, align 4, !tbaa !21
  %1598 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1595, ptr noundef %6, i32 noundef %1597, i32 noundef %1598)
  br label %1599

1599:                                             ; preds = %1500, %1479
  %1600 = load i32, ptr %14, align 4, !tbaa !9
  %1601 = add i32 %1600, 1
  store i32 %1601, ptr %14, align 4, !tbaa !9
  br label %1455, !llvm.loop !49

1602:                                             ; preds = %1455
  %1603 = load ptr, ptr %8, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1603, i32 0, i32 0
  %1605 = load i32, ptr %1604, align 1, !tbaa !35
  %1606 = urem i32 %1605, 32
  %1607 = icmp ugt i32 %1606, 0
  br i1 %1607, label %1608, label %1659

1608:                                             ; preds = %1602
  %1609 = load ptr, ptr %8, align 8, !tbaa !5
  %1610 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1609, i32 0, i32 0
  %1611 = load i32, ptr %1610, align 1, !tbaa !35
  %1612 = urem i32 %1611, 32
  %1613 = icmp ule i32 %1612, 16
  br i1 %1613, label %1614, label %1659

1614:                                             ; preds = %1608
  %1615 = load ptr, ptr %3, align 8, !tbaa !5
  %1616 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1617 = load i32, ptr %1616, align 4, !tbaa !17
  %1618 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1619 = load i32, ptr %1618, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1615, i32 noundef 704643079, i32 noundef 63, i32 noundef %1617, i32 noundef %1619, i32 noundef 0, i32 noundef 0)
  %1620 = load ptr, ptr %3, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1622 = load i32, ptr %1621, align 4, !tbaa !17
  %1623 = load ptr, ptr %8, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1623, i32 0, i32 0
  %1625 = load i32, ptr %1624, align 1, !tbaa !35
  %1626 = urem i32 %1625, 32
  %1627 = load i32, ptr %13, align 4, !tbaa !9
  %1628 = load ptr, ptr %8, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1628, i32 0, i32 5
  %1630 = load i32, ptr %1629, align 1, !tbaa !44
  call void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef %1620, i32 noundef %1622, i32 noundef %1626, i32 noundef %1627, i32 noundef %1630)
  %1631 = load ptr, ptr %3, align 8, !tbaa !5
  %1632 = load ptr, ptr %8, align 8, !tbaa !5
  %1633 = load ptr, ptr %8, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1633, i32 0, i32 0
  %1635 = load i32, ptr %1634, align 1, !tbaa !35
  %1636 = urem i32 %1635, 32
  %1637 = load i32, ptr %13, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %1631, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %1632, i32 noundef %1636, i32 noundef %1637, i32 noundef 2, i32 noundef 64)
  %1638 = load ptr, ptr %3, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1640 = load i32, ptr %1639, align 4, !tbaa !28
  %1641 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1642 = load i32, ptr %1641, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1638, i32 noundef 704643079, i32 noundef 63, i32 noundef %1640, i32 noundef %1642, i32 noundef 0, i32 noundef 0)
  %1643 = load ptr, ptr %3, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1645 = load i32, ptr %1644, align 4, !tbaa !17
  %1646 = load ptr, ptr %8, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1646, i32 0, i32 0
  %1648 = load i32, ptr %1647, align 1, !tbaa !35
  %1649 = urem i32 %1648, 32
  %1650 = load i32, ptr %13, align 4, !tbaa !9
  %1651 = load ptr, ptr %8, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1651, i32 0, i32 5
  %1653 = load i32, ptr %1652, align 1, !tbaa !44
  call void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef %1643, i32 noundef %1645, i32 noundef %1649, i32 noundef %1650, i32 noundef %1653)
  %1654 = load ptr, ptr %3, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1656 = load i32, ptr %1655, align 4, !tbaa !28
  %1657 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1658 = load i32, ptr %1657, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1654, i32 noundef 704643079, i32 noundef 63, i32 noundef %1656, i32 noundef %1658, i32 noundef 0, i32 noundef 0)
  br label %1659

1659:                                             ; preds = %1614, %1608, %1602
  %1660 = load ptr, ptr %8, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1660, i32 0, i32 0
  %1662 = load i32, ptr %1661, align 1, !tbaa !35
  %1663 = urem i32 %1662, 32
  %1664 = icmp ugt i32 %1663, 0
  br i1 %1664, label %1665, label %1702

1665:                                             ; preds = %1659
  %1666 = load ptr, ptr %8, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1666, i32 0, i32 0
  %1668 = load i32, ptr %1667, align 1, !tbaa !35
  %1669 = urem i32 %1668, 32
  %1670 = icmp ule i32 %1669, 16
  br i1 %1670, label %1671, label %1702

1671:                                             ; preds = %1665
  %1672 = load ptr, ptr %3, align 8, !tbaa !5
  %1673 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1674 = load i32, ptr %1673, align 4, !tbaa !15
  %1675 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1676 = load i32, ptr %1675, align 4, !tbaa !24
  %1677 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1678 = load i32, ptr %1677, align 4, !tbaa !15
  %1679 = load i32, ptr %18, align 4, !tbaa !9
  %1680 = icmp ugt i32 %1679, 0
  br i1 %1680, label %1681, label %1691

1681:                                             ; preds = %1671
  %1682 = load i32, ptr %17, align 4, !tbaa !9
  %1683 = zext i32 %1682 to i64
  %1684 = load i32, ptr %18, align 4, !tbaa !9
  %1685 = zext i32 %1684 to i64
  %1686 = mul nsw i64 %1683, %1685
  %1687 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1688 = load i32, ptr %1687, align 4, !tbaa !39
  %1689 = zext i32 %1688 to i64
  %1690 = mul nsw i64 %1686, %1689
  br label %1700

1691:                                             ; preds = %1671
  %1692 = load ptr, ptr %8, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1692, i32 0, i32 0
  %1694 = load i32, ptr %1693, align 1, !tbaa !35
  %1695 = zext i32 %1694 to i64
  %1696 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1697 = load i32, ptr %1696, align 4, !tbaa !39
  %1698 = zext i32 %1697 to i64
  %1699 = mul nsw i64 %1695, %1698
  br label %1700

1700:                                             ; preds = %1691, %1681
  %1701 = phi i64 [ %1690, %1681 ], [ %1699, %1691 ]
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1672, i32 noundef 4097, i32 noundef %1674, i32 noundef %1676, i32 noundef %1678, i64 noundef %1701)
  br label %1718

1702:                                             ; preds = %1665, %1659
  %1703 = load ptr, ptr %3, align 8, !tbaa !5
  %1704 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1705 = load i32, ptr %1704, align 4, !tbaa !15
  %1706 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1707 = load i32, ptr %1706, align 4, !tbaa !24
  %1708 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1709 = load i32, ptr %1708, align 4, !tbaa !15
  %1710 = load ptr, ptr %8, align 8, !tbaa !5
  %1711 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1710, i32 0, i32 0
  %1712 = load i32, ptr %1711, align 1, !tbaa !35
  %1713 = zext i32 %1712 to i64
  %1714 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1715 = load i32, ptr %1714, align 4, !tbaa !39
  %1716 = zext i32 %1715 to i64
  %1717 = mul nsw i64 %1713, %1716
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1703, i32 noundef 4097, i32 noundef %1705, i32 noundef %1707, i32 noundef %1709, i64 noundef %1717)
  br label %1718

1718:                                             ; preds = %1702, %1700
  %1719 = load ptr, ptr %8, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1719, i32 0, i32 6
  %1721 = load i32, ptr %1720, align 1, !tbaa !38
  %1722 = and i32 %1721, 2
  %1723 = icmp ugt i32 %1722, 0
  br i1 %1723, label %1724, label %1736

1724:                                             ; preds = %1718
  %1725 = load ptr, ptr %3, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1727 = load i32, ptr %1726, align 4, !tbaa !16
  %1728 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1729 = load i32, ptr %1728, align 4, !tbaa !25
  %1730 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %1731 = load i32, ptr %1730, align 4, !tbaa !16
  %1732 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1733 = load i32, ptr %1732, align 4, !tbaa !39
  %1734 = zext i32 %1733 to i64
  %1735 = mul nsw i64 32, %1734
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1725, i32 noundef 4096, i32 noundef %1727, i32 noundef %1729, i32 noundef %1731, i64 noundef %1735)
  br label %1748

1736:                                             ; preds = %1718
  %1737 = load ptr, ptr %3, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %1739 = load i32, ptr %1738, align 4, !tbaa !18
  %1740 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1741 = load i32, ptr %1740, align 4, !tbaa !25
  %1742 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %1743 = load i32, ptr %1742, align 4, !tbaa !18
  %1744 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1745 = load i32, ptr %1744, align 4, !tbaa !39
  %1746 = zext i32 %1745 to i64
  %1747 = mul nsw i64 32, %1746
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1737, i32 noundef 4096, i32 noundef %1739, i32 noundef %1741, i32 noundef %1743, i64 noundef %1747)
  br label %1748

1748:                                             ; preds = %1736, %1724
  %1749 = load ptr, ptr %3, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1751 = load i32, ptr %1750, align 4, !tbaa !17
  %1752 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1753 = load i32, ptr %1752, align 4, !tbaa !26
  %1754 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1755 = load i32, ptr %1754, align 4, !tbaa !17
  %1756 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1757 = load i32, ptr %1756, align 4, !tbaa !45
  %1758 = mul i32 32, %1757
  %1759 = load ptr, ptr %8, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1759, i32 0, i32 5
  %1761 = load i32, ptr %1760, align 1, !tbaa !44
  %1762 = mul i32 %1758, %1761
  %1763 = zext i32 %1762 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1749, i32 noundef 4096, i32 noundef %1751, i32 noundef %1753, i32 noundef %1755, i64 noundef %1763)
  %1764 = load ptr, ptr %8, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1764, i32 0, i32 0
  %1766 = load i32, ptr %1765, align 1, !tbaa !35
  %1767 = urem i32 %1766, 32
  %1768 = icmp ugt i32 %1767, 0
  br i1 %1768, label %1769, label %1790

1769:                                             ; preds = %1748
  %1770 = load ptr, ptr %8, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1770, i32 0, i32 0
  %1772 = load i32, ptr %1771, align 1, !tbaa !35
  %1773 = urem i32 %1772, 32
  %1774 = icmp ule i32 %1773, 16
  br i1 %1774, label %1775, label %1790

1775:                                             ; preds = %1769
  %1776 = load ptr, ptr %3, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1778 = load i32, ptr %1777, align 4, !tbaa !17
  %1779 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1780 = load i32, ptr %1779, align 4, !tbaa !26
  %1781 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1782 = load i32, ptr %1781, align 4, !tbaa !17
  %1783 = load i32, ptr %18, align 4, !tbaa !9
  %1784 = zext i32 %1783 to i64
  %1785 = mul nsw i64 %1784, 32
  %1786 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1787 = load i32, ptr %1786, align 4, !tbaa !45
  %1788 = zext i32 %1787 to i64
  %1789 = mul nsw i64 %1785, %1788
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1776, i32 noundef 4097, i32 noundef %1778, i32 noundef %1780, i32 noundef %1782, i64 noundef %1789)
  br label %1806

1790:                                             ; preds = %1769, %1748
  %1791 = load ptr, ptr %3, align 8, !tbaa !5
  %1792 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1793 = load i32, ptr %1792, align 4, !tbaa !17
  %1794 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1795 = load i32, ptr %1794, align 4, !tbaa !26
  %1796 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1797 = load i32, ptr %1796, align 4, !tbaa !17
  %1798 = load ptr, ptr %8, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1798, i32 0, i32 0
  %1800 = load i32, ptr %1799, align 1, !tbaa !35
  %1801 = zext i32 %1800 to i64
  %1802 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1803 = load i32, ptr %1802, align 4, !tbaa !45
  %1804 = zext i32 %1803 to i64
  %1805 = mul nsw i64 %1801, %1804
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1791, i32 noundef 4097, i32 noundef %1793, i32 noundef %1795, i32 noundef %1797, i64 noundef %1805)
  br label %1806

1806:                                             ; preds = %1790, %1775
  store i32 64, ptr %17, align 4, !tbaa !9
  %1807 = load ptr, ptr %8, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1807, i32 0, i32 0
  %1809 = load i32, ptr %1808, align 1, !tbaa !35
  %1810 = udiv i32 %1809, 64
  store i32 %1810, ptr %18, align 4, !tbaa !9
  %1811 = load ptr, ptr %8, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1811, i32 0, i32 0
  %1813 = load i32, ptr %1812, align 1, !tbaa !35
  %1814 = urem i32 %1813, 64
  store i32 %1814, ptr %19, align 4, !tbaa !9
  %1815 = load ptr, ptr %8, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1815, i32 0, i32 0
  %1817 = load i32, ptr %1816, align 1, !tbaa !35
  %1818 = urem i32 %1817, 32
  %1819 = icmp ule i32 %1818, 16
  br i1 %1819, label %1820, label %1835

1820:                                             ; preds = %1806
  %1821 = load ptr, ptr %8, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1821, i32 0, i32 0
  %1823 = load i32, ptr %1822, align 1, !tbaa !35
  %1824 = urem i32 %1823, 32
  %1825 = icmp ne i32 %1824, 0
  br i1 %1825, label %1826, label %1835

1826:                                             ; preds = %1820
  %1827 = load ptr, ptr %8, align 8, !tbaa !5
  %1828 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1827, i32 0, i32 0
  %1829 = load i32, ptr %1828, align 1, !tbaa !35
  %1830 = urem i32 %1829, 64
  %1831 = icmp ugt i32 %1830, 32
  br i1 %1831, label %1832, label %1833

1832:                                             ; preds = %1826
  store i32 32, ptr %19, align 4, !tbaa !9
  br label %1834

1833:                                             ; preds = %1826
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1834

1834:                                             ; preds = %1833, %1832
  br label %1835

1835:                                             ; preds = %1834, %1820, %1806
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1836

1836:                                             ; preds = %1970, %1835
  %1837 = load i32, ptr %14, align 4, !tbaa !9
  %1838 = icmp ult i32 %1837, 2
  br i1 %1838, label %1839, label %1973

1839:                                             ; preds = %1836
  %1840 = load i32, ptr %19, align 4, !tbaa !9
  %1841 = icmp eq i32 %1840, 0
  br i1 %1841, label %1842, label %1845

1842:                                             ; preds = %1839
  %1843 = load i32, ptr %14, align 4, !tbaa !9
  %1844 = icmp eq i32 %1843, 1
  br i1 %1844, label %1851, label %1845

1845:                                             ; preds = %1842, %1839
  %1846 = load i32, ptr %18, align 4, !tbaa !9
  %1847 = icmp eq i32 %1846, 0
  br i1 %1847, label %1848, label %1852

1848:                                             ; preds = %1845
  %1849 = load i32, ptr %14, align 4, !tbaa !9
  %1850 = icmp eq i32 %1849, 0
  br i1 %1850, label %1851, label %1852

1851:                                             ; preds = %1848, %1842
  br label %1970

1852:                                             ; preds = %1848, %1845
  %1853 = load i32, ptr %14, align 4, !tbaa !9
  %1854 = icmp eq i32 %1853, 0
  br i1 %1854, label %1855, label %1857

1855:                                             ; preds = %1852
  %1856 = load i32, ptr %17, align 4, !tbaa !9
  br label %1859

1857:                                             ; preds = %1852
  %1858 = load i32, ptr %19, align 4, !tbaa !9
  br label %1859

1859:                                             ; preds = %1857, %1855
  %1860 = phi i32 [ %1856, %1855 ], [ %1858, %1857 ]
  store i32 %1860, ptr %20, align 4, !tbaa !9
  %1861 = load ptr, ptr %3, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %1863 = load i32, ptr %1862, align 4, !tbaa !21
  %1864 = load i32, ptr %14, align 4, !tbaa !9
  %1865 = icmp eq i32 %1864, 0
  br i1 %1865, label %1866, label %1870

1866:                                             ; preds = %1859
  %1867 = load i32, ptr %17, align 4, !tbaa !9
  %1868 = load i32, ptr %18, align 4, !tbaa !9
  %1869 = mul i32 %1867, %1868
  br label %1872

1870:                                             ; preds = %1859
  %1871 = load i32, ptr %19, align 4, !tbaa !9
  br label %1872

1872:                                             ; preds = %1870, %1866
  %1873 = phi i32 [ %1869, %1866 ], [ %1871, %1870 ]
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %1861, ptr noundef %6, i32 noundef %1863, i32 noundef %1873)
  %1874 = load ptr, ptr %3, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1876 = load i32, ptr %1875, align 4, !tbaa !17
  %1877 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1878 = load i32, ptr %1877, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1874, i32 noundef 704643079, i32 noundef 63, i32 noundef %1876, i32 noundef %1878, i32 noundef 0, i32 noundef 0)
  %1879 = load ptr, ptr %3, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1881 = load i32, ptr %1880, align 4, !tbaa !17
  %1882 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1883 = load i32, ptr %1882, align 4, !tbaa !24
  %1884 = load ptr, ptr %8, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1884, i32 0, i32 5
  %1886 = load i32, ptr %1885, align 1, !tbaa !44
  %1887 = zext i32 %1886 to i64
  %1888 = mul nsw i64 %1887, 16
  %1889 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1890 = load i32, ptr %1889, align 4, !tbaa !45
  %1891 = zext i32 %1890 to i64
  %1892 = mul nsw i64 %1888, %1891
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1879, i32 noundef 4096, i32 noundef %1881, i32 noundef 43, i32 noundef %1883, i64 noundef %1892)
  %1893 = load ptr, ptr %3, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1895 = load i32, ptr %1894, align 4, !tbaa !17
  %1896 = load i32, ptr %20, align 4, !tbaa !9
  %1897 = load i32, ptr %13, align 4, !tbaa !9
  %1898 = sub i32 %1897, 32
  %1899 = load ptr, ptr %8, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1899, i32 0, i32 5
  %1901 = load i32, ptr %1900, align 1, !tbaa !44
  call void @libxsmm_generator_load_64x16_aarch64_sme(ptr noundef %1893, i32 noundef %1895, i32 noundef %1896, i32 noundef %1898, i32 noundef %1901)
  %1902 = load ptr, ptr %3, align 8, !tbaa !5
  %1903 = load ptr, ptr %8, align 8, !tbaa !5
  %1904 = load i32, ptr %20, align 4, !tbaa !9
  %1905 = load i32, ptr %13, align 4, !tbaa !9
  %1906 = sub i32 %1905, 32
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %1902, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %1903, i32 noundef %1904, i32 noundef %1906, i32 noundef 1, i32 noundef 64)
  %1907 = load ptr, ptr %3, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1909 = load i32, ptr %1908, align 4, !tbaa !28
  %1910 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1911 = load i32, ptr %1910, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1907, i32 noundef 704643079, i32 noundef 63, i32 noundef %1909, i32 noundef %1911, i32 noundef 0, i32 noundef 0)
  %1912 = load ptr, ptr %3, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1914 = load i32, ptr %1913, align 4, !tbaa !17
  %1915 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1916 = load i32, ptr %1915, align 4, !tbaa !24
  %1917 = load ptr, ptr %8, align 8, !tbaa !5
  %1918 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1917, i32 0, i32 5
  %1919 = load i32, ptr %1918, align 1, !tbaa !44
  %1920 = zext i32 %1919 to i64
  %1921 = mul nsw i64 %1920, 16
  %1922 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1923 = load i32, ptr %1922, align 4, !tbaa !45
  %1924 = zext i32 %1923 to i64
  %1925 = mul nsw i64 %1921, %1924
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1912, i32 noundef 4096, i32 noundef %1914, i32 noundef 43, i32 noundef %1916, i64 noundef %1925)
  %1926 = load ptr, ptr %3, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1928 = load i32, ptr %1927, align 4, !tbaa !17
  %1929 = load i32, ptr %20, align 4, !tbaa !9
  %1930 = load i32, ptr %13, align 4, !tbaa !9
  %1931 = sub i32 %1930, 32
  %1932 = load ptr, ptr %8, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1932, i32 0, i32 5
  %1934 = load i32, ptr %1933, align 1, !tbaa !44
  call void @libxsmm_generated_store_64x16_aarch64_sme(ptr noundef %1926, i32 noundef %1928, i32 noundef %1929, i32 noundef %1931, i32 noundef %1934)
  %1935 = load ptr, ptr %3, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %1937 = load i32, ptr %1936, align 4, !tbaa !28
  %1938 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1939 = load i32, ptr %1938, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %1935, i32 noundef 704643079, i32 noundef 63, i32 noundef %1937, i32 noundef %1939, i32 noundef 0, i32 noundef 0)
  %1940 = load ptr, ptr %3, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1942 = load i32, ptr %1941, align 4, !tbaa !17
  %1943 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %1944 = load i32, ptr %1943, align 4, !tbaa !26
  %1945 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %1946 = load i32, ptr %1945, align 4, !tbaa !17
  %1947 = load i32, ptr %20, align 4, !tbaa !9
  %1948 = zext i32 %1947 to i64
  %1949 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1950 = load i32, ptr %1949, align 4, !tbaa !45
  %1951 = zext i32 %1950 to i64
  %1952 = mul nsw i64 %1948, %1951
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1940, i32 noundef 4096, i32 noundef %1942, i32 noundef %1944, i32 noundef %1946, i64 noundef %1952)
  %1953 = load ptr, ptr %3, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1955 = load i32, ptr %1954, align 4, !tbaa !15
  %1956 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %1957 = load i32, ptr %1956, align 4, !tbaa !24
  %1958 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %1959 = load i32, ptr %1958, align 4, !tbaa !15
  %1960 = load i32, ptr %20, align 4, !tbaa !9
  %1961 = zext i32 %1960 to i64
  %1962 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 5
  %1963 = load i32, ptr %1962, align 4, !tbaa !45
  %1964 = zext i32 %1963 to i64
  %1965 = mul nsw i64 %1961, %1964
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1953, i32 noundef 4096, i32 noundef %1955, i32 noundef %1957, i32 noundef %1959, i64 noundef %1965)
  %1966 = load ptr, ptr %3, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %1968 = load i32, ptr %1967, align 4, !tbaa !21
  %1969 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %1966, ptr noundef %6, i32 noundef %1968, i32 noundef %1969)
  br label %1970

1970:                                             ; preds = %1872, %1851
  %1971 = load i32, ptr %14, align 4, !tbaa !9
  %1972 = add i32 %1971, 1
  store i32 %1972, ptr %14, align 4, !tbaa !9
  br label %1836, !llvm.loop !50

1973:                                             ; preds = %1836
  br label %2200

1974:                                             ; preds = %1335, %1332, %1329
  %1975 = load i32, ptr %13, align 4, !tbaa !9
  %1976 = icmp ugt i32 %1975, 32
  br i1 %1976, label %1977, label %2199

1977:                                             ; preds = %1974
  %1978 = load ptr, ptr %8, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1978, i32 0, i32 6
  %1980 = load i32, ptr %1979, align 1, !tbaa !38
  %1981 = and i32 %1980, 2
  %1982 = icmp eq i32 %1981, 0
  br i1 %1982, label %1983, label %2083

1983:                                             ; preds = %1977
  %1984 = load ptr, ptr %3, align 8, !tbaa !5
  %1985 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1986 = load i32, ptr %1985, align 4, !tbaa !25
  %1987 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1988 = load i32, ptr %1987, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1984, i32 noundef 4096, i32 noundef 63, i32 noundef %1986, i32 noundef %1988, i64 noundef 0)
  %1989 = load ptr, ptr %3, align 8, !tbaa !5
  %1990 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %1991 = load i32, ptr %1990, align 4, !tbaa !25
  %1992 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %1993 = load i32, ptr %1992, align 4, !tbaa !39
  %1994 = zext i32 %1993 to i64
  %1995 = mul nsw i64 64, %1994
  %1996 = load ptr, ptr %8, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1996, i32 0, i32 2
  %1998 = load i32, ptr %1997, align 1, !tbaa !42
  %1999 = zext i32 %1998 to i64
  %2000 = mul nsw i64 %1995, %1999
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1989, i32 noundef 4097, i32 noundef 63, i32 noundef %1991, i32 noundef 63, i64 noundef %2000)
  %2001 = load ptr, ptr %3, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %2003 = load i32, ptr %2002, align 4, !tbaa !25
  %2004 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 13
  %2005 = load i32, ptr %2004, align 4, !tbaa !18
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2001, i32 noundef 4096, i32 noundef 63, i32 noundef %2003, i32 noundef %2005, i64 noundef 0)
  %2006 = load ptr, ptr %3, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %2008 = load i32, ptr %2007, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2006, i32 noundef 4096, i32 noundef 63, i32 noundef %2008, i32 noundef 58, i64 noundef 0)
  %2009 = load ptr, ptr %8, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2009, i32 0, i32 2
  %2011 = load i32, ptr %2010, align 1, !tbaa !42
  %2012 = udiv i32 %2011, 16
  store i32 %2012, ptr %15, align 4, !tbaa !9
  %2013 = load ptr, ptr %8, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2013, i32 0, i32 2
  %2015 = load i32, ptr %2014, align 1, !tbaa !42
  %2016 = urem i32 %2015, 16
  store i32 %2016, ptr %16, align 4, !tbaa !9
  %2017 = load i32, ptr %15, align 4, !tbaa !9
  %2018 = icmp ugt i32 %2017, 0
  br i1 %2018, label %2019, label %2047

2019:                                             ; preds = %1983
  %2020 = load ptr, ptr %3, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %2022 = load i32, ptr %2021, align 4, !tbaa !26
  %2023 = load i32, ptr %15, align 4, !tbaa !9
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %2020, ptr noundef %6, i32 noundef %2022, i32 noundef %2023)
  %2024 = load ptr, ptr %3, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %2026 = load i32, ptr %2025, align 4, !tbaa !16
  %2027 = load ptr, ptr %8, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2027, i32 0, i32 4
  %2029 = load i32, ptr %2028, align 1, !tbaa !43
  %2030 = load i32, ptr %13, align 4, !tbaa !9
  %2031 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %2032 = load i32, ptr %2031, align 4, !tbaa !24
  call void @libxsmm_generator_sme_transpose_64(ptr noundef %2024, i32 noundef %2026, i32 noundef %2029, i32 noundef 0, i32 noundef %2030, i32 noundef %2032)
  %2033 = load ptr, ptr %3, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %2035 = load i32, ptr %2034, align 4, !tbaa !16
  %2036 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %2037 = load i32, ptr %2036, align 4, !tbaa !24
  %2038 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %2039 = load i32, ptr %2038, align 4, !tbaa !16
  %2040 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %2041 = load i32, ptr %2040, align 4, !tbaa !39
  %2042 = mul i32 16, %2041
  %2043 = zext i32 %2042 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2033, i32 noundef 4096, i32 noundef %2035, i32 noundef %2037, i32 noundef %2039, i64 noundef %2043)
  %2044 = load ptr, ptr %3, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %2046 = load i32, ptr %2045, align 4, !tbaa !26
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %2044, ptr noundef %6, i32 noundef %2046, i32 noundef 1)
  br label %2047

2047:                                             ; preds = %2019, %1983
  %2048 = load i32, ptr %16, align 4, !tbaa !9
  %2049 = icmp ugt i32 %2048, 0
  br i1 %2049, label %2050, label %2061

2050:                                             ; preds = %2047
  %2051 = load ptr, ptr %3, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %2053 = load i32, ptr %2052, align 4, !tbaa !16
  %2054 = load ptr, ptr %8, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2054, i32 0, i32 4
  %2056 = load i32, ptr %2055, align 1, !tbaa !43
  %2057 = load i32, ptr %16, align 4, !tbaa !9
  %2058 = load i32, ptr %13, align 4, !tbaa !9
  %2059 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %2060 = load i32, ptr %2059, align 4, !tbaa !24
  call void @libxsmm_generator_sme_transpose_64(ptr noundef %2051, i32 noundef %2053, i32 noundef %2056, i32 noundef %2057, i32 noundef %2058, i32 noundef %2060)
  br label %2061

2061:                                             ; preds = %2050, %2047
  %2062 = load ptr, ptr %3, align 8, !tbaa !5
  %2063 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %2064 = load i32, ptr %2063, align 4, !tbaa !25
  %2065 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 23
  %2066 = load i32, ptr %2065, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2062, i32 noundef 4096, i32 noundef %2064, i32 noundef %2066, i32 noundef 63, i64 noundef 0)
  %2067 = load ptr, ptr %3, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %2069 = load i32, ptr %2068, align 4, !tbaa !16
  %2070 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %2071 = load i32, ptr %2070, align 4, !tbaa !24
  %2072 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 3
  %2073 = load i32, ptr %2072, align 4, !tbaa !16
  %2074 = load ptr, ptr %8, align 8, !tbaa !5
  %2075 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2074, i32 0, i32 2
  %2076 = load i32, ptr %2075, align 1, !tbaa !42
  %2077 = load i32, ptr %16, align 4, !tbaa !9
  %2078 = sub i32 %2076, %2077
  %2079 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %2080 = load i32, ptr %2079, align 4, !tbaa !39
  %2081 = mul i32 %2078, %2080
  %2082 = zext i32 %2081 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2067, i32 noundef 4097, i32 noundef %2069, i32 noundef %2071, i32 noundef %2073, i64 noundef %2082)
  br label %2083

2083:                                             ; preds = %2061, %1977
  store i32 16, ptr %17, align 4, !tbaa !9
  %2084 = load ptr, ptr %8, align 8, !tbaa !5
  %2085 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2084, i32 0, i32 0
  %2086 = load i32, ptr %2085, align 1, !tbaa !35
  %2087 = udiv i32 %2086, 16
  store i32 %2087, ptr %18, align 4, !tbaa !9
  %2088 = load ptr, ptr %8, align 8, !tbaa !5
  %2089 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2088, i32 0, i32 0
  %2090 = load i32, ptr %2089, align 1, !tbaa !35
  %2091 = urem i32 %2090, 16
  store i32 %2091, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %2092

2092:                                             ; preds = %2195, %2083
  %2093 = load i32, ptr %14, align 4, !tbaa !9
  %2094 = icmp ult i32 %2093, 2
  br i1 %2094, label %2095, label %2198

2095:                                             ; preds = %2092
  %2096 = load i32, ptr %19, align 4, !tbaa !9
  %2097 = icmp eq i32 %2096, 0
  br i1 %2097, label %2098, label %2101

2098:                                             ; preds = %2095
  %2099 = load i32, ptr %14, align 4, !tbaa !9
  %2100 = icmp eq i32 %2099, 1
  br i1 %2100, label %2107, label %2101

2101:                                             ; preds = %2098, %2095
  %2102 = load i32, ptr %18, align 4, !tbaa !9
  %2103 = icmp eq i32 %2102, 0
  br i1 %2103, label %2104, label %2108

2104:                                             ; preds = %2101
  %2105 = load i32, ptr %14, align 4, !tbaa !9
  %2106 = icmp eq i32 %2105, 0
  br i1 %2106, label %2107, label %2108

2107:                                             ; preds = %2104, %2098
  br label %2195

2108:                                             ; preds = %2104, %2101
  %2109 = load i32, ptr %14, align 4, !tbaa !9
  %2110 = icmp eq i32 %2109, 0
  br i1 %2110, label %2111, label %2113

2111:                                             ; preds = %2108
  %2112 = load i32, ptr %17, align 4, !tbaa !9
  br label %2115

2113:                                             ; preds = %2108
  %2114 = load i32, ptr %19, align 4, !tbaa !9
  br label %2115

2115:                                             ; preds = %2113, %2111
  %2116 = phi i32 [ %2112, %2111 ], [ %2114, %2113 ]
  store i32 %2116, ptr %20, align 4, !tbaa !9
  %2117 = load ptr, ptr %3, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %2119 = load i32, ptr %2118, align 4, !tbaa !21
  %2120 = load i32, ptr %14, align 4, !tbaa !9
  %2121 = icmp eq i32 %2120, 0
  br i1 %2121, label %2122, label %2126

2122:                                             ; preds = %2115
  %2123 = load i32, ptr %17, align 4, !tbaa !9
  %2124 = load i32, ptr %18, align 4, !tbaa !9
  %2125 = mul i32 %2123, %2124
  br label %2128

2126:                                             ; preds = %2115
  %2127 = load i32, ptr %19, align 4, !tbaa !9
  br label %2128

2128:                                             ; preds = %2126, %2122
  %2129 = phi i32 [ %2125, %2122 ], [ %2127, %2126 ]
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef %2117, ptr noundef %6, i32 noundef %2119, i32 noundef %2129)
  %2130 = load ptr, ptr %3, align 8, !tbaa !5
  %2131 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %2132 = load i32, ptr %2131, align 4, !tbaa !17
  %2133 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %2134 = load i32, ptr %2133, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %2130, i32 noundef 704643079, i32 noundef 63, i32 noundef %2132, i32 noundef %2134, i32 noundef 0, i32 noundef 0)
  %2135 = load ptr, ptr %3, align 8, !tbaa !5
  %2136 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %2137 = load i32, ptr %2136, align 4, !tbaa !17
  %2138 = load i32, ptr %20, align 4, !tbaa !9
  %2139 = load i32, ptr %13, align 4, !tbaa !9
  %2140 = load ptr, ptr %8, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2140, i32 0, i32 5
  %2142 = load i32, ptr %2141, align 1, !tbaa !44
  call void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef %2135, i32 noundef %2137, i32 noundef %2138, i32 noundef %2139, i32 noundef %2142)
  %2143 = load ptr, ptr %3, align 8, !tbaa !5
  %2144 = load ptr, ptr %8, align 8, !tbaa !5
  %2145 = load i32, ptr %20, align 4, !tbaa !9
  %2146 = load i32, ptr %13, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef %2143, ptr noundef %6, ptr noundef %7, ptr noundef %5, ptr noundef %2144, i32 noundef %2145, i32 noundef %2146, i32 noundef 2, i32 noundef 64)
  %2147 = load ptr, ptr %3, align 8, !tbaa !5
  %2148 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %2149 = load i32, ptr %2148, align 4, !tbaa !28
  %2150 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %2151 = load i32, ptr %2150, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %2147, i32 noundef 704643079, i32 noundef 63, i32 noundef %2149, i32 noundef %2151, i32 noundef 0, i32 noundef 0)
  %2152 = load ptr, ptr %3, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %2154 = load i32, ptr %2153, align 4, !tbaa !17
  %2155 = load i32, ptr %20, align 4, !tbaa !9
  %2156 = load i32, ptr %13, align 4, !tbaa !9
  %2157 = load ptr, ptr %8, align 8, !tbaa !5
  %2158 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %2157, i32 0, i32 5
  %2159 = load i32, ptr %2158, align 1, !tbaa !44
  call void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef %2152, i32 noundef %2154, i32 noundef %2155, i32 noundef %2156, i32 noundef %2159)
  %2160 = load ptr, ptr %3, align 8, !tbaa !5
  %2161 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 25
  %2162 = load i32, ptr %2161, align 4, !tbaa !28
  %2163 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %2164 = load i32, ptr %2163, align 4, !tbaa !17
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef %2160, i32 noundef 704643079, i32 noundef 63, i32 noundef %2162, i32 noundef %2164, i32 noundef 0, i32 noundef 0)
  %2165 = load ptr, ptr %3, align 8, !tbaa !5
  %2166 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %2167 = load i32, ptr %2166, align 4, !tbaa !17
  %2168 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 24
  %2169 = load i32, ptr %2168, align 4, !tbaa !26
  %2170 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 5
  %2171 = load i32, ptr %2170, align 4, !tbaa !17
  %2172 = load i32, ptr %20, align 4, !tbaa !9
  %2173 = zext i32 %2172 to i64
  %2174 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %2175 = load i32, ptr %2174, align 4, !tbaa !39
  %2176 = zext i32 %2175 to i64
  %2177 = mul nsw i64 %2173, %2176
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2165, i32 noundef 4096, i32 noundef %2167, i32 noundef %2169, i32 noundef %2171, i64 noundef %2177)
  %2178 = load ptr, ptr %3, align 8, !tbaa !5
  %2179 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %2180 = load i32, ptr %2179, align 4, !tbaa !15
  %2181 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 22
  %2182 = load i32, ptr %2181, align 4, !tbaa !24
  %2183 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 1
  %2184 = load i32, ptr %2183, align 4, !tbaa !15
  %2185 = load i32, ptr %20, align 4, !tbaa !9
  %2186 = zext i32 %2185 to i64
  %2187 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %5, i32 0, i32 3
  %2188 = load i32, ptr %2187, align 4, !tbaa !39
  %2189 = zext i32 %2188 to i64
  %2190 = mul nsw i64 %2186, %2189
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2178, i32 noundef 4096, i32 noundef %2180, i32 noundef %2182, i32 noundef %2184, i64 noundef %2190)
  %2191 = load ptr, ptr %3, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %7, i32 0, i32 10
  %2193 = load i32, ptr %2192, align 4, !tbaa !21
  %2194 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef %2191, ptr noundef %6, i32 noundef %2193, i32 noundef %2194)
  br label %2195

2195:                                             ; preds = %2128, %2107
  %2196 = load i32, ptr %14, align 4, !tbaa !9
  %2197 = add i32 %2196, 1
  store i32 %2197, ptr %14, align 4, !tbaa !9
  br label %2092, !llvm.loop !51

2198:                                             ; preds = %2092
  br label %2199

2199:                                             ; preds = %2198, %1974
  br label %2200

2200:                                             ; preds = %2199, %1973
  br label %2201

2201:                                             ; preds = %2200, %1328
  br label %2202

2202:                                             ; preds = %2201, %1057
  %2203 = load ptr, ptr %3, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_sm(ptr noundef %2203, i32 noundef -721205633)
  %2204 = load ptr, ptr %3, align 8, !tbaa !5
  call void @libxsmm_generator_gemm_destroy_stack_frame_aarch64(ptr noundef %2204)
  %2205 = load ptr, ptr %3, align 8, !tbaa !5
  call void @libxsmm_aarch64_instruction_close_stream(ptr noundef %2205, i16 noundef zeroext 3599)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 95, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 132, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 2052, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 688, ptr %5) #5
  ret void
}

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

declare void @libxsmm_generator_gemm_aarch64_setup_blocking_sme(ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @libxsmm_reset_aarch64_gp_reg_mapping(ptr noundef) #2

declare void @libxsmm_reset_loop_label_tracker(ptr noundef) #2

declare void @libxsmm_aarch64_instruction_open_stream(ptr noundef, i16 noundef zeroext) #2

; 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

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

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

declare void @libxsmm_generator_gemm_setup_stack_frame_aarch64(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

declare void @libxsmm_generator_gemm_destroy_stack_frame_aarch64(ptr noundef) #2

declare void @libxsmm_aarch64_instruction_close_stream(ptr noundef, i16 noundef zeroext) #2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 28}
!12 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!13 = !{!14, !10, i64 0}
!14 = !{!"libxsmm_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128}
!15 = !{!14, !10, i64 4}
!16 = !{!14, !10, i64 12}
!17 = !{!14, !10, i64 20}
!18 = !{!14, !10, i64 52}
!19 = !{!14, !10, i64 28}
!20 = !{!14, !10, i64 36}
!21 = !{!14, !10, i64 40}
!22 = !{!14, !10, i64 44}
!23 = !{!14, !10, i64 48}
!24 = !{!14, !10, i64 88}
!25 = !{!14, !10, i64 92}
!26 = !{!14, !10, i64 96}
!27 = !{!14, !10, i64 80}
!28 = !{!14, !10, i64 100}
!29 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !9, i64 28, i64 1, !30, i64 29, i64 3, !30, i64 32, i64 1, !30, i64 33, i64 8, !31, i64 41, i64 8, !31, i64 49, i64 1, !30, i64 50, i64 4, !9, i64 54, i64 4, !9, i64 58, i64 4, !9, i64 62, i64 2, !33, i64 64, i64 2, !33, i64 66, i64 1, !30, i64 67, i64 1, !30, i64 68, i64 1, !30, i64 69, i64 1, !30, i64 70, i64 2, !33, i64 72, i64 2, !33, i64 74, i64 2, !33, i64 76, i64 2, !33, i64 78, i64 2, !33, i64 80, i64 2, !33, i64 82, i64 4, !9, i64 86, i64 4, !9, i64 90, i64 4, !9, i64 94, i64 1, !30}
!30 = !{!7, !7, i64 0}
!31 = !{!32, !32, i64 0}
!32 = !{!"long long", !7, i64 0}
!33 = !{!34, !34, i64 0}
!34 = !{!"short", !7, i64 0}
!35 = !{!36, !10, i64 0}
!36 = !{!"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, !32, i64 33, !32, i64 41, !7, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !34, i64 62, !34, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !34, i64 70, !34, i64 72, !34, i64 74, !34, i64 76, !34, i64 78, !34, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !7, i64 94}
!37 = !{!36, !10, i64 4}
!38 = !{!36, !10, i64 24}
!39 = !{!40, !10, i64 12}
!40 = !{!"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, !41, 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}
!41 = !{!"libxsmm_tile_config", !7, i64 0, !34, i64 2, !7, i64 4, !34, i64 6, !7, i64 8, !34, i64 10, !7, i64 12, !34, i64 14, !7, i64 16, !34, i64 18, !7, i64 20, !34, i64 22, !7, i64 24, !34, i64 26, !7, i64 28, !34, i64 30, !7, i64 32}
!42 = !{!36, !10, i64 8}
!43 = !{!36, !10, i64 16}
!44 = !{!36, !10, i64 20}
!45 = !{!40, !10, i64 20}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = distinct !{!48, !47}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !47}
!51 = distinct !{!51, !47}


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

%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_loop_label_tracker_struct = type { [512 x i32], i32 }
%struct.libxsmm_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%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 }>

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) 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) #1

declare void @libxsmm_generator_loop_header_aarch64(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_loop_footer_aarch64(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_aarch64_kernel_sme_het_blocking(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = alloca %struct.libxsmm_micro_kernel_config, align 8
  %4 = alloca %struct.libxsmm_loop_label_tracker_struct, align 4
  %5 = alloca %struct.libxsmm_gp_reg_mapping_struct, align 4
  %6 = alloca %struct.libxsmm_gemm_descriptor, align 4
  %7 = alloca [2 x i32], align 8
  %8 = alloca [2 x i32], align 8
  call void @llvm.lifetime.start.p0(i64 688, ptr nonnull %3) #4
  call void @llvm.lifetime.start.p0(i64 2052, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %5) #4
  call void @llvm.lifetime.start.p0(i64 95, ptr nonnull %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #4
  store i64 0, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  store i64 0, ptr %8, align 8
  call void @libxsmm_generator_gemm_aarch64_setup_blocking_sme(ptr noundef %1, ptr noundef nonnull %7, ptr noundef nonnull %8) #4
  %9 = getelementptr inbounds i8, ptr %0, i64 28
  %10 = load i32, ptr %9, align 4, !tbaa !5
  call void @libxsmm_generator_gemm_init_micro_kernel_config_aarch64(ptr noundef nonnull %3, i32 noundef %10, ptr noundef %1) #4
  call void @libxsmm_reset_aarch64_gp_reg_mapping(ptr noundef nonnull %5) #4
  store i32 32, ptr %5, align 4, !tbaa !11
  %11 = getelementptr inbounds i8, ptr %5, i64 4
  store i32 32, ptr %11, align 4, !tbaa !13
  %12 = getelementptr inbounds i8, ptr %5, i64 12
  store i32 33, ptr %12, align 4, !tbaa !14
  %13 = getelementptr inbounds i8, ptr %5, i64 20
  store i32 34, ptr %13, align 4, !tbaa !15
  %14 = getelementptr inbounds i8, ptr %5, i64 52
  store i32 35, ptr %14, align 4, !tbaa !16
  %15 = getelementptr inbounds i8, ptr %5, i64 28
  store i32 36, ptr %15, align 4, !tbaa !17
  %16 = getelementptr inbounds i8, ptr %5, i64 36
  %17 = getelementptr inbounds i8, ptr %5, i64 40
  %18 = getelementptr inbounds i8, ptr %5, i64 44
  store <4 x i32> <i32 37, i32 38, i32 39, i32 40>, ptr %16, align 4, !tbaa !18
  %19 = getelementptr inbounds i8, ptr %5, i64 88
  %20 = getelementptr inbounds i8, ptr %5, i64 92
  %21 = getelementptr inbounds i8, ptr %5, i64 96
  %22 = getelementptr inbounds i8, ptr %5, i64 80
  store i32 45, ptr %22, align 4, !tbaa !19
  %23 = getelementptr inbounds i8, ptr %5, i64 100
  store <4 x i32> <i32 41, i32 42, i32 43, i32 49>, ptr %19, align 4, !tbaa !18
  call void @libxsmm_reset_loop_label_tracker(ptr noundef nonnull %4) #4
  call void @libxsmm_aarch64_instruction_open_stream(ptr noundef %0, i16 noundef zeroext 3599) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(95) %6, ptr noundef nonnull align 1 dereferenceable(95) %1, i64 95, i1 false), !tbaa.struct !20
  %24 = getelementptr inbounds i8, ptr %7, i64 4
  %25 = load i32, ptr %24, align 4, !tbaa !18
  %.not = icmp eq i32 %25, 0
  %26 = load i32, ptr %6, align 4
  %27 = load i32, ptr %7, align 8
  %28 = shl i32 %27, 5
  %29 = sub i32 %26, %28
  %.0 = select i1 %.not, i32 0, i32 %29
  %30 = getelementptr inbounds i8, ptr %8, i64 4
  %31 = load i32, ptr %30, align 4, !tbaa !18
  %.not551 = icmp eq i32 %31, 0
  %32 = getelementptr inbounds i8, ptr %6, i64 4
  %33 = load i32, ptr %32, align 4
  %34 = load i32, ptr %8, align 8
  %35 = shl i32 %34, 6
  %36 = sub i32 %33, %35
  %.0531 = select i1 %.not551, i32 0, i32 %36
  %37 = getelementptr inbounds i8, ptr %6, i64 24
  %38 = load i32, ptr %37, align 4, !tbaa !26
  %39 = and i32 %38, 49152
  %or.cond574 = icmp eq i32 %39, 0
  br i1 %or.cond574, label %49, label %40

40:                                               ; preds = %2
  %41 = load i32, ptr %5, align 4, !tbaa !11
  %42 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 167772167, i32 noundef %41, i32 noundef %41, i32 noundef %42, i32 noundef 0, i32 noundef 0) #4
  %43 = load i32, ptr %20, align 4, !tbaa !28
  %44 = load i32, ptr %11, align 4, !tbaa !13
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %43, i32 noundef 127, i32 noundef 32, i32 noundef %44) #4
  %45 = load i32, ptr %20, align 4, !tbaa !28
  %46 = load i32, ptr %12, align 4, !tbaa !14
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %45, i32 noundef 127, i32 noundef 80, i32 noundef %46) #4
  %47 = load i32, ptr %20, align 4, !tbaa !28
  %48 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef nonnull %0, i32 noundef -1186988026, i32 noundef %47, i32 noundef 127, i32 noundef 128, i32 noundef %48) #4
  br label %49

49:                                               ; preds = %2, %40
  call void @libxsmm_generator_gemm_setup_stack_frame_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %5, ptr noundef nonnull %3) #4
  call void @libxsmm_aarch64_instruction_sm(ptr noundef nonnull %0, i32 noundef -721205377) #4
  call void @libxsmm_reset_loop_label_tracker(ptr noundef nonnull %4) #4
  %50 = load i32, ptr %8, align 8, !tbaa !18
  %.not554 = icmp eq i32 %50, 0
  br i1 %.not554, label %349, label %51

51:                                               ; preds = %49
  %52 = load i32, ptr %18, align 4, !tbaa !29
  %53 = shl i32 %50, 6
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %52, i32 noundef %53) #4
  %54 = load i32, ptr %37, align 4, !tbaa !26
  %55 = and i32 %54, 2
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %100

57:                                               ; preds = %51
  %58 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %58, i32 noundef %58, i64 noundef 0) #4
  %59 = load i32, ptr %20, align 4, !tbaa !28
  %60 = getelementptr inbounds i8, ptr %3, i64 12
  %61 = load i32, ptr %60, align 4, !tbaa !30
  %62 = shl i32 %61, 6
  %63 = getelementptr inbounds i8, ptr %6, i64 8
  %64 = load i32, ptr %63, align 4, !tbaa !33
  %65 = mul i32 %62, %64
  %66 = zext i32 %65 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef 63, i32 noundef %59, i32 noundef 63, i64 noundef %66) #4
  %67 = load i32, ptr %20, align 4, !tbaa !28
  %68 = load i32, ptr %14, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %67, i32 noundef %68, i64 noundef 0) #4
  %69 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %69, i32 noundef 58, i64 noundef 0) #4
  %70 = load i32, ptr %63, align 4, !tbaa !33
  %71 = and i32 %70, 15
  %.not555 = icmp ult i32 %70, 16
  br i1 %.not555, label %85, label %72

72:                                               ; preds = %57
  %73 = lshr i32 %70, 4
  %74 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %74, i32 noundef %73) #4
  %75 = load i32, ptr %12, align 4, !tbaa !14
  %76 = getelementptr inbounds i8, ptr %6, i64 16
  %77 = load i32, ptr %76, align 4, !tbaa !35
  %78 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_sme_transpose_64(ptr noundef nonnull %0, i32 noundef %75, i32 noundef %77, i32 noundef 0, i32 noundef 64, i32 noundef %78) #4
  %79 = load i32, ptr %12, align 4, !tbaa !14
  %80 = load i32, ptr %19, align 4, !tbaa !36
  %81 = load i32, ptr %60, align 4, !tbaa !30
  %82 = zext i32 %81 to i64
  %83 = shl nuw nsw i64 %82, 4
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %79, i32 noundef %80, i32 noundef %79, i64 noundef %83) #4
  %84 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %84, i32 noundef 1) #4
  br label %85

85:                                               ; preds = %72, %57
  %.not556 = icmp eq i32 %71, 0
  br i1 %.not556, label %91, label %86

86:                                               ; preds = %85
  %87 = load i32, ptr %12, align 4, !tbaa !14
  %88 = getelementptr inbounds i8, ptr %6, i64 16
  %89 = load i32, ptr %88, align 4, !tbaa !35
  %90 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_sme_transpose_64(ptr noundef nonnull %0, i32 noundef %87, i32 noundef %89, i32 noundef %71, i32 noundef 64, i32 noundef %90) #4
  br label %91

91:                                               ; preds = %86, %85
  %92 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %92, i32 noundef %92, i32 noundef 63, i64 noundef 0) #4
  %93 = load i32, ptr %12, align 4, !tbaa !14
  %94 = load i32, ptr %19, align 4, !tbaa !36
  %95 = load i32, ptr %63, align 4, !tbaa !33
  %96 = sub i32 %95, %71
  %97 = load i32, ptr %60, align 4, !tbaa !30
  %98 = mul i32 %96, %97
  %99 = zext i32 %98 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %93, i32 noundef %94, i32 noundef %93, i64 noundef %99) #4
  br label %103

100:                                              ; preds = %51
  %101 = load i32, ptr %12, align 4, !tbaa !14
  %102 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %101, i32 noundef %102, i32 noundef 58, i64 noundef 0) #4
  br label %103

103:                                              ; preds = %100, %91
  %104 = load i32, ptr %7, align 8, !tbaa !18
  %.not557 = icmp eq i32 %104, 0
  br i1 %.not557, label %200, label %105

105:                                              ; preds = %103
  %106 = load i32, ptr %17, align 4, !tbaa !37
  %107 = shl i32 %104, 5
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %106, i32 noundef %107) #4
  %108 = load i32, ptr %13, align 4, !tbaa !15
  %109 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %108, i32 noundef %109, i32 noundef 0, i32 noundef 0) #4
  %110 = load i32, ptr %13, align 4, !tbaa !15
  %111 = load i32, ptr %19, align 4, !tbaa !36
  %112 = getelementptr inbounds i8, ptr %6, i64 20
  %113 = load i32, ptr %112, align 4, !tbaa !39
  %114 = zext i32 %113 to i64
  %115 = shl nuw nsw i64 %114, 4
  %116 = getelementptr inbounds i8, ptr %3, i64 20
  %117 = load i32, ptr %116, align 4, !tbaa !40
  %118 = zext i32 %117 to i64
  %119 = mul nuw nsw i64 %115, %118
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %110, i32 noundef 43, i32 noundef %111, i64 noundef %119) #4
  %120 = load i32, ptr %13, align 4, !tbaa !15
  %121 = load i32, ptr %19, align 4, !tbaa !36
  %122 = load i32, ptr %112, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %120, i32 noundef %121, i32 noundef 32, i32 noundef 32, i32 noundef %122) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 32, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %123 = load i32, ptr %23, align 4, !tbaa !38
  %124 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %123, i32 noundef %124, i32 noundef 0, i32 noundef 0) #4
  %125 = load i32, ptr %13, align 4, !tbaa !15
  %126 = load i32, ptr %19, align 4, !tbaa !36
  %127 = load i32, ptr %112, align 4, !tbaa !39
  %128 = zext i32 %127 to i64
  %129 = shl nuw nsw i64 %128, 4
  %130 = load i32, ptr %116, align 4, !tbaa !40
  %131 = zext i32 %130 to i64
  %132 = mul nuw nsw i64 %129, %131
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %125, i32 noundef 43, i32 noundef %126, i64 noundef %132) #4
  %133 = load i32, ptr %13, align 4, !tbaa !15
  %134 = load i32, ptr %19, align 4, !tbaa !36
  %135 = load i32, ptr %112, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %133, i32 noundef %134, i32 noundef 32, i32 noundef 32, i32 noundef %135, i32 noundef 1) #4
  %136 = load i32, ptr %23, align 4, !tbaa !38
  %137 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %136, i32 noundef %137, i32 noundef 0, i32 noundef 0) #4
  %138 = load i32, ptr %13, align 4, !tbaa !15
  %139 = load i32, ptr %21, align 4, !tbaa !34
  %140 = getelementptr inbounds i8, ptr %3, i64 12
  %141 = load i32, ptr %140, align 4, !tbaa !30
  %142 = zext i32 %141 to i64
  %143 = shl nuw nsw i64 %142, 5
  %144 = load i32, ptr %112, align 4, !tbaa !39
  %145 = zext i32 %144 to i64
  %146 = mul nuw nsw i64 %143, %145
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %138, i32 noundef %139, i32 noundef %138, i64 noundef %146) #4
  %147 = load i32, ptr %37, align 4, !tbaa !26
  %148 = and i32 %147, 2
  %.not558 = icmp eq i32 %148, 0
  %149 = load i32, ptr %20, align 4, !tbaa !28
  %150 = load i32, ptr %140, align 4, !tbaa !30
  %151 = zext i32 %150 to i64
  %152 = shl nuw nsw i64 %151, 5
  %.val = load i32, ptr %14, align 4
  %.val650 = load i32, ptr %12, align 4
  %153 = select i1 %.not558, i32 %.val, i32 %.val650
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %153, i32 noundef %149, i32 noundef %153, i64 noundef %152) #4
  %154 = load i32, ptr %13, align 4, !tbaa !15
  %155 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %154, i32 noundef %155, i32 noundef 0, i32 noundef 0) #4
  %156 = load i32, ptr %13, align 4, !tbaa !15
  %157 = load i32, ptr %19, align 4, !tbaa !36
  %158 = load i32, ptr %112, align 4, !tbaa !39
  %159 = shl i32 %158, 4
  %160 = load i32, ptr %116, align 4, !tbaa !40
  %161 = mul i32 %159, %160
  %162 = zext i32 %161 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %156, i32 noundef 43, i32 noundef %157, i64 noundef %162) #4
  %163 = load i32, ptr %13, align 4, !tbaa !15
  %164 = load i32, ptr %19, align 4, !tbaa !36
  %165 = load i32, ptr %112, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %163, i32 noundef %164, i32 noundef 32, i32 noundef 32, i32 noundef %165) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 32, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %166 = load i32, ptr %23, align 4, !tbaa !38
  %167 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %166, i32 noundef %167, i32 noundef 0, i32 noundef 0) #4
  %168 = load i32, ptr %13, align 4, !tbaa !15
  %169 = load i32, ptr %19, align 4, !tbaa !36
  %170 = load i32, ptr %112, align 4, !tbaa !39
  %171 = shl i32 %170, 4
  %172 = load i32, ptr %116, align 4, !tbaa !40
  %173 = mul i32 %171, %172
  %174 = zext i32 %173 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %168, i32 noundef 43, i32 noundef %169, i64 noundef %174) #4
  %175 = load i32, ptr %13, align 4, !tbaa !15
  %176 = load i32, ptr %19, align 4, !tbaa !36
  %177 = load i32, ptr %112, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %175, i32 noundef %176, i32 noundef 32, i32 noundef 32, i32 noundef %177, i32 noundef 1) #4
  %178 = load i32, ptr %23, align 4, !tbaa !38
  %179 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %178, i32 noundef %179, i32 noundef 0, i32 noundef 0) #4
  %180 = load i32, ptr %13, align 4, !tbaa !15
  %181 = load i32, ptr %112, align 4, !tbaa !39
  %182 = zext i32 %181 to i64
  %183 = load i32, ptr %140, align 4, !tbaa !30
  %184 = zext i32 %183 to i64
  %185 = shl nuw nsw i64 %182, 5
  %186 = mul i64 %185, %184
  %187 = shl i32 %183, 5
  %188 = zext i32 %187 to i64
  %189 = sub nsw i64 %186, %188
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %180, i32 noundef 43, i32 noundef %180, i64 noundef %189) #4
  %190 = load i32, ptr %37, align 4, !tbaa !26
  %191 = and i32 %190, 2
  %192 = icmp eq i32 %191, 0
  %193 = load i32, ptr %20, align 4, !tbaa !28
  %.val651 = load i32, ptr %14, align 4
  %.val652 = load i32, ptr %12, align 4
  %194 = select i1 %192, i32 %.val651, i32 %.val652
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 58, i32 noundef %193, i32 noundef %194, i64 noundef 0) #4
  %195 = load i32, ptr %11, align 4, !tbaa !13
  %196 = load i32, ptr %140, align 4, !tbaa !30
  %197 = zext i32 %196 to i64
  %198 = shl nuw nsw i64 %197, 5
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %195, i32 noundef 43, i32 noundef %195, i64 noundef %198) #4
  %199 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %199, i32 noundef 32) #4
  br label %200

200:                                              ; preds = %105, %103
  %201 = load i32, ptr %24, align 4, !tbaa !18
  %202 = icmp ne i32 %201, 0
  %203 = icmp ult i32 %.0, 17
  %or.cond = select i1 %202, i1 %203, i1 false
  br i1 %or.cond, label %204, label %216

204:                                              ; preds = %200
  %205 = load i32, ptr %13, align 4, !tbaa !15
  %206 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %205, i32 noundef %206, i32 noundef 0, i32 noundef 0) #4
  %207 = load i32, ptr %13, align 4, !tbaa !15
  %208 = getelementptr inbounds i8, ptr %6, i64 20
  %209 = load i32, ptr %208, align 4, !tbaa !39
  call void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %207, i32 noundef %.0, i32 noundef 64, i32 noundef %209) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %.0, i32 noundef 64, i32 noundef 2, i32 noundef 64)
  %210 = load i32, ptr %23, align 4, !tbaa !38
  %211 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %210, i32 noundef %211, i32 noundef 0, i32 noundef 0) #4
  %212 = load i32, ptr %13, align 4, !tbaa !15
  %213 = load i32, ptr %208, align 4, !tbaa !39
  call void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %212, i32 noundef %.0, i32 noundef 64, i32 noundef %213) #4
  %214 = load i32, ptr %23, align 4, !tbaa !38
  %215 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %214, i32 noundef %215, i32 noundef 0, i32 noundef 0) #4
  br label %306

216:                                              ; preds = %200
  %217 = icmp ugt i32 %.0, 16
  %or.cond3 = select i1 %202, i1 %217, i1 false
  br i1 %or.cond3, label %218, label %306

218:                                              ; preds = %216
  %219 = load i32, ptr %13, align 4, !tbaa !15
  %220 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %219, i32 noundef %220, i32 noundef 0, i32 noundef 0) #4
  %221 = load i32, ptr %13, align 4, !tbaa !15
  %222 = load i32, ptr %19, align 4, !tbaa !36
  %223 = getelementptr inbounds i8, ptr %6, i64 20
  %224 = load i32, ptr %223, align 4, !tbaa !39
  %225 = zext i32 %224 to i64
  %226 = shl nuw nsw i64 %225, 4
  %227 = getelementptr inbounds i8, ptr %3, i64 20
  %228 = load i32, ptr %227, align 4, !tbaa !40
  %229 = zext i32 %228 to i64
  %230 = mul nuw nsw i64 %226, %229
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %221, i32 noundef 43, i32 noundef %222, i64 noundef %230) #4
  %231 = load i32, ptr %13, align 4, !tbaa !15
  %232 = load i32, ptr %19, align 4, !tbaa !36
  %233 = load i32, ptr %223, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %231, i32 noundef %232, i32 noundef %.0, i32 noundef 32, i32 noundef %233) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %.0, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %234 = load i32, ptr %23, align 4, !tbaa !38
  %235 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %234, i32 noundef %235, i32 noundef 0, i32 noundef 0) #4
  %236 = load i32, ptr %13, align 4, !tbaa !15
  %237 = load i32, ptr %19, align 4, !tbaa !36
  %238 = load i32, ptr %223, align 4, !tbaa !39
  %239 = zext i32 %238 to i64
  %240 = shl nuw nsw i64 %239, 4
  %241 = load i32, ptr %227, align 4, !tbaa !40
  %242 = zext i32 %241 to i64
  %243 = mul nuw nsw i64 %240, %242
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %236, i32 noundef 43, i32 noundef %237, i64 noundef %243) #4
  %244 = load i32, ptr %13, align 4, !tbaa !15
  %245 = load i32, ptr %19, align 4, !tbaa !36
  %246 = load i32, ptr %223, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %244, i32 noundef %245, i32 noundef %.0, i32 noundef 32, i32 noundef %246, i32 noundef 1) #4
  %247 = load i32, ptr %23, align 4, !tbaa !38
  %248 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %247, i32 noundef %248, i32 noundef 0, i32 noundef 0) #4
  %249 = load i32, ptr %13, align 4, !tbaa !15
  %250 = load i32, ptr %21, align 4, !tbaa !34
  %251 = load i32, ptr %227, align 4, !tbaa !40
  %252 = zext i32 %251 to i64
  %253 = shl nuw nsw i64 %252, 5
  %254 = load i32, ptr %223, align 4, !tbaa !39
  %255 = zext i32 %254 to i64
  %256 = mul nuw nsw i64 %253, %255
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %249, i32 noundef %250, i32 noundef %249, i64 noundef %256) #4
  %257 = load i32, ptr %37, align 4, !tbaa !26
  %258 = and i32 %257, 2
  %.not559 = icmp eq i32 %258, 0
  %259 = load i32, ptr %20, align 4, !tbaa !28
  %260 = getelementptr inbounds i8, ptr %3, i64 12
  %261 = load i32, ptr %260, align 4, !tbaa !30
  %262 = zext i32 %261 to i64
  %263 = shl nuw nsw i64 %262, 5
  %.val653 = load i32, ptr %14, align 4
  %.val654 = load i32, ptr %12, align 4
  %264 = select i1 %.not559, i32 %.val653, i32 %.val654
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %264, i32 noundef %259, i32 noundef %264, i64 noundef %263) #4
  %265 = load i32, ptr %13, align 4, !tbaa !15
  %266 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %265, i32 noundef %266, i32 noundef 0, i32 noundef 0) #4
  %267 = load i32, ptr %13, align 4, !tbaa !15
  %268 = load i32, ptr %19, align 4, !tbaa !36
  %269 = load i32, ptr %223, align 4, !tbaa !39
  %270 = zext i32 %269 to i64
  %271 = shl nuw nsw i64 %270, 4
  %272 = getelementptr inbounds i8, ptr %3, i64 12
  %273 = load i32, ptr %272, align 4, !tbaa !30
  %274 = zext i32 %273 to i64
  %275 = mul nuw nsw i64 %271, %274
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %267, i32 noundef 43, i32 noundef %268, i64 noundef %275) #4
  %276 = load i32, ptr %13, align 4, !tbaa !15
  %277 = load i32, ptr %19, align 4, !tbaa !36
  %278 = load i32, ptr %223, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %276, i32 noundef %277, i32 noundef %.0, i32 noundef 32, i32 noundef %278) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %.0, i32 noundef 32, i32 noundef 0, i32 noundef 64)
  %279 = load i32, ptr %23, align 4, !tbaa !38
  %280 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %279, i32 noundef %280, i32 noundef 0, i32 noundef 0) #4
  %281 = load i32, ptr %13, align 4, !tbaa !15
  %282 = load i32, ptr %19, align 4, !tbaa !36
  %283 = load i32, ptr %223, align 4, !tbaa !39
  %284 = zext i32 %283 to i64
  %285 = shl nuw nsw i64 %284, 4
  %286 = load i32, ptr %227, align 4, !tbaa !40
  %287 = zext i32 %286 to i64
  %288 = mul nuw nsw i64 %285, %287
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %281, i32 noundef 43, i32 noundef %282, i64 noundef %288) #4
  %289 = load i32, ptr %13, align 4, !tbaa !15
  %290 = load i32, ptr %19, align 4, !tbaa !36
  %291 = load i32, ptr %223, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %289, i32 noundef %290, i32 noundef %.0, i32 noundef 32, i32 noundef %291, i32 noundef 1) #4
  %292 = load i32, ptr %23, align 4, !tbaa !38
  %293 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %292, i32 noundef %293, i32 noundef 0, i32 noundef 0) #4
  %294 = load i32, ptr %37, align 4, !tbaa !26
  %295 = and i32 %294, 2
  %296 = icmp eq i32 %295, 0
  %297 = load i32, ptr %20, align 4, !tbaa !28
  %.val655 = load i32, ptr %14, align 4
  %.val656 = load i32, ptr %12, align 4
  %298 = select i1 %296, i32 %.val655, i32 %.val656
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 58, i32 noundef %297, i32 noundef %298, i64 noundef 0) #4
  %299 = load i32, ptr %13, align 4, !tbaa !15
  %300 = load i32, ptr %223, align 4, !tbaa !39
  %301 = zext i32 %300 to i64
  %302 = load i32, ptr %227, align 4, !tbaa !40
  %303 = zext i32 %302 to i64
  %304 = shl nuw nsw i64 %301, 5
  %305 = mul i64 %304, %303
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %299, i32 noundef 43, i32 noundef %299, i64 noundef %305) #4
  br label %306

306:                                              ; preds = %216, %218, %204
  %307 = load i32, ptr %11, align 4, !tbaa !13
  %308 = load i32, ptr %19, align 4, !tbaa !36
  %309 = load i32, ptr %7, align 8, !tbaa !18
  %310 = zext i32 %309 to i64
  %311 = shl nuw nsw i64 %310, 5
  %312 = getelementptr inbounds i8, ptr %3, i64 12
  %313 = load i32, ptr %312, align 4, !tbaa !30
  %314 = zext i32 %313 to i64
  %315 = mul nuw nsw i64 %311, %314
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %307, i32 noundef %308, i32 noundef %307, i64 noundef %315) #4
  %316 = load i32, ptr %37, align 4, !tbaa !26
  %317 = and i32 %316, 2
  %318 = icmp eq i32 %317, 0
  %319 = load i32, ptr %12, align 4, !tbaa !14
  %320 = load i32, ptr %19, align 4, !tbaa !36
  br i1 %318, label %321, label %329

321:                                              ; preds = %306
  %322 = getelementptr inbounds i8, ptr %6, i64 16
  %323 = load i32, ptr %322, align 4, !tbaa !35
  %324 = zext i32 %323 to i64
  %325 = shl nuw nsw i64 %324, 6
  %326 = load i32, ptr %312, align 4, !tbaa !30
  %327 = zext i32 %326 to i64
  %328 = mul nuw nsw i64 %325, %327
  br label %333

329:                                              ; preds = %306
  %330 = load i32, ptr %312, align 4, !tbaa !30
  %331 = zext i32 %330 to i64
  %332 = shl nuw nsw i64 %331, 6
  br label %333

333:                                              ; preds = %329, %321
  %.sink = phi i64 [ %332, %329 ], [ %328, %321 ]
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %319, i32 noundef %320, i32 noundef %319, i64 noundef %.sink) #4
  %334 = load i32, ptr %13, align 4, !tbaa !15
  %335 = load i32, ptr %19, align 4, !tbaa !36
  %336 = getelementptr inbounds i8, ptr %6, i64 20
  %337 = load i32, ptr %336, align 4, !tbaa !39
  %338 = shl i32 %337, 6
  %339 = getelementptr inbounds i8, ptr %3, i64 20
  %340 = load i32, ptr %339, align 4, !tbaa !40
  %341 = mul i32 %338, %340
  %342 = zext i32 %341 to i64
  %343 = load i32, ptr %7, align 8, !tbaa !18
  %344 = shl i32 %340, 5
  %345 = mul i32 %344, %343
  %346 = zext i32 %345 to i64
  %347 = sub nsw i64 %342, %346
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %334, i32 noundef %335, i32 noundef %334, i64 noundef %347) #4
  %348 = load i32, ptr %18, align 4, !tbaa !29
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %348, i32 noundef 64) #4
  br label %349

349:                                              ; preds = %333, %49
  %350 = add i32 %.0531, -1
  %or.cond5 = icmp ult i32 %350, 16
  br i1 %or.cond5, label %351, label %479

351:                                              ; preds = %349
  %352 = load i32, ptr %37, align 4, !tbaa !26
  %353 = and i32 %352, 2
  %354 = icmp eq i32 %353, 0
  br i1 %354, label %355, label %405

355:                                              ; preds = %351
  %356 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %356, i32 noundef %356, i64 noundef 0) #4
  %357 = load i32, ptr %20, align 4, !tbaa !28
  %358 = getelementptr inbounds i8, ptr %6, i64 8
  %359 = load i32, ptr %358, align 4, !tbaa !33
  %360 = zext i32 %359 to i64
  %361 = shl nuw nsw i64 %360, 4
  %362 = getelementptr inbounds i8, ptr %3, i64 12
  %363 = load i32, ptr %362, align 4, !tbaa !30
  %364 = zext i32 %363 to i64
  %365 = mul nuw nsw i64 %361, %364
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef 63, i32 noundef %357, i32 noundef 63, i64 noundef %365) #4
  %366 = load i32, ptr %20, align 4, !tbaa !28
  %367 = load i32, ptr %14, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %366, i32 noundef %367, i64 noundef 0) #4
  %368 = load i32, ptr %14, align 4, !tbaa !16
  %369 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %368, i32 noundef %369, i32 noundef 63, i64 noundef 0) #4
  %370 = load i32, ptr %358, align 4, !tbaa !33
  %371 = and i32 %370, 31
  %.not572 = icmp ult i32 %370, 32
  br i1 %.not572, label %385, label %372

372:                                              ; preds = %355
  %373 = lshr i32 %370, 5
  %374 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %374, i32 noundef %373) #4
  %375 = load i32, ptr %12, align 4, !tbaa !14
  %376 = getelementptr inbounds i8, ptr %6, i64 16
  %377 = load i32, ptr %376, align 4, !tbaa !35
  %378 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_transpose_sme(ptr noundef nonnull %0, i32 noundef %375, i32 noundef %377, i32 noundef 32, i32 noundef %.0531, i32 noundef %378) #4
  %379 = load i32, ptr %12, align 4, !tbaa !14
  %380 = load i32, ptr %20, align 4, !tbaa !28
  %381 = load i32, ptr %362, align 4, !tbaa !30
  %382 = shl i32 %381, 5
  %383 = zext i32 %382 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %379, i32 noundef %380, i32 noundef %379, i64 noundef %383) #4
  %384 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %384, i32 noundef 1) #4
  br label %385

385:                                              ; preds = %372, %355
  %.not573 = icmp eq i32 %371, 0
  br i1 %.not573, label %396, label %386

386:                                              ; preds = %385
  %387 = load i32, ptr %12, align 4, !tbaa !14
  %388 = getelementptr inbounds i8, ptr %6, i64 16
  %389 = load i32, ptr %388, align 4, !tbaa !35
  %390 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_transpose_sme(ptr noundef nonnull %0, i32 noundef %387, i32 noundef %389, i32 noundef %371, i32 noundef %.0531, i32 noundef %390) #4
  %391 = load i32, ptr %12, align 4, !tbaa !14
  %392 = load i32, ptr %20, align 4, !tbaa !28
  %393 = load i32, ptr %362, align 4, !tbaa !30
  %394 = mul i32 %393, %371
  %395 = zext i32 %394 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %391, i32 noundef %392, i32 noundef %391, i64 noundef %395) #4
  br label %396

396:                                              ; preds = %386, %385
  %397 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %397, i32 noundef %397, i32 noundef 63, i64 noundef 0) #4
  %398 = load i32, ptr %12, align 4, !tbaa !14
  %399 = load i32, ptr %20, align 4, !tbaa !28
  %400 = load i32, ptr %358, align 4, !tbaa !33
  %401 = zext i32 %400 to i64
  %402 = load i32, ptr %362, align 4, !tbaa !30
  %403 = zext i32 %402 to i64
  %404 = mul nuw nsw i64 %403, %401
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %398, i32 noundef %399, i32 noundef %398, i64 noundef %404) #4
  br label %405

405:                                              ; preds = %351, %396
  %406 = load i32, ptr %6, align 4, !tbaa !41
  %407 = and i32 %406, 63
  %408 = icmp eq i32 %407, 0
  %409 = getelementptr inbounds i8, ptr %6, i64 20
  %410 = getelementptr inbounds i8, ptr %3, i64 20
  %411 = icmp ult i32 %406, 64
  br i1 %411, label %452, label %412

412:                                              ; preds = %405
  %413 = and i32 %406, -64
  %414 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %414, i32 noundef %413) #4
  %415 = load i32, ptr %13, align 4, !tbaa !15
  %416 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %415, i32 noundef %416, i32 noundef 0, i32 noundef 0) #4
  %417 = load i32, ptr %13, align 4, !tbaa !15
  %418 = load i32, ptr %19, align 4, !tbaa !36
  %419 = load i32, ptr %409, align 4, !tbaa !39
  %420 = zext i32 %419 to i64
  %421 = shl nuw nsw i64 %420, 4
  %422 = load i32, ptr %410, align 4, !tbaa !40
  %423 = zext i32 %422 to i64
  %424 = mul nuw nsw i64 %421, %423
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %417, i32 noundef 43, i32 noundef %418, i64 noundef %424) #4
  %425 = load i32, ptr %13, align 4, !tbaa !15
  %426 = load i32, ptr %409, align 4, !tbaa !39
  call void @libxsmm_generator_load_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %425, i32 noundef 64, i32 noundef %.0531, i32 noundef %426) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 64, i32 noundef %.0531, i32 noundef 1, i32 noundef 16)
  %427 = load i32, ptr %23, align 4, !tbaa !38
  %428 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %427, i32 noundef %428, i32 noundef 0, i32 noundef 0) #4
  %429 = load i32, ptr %13, align 4, !tbaa !15
  %430 = load i32, ptr %19, align 4, !tbaa !36
  %431 = load i32, ptr %409, align 4, !tbaa !39
  %432 = zext i32 %431 to i64
  %433 = shl nuw nsw i64 %432, 4
  %434 = load i32, ptr %410, align 4, !tbaa !40
  %435 = zext i32 %434 to i64
  %436 = mul nuw nsw i64 %433, %435
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %429, i32 noundef 43, i32 noundef %430, i64 noundef %436) #4
  %437 = load i32, ptr %13, align 4, !tbaa !15
  %438 = load i32, ptr %409, align 4, !tbaa !39
  call void @libxsmm_generated_store_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %437, i32 noundef 64, i32 noundef %.0531, i32 noundef %438) #4
  %439 = load i32, ptr %23, align 4, !tbaa !38
  %440 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %439, i32 noundef %440, i32 noundef 0, i32 noundef 0) #4
  %441 = load i32, ptr %13, align 4, !tbaa !15
  %442 = load i32, ptr %21, align 4, !tbaa !34
  %443 = load i32, ptr %410, align 4, !tbaa !40
  %444 = zext i32 %443 to i64
  %445 = shl nuw nsw i64 %444, 6
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %441, i32 noundef %442, i32 noundef %441, i64 noundef %445) #4
  %446 = load i32, ptr %11, align 4, !tbaa !13
  %447 = load i32, ptr %19, align 4, !tbaa !36
  %448 = load i32, ptr %410, align 4, !tbaa !40
  %449 = zext i32 %448 to i64
  %450 = shl nuw nsw i64 %449, 6
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %446, i32 noundef %447, i32 noundef %446, i64 noundef %450) #4
  %451 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %451, i32 noundef 64) #4
  br label %452

452:                                              ; preds = %405, %412
  br i1 %408, label %.loopexit, label %453

453:                                              ; preds = %452
  %454 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %454, i32 noundef %407) #4
  %455 = load i32, ptr %13, align 4, !tbaa !15
  %456 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %455, i32 noundef %456, i32 noundef 0, i32 noundef 0) #4
  %457 = load i32, ptr %13, align 4, !tbaa !15
  %458 = load i32, ptr %19, align 4, !tbaa !36
  %459 = load i32, ptr %409, align 4, !tbaa !39
  %460 = zext i32 %459 to i64
  %461 = shl nuw nsw i64 %460, 4
  %462 = load i32, ptr %410, align 4, !tbaa !40
  %463 = zext i32 %462 to i64
  %464 = mul nuw nsw i64 %461, %463
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %457, i32 noundef 43, i32 noundef %458, i64 noundef %464) #4
  %465 = load i32, ptr %13, align 4, !tbaa !15
  %466 = load i32, ptr %409, align 4, !tbaa !39
  call void @libxsmm_generator_load_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %465, i32 noundef %407, i32 noundef %.0531, i32 noundef %466) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %407, i32 noundef %.0531, i32 noundef 1, i32 noundef 16)
  %467 = load i32, ptr %23, align 4, !tbaa !38
  %468 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %467, i32 noundef %468, i32 noundef 0, i32 noundef 0) #4
  %469 = load i32, ptr %13, align 4, !tbaa !15
  %470 = load i32, ptr %19, align 4, !tbaa !36
  %471 = load i32, ptr %409, align 4, !tbaa !39
  %472 = zext i32 %471 to i64
  %473 = shl nuw nsw i64 %472, 4
  %474 = load i32, ptr %410, align 4, !tbaa !40
  %475 = zext i32 %474 to i64
  %476 = mul nuw nsw i64 %473, %475
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %469, i32 noundef 43, i32 noundef %470, i64 noundef %476) #4
  %477 = load i32, ptr %13, align 4, !tbaa !15
  %478 = load i32, ptr %409, align 4, !tbaa !39
  call void @libxsmm_generated_store_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %477, i32 noundef %407, i32 noundef %.0531, i32 noundef %478) #4
  br label %.loopexit.sink.split

479:                                              ; preds = %349
  %480 = add i32 %.0531, -17
  %or.cond11 = icmp ult i32 %480, 16
  br i1 %or.cond11, label %481, label %615

481:                                              ; preds = %479
  %482 = load i32, ptr %37, align 4, !tbaa !26
  %483 = and i32 %482, 2
  %484 = icmp eq i32 %483, 0
  br i1 %484, label %485, label %536

485:                                              ; preds = %481
  %486 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %486, i32 noundef %486, i64 noundef 0) #4
  %487 = load i32, ptr %20, align 4, !tbaa !28
  %488 = getelementptr inbounds i8, ptr %6, i64 8
  %489 = load i32, ptr %488, align 4, !tbaa !33
  %490 = shl i32 %489, 5
  %491 = getelementptr inbounds i8, ptr %3, i64 20
  %492 = load i32, ptr %491, align 4, !tbaa !40
  %493 = mul i32 %490, %492
  %494 = zext i32 %493 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef 63, i32 noundef %487, i32 noundef 63, i64 noundef %494) #4
  %495 = load i32, ptr %20, align 4, !tbaa !28
  %496 = load i32, ptr %14, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %495, i32 noundef %496, i64 noundef 0) #4
  %497 = load i32, ptr %14, align 4, !tbaa !16
  %498 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %497, i32 noundef %498, i32 noundef 63, i64 noundef 0) #4
  %499 = load i32, ptr %488, align 4, !tbaa !33
  %500 = and i32 %499, 15
  %.not570 = icmp ult i32 %499, 16
  br i1 %.not570, label %515, label %501

501:                                              ; preds = %485
  %502 = lshr i32 %499, 4
  %503 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %503, i32 noundef %502) #4
  %504 = load i32, ptr %12, align 4, !tbaa !14
  %505 = getelementptr inbounds i8, ptr %6, i64 16
  %506 = load i32, ptr %505, align 4, !tbaa !35
  %507 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_transpose_sme(ptr noundef nonnull %0, i32 noundef %504, i32 noundef %506, i32 noundef 16, i32 noundef %.0531, i32 noundef %507) #4
  %508 = load i32, ptr %12, align 4, !tbaa !14
  %509 = load i32, ptr %20, align 4, !tbaa !28
  %510 = getelementptr inbounds i8, ptr %3, i64 12
  %511 = load i32, ptr %510, align 4, !tbaa !30
  %512 = shl i32 %511, 4
  %513 = zext i32 %512 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %508, i32 noundef %509, i32 noundef %508, i64 noundef %513) #4
  %514 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %514, i32 noundef 1) #4
  br label %515

515:                                              ; preds = %501, %485
  %.not571 = icmp eq i32 %500, 0
  br i1 %.not571, label %527, label %516

516:                                              ; preds = %515
  %517 = load i32, ptr %12, align 4, !tbaa !14
  %518 = getelementptr inbounds i8, ptr %6, i64 16
  %519 = load i32, ptr %518, align 4, !tbaa !35
  %520 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_transpose_sme(ptr noundef nonnull %0, i32 noundef %517, i32 noundef %519, i32 noundef %500, i32 noundef %.0531, i32 noundef %520) #4
  %521 = load i32, ptr %12, align 4, !tbaa !14
  %522 = load i32, ptr %20, align 4, !tbaa !28
  %523 = getelementptr inbounds i8, ptr %3, i64 12
  %524 = load i32, ptr %523, align 4, !tbaa !30
  %525 = mul i32 %524, %500
  %526 = zext i32 %525 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %521, i32 noundef %522, i32 noundef %521, i64 noundef %526) #4
  br label %527

527:                                              ; preds = %516, %515
  %528 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %528, i32 noundef %528, i32 noundef 63, i64 noundef 0) #4
  %529 = load i32, ptr %12, align 4, !tbaa !14
  %530 = load i32, ptr %20, align 4, !tbaa !28
  %531 = load i32, ptr %488, align 4, !tbaa !33
  %532 = getelementptr inbounds i8, ptr %3, i64 12
  %533 = load i32, ptr %532, align 4, !tbaa !30
  %534 = mul i32 %533, %531
  %535 = zext i32 %534 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %529, i32 noundef %530, i32 noundef %529, i64 noundef %535) #4
  br label %536

536:                                              ; preds = %481, %527
  %537 = load i32, ptr %6, align 4, !tbaa !41
  %538 = and i32 %537, 31
  %539 = icmp eq i32 %538, 0
  %540 = getelementptr inbounds i8, ptr %6, i64 20
  %541 = getelementptr inbounds i8, ptr %3, i64 20
  %542 = getelementptr inbounds i8, ptr %3, i64 12
  %543 = icmp ult i32 %537, 32
  br i1 %543, label %586, label %544

544:                                              ; preds = %536
  %545 = and i32 %537, -32
  %546 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %546, i32 noundef %545) #4
  %547 = load i32, ptr %13, align 4, !tbaa !15
  %548 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %547, i32 noundef %548, i32 noundef 0, i32 noundef 0) #4
  %549 = load i32, ptr %13, align 4, !tbaa !15
  %550 = load i32, ptr %19, align 4, !tbaa !36
  %551 = load i32, ptr %540, align 4, !tbaa !39
  %552 = zext i32 %551 to i64
  %553 = shl nuw nsw i64 %552, 4
  %554 = load i32, ptr %541, align 4, !tbaa !40
  %555 = zext i32 %554 to i64
  %556 = mul nuw nsw i64 %553, %555
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %549, i32 noundef 43, i32 noundef %550, i64 noundef %556) #4
  %557 = load i32, ptr %13, align 4, !tbaa !15
  %558 = load i32, ptr %19, align 4, !tbaa !36
  %559 = load i32, ptr %540, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %557, i32 noundef %558, i32 noundef 32, i32 noundef %.0531, i32 noundef %559) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 32, i32 noundef %.0531, i32 noundef 0, i32 noundef 32)
  %560 = load i32, ptr %23, align 4, !tbaa !38
  %561 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %560, i32 noundef %561, i32 noundef 0, i32 noundef 0) #4
  %562 = load i32, ptr %13, align 4, !tbaa !15
  %563 = load i32, ptr %19, align 4, !tbaa !36
  %564 = load i32, ptr %540, align 4, !tbaa !39
  %565 = zext i32 %564 to i64
  %566 = shl nuw nsw i64 %565, 4
  %567 = load i32, ptr %541, align 4, !tbaa !40
  %568 = zext i32 %567 to i64
  %569 = mul nuw nsw i64 %566, %568
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %562, i32 noundef 43, i32 noundef %563, i64 noundef %569) #4
  %570 = load i32, ptr %13, align 4, !tbaa !15
  %571 = load i32, ptr %19, align 4, !tbaa !36
  %572 = load i32, ptr %540, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %570, i32 noundef %571, i32 noundef 32, i32 noundef %.0531, i32 noundef %572, i32 noundef 1) #4
  %573 = load i32, ptr %23, align 4, !tbaa !38
  %574 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %573, i32 noundef %574, i32 noundef 0, i32 noundef 0) #4
  %575 = load i32, ptr %13, align 4, !tbaa !15
  %576 = load i32, ptr %21, align 4, !tbaa !34
  %577 = load i32, ptr %541, align 4, !tbaa !40
  %578 = zext i32 %577 to i64
  %579 = shl nuw nsw i64 %578, 5
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %575, i32 noundef %576, i32 noundef %575, i64 noundef %579) #4
  %580 = load i32, ptr %11, align 4, !tbaa !13
  %581 = load i32, ptr %19, align 4, !tbaa !36
  %582 = load i32, ptr %542, align 4, !tbaa !30
  %583 = zext i32 %582 to i64
  %584 = shl nuw nsw i64 %583, 5
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %580, i32 noundef %581, i32 noundef %580, i64 noundef %584) #4
  %585 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %585, i32 noundef 32) #4
  br label %586

586:                                              ; preds = %536, %544
  br i1 %539, label %.loopexit, label %587

587:                                              ; preds = %586
  %588 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %588, i32 noundef %538) #4
  %589 = load i32, ptr %13, align 4, !tbaa !15
  %590 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %589, i32 noundef %590, i32 noundef 0, i32 noundef 0) #4
  %591 = load i32, ptr %13, align 4, !tbaa !15
  %592 = load i32, ptr %19, align 4, !tbaa !36
  %593 = load i32, ptr %540, align 4, !tbaa !39
  %594 = zext i32 %593 to i64
  %595 = shl nuw nsw i64 %594, 4
  %596 = load i32, ptr %541, align 4, !tbaa !40
  %597 = zext i32 %596 to i64
  %598 = mul nuw nsw i64 %595, %597
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %591, i32 noundef 43, i32 noundef %592, i64 noundef %598) #4
  %599 = load i32, ptr %13, align 4, !tbaa !15
  %600 = load i32, ptr %19, align 4, !tbaa !36
  %601 = load i32, ptr %540, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %599, i32 noundef %600, i32 noundef %538, i32 noundef %.0531, i32 noundef %601) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %538, i32 noundef %.0531, i32 noundef 0, i32 noundef 32)
  %602 = load i32, ptr %23, align 4, !tbaa !38
  %603 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %602, i32 noundef %603, i32 noundef 0, i32 noundef 0) #4
  %604 = load i32, ptr %13, align 4, !tbaa !15
  %605 = load i32, ptr %19, align 4, !tbaa !36
  %606 = load i32, ptr %540, align 4, !tbaa !39
  %607 = zext i32 %606 to i64
  %608 = shl nuw nsw i64 %607, 4
  %609 = load i32, ptr %541, align 4, !tbaa !40
  %610 = zext i32 %609 to i64
  %611 = mul nuw nsw i64 %608, %610
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %604, i32 noundef 43, i32 noundef %605, i64 noundef %611) #4
  %612 = load i32, ptr %13, align 4, !tbaa !15
  %613 = load i32, ptr %19, align 4, !tbaa !36
  %614 = load i32, ptr %540, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %612, i32 noundef %613, i32 noundef %538, i32 noundef %.0531, i32 noundef %614, i32 noundef 1) #4
  br label %.loopexit.sink.split

615:                                              ; preds = %479
  %616 = add i32 %.0531, -33
  %or.cond17 = icmp ult i32 %616, 16
  %617 = load i32, ptr %6, align 4
  %618 = icmp ugt i32 %617, 16
  %or.cond576 = select i1 %or.cond17, i1 %618, i1 false
  br i1 %or.cond576, label %619, label %899

619:                                              ; preds = %615
  %620 = load i32, ptr %37, align 4, !tbaa !26
  %621 = and i32 %620, 2
  %622 = icmp eq i32 %621, 0
  br i1 %622, label %623, label %667

623:                                              ; preds = %619
  %624 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %624, i32 noundef %624, i64 noundef 0) #4
  %625 = load i32, ptr %20, align 4, !tbaa !28
  %626 = getelementptr inbounds i8, ptr %3, i64 12
  %627 = load i32, ptr %626, align 4, !tbaa !30
  %628 = zext i32 %627 to i64
  %629 = shl nuw nsw i64 %628, 6
  %630 = getelementptr inbounds i8, ptr %6, i64 8
  %631 = load i32, ptr %630, align 4, !tbaa !33
  %632 = zext i32 %631 to i64
  %633 = mul nuw nsw i64 %629, %632
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef 63, i32 noundef %625, i32 noundef 63, i64 noundef %633) #4
  %634 = load i32, ptr %20, align 4, !tbaa !28
  %635 = load i32, ptr %14, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %634, i32 noundef %635, i64 noundef 0) #4
  %636 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %636, i32 noundef 58, i64 noundef 0) #4
  %637 = load i32, ptr %630, align 4, !tbaa !33
  %638 = and i32 %637, 15
  %.not562 = icmp ult i32 %637, 16
  br i1 %.not562, label %652, label %639

639:                                              ; preds = %623
  %640 = lshr i32 %637, 4
  %641 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %641, i32 noundef %640) #4
  %642 = load i32, ptr %12, align 4, !tbaa !14
  %643 = getelementptr inbounds i8, ptr %6, i64 16
  %644 = load i32, ptr %643, align 4, !tbaa !35
  %645 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_sme_transpose_64(ptr noundef nonnull %0, i32 noundef %642, i32 noundef %644, i32 noundef 0, i32 noundef %.0531, i32 noundef %645) #4
  %646 = load i32, ptr %12, align 4, !tbaa !14
  %647 = load i32, ptr %19, align 4, !tbaa !36
  %648 = load i32, ptr %626, align 4, !tbaa !30
  %649 = shl i32 %648, 4
  %650 = zext i32 %649 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %646, i32 noundef %647, i32 noundef %646, i64 noundef %650) #4
  %651 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %651, i32 noundef 1) #4
  br label %652

652:                                              ; preds = %639, %623
  %.not563 = icmp eq i32 %638, 0
  br i1 %.not563, label %658, label %653

653:                                              ; preds = %652
  %654 = load i32, ptr %12, align 4, !tbaa !14
  %655 = getelementptr inbounds i8, ptr %6, i64 16
  %656 = load i32, ptr %655, align 4, !tbaa !35
  %657 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_sme_transpose_64(ptr noundef nonnull %0, i32 noundef %654, i32 noundef %656, i32 noundef %638, i32 noundef %.0531, i32 noundef %657) #4
  br label %658

658:                                              ; preds = %653, %652
  %659 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %659, i32 noundef %659, i32 noundef 63, i64 noundef 0) #4
  %660 = load i32, ptr %12, align 4, !tbaa !14
  %661 = load i32, ptr %19, align 4, !tbaa !36
  %662 = load i32, ptr %630, align 4, !tbaa !33
  %663 = sub i32 %662, %638
  %664 = load i32, ptr %626, align 4, !tbaa !30
  %665 = mul i32 %663, %664
  %666 = zext i32 %665 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %660, i32 noundef %661, i32 noundef %660, i64 noundef %666) #4
  %.pre592 = load i32, ptr %6, align 4, !tbaa !41
  br label %667

667:                                              ; preds = %619, %658
  %668 = phi i32 [ %.pre592, %658 ], [ %617, %619 ]
  %669 = and i32 %668, -32
  %670 = and i32 %668, 31
  %671 = icmp eq i32 %670, 0
  %672 = icmp ult i32 %668, 32
  %673 = getelementptr inbounds i8, ptr %6, i64 20
  %674 = getelementptr inbounds i8, ptr %3, i64 20
  %675 = getelementptr inbounds i8, ptr %3, i64 12
  br i1 %672, label %717, label %676

676:                                              ; preds = %667
  %677 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %677, i32 noundef %669) #4
  %678 = load i32, ptr %13, align 4, !tbaa !15
  %679 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %678, i32 noundef %679, i32 noundef 0, i32 noundef 0) #4
  %680 = load i32, ptr %13, align 4, !tbaa !15
  %681 = load i32, ptr %19, align 4, !tbaa !36
  %682 = load i32, ptr %673, align 4, !tbaa !39
  %683 = zext i32 %682 to i64
  %684 = shl nuw nsw i64 %683, 4
  %685 = load i32, ptr %674, align 4, !tbaa !40
  %686 = zext i32 %685 to i64
  %687 = mul nuw nsw i64 %684, %686
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %680, i32 noundef 43, i32 noundef %681, i64 noundef %687) #4
  %688 = load i32, ptr %13, align 4, !tbaa !15
  %689 = load i32, ptr %19, align 4, !tbaa !36
  %690 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %688, i32 noundef %689, i32 noundef 32, i32 noundef %.0531, i32 noundef %690) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 32, i32 noundef %.0531, i32 noundef 0, i32 noundef 64)
  %691 = load i32, ptr %23, align 4, !tbaa !38
  %692 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %691, i32 noundef %692, i32 noundef 0, i32 noundef 0) #4
  %693 = load i32, ptr %13, align 4, !tbaa !15
  %694 = load i32, ptr %19, align 4, !tbaa !36
  %695 = load i32, ptr %673, align 4, !tbaa !39
  %696 = zext i32 %695 to i64
  %697 = shl nuw nsw i64 %696, 4
  %698 = load i32, ptr %674, align 4, !tbaa !40
  %699 = zext i32 %698 to i64
  %700 = mul nuw nsw i64 %697, %699
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %693, i32 noundef 43, i32 noundef %694, i64 noundef %700) #4
  %701 = load i32, ptr %13, align 4, !tbaa !15
  %702 = load i32, ptr %19, align 4, !tbaa !36
  %703 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %701, i32 noundef %702, i32 noundef 32, i32 noundef %.0531, i32 noundef %703, i32 noundef 1) #4
  %704 = load i32, ptr %23, align 4, !tbaa !38
  %705 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %704, i32 noundef %705, i32 noundef 0, i32 noundef 0) #4
  %706 = load i32, ptr %13, align 4, !tbaa !15
  %707 = load i32, ptr %21, align 4, !tbaa !34
  %708 = load i32, ptr %674, align 4, !tbaa !40
  %709 = zext i32 %708 to i64
  %710 = shl nuw nsw i64 %709, 5
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %706, i32 noundef %707, i32 noundef %706, i64 noundef %710) #4
  %711 = load i32, ptr %11, align 4, !tbaa !13
  %712 = load i32, ptr %19, align 4, !tbaa !36
  %713 = load i32, ptr %675, align 4, !tbaa !30
  %714 = zext i32 %713 to i64
  %715 = shl nuw nsw i64 %714, 5
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %711, i32 noundef %712, i32 noundef %711, i64 noundef %715) #4
  %716 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %716, i32 noundef 32) #4
  br label %717

717:                                              ; preds = %667, %676
  br i1 %671, label %764, label %718

718:                                              ; preds = %717
  %719 = load i32, ptr %6, align 4, !tbaa !41
  %720 = and i32 %719, 31
  %721 = icmp ult i32 %720, 17
  br i1 %721, label %764, label %722

722:                                              ; preds = %718
  %723 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %723, i32 noundef %670) #4
  %724 = load i32, ptr %13, align 4, !tbaa !15
  %725 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %724, i32 noundef %725, i32 noundef 0, i32 noundef 0) #4
  %726 = load i32, ptr %13, align 4, !tbaa !15
  %727 = load i32, ptr %19, align 4, !tbaa !36
  %728 = load i32, ptr %673, align 4, !tbaa !39
  %729 = zext i32 %728 to i64
  %730 = shl nuw nsw i64 %729, 4
  %731 = load i32, ptr %674, align 4, !tbaa !40
  %732 = zext i32 %731 to i64
  %733 = mul nuw nsw i64 %730, %732
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %726, i32 noundef 43, i32 noundef %727, i64 noundef %733) #4
  %734 = load i32, ptr %13, align 4, !tbaa !15
  %735 = load i32, ptr %19, align 4, !tbaa !36
  %736 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %734, i32 noundef %735, i32 noundef %670, i32 noundef %.0531, i32 noundef %736) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %670, i32 noundef %.0531, i32 noundef 0, i32 noundef 64)
  %737 = load i32, ptr %23, align 4, !tbaa !38
  %738 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %737, i32 noundef %738, i32 noundef 0, i32 noundef 0) #4
  %739 = load i32, ptr %13, align 4, !tbaa !15
  %740 = load i32, ptr %19, align 4, !tbaa !36
  %741 = load i32, ptr %673, align 4, !tbaa !39
  %742 = zext i32 %741 to i64
  %743 = shl nuw nsw i64 %742, 4
  %744 = load i32, ptr %674, align 4, !tbaa !40
  %745 = zext i32 %744 to i64
  %746 = mul nuw nsw i64 %743, %745
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %739, i32 noundef 43, i32 noundef %740, i64 noundef %746) #4
  %747 = load i32, ptr %13, align 4, !tbaa !15
  %748 = load i32, ptr %19, align 4, !tbaa !36
  %749 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef nonnull %0, i32 noundef %747, i32 noundef %748, i32 noundef %670, i32 noundef %.0531, i32 noundef %749, i32 noundef 1) #4
  %750 = load i32, ptr %23, align 4, !tbaa !38
  %751 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %750, i32 noundef %751, i32 noundef 0, i32 noundef 0) #4
  %752 = load i32, ptr %13, align 4, !tbaa !15
  %753 = load i32, ptr %21, align 4, !tbaa !34
  %754 = zext nneg i32 %670 to i64
  %755 = load i32, ptr %674, align 4, !tbaa !40
  %756 = zext i32 %755 to i64
  %757 = mul nuw nsw i64 %756, %754
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %752, i32 noundef %753, i32 noundef %752, i64 noundef %757) #4
  %758 = load i32, ptr %11, align 4, !tbaa !13
  %759 = load i32, ptr %19, align 4, !tbaa !36
  %760 = load i32, ptr %675, align 4, !tbaa !30
  %761 = zext i32 %760 to i64
  %762 = mul nuw nsw i64 %761, %754
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %758, i32 noundef %759, i32 noundef %758, i64 noundef %762) #4
  %763 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %763, i32 noundef %670) #4
  br label %764

764:                                              ; preds = %722, %718, %717
  %765 = load i32, ptr %6, align 4, !tbaa !41
  %766 = and i32 %765, 31
  %767 = add nsw i32 %766, -1
  %or.cond577 = icmp ult i32 %767, 16
  br i1 %or.cond577, label %768, label %.thread

768:                                              ; preds = %764
  %769 = load i32, ptr %13, align 4, !tbaa !15
  %770 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %769, i32 noundef %770, i32 noundef 0, i32 noundef 0) #4
  %771 = load i32, ptr %13, align 4, !tbaa !15
  %772 = load i32, ptr %6, align 4, !tbaa !41
  %773 = and i32 %772, 31
  %774 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %771, i32 noundef %773, i32 noundef %.0531, i32 noundef %774) #4
  %775 = load i32, ptr %6, align 4, !tbaa !41
  %776 = and i32 %775, 31
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %776, i32 noundef %.0531, i32 noundef 2, i32 noundef 64)
  %777 = load i32, ptr %23, align 4, !tbaa !38
  %778 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %777, i32 noundef %778, i32 noundef 0, i32 noundef 0) #4
  %779 = load i32, ptr %13, align 4, !tbaa !15
  %780 = load i32, ptr %6, align 4, !tbaa !41
  %781 = and i32 %780, 31
  %782 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %779, i32 noundef %781, i32 noundef %.0531, i32 noundef %782) #4
  %783 = load i32, ptr %23, align 4, !tbaa !38
  %784 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %783, i32 noundef %784, i32 noundef 0, i32 noundef 0) #4
  %.pre598 = load i32, ptr %6, align 4, !tbaa !41
  %.pre602 = and i32 %.pre598, 31
  %.pre603 = add nsw i32 %.pre602, -1
  %785 = icmp ult i32 %.pre603, 16
  br i1 %785, label %786, label %.thread

786:                                              ; preds = %768
  %787 = load i32, ptr %11, align 4, !tbaa !13
  %788 = load i32, ptr %19, align 4, !tbaa !36
  %789 = load i32, ptr %675, align 4, !tbaa !30
  %790 = zext i32 %789 to i64
  %.pre598. = select i1 %672, i32 %.pre598, i32 %669
  %791 = zext i32 %.pre598. to i64
  %792 = mul nuw nsw i64 %790, %791
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %787, i32 noundef %788, i32 noundef %787, i64 noundef %792) #4
  br label %800

.thread:                                          ; preds = %764, %768
  %793 = phi i32 [ %.pre598, %768 ], [ %765, %764 ]
  %794 = load i32, ptr %11, align 4, !tbaa !13
  %795 = load i32, ptr %19, align 4, !tbaa !36
  %796 = zext i32 %793 to i64
  %797 = load i32, ptr %675, align 4, !tbaa !30
  %798 = zext i32 %797 to i64
  %799 = mul nuw nsw i64 %798, %796
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %794, i32 noundef %795, i32 noundef %794, i64 noundef %799) #4
  br label %800

800:                                              ; preds = %.thread, %786
  %801 = load i32, ptr %37, align 4, !tbaa !26
  %802 = and i32 %801, 2
  %.not567 = icmp eq i32 %802, 0
  %803 = load i32, ptr %20, align 4, !tbaa !28
  %804 = load i32, ptr %675, align 4, !tbaa !30
  %805 = zext i32 %804 to i64
  %806 = shl nuw nsw i64 %805, 5
  %.val657 = load i32, ptr %14, align 4
  %.val658 = load i32, ptr %12, align 4
  %807 = select i1 %.not567, i32 %.val657, i32 %.val658
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %807, i32 noundef %803, i32 noundef %807, i64 noundef %806) #4
  %808 = load i32, ptr %13, align 4, !tbaa !15
  %809 = load i32, ptr %21, align 4, !tbaa !34
  %810 = load i32, ptr %674, align 4, !tbaa !40
  %811 = shl i32 %810, 5
  %812 = load i32, ptr %673, align 4, !tbaa !39
  %813 = mul i32 %811, %812
  %814 = zext i32 %813 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %808, i32 noundef %809, i32 noundef %808, i64 noundef %814) #4
  %815 = load i32, ptr %6, align 4, !tbaa !41
  %816 = and i32 %815, 31
  %817 = add nsw i32 %816, -1
  %or.cond579 = icmp ult i32 %817, 16
  %.sink625 = select i1 %or.cond579, i32 %669, i32 %815
  %818 = load i32, ptr %13, align 4, !tbaa !15
  %819 = load i32, ptr %21, align 4, !tbaa !34
  %820 = zext i32 %.sink625 to i64
  %821 = load i32, ptr %674, align 4, !tbaa !40
  %822 = zext i32 %821 to i64
  %823 = mul nuw nsw i64 %822, %820
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %818, i32 noundef %819, i32 noundef %818, i64 noundef %823) #4
  %824 = load i32, ptr %6, align 4, !tbaa !41
  %825 = and i32 %824, 63
  %826 = and i32 %824, 31
  %827 = add nsw i32 %826, -17
  %or.cond580 = icmp ult i32 %827, -16
  %828 = icmp ugt i32 %825, 32
  %. = select i1 %828, i32 32, i32 0
  %.0533 = select i1 %or.cond580, i32 %825, i32 %.
  %829 = icmp eq i32 %.0533, 0
  %830 = add nsw i32 %.0531, -32
  %831 = icmp ult i32 %824, 64
  br i1 %831, label %872, label %832

832:                                              ; preds = %800
  %833 = and i32 %824, -64
  %834 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %834, i32 noundef %833) #4
  %835 = load i32, ptr %13, align 4, !tbaa !15
  %836 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %835, i32 noundef %836, i32 noundef 0, i32 noundef 0) #4
  %837 = load i32, ptr %13, align 4, !tbaa !15
  %838 = load i32, ptr %19, align 4, !tbaa !36
  %839 = load i32, ptr %673, align 4, !tbaa !39
  %840 = zext i32 %839 to i64
  %841 = shl nuw nsw i64 %840, 4
  %842 = load i32, ptr %674, align 4, !tbaa !40
  %843 = zext i32 %842 to i64
  %844 = mul nuw nsw i64 %841, %843
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %837, i32 noundef 43, i32 noundef %838, i64 noundef %844) #4
  %845 = load i32, ptr %13, align 4, !tbaa !15
  %846 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generator_load_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %845, i32 noundef 64, i32 noundef %830, i32 noundef %846) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 64, i32 noundef %830, i32 noundef 1, i32 noundef 64)
  %847 = load i32, ptr %23, align 4, !tbaa !38
  %848 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %847, i32 noundef %848, i32 noundef 0, i32 noundef 0) #4
  %849 = load i32, ptr %13, align 4, !tbaa !15
  %850 = load i32, ptr %19, align 4, !tbaa !36
  %851 = load i32, ptr %673, align 4, !tbaa !39
  %852 = zext i32 %851 to i64
  %853 = shl nuw nsw i64 %852, 4
  %854 = load i32, ptr %674, align 4, !tbaa !40
  %855 = zext i32 %854 to i64
  %856 = mul nuw nsw i64 %853, %855
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %849, i32 noundef 43, i32 noundef %850, i64 noundef %856) #4
  %857 = load i32, ptr %13, align 4, !tbaa !15
  %858 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generated_store_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %857, i32 noundef 64, i32 noundef %830, i32 noundef %858) #4
  %859 = load i32, ptr %23, align 4, !tbaa !38
  %860 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %859, i32 noundef %860, i32 noundef 0, i32 noundef 0) #4
  %861 = load i32, ptr %13, align 4, !tbaa !15
  %862 = load i32, ptr %21, align 4, !tbaa !34
  %863 = load i32, ptr %674, align 4, !tbaa !40
  %864 = zext i32 %863 to i64
  %865 = shl nuw nsw i64 %864, 6
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %861, i32 noundef %862, i32 noundef %861, i64 noundef %865) #4
  %866 = load i32, ptr %11, align 4, !tbaa !13
  %867 = load i32, ptr %19, align 4, !tbaa !36
  %868 = load i32, ptr %674, align 4, !tbaa !40
  %869 = zext i32 %868 to i64
  %870 = shl nuw nsw i64 %869, 6
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %866, i32 noundef %867, i32 noundef %866, i64 noundef %870) #4
  %871 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %871, i32 noundef 64) #4
  br label %872

872:                                              ; preds = %800, %832
  br i1 %829, label %.loopexit, label %873

873:                                              ; preds = %872
  %874 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %874, i32 noundef %.0533) #4
  %875 = load i32, ptr %13, align 4, !tbaa !15
  %876 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %875, i32 noundef %876, i32 noundef 0, i32 noundef 0) #4
  %877 = load i32, ptr %13, align 4, !tbaa !15
  %878 = load i32, ptr %19, align 4, !tbaa !36
  %879 = load i32, ptr %673, align 4, !tbaa !39
  %880 = zext i32 %879 to i64
  %881 = shl nuw nsw i64 %880, 4
  %882 = load i32, ptr %674, align 4, !tbaa !40
  %883 = zext i32 %882 to i64
  %884 = mul nuw nsw i64 %881, %883
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %877, i32 noundef 43, i32 noundef %878, i64 noundef %884) #4
  %885 = load i32, ptr %13, align 4, !tbaa !15
  %886 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generator_load_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %885, i32 noundef %.0533, i32 noundef %830, i32 noundef %886) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %.0533, i32 noundef %830, i32 noundef 1, i32 noundef 64)
  %887 = load i32, ptr %23, align 4, !tbaa !38
  %888 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %887, i32 noundef %888, i32 noundef 0, i32 noundef 0) #4
  %889 = load i32, ptr %13, align 4, !tbaa !15
  %890 = load i32, ptr %19, align 4, !tbaa !36
  %891 = load i32, ptr %673, align 4, !tbaa !39
  %892 = zext i32 %891 to i64
  %893 = shl nuw nsw i64 %892, 4
  %894 = load i32, ptr %674, align 4, !tbaa !40
  %895 = zext i32 %894 to i64
  %896 = mul nuw nsw i64 %893, %895
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %889, i32 noundef 43, i32 noundef %890, i64 noundef %896) #4
  %897 = load i32, ptr %13, align 4, !tbaa !15
  %898 = load i32, ptr %673, align 4, !tbaa !39
  call void @libxsmm_generated_store_64x16_aarch64_sme(ptr noundef nonnull %0, i32 noundef %897, i32 noundef %.0533, i32 noundef %830, i32 noundef %898) #4
  br label %.loopexit.sink.split

899:                                              ; preds = %615
  %900 = icmp ugt i32 %.0531, 32
  br i1 %900, label %901, label %.loopexit

901:                                              ; preds = %899
  %902 = load i32, ptr %37, align 4, !tbaa !26
  %903 = and i32 %902, 2
  %904 = icmp eq i32 %903, 0
  br i1 %904, label %905, label %949

905:                                              ; preds = %901
  %906 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %906, i32 noundef %906, i64 noundef 0) #4
  %907 = load i32, ptr %20, align 4, !tbaa !28
  %908 = getelementptr inbounds i8, ptr %3, i64 12
  %909 = load i32, ptr %908, align 4, !tbaa !30
  %910 = zext i32 %909 to i64
  %911 = shl nuw nsw i64 %910, 6
  %912 = getelementptr inbounds i8, ptr %6, i64 8
  %913 = load i32, ptr %912, align 4, !tbaa !33
  %914 = zext i32 %913 to i64
  %915 = mul nuw nsw i64 %911, %914
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef 63, i32 noundef %907, i32 noundef 63, i64 noundef %915) #4
  %916 = load i32, ptr %20, align 4, !tbaa !28
  %917 = load i32, ptr %14, align 4, !tbaa !16
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %916, i32 noundef %917, i64 noundef 0) #4
  %918 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef 63, i32 noundef %918, i32 noundef 58, i64 noundef 0) #4
  %919 = load i32, ptr %912, align 4, !tbaa !33
  %920 = and i32 %919, 15
  %.not560 = icmp ult i32 %919, 16
  br i1 %.not560, label %934, label %921

921:                                              ; preds = %905
  %922 = lshr i32 %919, 4
  %923 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %923, i32 noundef %922) #4
  %924 = load i32, ptr %12, align 4, !tbaa !14
  %925 = getelementptr inbounds i8, ptr %6, i64 16
  %926 = load i32, ptr %925, align 4, !tbaa !35
  %927 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_sme_transpose_64(ptr noundef nonnull %0, i32 noundef %924, i32 noundef %926, i32 noundef 0, i32 noundef %.0531, i32 noundef %927) #4
  %928 = load i32, ptr %12, align 4, !tbaa !14
  %929 = load i32, ptr %19, align 4, !tbaa !36
  %930 = load i32, ptr %908, align 4, !tbaa !30
  %931 = shl i32 %930, 4
  %932 = zext i32 %931 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %928, i32 noundef %929, i32 noundef %928, i64 noundef %932) #4
  %933 = load i32, ptr %21, align 4, !tbaa !34
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %933, i32 noundef 1) #4
  br label %934

934:                                              ; preds = %921, %905
  %.not561 = icmp eq i32 %920, 0
  br i1 %.not561, label %940, label %935

935:                                              ; preds = %934
  %936 = load i32, ptr %12, align 4, !tbaa !14
  %937 = getelementptr inbounds i8, ptr %6, i64 16
  %938 = load i32, ptr %937, align 4, !tbaa !35
  %939 = load i32, ptr %19, align 4, !tbaa !36
  call void @libxsmm_generator_sme_transpose_64(ptr noundef nonnull %0, i32 noundef %936, i32 noundef %938, i32 noundef %920, i32 noundef %.0531, i32 noundef %939) #4
  br label %940

940:                                              ; preds = %935, %934
  %941 = load i32, ptr %20, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %941, i32 noundef %941, i32 noundef 63, i64 noundef 0) #4
  %942 = load i32, ptr %12, align 4, !tbaa !14
  %943 = load i32, ptr %19, align 4, !tbaa !36
  %944 = load i32, ptr %912, align 4, !tbaa !33
  %945 = sub i32 %944, %920
  %946 = load i32, ptr %908, align 4, !tbaa !30
  %947 = mul i32 %945, %946
  %948 = zext i32 %947 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4097, i32 noundef %942, i32 noundef %943, i32 noundef %942, i64 noundef %948) #4
  %.pre = load i32, ptr %6, align 4, !tbaa !41
  br label %949

949:                                              ; preds = %901, %940
  %950 = phi i32 [ %.pre, %940 ], [ %617, %901 ]
  %951 = and i32 %950, 15
  %952 = icmp eq i32 %951, 0
  %953 = getelementptr inbounds i8, ptr %6, i64 20
  %954 = getelementptr inbounds i8, ptr %3, i64 12
  %955 = icmp ult i32 %950, 16
  br i1 %955, label %980, label %956

956:                                              ; preds = %949
  %957 = and i32 %950, -16
  %958 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %958, i32 noundef %957) #4
  %959 = load i32, ptr %13, align 4, !tbaa !15
  %960 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %959, i32 noundef %960, i32 noundef 0, i32 noundef 0) #4
  %961 = load i32, ptr %13, align 4, !tbaa !15
  %962 = load i32, ptr %953, align 4, !tbaa !39
  call void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %961, i32 noundef 16, i32 noundef %.0531, i32 noundef %962) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 16, i32 noundef %.0531, i32 noundef 2, i32 noundef 64)
  %963 = load i32, ptr %23, align 4, !tbaa !38
  %964 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %963, i32 noundef %964, i32 noundef 0, i32 noundef 0) #4
  %965 = load i32, ptr %13, align 4, !tbaa !15
  %966 = load i32, ptr %953, align 4, !tbaa !39
  call void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %965, i32 noundef 16, i32 noundef %.0531, i32 noundef %966) #4
  %967 = load i32, ptr %23, align 4, !tbaa !38
  %968 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %967, i32 noundef %968, i32 noundef 0, i32 noundef 0) #4
  %969 = load i32, ptr %13, align 4, !tbaa !15
  %970 = load i32, ptr %21, align 4, !tbaa !34
  %971 = load i32, ptr %954, align 4, !tbaa !30
  %972 = zext i32 %971 to i64
  %973 = shl nuw nsw i64 %972, 4
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %969, i32 noundef %970, i32 noundef %969, i64 noundef %973) #4
  %974 = load i32, ptr %11, align 4, !tbaa !13
  %975 = load i32, ptr %19, align 4, !tbaa !36
  %976 = load i32, ptr %954, align 4, !tbaa !30
  %977 = zext i32 %976 to i64
  %978 = shl nuw nsw i64 %977, 4
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %974, i32 noundef %975, i32 noundef %974, i64 noundef %978) #4
  %979 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %979, i32 noundef 16) #4
  br label %980

980:                                              ; preds = %949, %956
  br i1 %952, label %.loopexit, label %981

981:                                              ; preds = %980
  %982 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_header_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %982, i32 noundef %951) #4
  %983 = load i32, ptr %13, align 4, !tbaa !15
  %984 = load i32, ptr %23, align 4, !tbaa !38
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %983, i32 noundef %984, i32 noundef 0, i32 noundef 0) #4
  %985 = load i32, ptr %13, align 4, !tbaa !15
  %986 = load i32, ptr %953, align 4, !tbaa !39
  call void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %985, i32 noundef %951, i32 noundef %.0531, i32 noundef %986) #4
  call void @libxsmm_generator_gemm_aarch64_kloop_sme_het(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef %951, i32 noundef %.0531, i32 noundef 2, i32 noundef 64)
  %987 = load i32, ptr %23, align 4, !tbaa !38
  %988 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %987, i32 noundef %988, i32 noundef 0, i32 noundef 0) #4
  %989 = load i32, ptr %13, align 4, !tbaa !15
  %990 = load i32, ptr %953, align 4, !tbaa !39
  call void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef nonnull %0, i32 noundef %989, i32 noundef %951, i32 noundef %.0531, i32 noundef %990) #4
  br label %.loopexit.sink.split

.loopexit.sink.split:                             ; preds = %453, %587, %873, %981
  %.sink644 = phi i32 [ %951, %981 ], [ %.0533, %873 ], [ %538, %587 ], [ %407, %453 ]
  %.sink643 = phi ptr [ %954, %981 ], [ %674, %873 ], [ %541, %587 ], [ %410, %453 ]
  %.sink635 = phi ptr [ %954, %981 ], [ %674, %873 ], [ %542, %587 ], [ %410, %453 ]
  %991 = load i32, ptr %23, align 4, !tbaa !38
  %992 = load i32, ptr %13, align 4, !tbaa !15
  call void @libxsmm_aarch64_instruction_alu_compute_shifted_reg(ptr noundef nonnull %0, i32 noundef 704643079, i32 noundef 63, i32 noundef %991, i32 noundef %992, i32 noundef 0, i32 noundef 0) #4
  %993 = load i32, ptr %13, align 4, !tbaa !15
  %994 = load i32, ptr %21, align 4, !tbaa !34
  %995 = zext nneg i32 %.sink644 to i64
  %996 = load i32, ptr %.sink643, align 4, !tbaa !18
  %997 = zext i32 %996 to i64
  %998 = mul nuw nsw i64 %997, %995
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %993, i32 noundef %994, i32 noundef %993, i64 noundef %998) #4
  %999 = load i32, ptr %11, align 4, !tbaa !13
  %1000 = load i32, ptr %19, align 4, !tbaa !36
  %1001 = load i32, ptr %.sink635, align 4, !tbaa !18
  %1002 = zext i32 %1001 to i64
  %1003 = mul nuw nsw i64 %1002, %995
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef nonnull %0, i32 noundef 4096, i32 noundef %999, i32 noundef %1000, i32 noundef %999, i64 noundef %1003) #4
  %1004 = load i32, ptr %17, align 4, !tbaa !37
  call void @libxsmm_generator_loop_footer_aarch64(ptr noundef nonnull %0, ptr noundef nonnull %4, i32 noundef %1004, i32 noundef %.sink644) #4
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.sink.split, %980, %872, %586, %452, %899
  call void @libxsmm_aarch64_instruction_sm(ptr noundef nonnull %0, i32 noundef -721205633) #4
  call void @libxsmm_generator_gemm_destroy_stack_frame_aarch64(ptr noundef nonnull %0) #4
  call void @libxsmm_aarch64_instruction_close_stream(ptr noundef nonnull %0, i16 noundef zeroext 3599) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 95, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 2052, ptr nonnull %4) #4
  call void @llvm.lifetime.end.p0(i64 688, ptr nonnull %3) #4
  ret void
}

declare void @libxsmm_generator_gemm_aarch64_setup_blocking_sme(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_gemm_init_micro_kernel_config_aarch64(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_reset_aarch64_gp_reg_mapping(ptr noundef) local_unnamed_addr #2

declare void @libxsmm_reset_loop_label_tracker(ptr noundef) local_unnamed_addr #2

declare void @libxsmm_aarch64_instruction_open_stream(ptr noundef, i16 noundef zeroext) local_unnamed_addr #2

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

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

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

declare void @libxsmm_generator_gemm_setup_stack_frame_aarch64(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @libxsmm_generator_sme_transpose_64(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_load_32x32_aarch64_sme(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_store_32x32_aarch64_sme(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generated_load_16x64_aarch64_sme(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generated_store_16x64_aarch64_sme(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transpose_sme(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_load_64x16_aarch64_sme(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generated_store_64x16_aarch64_sme(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_gemm_destroy_stack_frame_aarch64(ptr noundef) local_unnamed_addr #2

declare void @libxsmm_aarch64_instruction_close_stream(ptr noundef, i16 noundef zeroext) local_unnamed_addr #2

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 28}
!6 = !{!"libxsmm_generated_code", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"libxsmm_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128}
!13 = !{!12, !10, i64 4}
!14 = !{!12, !10, i64 12}
!15 = !{!12, !10, i64 20}
!16 = !{!12, !10, i64 52}
!17 = !{!12, !10, i64 28}
!18 = !{!10, !10, i64 0}
!19 = !{!12, !10, i64 80}
!20 = !{i64 0, i64 4, !18, i64 4, i64 4, !18, i64 8, i64 4, !18, i64 12, i64 4, !18, i64 16, i64 4, !18, i64 20, i64 4, !18, i64 24, i64 4, !18, i64 28, i64 1, !21, i64 29, i64 3, !21, i64 32, i64 1, !21, i64 33, i64 8, !22, i64 41, i64 8, !22, i64 49, i64 1, !21, i64 50, i64 4, !18, i64 54, i64 4, !18, i64 58, i64 4, !18, i64 62, i64 2, !24, i64 64, i64 2, !24, i64 66, i64 1, !21, i64 67, i64 1, !21, i64 68, i64 1, !21, i64 69, i64 1, !21, i64 70, i64 2, !24, i64 72, i64 2, !24, i64 74, i64 2, !24, i64 76, i64 2, !24, i64 78, i64 2, !24, i64 80, i64 2, !24, i64 82, i64 4, !18, i64 86, i64 4, !18, i64 90, i64 4, !18, i64 94, i64 1, !21}
!21 = !{!8, !8, i64 0}
!22 = !{!23, !23, i64 0}
!23 = !{!"long long", !8, i64 0}
!24 = !{!25, !25, i64 0}
!25 = !{!"short", !8, i64 0}
!26 = !{!27, !10, i64 24}
!27 = !{!"libxsmm_gemm_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !8, i64 28, !8, i64 29, !8, i64 32, !23, i64 33, !23, i64 41, !8, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !25, i64 62, !25, i64 64, !8, i64 66, !8, i64 67, !8, i64 68, !8, i64 69, !25, i64 70, !25, i64 72, !25, i64 74, !25, i64 76, !25, i64 78, !25, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !8, i64 94}
!28 = !{!12, !10, i64 92}
!29 = !{!12, !10, i64 44}
!30 = !{!31, !10, i64 12}
!31 = !{!"libxsmm_micro_kernel_config", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !8, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !8, i64 364, !8, i64 380, !8, i64 396, !8, i64 412, !8, i64 428, !8, i64 444, !10, i64 460, !8, i64 464, !32, i64 520, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !7, i64 592, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !7, i64 616, !10, i64 624, !10, i64 628, !10, i64 632, !10, i64 636, !10, i64 640, !10, i64 644, !10, i64 648, !10, i64 652, !10, i64 656, !10, i64 660, !10, i64 664, !10, i64 668, !10, i64 672, !10, i64 676, !10, i64 680}
!32 = !{!"libxsmm_tile_config", !8, i64 0, !25, i64 2, !8, i64 4, !25, i64 6, !8, i64 8, !25, i64 10, !8, i64 12, !25, i64 14, !8, i64 16, !25, i64 18, !8, i64 20, !25, i64 22, !8, i64 24, !25, i64 26, !8, i64 28, !25, i64 30, !8, i64 32}
!33 = !{!27, !10, i64 8}
!34 = !{!12, !10, i64 96}
!35 = !{!27, !10, i64 16}
!36 = !{!12, !10, i64 88}
!37 = !{!12, !10, i64 40}
!38 = !{!12, !10, i64 100}
!39 = !{!27, !10, i64 20}
!40 = !{!31, !10, i64 20}
!41 = !{!27, !10, i64 0}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass