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

; 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_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 }

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

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

; 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
declare dso_local i32 @libxsmm_is_tile_in_last_tilerow(ptr noundef, i32 noundef) #2

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

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

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

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

declare void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) #0

declare void @libxsmm_x86_instruction_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

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

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

60:                                               ; preds = %9
  %61 = load ptr, ptr %11, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %61, i32 0, i32 22
  %63 = load i32, ptr %62, align 4, !tbaa !15
  br label %68

64:                                               ; preds = %9
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %65, i32 0, i32 23
  %67 = load i32, ptr %66, align 4, !tbaa !17
  br label %68

68:                                               ; preds = %64, %60
  %69 = phi i32 [ %63, %60 ], [ %67, %64 ]
  store i32 %69, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %70 = load ptr, ptr %12, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %70, i32 0, i32 23
  %72 = load i32, ptr %71, align 4, !tbaa !11
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %74, label %78

74:                                               ; preds = %68
  %75 = load ptr, ptr %11, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %75, i32 0, i32 23
  %77 = load i32, ptr %76, align 4, !tbaa !17
  br label %82

78:                                               ; preds = %68
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %79, i32 0, i32 22
  %81 = load i32, ptr %80, align 4, !tbaa !15
  br label %82

82:                                               ; preds = %78, %74
  %83 = phi i32 [ %77, %74 ], [ %81, %78 ]
  store i32 %83, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %84 = load ptr, ptr %12, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %84, i32 0, i32 23
  %86 = load i32, ptr %85, align 4, !tbaa !11
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %88, label %92

88:                                               ; preds = %82
  %89 = load ptr, ptr %11, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %89, i32 0, i32 23
  %91 = load i32, ptr %90, align 4, !tbaa !17
  br label %96

92:                                               ; preds = %82
  %93 = load ptr, ptr %11, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %93, i32 0, i32 22
  %95 = load i32, ptr %94, align 4, !tbaa !15
  br label %96

96:                                               ; preds = %92, %88
  %97 = phi i32 [ %91, %88 ], [ %95, %92 ]
  store i32 %97, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %98 = load ptr, ptr %12, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %98, i32 0, i32 30
  %100 = load i32, ptr %99, align 8, !tbaa !18
  store i32 %100, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %101, i32 0, i32 31
  %103 = load i32, ptr %102, align 4, !tbaa !19
  store i32 %103, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %104 = load ptr, ptr %12, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %104, i32 0, i32 43
  %106 = load i32, ptr %105, align 4, !tbaa !20
  store i32 %106, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  store i32 31, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %107, i32 0, i32 44
  %109 = load i32, ptr %108, align 8, !tbaa !21
  store i32 %109, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  store i32 1, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %110, i32 0, i32 34
  %112 = load i32, ptr %111, align 8, !tbaa !22
  store i32 %112, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  %113 = load i32, ptr %34, align 4, !tbaa !9
  %114 = icmp eq i32 %113, 1
  br i1 %114, label %115, label %119

115:                                              ; preds = %96
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %116, i32 0, i32 5
  %118 = load i32, ptr %117, align 4, !tbaa !23
  br label %121

119:                                              ; preds = %96
  %120 = load i32, ptr %26, align 4, !tbaa !9
  br label %121

121:                                              ; preds = %119, %115
  %122 = phi i32 [ %118, %115 ], [ %120, %119 ]
  store i32 %122, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  %123 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %123, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %124, i32 0, i32 38
  %126 = load i32, ptr %125, align 8, !tbaa !24
  store i32 %126, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  store i32 10, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  %127 = load ptr, ptr %12, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %127, i32 0, i32 32
  %129 = load i32, ptr %128, align 8, !tbaa !25
  store i32 %129, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %130, i32 0, i32 8
  %132 = getelementptr inbounds [3 x i8], ptr %131, i64 0, i64 0
  %133 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %132)
  %134 = icmp eq i32 2, %133
  %135 = zext i1 %134 to i64
  %136 = select i1 %134, i32 1, i32 0
  store i32 %136, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  %137 = load ptr, ptr %13, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %137, i32 0, i32 8
  %139 = getelementptr inbounds [3 x i8], ptr %138, i64 0, i64 0
  %140 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %139)
  %141 = icmp eq i32 3, %140
  %142 = zext i1 %141 to i64
  %143 = select i1 %141, i32 1, i32 0
  store i32 %143, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  %144 = load ptr, ptr %13, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %144, i32 0, i32 8
  %146 = getelementptr inbounds [3 x i8], ptr %145, i64 0, i64 0
  %147 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %146)
  %148 = icmp eq i32 4, %147
  %149 = zext i1 %148 to i64
  %150 = select i1 %148, i32 1, i32 0
  store i32 %150, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  %151 = load ptr, ptr %13, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %151, i32 0, i32 8
  %153 = getelementptr inbounds [3 x i8], ptr %152, i64 0, i64 0
  %154 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %153)
  %155 = icmp eq i32 5, %154
  %156 = zext i1 %155 to i64
  %157 = select i1 %155, i32 1, i32 0
  store i32 %157, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  %158 = load i32, ptr %40, align 4, !tbaa !9
  %159 = icmp ugt i32 %158, 0
  br i1 %159, label %163, label %160

160:                                              ; preds = %121
  %161 = load i32, ptr %41, align 4, !tbaa !9
  %162 = icmp ugt i32 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %160, %121
  br label %174

164:                                              ; preds = %160
  %165 = load i32, ptr %42, align 4, !tbaa !9
  %166 = icmp ugt i32 %165, 0
  br i1 %166, label %170, label %167

167:                                              ; preds = %164
  %168 = load i32, ptr %43, align 4, !tbaa !9
  %169 = icmp ugt i32 %168, 0
  br label %170

170:                                              ; preds = %167, %164
  %171 = phi i1 [ true, %164 ], [ %169, %167 ]
  %172 = zext i1 %171 to i64
  %173 = select i1 %171, i32 1, i32 4
  br label %174

174:                                              ; preds = %170, %163
  %175 = phi i32 [ 2, %163 ], [ %173, %170 ]
  store i32 %175, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  %176 = load ptr, ptr %10, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %176, i32 0, i32 6
  %178 = load i32, ptr %177, align 4, !tbaa !26
  %179 = icmp uge i32 %178, 1106
  %180 = zext i1 %179 to i64
  %181 = select i1 %179, i32 0, i32 1
  store i32 %181, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  %182 = load ptr, ptr %12, align 8, !tbaa !5
  %183 = load i32, ptr %14, align 4, !tbaa !9
  %184 = call i32 @libxsmm_is_tile_in_last_tilerow(ptr noundef %182, i32 noundef %183)
  store i32 %184, ptr %46, align 4, !tbaa !9
  %185 = load i32, ptr %24, align 4, !tbaa !9
  %186 = load ptr, ptr %11, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %186, i32 0, i32 23
  %188 = load i32, ptr %187, align 4, !tbaa !17
  %189 = icmp eq i32 %185, %188
  br i1 %189, label %190, label %200

190:                                              ; preds = %174
  %191 = load ptr, ptr %12, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %191, i32 0, i32 24
  %193 = load i32, ptr %192, align 8, !tbaa !28
  %194 = icmp eq i32 %193, 1
  br i1 %194, label %195, label %200

195:                                              ; preds = %190
  %196 = load ptr, ptr %10, align 8, !tbaa !5
  %197 = load ptr, ptr %11, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %197, i32 0, i32 23
  %199 = load i32, ptr %198, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %196, i32 noundef %199)
  br label %200

200:                                              ; preds = %195, %190, %174
  %201 = load i32, ptr %27, align 4, !tbaa !9
  %202 = icmp eq i32 %201, 1
  br i1 %202, label %203, label %239

203:                                              ; preds = %200
  %204 = load i32, ptr %34, align 4, !tbaa !9
  %205 = icmp eq i32 %204, 1
  br i1 %205, label %206, label %239

206:                                              ; preds = %203
  %207 = load i32, ptr %25, align 4, !tbaa !9
  %208 = load ptr, ptr %11, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %208, i32 0, i32 23
  %210 = load i32, ptr %209, align 4, !tbaa !17
  %211 = icmp eq i32 %207, %210
  br i1 %211, label %212, label %222

212:                                              ; preds = %206
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %213, i32 0, i32 24
  %215 = load i32, ptr %214, align 8, !tbaa !28
  %216 = icmp eq i32 %215, 1
  br i1 %216, label %217, label %222

217:                                              ; preds = %212
  %218 = load ptr, ptr %10, align 8, !tbaa !5
  %219 = load ptr, ptr %11, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %219, i32 0, i32 23
  %221 = load i32, ptr %220, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %218, i32 noundef %221)
  br label %222

222:                                              ; preds = %217, %212, %206
  %223 = load i32, ptr %25, align 4, !tbaa !9
  %224 = load ptr, ptr %11, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %224, i32 0, i32 22
  %226 = load i32, ptr %225, align 4, !tbaa !15
  %227 = icmp eq i32 %223, %226
  br i1 %227, label %228, label %238

228:                                              ; preds = %222
  %229 = load ptr, ptr %12, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %229, i32 0, i32 23
  %231 = load i32, ptr %230, align 4, !tbaa !11
  %232 = icmp eq i32 %231, 1
  br i1 %232, label %233, label %238

233:                                              ; preds = %228
  %234 = load ptr, ptr %10, align 8, !tbaa !5
  %235 = load ptr, ptr %11, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %235, i32 0, i32 22
  %237 = load i32, ptr %236, align 4, !tbaa !15
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %234, i32 noundef %237)
  br label %238

238:                                              ; preds = %233, %228, %222
  br label %239

239:                                              ; preds = %238, %203, %200
  %240 = load i32, ptr %34, align 4, !tbaa !9
  %241 = icmp eq i32 %240, 0
  br i1 %241, label %245, label %242

242:                                              ; preds = %239
  %243 = load i32, ptr %37, align 4, !tbaa !9
  %244 = icmp eq i32 %243, 1
  br i1 %244, label %245, label %278

245:                                              ; preds = %242, %239
  %246 = load i32, ptr %26, align 4, !tbaa !9
  %247 = load ptr, ptr %11, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %247, i32 0, i32 23
  %249 = load i32, ptr %248, align 4, !tbaa !17
  %250 = icmp eq i32 %246, %249
  br i1 %250, label %251, label %261

251:                                              ; preds = %245
  %252 = load ptr, ptr %12, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %252, i32 0, i32 24
  %254 = load i32, ptr %253, align 8, !tbaa !28
  %255 = icmp eq i32 %254, 1
  br i1 %255, label %256, label %261

256:                                              ; preds = %251
  %257 = load ptr, ptr %10, align 8, !tbaa !5
  %258 = load ptr, ptr %11, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %258, i32 0, i32 23
  %260 = load i32, ptr %259, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %257, i32 noundef %260)
  br label %261

261:                                              ; preds = %256, %251, %245
  %262 = load i32, ptr %26, align 4, !tbaa !9
  %263 = load ptr, ptr %11, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %263, i32 0, i32 22
  %265 = load i32, ptr %264, align 4, !tbaa !15
  %266 = icmp eq i32 %262, %265
  br i1 %266, label %267, label %277

267:                                              ; preds = %261
  %268 = load ptr, ptr %12, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %268, i32 0, i32 23
  %270 = load i32, ptr %269, align 4, !tbaa !11
  %271 = icmp eq i32 %270, 1
  br i1 %271, label %272, label %277

272:                                              ; preds = %267
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  %274 = load ptr, ptr %11, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %274, i32 0, i32 22
  %276 = load i32, ptr %275, align 4, !tbaa !15
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %273, i32 noundef %276)
  br label %277

277:                                              ; preds = %272, %267, %261
  br label %278

278:                                              ; preds = %277, %242
  %279 = load i32, ptr %39, align 4, !tbaa !9
  %280 = icmp eq i32 %279, 1
  br i1 %280, label %281, label %284

281:                                              ; preds = %278
  %282 = load ptr, ptr %10, align 8, !tbaa !5
  %283 = load i32, ptr %38, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %282, i32 noundef %283)
  br label %284

284:                                              ; preds = %281, %278
  %285 = load ptr, ptr %10, align 8, !tbaa !5
  %286 = load ptr, ptr %12, align 8, !tbaa !5
  %287 = load i32, ptr %24, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %285, ptr noundef %286, i32 noundef 6, i32 noundef %287)
  %288 = load i32, ptr %27, align 4, !tbaa !9
  %289 = icmp eq i32 %288, 1
  br i1 %289, label %290, label %294

290:                                              ; preds = %284
  %291 = load ptr, ptr %10, align 8, !tbaa !5
  %292 = load ptr, ptr %12, align 8, !tbaa !5
  %293 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %291, ptr noundef %292, i32 noundef 8, i32 noundef %293)
  br label %294

294:                                              ; preds = %290, %284
  %295 = load i32, ptr %37, align 4, !tbaa !9
  %296 = icmp eq i32 %295, 1
  br i1 %296, label %297, label %301

297:                                              ; preds = %294
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  %299 = load ptr, ptr %12, align 8, !tbaa !5
  %300 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %298, ptr noundef %299, i32 noundef 8, i32 noundef %300)
  br label %301

301:                                              ; preds = %297, %294
  %302 = load i32, ptr %39, align 4, !tbaa !9
  %303 = icmp eq i32 %302, 1
  br i1 %303, label %304, label %308

304:                                              ; preds = %301
  %305 = load ptr, ptr %10, align 8, !tbaa !5
  %306 = load ptr, ptr %12, align 8, !tbaa !5
  %307 = load i32, ptr %38, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %305, ptr noundef %306, i32 noundef 19, i32 noundef %307)
  br label %308

308:                                              ; preds = %304, %301
  %309 = load i32, ptr %45, align 4, !tbaa !9
  %310 = icmp ugt i32 %309, 0
  br i1 %310, label %311, label %366

311:                                              ; preds = %308
  %312 = load ptr, ptr %10, align 8, !tbaa !5
  %313 = load ptr, ptr %12, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %313, i32 0, i32 20
  %315 = load i32, ptr %314, align 8, !tbaa !29
  %316 = load ptr, ptr %11, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %316, i32 0, i32 19
  %318 = load i32, ptr %317, align 4, !tbaa !30
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %319, i32 0, i32 100
  %321 = load i32, ptr %320, align 4, !tbaa !31
  %322 = mul i32 %321, 4
  %323 = udiv i32 %322, 4
  %324 = zext i32 %323 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %312, i32 noundef %315, i32 noundef %318, i64 noundef %324)
  %325 = load ptr, ptr %10, align 8, !tbaa !5
  %326 = load ptr, ptr %12, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %326, i32 0, i32 0
  %328 = load i32, ptr %327, align 8, !tbaa !32
  %329 = load i32, ptr %24, align 4, !tbaa !9
  %330 = load ptr, ptr %11, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %330, i32 0, i32 19
  %332 = load i32, ptr %331, align 4, !tbaa !30
  %333 = load i32, ptr %14, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %325, i32 noundef %328, i32 noundef 1611014219, i32 noundef %329, i32 noundef %332, i32 noundef 4, i32 noundef 0, i32 noundef %333)
  %334 = load i32, ptr %15, align 4, !tbaa !9
  %335 = icmp sge i32 %334, 0
  br i1 %335, label %336, label %352

336:                                              ; preds = %311
  %337 = load ptr, ptr %10, align 8, !tbaa !5
  %338 = load ptr, ptr %12, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %338, i32 0, i32 0
  %340 = load i32, ptr %339, align 8, !tbaa !32
  %341 = load i32, ptr %24, align 4, !tbaa !9
  %342 = load ptr, ptr %11, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %342, i32 0, i32 19
  %344 = load i32, ptr %343, align 4, !tbaa !30
  %345 = load ptr, ptr %12, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %345, i32 0, i32 100
  %347 = load i32, ptr %346, align 4, !tbaa !31
  %348 = load i32, ptr %18, align 4, !tbaa !9
  %349 = mul i32 %347, %348
  %350 = mul i32 %349, 4
  %351 = load i32, ptr %15, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_tile_move(ptr noundef %337, i32 noundef %340, i32 noundef 1611014219, i32 noundef %341, i32 noundef %344, i32 noundef 4, i32 noundef %350, i32 noundef %351)
  br label %352

352:                                              ; preds = %336, %311
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = load ptr, ptr %12, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %354, i32 0, i32 20
  %356 = load i32, ptr %355, align 8, !tbaa !29
  %357 = load ptr, ptr %11, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %357, i32 0, i32 19
  %359 = load i32, ptr %358, align 4, !tbaa !30
  %360 = load ptr, ptr %13, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %360, i32 0, i32 5
  %362 = load i32, ptr %361, align 1, !tbaa !33
  %363 = mul i32 %362, 4
  %364 = udiv i32 %363, 4
  %365 = zext i32 %364 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %353, i32 noundef %356, i32 noundef %359, i64 noundef %365)
  br label %366

366:                                              ; preds = %352, %308
  %367 = load i32, ptr %18, align 4, !tbaa !9
  %368 = load i32, ptr %30, align 4, !tbaa !9
  %369 = load i32, ptr %29, align 4, !tbaa !9
  %370 = sub i32 %368, %369
  %371 = icmp ugt i32 %367, %370
  br i1 %371, label %381, label %372

372:                                              ; preds = %366
  %373 = load i32, ptr %27, align 4, !tbaa !9
  %374 = icmp eq i32 %373, 0
  br i1 %374, label %375, label %378

375:                                              ; preds = %372
  %376 = load i32, ptr %39, align 4, !tbaa !9
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %381, label %378

378:                                              ; preds = %375, %372
  %379 = load i32, ptr %15, align 4, !tbaa !9
  %380 = icmp slt i32 %379, 0
  br label %381

381:                                              ; preds = %378, %375, %366
  %382 = phi i1 [ true, %375 ], [ true, %366 ], [ %380, %378 ]
  %383 = zext i1 %382 to i64
  %384 = select i1 %382, i32 1, i32 0
  store i32 %384, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %1355, %381
  %386 = load i32, ptr %19, align 4, !tbaa !9
  %387 = load i32, ptr %18, align 4, !tbaa !9
  %388 = icmp ult i32 %386, %387
  br i1 %388, label %389, label %1358

389:                                              ; preds = %385
  %390 = load i32, ptr %15, align 4, !tbaa !9
  %391 = icmp sge i32 %390, 0
  br i1 %391, label %392, label %449

392:                                              ; preds = %389
  %393 = load i32, ptr %19, align 4, !tbaa !9
  %394 = load i32, ptr %29, align 4, !tbaa !9
  %395 = add i32 %393, %394
  %396 = icmp ult i32 %395, 16
  br i1 %396, label %397, label %411

397:                                              ; preds = %392
  %398 = load i32, ptr %19, align 4, !tbaa !9
  %399 = load i32, ptr %29, align 4, !tbaa !9
  %400 = sub i32 16, %399
  %401 = urem i32 %398, %400
  %402 = load i32, ptr %29, align 4, !tbaa !9
  %403 = add i32 %401, %402
  store i32 %403, ptr %20, align 4, !tbaa !9
  %404 = load i32, ptr %19, align 4, !tbaa !9
  %405 = load i32, ptr %29, align 4, !tbaa !9
  %406 = sub i32 16, %405
  %407 = urem i32 %404, %406
  %408 = load i32, ptr %29, align 4, !tbaa !9
  %409 = add i32 %407, %408
  %410 = add i32 %409, 16
  store i32 %410, ptr %21, align 4, !tbaa !9
  br label %420

411:                                              ; preds = %392
  %412 = load i32, ptr %29, align 4, !tbaa !9
  %413 = load i32, ptr %19, align 4, !tbaa !9
  %414 = load i32, ptr %29, align 4, !tbaa !9
  %415 = sub i32 31, %414
  %416 = urem i32 %413, %415
  %417 = add i32 %412, %416
  store i32 %417, ptr %20, align 4, !tbaa !9
  %418 = load i32, ptr %20, align 4, !tbaa !9
  %419 = add i32 %418, 1
  store i32 %419, ptr %21, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %411, %397
  %421 = load ptr, ptr %12, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %421, i32 0, i32 33
  %423 = load i32, ptr %422, align 4, !tbaa !36
  %424 = icmp eq i32 %423, 1
  br i1 %424, label %425, label %448

425:                                              ; preds = %420
  %426 = load i32, ptr %19, align 4, !tbaa !9
  %427 = load i32, ptr %29, align 4, !tbaa !9
  %428 = add i32 %426, %427
  %429 = icmp ult i32 %428, 16
  br i1 %429, label %430, label %438

430:                                              ; preds = %425
  %431 = load i32, ptr %19, align 4, !tbaa !9
  %432 = load i32, ptr %29, align 4, !tbaa !9
  %433 = sub i32 16, %432
  %434 = urem i32 %431, %433
  %435 = load i32, ptr %29, align 4, !tbaa !9
  %436 = add i32 %434, %435
  %437 = add i32 %436, 16
  store i32 %437, ptr %21, align 4, !tbaa !9
  br label %447

438:                                              ; preds = %425
  %439 = load i32, ptr %29, align 4, !tbaa !9
  %440 = load i32, ptr %19, align 4, !tbaa !9
  %441 = load i32, ptr %29, align 4, !tbaa !9
  %442 = sub i32 31, %441
  %443 = urem i32 %440, %442
  %444 = add i32 %439, %443
  store i32 %444, ptr %20, align 4, !tbaa !9
  %445 = load i32, ptr %20, align 4, !tbaa !9
  %446 = add i32 %445, 1
  store i32 %446, ptr %21, align 4, !tbaa !9
  br label %447

447:                                              ; preds = %438, %430
  br label %448

448:                                              ; preds = %447, %420
  br label %469

449:                                              ; preds = %389
  %450 = load i32, ptr %29, align 4, !tbaa !9
  %451 = icmp ult i32 %450, 16
  br i1 %451, label %452, label %459

452:                                              ; preds = %449
  %453 = load i32, ptr %19, align 4, !tbaa !9
  %454 = load i32, ptr %29, align 4, !tbaa !9
  %455 = sub i32 16, %454
  %456 = urem i32 %453, %455
  %457 = load i32, ptr %29, align 4, !tbaa !9
  %458 = add i32 %456, %457
  store i32 %458, ptr %20, align 4, !tbaa !9
  br label %466

459:                                              ; preds = %449
  %460 = load i32, ptr %29, align 4, !tbaa !9
  %461 = load i32, ptr %19, align 4, !tbaa !9
  %462 = load i32, ptr %29, align 4, !tbaa !9
  %463 = sub i32 31, %462
  %464 = urem i32 %461, %463
  %465 = add i32 %460, %464
  store i32 %465, ptr %20, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %459, %452
  %467 = load i32, ptr %20, align 4, !tbaa !9
  %468 = add i32 %467, 1
  store i32 %468, ptr %21, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %466, %448
  %470 = load i32, ptr %15, align 4, !tbaa !9
  %471 = icmp sge i32 %470, 0
  br i1 %471, label %472, label %492

472:                                              ; preds = %469
  %473 = load ptr, ptr %10, align 8, !tbaa !5
  %474 = load ptr, ptr %12, align 8, !tbaa !5
  %475 = load i32, ptr %45, align 4, !tbaa !9
  %476 = load i32, ptr %24, align 4, !tbaa !9
  %477 = load ptr, ptr %12, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %477, i32 0, i32 71
  %479 = load i32, ptr %478, align 4, !tbaa !37
  %480 = load i32, ptr %15, align 4, !tbaa !9
  %481 = load i32, ptr %45, align 4, !tbaa !9
  %482 = icmp ugt i32 %481, 0
  br i1 %482, label %483, label %487

483:                                              ; preds = %472
  %484 = load i32, ptr %19, align 4, !tbaa !9
  %485 = load i32, ptr %18, align 4, !tbaa !9
  %486 = add i32 %484, %485
  br label %489

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

489:                                              ; preds = %487, %483
  %490 = phi i32 [ %486, %483 ], [ %488, %487 ]
  %491 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %473, ptr noundef %474, i32 noundef %475, i32 noundef %476, i32 noundef %479, i32 noundef %480, i32 noundef %490, i32 noundef %491)
  br label %492

492:                                              ; preds = %489, %469
  %493 = load ptr, ptr %12, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %493, i32 0, i32 33
  %495 = load i32, ptr %494, align 4, !tbaa !36
  %496 = icmp eq i32 %495, 1
  br i1 %496, label %497, label %662

497:                                              ; preds = %492
  %498 = load i32, ptr %34, align 4, !tbaa !9
  %499 = icmp eq i32 %498, 0
  br i1 %499, label %500, label %662

500:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #3
  %501 = load i32, ptr %15, align 4, !tbaa !9
  %502 = icmp sge i32 %501, 0
  br i1 %502, label %503, label %508

503:                                              ; preds = %500
  %504 = load ptr, ptr %12, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %504, i32 0, i32 21
  %506 = load i8, ptr %505, align 4, !tbaa !38
  %507 = sext i8 %506 to i32
  br label %527

508:                                              ; preds = %500
  %509 = load i32, ptr %40, align 4, !tbaa !9
  %510 = icmp ugt i32 %509, 0
  br i1 %510, label %514, label %511

511:                                              ; preds = %508
  %512 = load i32, ptr %41, align 4, !tbaa !9
  %513 = icmp ugt i32 %512, 0
  br i1 %513, label %514, label %515

514:                                              ; preds = %511, %508
  br label %525

515:                                              ; preds = %511
  %516 = load i32, ptr %42, align 4, !tbaa !9
  %517 = icmp ugt i32 %516, 0
  br i1 %517, label %521, label %518

518:                                              ; preds = %515
  %519 = load i32, ptr %43, align 4, !tbaa !9
  %520 = icmp ugt i32 %519, 0
  br label %521

521:                                              ; preds = %518, %515
  %522 = phi i1 [ true, %515 ], [ %520, %518 ]
  %523 = zext i1 %522 to i64
  %524 = select i1 %522, i32 120, i32 122
  br label %525

525:                                              ; preds = %521, %514
  %526 = phi i32 [ 121, %514 ], [ %524, %521 ]
  br label %527

527:                                              ; preds = %525, %503
  %528 = phi i32 [ %507, %503 ], [ %526, %525 ]
  %529 = trunc i32 %528 to i8
  store i8 %529, ptr %47, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  %530 = load i32, ptr %15, align 4, !tbaa !9
  %531 = icmp sge i32 %530, 0
  br i1 %531, label %532, label %536

532:                                              ; preds = %527
  %533 = load ptr, ptr %12, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %533, i32 0, i32 72
  %535 = load i32, ptr %534, align 8, !tbaa !40
  br label %546

536:                                              ; preds = %527
  %537 = load i32, ptr %46, align 4, !tbaa !9
  %538 = icmp sgt i32 %537, 0
  br i1 %538, label %539, label %543

539:                                              ; preds = %536
  %540 = load ptr, ptr %12, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %540, i32 0, i32 71
  %542 = load i32, ptr %541, align 4, !tbaa !37
  br label %544

543:                                              ; preds = %536
  br label %544

544:                                              ; preds = %543, %539
  %545 = phi i32 [ %542, %539 ], [ 0, %543 ]
  br label %546

546:                                              ; preds = %544, %532
  %547 = phi i32 [ %535, %532 ], [ %545, %544 ]
  store i32 %547, ptr %48, align 4, !tbaa !9
  %548 = load ptr, ptr %12, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %548, i32 0, i32 109
  %550 = load i32, ptr %549, align 8, !tbaa !41
  %551 = icmp eq i32 %550, 0
  br i1 %551, label %552, label %555

552:                                              ; preds = %546
  %553 = load i32, ptr %40, align 4, !tbaa !9
  %554 = icmp ugt i32 %553, 0
  br i1 %554, label %558, label %555

555:                                              ; preds = %552, %546
  %556 = load i32, ptr %15, align 4, !tbaa !9
  %557 = icmp sge i32 %556, 0
  br i1 %557, label %558, label %595

558:                                              ; preds = %555, %552
  %559 = load i32, ptr %40, align 4, !tbaa !9
  %560 = icmp ugt i32 %559, 0
  br i1 %560, label %561, label %594

561:                                              ; preds = %558
  %562 = load i32, ptr %45, align 4, !tbaa !9
  %563 = icmp ugt i32 %562, 0
  br i1 %563, label %564, label %578

564:                                              ; preds = %561
  %565 = load ptr, ptr %10, align 8, !tbaa !5
  %566 = load ptr, ptr %12, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %566, i32 0, i32 21
  %568 = load i8, ptr %567, align 4, !tbaa !38
  %569 = load i32, ptr %24, align 4, !tbaa !9
  %570 = load i32, ptr %19, align 4, !tbaa !9
  %571 = load ptr, ptr %12, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %571, i32 0, i32 100
  %573 = load i32, ptr %572, align 4, !tbaa !31
  %574 = mul i32 %570, %573
  %575 = mul i32 %574, 4
  %576 = load i32, ptr %20, align 4, !tbaa !9
  %577 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef %565, i32 noundef -267966862, i8 noundef signext %568, i32 noundef %569, i32 noundef 127, i32 noundef 0, i32 noundef %575, i32 noundef 0, i32 noundef %576, i32 noundef %577)
  br label %593

578:                                              ; preds = %561
  %579 = load ptr, ptr %10, align 8, !tbaa !5
  %580 = load ptr, ptr %12, align 8, !tbaa !5
  %581 = load i32, ptr %45, align 4, !tbaa !9
  %582 = load i32, ptr %24, align 4, !tbaa !9
  %583 = load i32, ptr %14, align 4, !tbaa !9
  %584 = load i32, ptr %19, align 4, !tbaa !9
  %585 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %579, ptr noundef %580, i32 noundef %581, i32 noundef %582, i32 noundef 0, i32 noundef %583, i32 noundef %584, i32 noundef %585)
  %586 = load ptr, ptr %10, align 8, !tbaa !5
  %587 = load ptr, ptr %12, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %587, i32 0, i32 21
  %589 = load i8, ptr %588, align 4, !tbaa !38
  %590 = load i32, ptr %21, align 4, !tbaa !9
  %591 = load i32, ptr %20, align 4, !tbaa !9
  %592 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %586, i32 noundef -267966862, i8 noundef signext %589, i32 noundef %590, i32 noundef %591, i32 noundef %592)
  br label %593

593:                                              ; preds = %578, %564
  br label %594

594:                                              ; preds = %593, %558
  br label %622

595:                                              ; preds = %555
  %596 = load ptr, ptr %10, align 8, !tbaa !5
  %597 = load ptr, ptr %12, align 8, !tbaa !5
  %598 = load i32, ptr %45, align 4, !tbaa !9
  %599 = load i32, ptr %24, align 4, !tbaa !9
  %600 = load i32, ptr %46, align 4, !tbaa !9
  %601 = icmp sgt i32 %600, 0
  br i1 %601, label %602, label %606

602:                                              ; preds = %595
  %603 = load ptr, ptr %12, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %603, i32 0, i32 71
  %605 = load i32, ptr %604, align 4, !tbaa !37
  br label %607

606:                                              ; preds = %595
  br label %607

607:                                              ; preds = %606, %602
  %608 = phi i32 [ %605, %602 ], [ 0, %606 ]
  %609 = load i32, ptr %14, align 4, !tbaa !9
  %610 = load i32, ptr %19, align 4, !tbaa !9
  %611 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %596, ptr noundef %597, i32 noundef %598, i32 noundef %599, i32 noundef %608, i32 noundef %609, i32 noundef %610, i32 noundef %611)
  %612 = load ptr, ptr %10, align 8, !tbaa !5
  %613 = load ptr, ptr %12, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %613, i32 0, i32 21
  %615 = load i8, ptr %614, align 4, !tbaa !38
  %616 = load ptr, ptr %13, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %616, i32 0, i32 8
  %618 = getelementptr inbounds [3 x i8], ptr %617, i64 0, i64 0
  %619 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %618)
  %620 = load i32, ptr %21, align 4, !tbaa !9
  %621 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef %612, i8 noundef signext %615, i32 noundef %619, i32 noundef %620, i32 noundef %621)
  br label %622

622:                                              ; preds = %607, %594
  %623 = load ptr, ptr %10, align 8, !tbaa !5
  %624 = load ptr, ptr %12, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %624, i32 0, i32 0
  %626 = load i32, ptr %625, align 8, !tbaa !32
  %627 = load i32, ptr %40, align 4, !tbaa !9
  %628 = icmp ugt i32 %627, 0
  br i1 %628, label %632, label %629

629:                                              ; preds = %622
  %630 = load i32, ptr %41, align 4, !tbaa !9
  %631 = icmp ugt i32 %630, 0
  br i1 %631, label %632, label %633

632:                                              ; preds = %629, %622
  br label %643

633:                                              ; preds = %629
  %634 = load i32, ptr %42, align 4, !tbaa !9
  %635 = icmp ugt i32 %634, 0
  br i1 %635, label %639, label %636

636:                                              ; preds = %633
  %637 = load i32, ptr %43, align 4, !tbaa !9
  %638 = icmp ugt i32 %637, 0
  br label %639

639:                                              ; preds = %636, %633
  %640 = phi i1 [ true, %633 ], [ %638, %636 ]
  %641 = zext i1 %640 to i64
  %642 = select i1 %640, i32 -536406417, i32 537138704
  br label %643

643:                                              ; preds = %639, %632
  %644 = phi i32 [ -528017809, %632 ], [ %642, %639 ]
  %645 = load ptr, ptr %11, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %645, i32 0, i32 5
  %647 = load i32, ptr %646, align 4, !tbaa !23
  %648 = load i32, ptr %17, align 4, !tbaa !9
  %649 = load i32, ptr %19, align 4, !tbaa !9
  %650 = add i32 %648, %649
  %651 = load ptr, ptr %13, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %651, i32 0, i32 5
  %653 = load i32, ptr %652, align 1, !tbaa !33
  %654 = mul i32 %650, %653
  %655 = load i32, ptr %16, align 4, !tbaa !9
  %656 = add i32 %654, %655
  %657 = load i32, ptr %44, align 4, !tbaa !9
  %658 = mul i32 %656, %657
  %659 = load i8, ptr %47, align 1, !tbaa !39
  %660 = load i32, ptr %21, align 4, !tbaa !9
  %661 = load i32, ptr %48, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %623, i32 noundef %626, i32 noundef %644, i32 noundef %647, i32 noundef 127, i32 noundef 0, i32 noundef %658, i8 noundef signext %659, i32 noundef %660, i32 noundef %661, i32 noundef 0, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #3
  br label %662

662:                                              ; preds = %643, %497, %492
  %663 = load ptr, ptr %12, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %663, i32 0, i32 33
  %665 = load i32, ptr %664, align 4, !tbaa !36
  %666 = icmp eq i32 %665, 1
  br i1 %666, label %667, label %822

667:                                              ; preds = %662
  %668 = load i32, ptr %15, align 4, !tbaa !9
  %669 = icmp sge i32 %668, 0
  br i1 %669, label %670, label %724

670:                                              ; preds = %667
  %671 = load ptr, ptr %10, align 8, !tbaa !5
  %672 = load i32, ptr %20, align 4, !tbaa !9
  %673 = load ptr, ptr %12, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %673, i32 0, i32 50
  %675 = load i32, ptr %674, align 8, !tbaa !42
  %676 = load ptr, ptr %12, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %676, i32 0, i32 51
  %678 = load i32, ptr %677, align 4, !tbaa !43
  %679 = load ptr, ptr %12, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %679, i32 0, i32 52
  %681 = load i32, ptr %680, align 8, !tbaa !44
  %682 = load ptr, ptr %12, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %682, i32 0, i32 65
  %684 = load i32, ptr %683, align 4, !tbaa !45
  %685 = load ptr, ptr %12, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %685, i32 0, i32 66
  %687 = load i32, ptr %686, align 8, !tbaa !46
  %688 = load ptr, ptr %12, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %688, i32 0, i32 53
  %690 = load i32, ptr %689, align 4, !tbaa !47
  %691 = load ptr, ptr %12, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %691, i32 0, i32 54
  %693 = load i32, ptr %692, align 8, !tbaa !48
  %694 = load ptr, ptr %12, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %694, i32 0, i32 55
  %696 = load i32, ptr %695, align 4, !tbaa !49
  %697 = load ptr, ptr %12, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %697, i32 0, i32 56
  %699 = load i32, ptr %698, align 8, !tbaa !50
  %700 = load ptr, ptr %12, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %700, i32 0, i32 57
  %702 = load i32, ptr %701, align 4, !tbaa !51
  %703 = load ptr, ptr %12, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %703, i32 0, i32 58
  %705 = load i32, ptr %704, align 8, !tbaa !52
  %706 = load ptr, ptr %12, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %706, i32 0, i32 59
  %708 = load i32, ptr %707, align 4, !tbaa !53
  %709 = load ptr, ptr %12, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %709, i32 0, i32 60
  %711 = load i32, ptr %710, align 8, !tbaa !54
  %712 = load ptr, ptr %12, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %712, i32 0, i32 61
  %714 = load i32, ptr %713, align 4, !tbaa !55
  %715 = load ptr, ptr %12, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %715, i32 0, i32 62
  %717 = load i32, ptr %716, align 8, !tbaa !56
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %718, i32 0, i32 63
  %720 = load i32, ptr %719, align 4, !tbaa !57
  %721 = load ptr, ptr %12, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %721, i32 0, i32 64
  %723 = load i32, ptr %722, align 8, !tbaa !58
  call void @libxsmm_generator_sigmoid_ps_rational_78_avx512(ptr noundef %671, i32 noundef %672, i32 noundef %675, i32 noundef %678, i32 noundef %681, i32 noundef %684, i32 noundef %687, i32 noundef %690, i32 noundef %693, i32 noundef %696, i32 noundef %699, i32 noundef %702, i32 noundef %705, i32 noundef %708, i32 noundef %711, i32 noundef %714, i32 noundef %717, i32 noundef %720, i32 noundef %723, i8 noundef zeroext 122)
  br label %724

724:                                              ; preds = %670, %667
  %725 = load ptr, ptr %10, align 8, !tbaa !5
  %726 = load ptr, ptr %12, align 8, !tbaa !5
  %727 = load i32, ptr %45, align 4, !tbaa !9
  %728 = load i32, ptr %24, align 4, !tbaa !9
  %729 = load i32, ptr %15, align 4, !tbaa !9
  %730 = icmp slt i32 %729, 0
  br i1 %730, label %731, label %741

731:                                              ; preds = %724
  %732 = load i32, ptr %46, align 4, !tbaa !9
  %733 = icmp sgt i32 %732, 0
  br i1 %733, label %734, label %738

734:                                              ; preds = %731
  %735 = load ptr, ptr %12, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %735, i32 0, i32 71
  %737 = load i32, ptr %736, align 4, !tbaa !37
  br label %739

738:                                              ; preds = %731
  br label %739

739:                                              ; preds = %738, %734
  %740 = phi i32 [ %737, %734 ], [ 0, %738 ]
  br label %742

741:                                              ; preds = %724
  br label %742

742:                                              ; preds = %741, %739
  %743 = phi i32 [ %740, %739 ], [ 0, %741 ]
  %744 = load i32, ptr %14, align 4, !tbaa !9
  %745 = load i32, ptr %19, align 4, !tbaa !9
  %746 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %725, ptr noundef %726, i32 noundef %727, i32 noundef %728, i32 noundef %743, i32 noundef %744, i32 noundef %745, i32 noundef %746)
  %747 = load ptr, ptr %10, align 8, !tbaa !5
  %748 = load i32, ptr %21, align 4, !tbaa !9
  %749 = load ptr, ptr %12, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %749, i32 0, i32 50
  %751 = load i32, ptr %750, align 8, !tbaa !42
  %752 = load ptr, ptr %12, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %752, i32 0, i32 51
  %754 = load i32, ptr %753, align 4, !tbaa !43
  %755 = load ptr, ptr %12, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %755, i32 0, i32 52
  %757 = load i32, ptr %756, align 8, !tbaa !44
  %758 = load ptr, ptr %12, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %758, i32 0, i32 65
  %760 = load i32, ptr %759, align 4, !tbaa !45
  %761 = load ptr, ptr %12, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %761, i32 0, i32 66
  %763 = load i32, ptr %762, align 8, !tbaa !46
  %764 = load ptr, ptr %12, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %764, i32 0, i32 53
  %766 = load i32, ptr %765, align 4, !tbaa !47
  %767 = load ptr, ptr %12, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %767, i32 0, i32 54
  %769 = load i32, ptr %768, align 8, !tbaa !48
  %770 = load ptr, ptr %12, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %770, i32 0, i32 55
  %772 = load i32, ptr %771, align 4, !tbaa !49
  %773 = load ptr, ptr %12, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %773, i32 0, i32 56
  %775 = load i32, ptr %774, align 8, !tbaa !50
  %776 = load ptr, ptr %12, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %776, i32 0, i32 57
  %778 = load i32, ptr %777, align 4, !tbaa !51
  %779 = load ptr, ptr %12, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %779, i32 0, i32 58
  %781 = load i32, ptr %780, align 8, !tbaa !52
  %782 = load ptr, ptr %12, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %782, i32 0, i32 59
  %784 = load i32, ptr %783, align 4, !tbaa !53
  %785 = load ptr, ptr %12, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %785, i32 0, i32 60
  %787 = load i32, ptr %786, align 8, !tbaa !54
  %788 = load ptr, ptr %12, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %788, i32 0, i32 61
  %790 = load i32, ptr %789, align 4, !tbaa !55
  %791 = load ptr, ptr %12, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %791, i32 0, i32 62
  %793 = load i32, ptr %792, align 8, !tbaa !56
  %794 = load ptr, ptr %12, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %794, i32 0, i32 63
  %796 = load i32, ptr %795, align 4, !tbaa !57
  %797 = load ptr, ptr %12, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %797, i32 0, i32 64
  %799 = load i32, ptr %798, align 8, !tbaa !58
  call void @libxsmm_generator_sigmoid_ps_rational_78_avx512(ptr noundef %747, i32 noundef %748, i32 noundef %751, i32 noundef %754, i32 noundef %757, i32 noundef %760, i32 noundef %763, i32 noundef %766, i32 noundef %769, i32 noundef %772, i32 noundef %775, i32 noundef %778, i32 noundef %781, i32 noundef %784, i32 noundef %787, i32 noundef %790, i32 noundef %793, i32 noundef %796, i32 noundef %799, i8 noundef zeroext 122)
  %800 = load i32, ptr %40, align 4, !tbaa !9
  %801 = icmp ugt i32 %800, 0
  br i1 %801, label %802, label %810

802:                                              ; preds = %742
  %803 = load ptr, ptr %10, align 8, !tbaa !5
  %804 = load ptr, ptr %12, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %804, i32 0, i32 21
  %806 = load i8, ptr %805, align 4, !tbaa !38
  %807 = load i32, ptr %21, align 4, !tbaa !9
  %808 = load i32, ptr %20, align 4, !tbaa !9
  %809 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %803, i32 noundef -267966862, i8 noundef signext %806, i32 noundef %807, i32 noundef %808, i32 noundef %809)
  br label %821

810:                                              ; preds = %742
  %811 = load ptr, ptr %10, align 8, !tbaa !5
  %812 = load ptr, ptr %12, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %812, i32 0, i32 21
  %814 = load i8, ptr %813, align 4, !tbaa !38
  %815 = load ptr, ptr %13, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %815, i32 0, i32 8
  %817 = getelementptr inbounds [3 x i8], ptr %816, i64 0, i64 0
  %818 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %817)
  %819 = load i32, ptr %21, align 4, !tbaa !9
  %820 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef %811, i8 noundef signext %814, i32 noundef %818, i32 noundef %819, i32 noundef %820)
  br label %821

821:                                              ; preds = %810, %802
  br label %988

822:                                              ; preds = %662
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #3
  %823 = load i32, ptr %15, align 4, !tbaa !9
  %824 = icmp sge i32 %823, 0
  br i1 %824, label %825, label %830

825:                                              ; preds = %822
  %826 = load ptr, ptr %12, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %826, i32 0, i32 21
  %828 = load i8, ptr %827, align 4, !tbaa !38
  %829 = sext i8 %828 to i32
  br label %849

830:                                              ; preds = %822
  %831 = load i32, ptr %40, align 4, !tbaa !9
  %832 = icmp ugt i32 %831, 0
  br i1 %832, label %836, label %833

833:                                              ; preds = %830
  %834 = load i32, ptr %41, align 4, !tbaa !9
  %835 = icmp ugt i32 %834, 0
  br i1 %835, label %836, label %837

836:                                              ; preds = %833, %830
  br label %847

837:                                              ; preds = %833
  %838 = load i32, ptr %42, align 4, !tbaa !9
  %839 = icmp ugt i32 %838, 0
  br i1 %839, label %843, label %840

840:                                              ; preds = %837
  %841 = load i32, ptr %43, align 4, !tbaa !9
  %842 = icmp ugt i32 %841, 0
  br label %843

843:                                              ; preds = %840, %837
  %844 = phi i1 [ true, %837 ], [ %842, %840 ]
  %845 = zext i1 %844 to i64
  %846 = select i1 %844, i32 120, i32 122
  br label %847

847:                                              ; preds = %843, %836
  %848 = phi i32 [ 121, %836 ], [ %846, %843 ]
  br label %849

849:                                              ; preds = %847, %825
  %850 = phi i32 [ %829, %825 ], [ %848, %847 ]
  %851 = trunc i32 %850 to i8
  store i8 %851, ptr %49, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  %852 = load i32, ptr %15, align 4, !tbaa !9
  %853 = icmp sge i32 %852, 0
  br i1 %853, label %854, label %858

854:                                              ; preds = %849
  %855 = load ptr, ptr %12, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %855, i32 0, i32 72
  %857 = load i32, ptr %856, align 8, !tbaa !40
  br label %868

858:                                              ; preds = %849
  %859 = load i32, ptr %46, align 4, !tbaa !9
  %860 = icmp sgt i32 %859, 0
  br i1 %860, label %861, label %865

861:                                              ; preds = %858
  %862 = load ptr, ptr %12, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %862, i32 0, i32 71
  %864 = load i32, ptr %863, align 4, !tbaa !37
  br label %866

865:                                              ; preds = %858
  br label %866

866:                                              ; preds = %865, %861
  %867 = phi i32 [ %864, %861 ], [ 0, %865 ]
  br label %868

868:                                              ; preds = %866, %854
  %869 = phi i32 [ %857, %854 ], [ %867, %866 ]
  store i32 %869, ptr %50, align 4, !tbaa !9
  %870 = load ptr, ptr %12, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %870, i32 0, i32 109
  %872 = load i32, ptr %871, align 8, !tbaa !41
  %873 = icmp eq i32 %872, 0
  br i1 %873, label %874, label %877

874:                                              ; preds = %868
  %875 = load i32, ptr %40, align 4, !tbaa !9
  %876 = icmp ugt i32 %875, 0
  br i1 %876, label %880, label %877

877:                                              ; preds = %874, %868
  %878 = load i32, ptr %15, align 4, !tbaa !9
  %879 = icmp sge i32 %878, 0
  br i1 %879, label %880, label %917

880:                                              ; preds = %877, %874
  %881 = load i32, ptr %40, align 4, !tbaa !9
  %882 = icmp ugt i32 %881, 0
  br i1 %882, label %883, label %916

883:                                              ; preds = %880
  %884 = load i32, ptr %45, align 4, !tbaa !9
  %885 = icmp ugt i32 %884, 0
  br i1 %885, label %886, label %900

886:                                              ; preds = %883
  %887 = load ptr, ptr %10, align 8, !tbaa !5
  %888 = load ptr, ptr %12, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %888, i32 0, i32 21
  %890 = load i8, ptr %889, align 4, !tbaa !38
  %891 = load i32, ptr %24, align 4, !tbaa !9
  %892 = load i32, ptr %19, align 4, !tbaa !9
  %893 = load ptr, ptr %12, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %893, i32 0, i32 100
  %895 = load i32, ptr %894, align 4, !tbaa !31
  %896 = mul i32 %892, %895
  %897 = mul i32 %896, 4
  %898 = load i32, ptr %20, align 4, !tbaa !9
  %899 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef %887, i32 noundef -267966862, i8 noundef signext %890, i32 noundef %891, i32 noundef 127, i32 noundef 0, i32 noundef %897, i32 noundef 0, i32 noundef %898, i32 noundef %899)
  br label %915

900:                                              ; preds = %883
  %901 = load ptr, ptr %10, align 8, !tbaa !5
  %902 = load ptr, ptr %12, align 8, !tbaa !5
  %903 = load i32, ptr %45, align 4, !tbaa !9
  %904 = load i32, ptr %24, align 4, !tbaa !9
  %905 = load i32, ptr %14, align 4, !tbaa !9
  %906 = load i32, ptr %19, align 4, !tbaa !9
  %907 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %901, ptr noundef %902, i32 noundef %903, i32 noundef %904, i32 noundef 0, i32 noundef %905, i32 noundef %906, i32 noundef %907)
  %908 = load ptr, ptr %10, align 8, !tbaa !5
  %909 = load ptr, ptr %12, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %909, i32 0, i32 21
  %911 = load i8, ptr %910, align 4, !tbaa !38
  %912 = load i32, ptr %21, align 4, !tbaa !9
  %913 = load i32, ptr %20, align 4, !tbaa !9
  %914 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %908, i32 noundef -267966862, i8 noundef signext %911, i32 noundef %912, i32 noundef %913, i32 noundef %914)
  br label %915

915:                                              ; preds = %900, %886
  br label %916

916:                                              ; preds = %915, %880
  br label %944

917:                                              ; preds = %877
  %918 = load ptr, ptr %10, align 8, !tbaa !5
  %919 = load ptr, ptr %12, align 8, !tbaa !5
  %920 = load i32, ptr %45, align 4, !tbaa !9
  %921 = load i32, ptr %24, align 4, !tbaa !9
  %922 = load i32, ptr %46, align 4, !tbaa !9
  %923 = icmp sgt i32 %922, 0
  br i1 %923, label %924, label %928

924:                                              ; preds = %917
  %925 = load ptr, ptr %12, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %925, i32 0, i32 71
  %927 = load i32, ptr %926, align 4, !tbaa !37
  br label %929

928:                                              ; preds = %917
  br label %929

929:                                              ; preds = %928, %924
  %930 = phi i32 [ %927, %924 ], [ 0, %928 ]
  %931 = load i32, ptr %14, align 4, !tbaa !9
  %932 = load i32, ptr %19, align 4, !tbaa !9
  %933 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %918, ptr noundef %919, i32 noundef %920, i32 noundef %921, i32 noundef %930, i32 noundef %931, i32 noundef %932, i32 noundef %933)
  %934 = load ptr, ptr %10, align 8, !tbaa !5
  %935 = load ptr, ptr %12, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %935, i32 0, i32 21
  %937 = load i8, ptr %936, align 4, !tbaa !38
  %938 = load ptr, ptr %13, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %938, i32 0, i32 8
  %940 = getelementptr inbounds [3 x i8], ptr %939, i64 0, i64 0
  %941 = call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef %940)
  %942 = load i32, ptr %20, align 4, !tbaa !9
  %943 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef %934, i8 noundef signext %937, i32 noundef %941, i32 noundef %942, i32 noundef %943)
  br label %944

944:                                              ; preds = %929, %916
  %945 = load i32, ptr %34, align 4, !tbaa !9
  %946 = icmp eq i32 %945, 0
  br i1 %946, label %947, label %987

947:                                              ; preds = %944
  %948 = load ptr, ptr %10, align 8, !tbaa !5
  %949 = load ptr, ptr %12, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %949, i32 0, i32 0
  %951 = load i32, ptr %950, align 8, !tbaa !32
  %952 = load i32, ptr %40, align 4, !tbaa !9
  %953 = icmp ugt i32 %952, 0
  br i1 %953, label %957, label %954

954:                                              ; preds = %947
  %955 = load i32, ptr %41, align 4, !tbaa !9
  %956 = icmp ugt i32 %955, 0
  br i1 %956, label %957, label %958

957:                                              ; preds = %954, %947
  br label %968

958:                                              ; preds = %954
  %959 = load i32, ptr %42, align 4, !tbaa !9
  %960 = icmp ugt i32 %959, 0
  br i1 %960, label %964, label %961

961:                                              ; preds = %958
  %962 = load i32, ptr %43, align 4, !tbaa !9
  %963 = icmp ugt i32 %962, 0
  br label %964

964:                                              ; preds = %961, %958
  %965 = phi i1 [ true, %958 ], [ %963, %961 ]
  %966 = zext i1 %965 to i64
  %967 = select i1 %965, i32 -536406417, i32 537138704
  br label %968

968:                                              ; preds = %964, %957
  %969 = phi i32 [ -528017809, %957 ], [ %967, %964 ]
  %970 = load ptr, ptr %11, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %970, i32 0, i32 5
  %972 = load i32, ptr %971, align 4, !tbaa !23
  %973 = load i32, ptr %17, align 4, !tbaa !9
  %974 = load i32, ptr %19, align 4, !tbaa !9
  %975 = add i32 %973, %974
  %976 = load ptr, ptr %13, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %976, i32 0, i32 5
  %978 = load i32, ptr %977, align 1, !tbaa !33
  %979 = mul i32 %975, %978
  %980 = load i32, ptr %16, align 4, !tbaa !9
  %981 = add i32 %979, %980
  %982 = load i32, ptr %44, align 4, !tbaa !9
  %983 = mul i32 %981, %982
  %984 = load i8, ptr %49, align 1, !tbaa !39
  %985 = load i32, ptr %20, align 4, !tbaa !9
  %986 = load i32, ptr %50, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %948, i32 noundef %951, i32 noundef %969, i32 noundef %972, i32 noundef 127, i32 noundef 0, i32 noundef %983, i8 noundef signext %984, i32 noundef %985, i32 noundef %986, i32 noundef 0, i32 noundef 1)
  br label %987

987:                                              ; preds = %968, %944
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #3
  br label %988

988:                                              ; preds = %987, %821
  %989 = load i32, ptr %27, align 4, !tbaa !9
  %990 = icmp eq i32 %989, 1
  br i1 %990, label %991, label %1077

991:                                              ; preds = %988
  %992 = load i32, ptr %32, align 4, !tbaa !9
  %993 = load i32, ptr %19, align 4, !tbaa !9
  %994 = load i32, ptr %32, align 4, !tbaa !9
  %995 = sub i32 8, %994
  %996 = urem i32 %993, %995
  %997 = add i32 %992, %996
  store i32 %997, ptr %33, align 4, !tbaa !9
  %998 = load ptr, ptr %10, align 8, !tbaa !5
  %999 = load i32, ptr %40, align 4, !tbaa !9
  %1000 = icmp ugt i32 %999, 0
  br i1 %1000, label %1004, label %1001

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

1004:                                             ; preds = %1001, %991
  br label %1015

1005:                                             ; preds = %1001
  %1006 = load i32, ptr %42, align 4, !tbaa !9
  %1007 = icmp ugt i32 %1006, 0
  br i1 %1007, label %1011, label %1008

1008:                                             ; preds = %1005
  %1009 = load i32, ptr %43, align 4, !tbaa !9
  %1010 = icmp ugt i32 %1009, 0
  br label %1011

1011:                                             ; preds = %1008, %1005
  %1012 = phi i1 [ true, %1005 ], [ %1010, %1008 ]
  %1013 = zext i1 %1012 to i64
  %1014 = select i1 %1012, i32 -267569601, i32 -267569633
  br label %1015

1015:                                             ; preds = %1011, %1004
  %1016 = phi i32 [ -259180993, %1004 ], [ %1014, %1011 ]
  %1017 = load ptr, ptr %12, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1017, i32 0, i32 21
  %1019 = load i8, ptr %1018, align 4, !tbaa !38
  %1020 = load ptr, ptr %12, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1020, i32 0, i32 47
  %1022 = load i32, ptr %1021, align 4, !tbaa !59
  %1023 = load i32, ptr %20, align 4, !tbaa !9
  %1024 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %998, i32 noundef %1016, i8 noundef signext %1019, i32 noundef %1022, i32 noundef %1023, i32 noundef %1024, i32 noundef 6)
  %1025 = load i32, ptr %34, align 4, !tbaa !9
  %1026 = icmp eq i32 %1025, 1
  br i1 %1026, label %1027, label %1048

1027:                                             ; preds = %1015
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %1028 = load i32, ptr %15, align 4, !tbaa !9
  %1029 = icmp sge i32 %1028, 0
  %1030 = zext i1 %1029 to i64
  %1031 = select i1 %1029, i32 -1601891951, i32 -1610346095
  store i32 %1031, ptr %51, align 4, !tbaa !9
  %1032 = load ptr, ptr %10, align 8, !tbaa !5
  %1033 = load i32, ptr %51, align 4, !tbaa !9
  %1034 = load i32, ptr %25, align 4, !tbaa !9
  %1035 = load i32, ptr %17, align 4, !tbaa !9
  %1036 = load i32, ptr %19, align 4, !tbaa !9
  %1037 = add i32 %1035, %1036
  %1038 = load ptr, ptr %13, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1038, i32 0, i32 30
  %1040 = load i32, ptr %1039, align 1, !tbaa !60
  %1041 = mul i32 %1037, %1040
  %1042 = udiv i32 %1041, 8
  %1043 = load i32, ptr %16, align 4, !tbaa !9
  %1044 = add nsw i32 %1043, 7
  %1045 = sdiv i32 %1044, 8
  %1046 = add i32 %1042, %1045
  %1047 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef %1032, i32 noundef %1033, i32 noundef %1034, i32 noundef 127, i32 noundef 0, i32 noundef %1046, i32 noundef %1047)
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  br label %1048

1048:                                             ; preds = %1027, %1015
  %1049 = load ptr, ptr %10, align 8, !tbaa !5
  %1050 = load i32, ptr %40, align 4, !tbaa !9
  %1051 = icmp ugt i32 %1050, 0
  br i1 %1051, label %1055, label %1052

1052:                                             ; preds = %1048
  %1053 = load i32, ptr %41, align 4, !tbaa !9
  %1054 = icmp ugt i32 %1053, 0
  br i1 %1054, label %1055, label %1056

1055:                                             ; preds = %1052, %1048
  br label %1066

1056:                                             ; preds = %1052
  %1057 = load i32, ptr %42, align 4, !tbaa !9
  %1058 = icmp ugt i32 %1057, 0
  br i1 %1058, label %1062, label %1059

1059:                                             ; preds = %1056
  %1060 = load i32, ptr %43, align 4, !tbaa !9
  %1061 = icmp ugt i32 %1060, 0
  br label %1062

1062:                                             ; preds = %1059, %1056
  %1063 = phi i1 [ true, %1056 ], [ %1061, %1059 ]
  %1064 = zext i1 %1063 to i64
  %1065 = select i1 %1063, i32 -268097946, i32 -268097948
  br label %1066

1066:                                             ; preds = %1062, %1055
  %1067 = phi i32 [ -259709338, %1055 ], [ %1065, %1062 ]
  %1068 = load ptr, ptr %12, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1068, i32 0, i32 21
  %1070 = load i8, ptr %1069, align 4, !tbaa !38
  %1071 = load i32, ptr %20, align 4, !tbaa !9
  %1072 = load ptr, ptr %12, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1072, i32 0, i32 47
  %1074 = load i32, ptr %1073, align 4, !tbaa !59
  %1075 = load i32, ptr %20, align 4, !tbaa !9
  %1076 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %1049, i32 noundef %1067, i8 noundef signext %1070, i32 noundef %1071, i32 noundef %1074, i32 noundef %1075, i32 noundef %1076, i32 noundef 0)
  br label %1077

1077:                                             ; preds = %1066, %988
  %1078 = load i32, ptr %28, align 4, !tbaa !9
  %1079 = icmp eq i32 %1078, 1
  br i1 %1079, label %1080, label %1108

1080:                                             ; preds = %1077
  %1081 = load ptr, ptr %10, align 8, !tbaa !5
  %1082 = load i32, ptr %40, align 4, !tbaa !9
  %1083 = icmp ugt i32 %1082, 0
  br i1 %1083, label %1087, label %1084

1084:                                             ; preds = %1080
  %1085 = load i32, ptr %41, align 4, !tbaa !9
  %1086 = icmp ugt i32 %1085, 0
  br i1 %1086, label %1087, label %1088

1087:                                             ; preds = %1084, %1080
  br label %1098

1088:                                             ; preds = %1084
  %1089 = load i32, ptr %42, align 4, !tbaa !9
  %1090 = icmp ugt i32 %1089, 0
  br i1 %1090, label %1094, label %1091

1091:                                             ; preds = %1088
  %1092 = load i32, ptr %43, align 4, !tbaa !9
  %1093 = icmp ugt i32 %1092, 0
  br label %1094

1094:                                             ; preds = %1091, %1088
  %1095 = phi i1 [ true, %1088 ], [ %1093, %1091 ]
  %1096 = zext i1 %1095 to i64
  %1097 = select i1 %1095, i32 805643836, i32 805643837
  br label %1098

1098:                                             ; preds = %1094, %1087
  %1099 = phi i32 [ 805639918, %1087 ], [ %1097, %1094 ]
  %1100 = load ptr, ptr %12, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1100, i32 0, i32 21
  %1102 = load i8, ptr %1101, align 4, !tbaa !38
  %1103 = load i32, ptr %20, align 4, !tbaa !9
  %1104 = load ptr, ptr %12, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1104, i32 0, i32 47
  %1106 = load i32, ptr %1105, align 4, !tbaa !59
  %1107 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1081, i32 noundef %1099, i8 noundef signext %1102, i32 noundef %1103, i32 noundef %1106, i32 noundef %1107)
  br label %1108

1108:                                             ; preds = %1098, %1077
  %1109 = load i32, ptr %39, align 4, !tbaa !9
  %1110 = icmp eq i32 %1109, 1
  br i1 %1110, label %1111, label %1148

1111:                                             ; preds = %1108
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  %1112 = load i32, ptr %15, align 4, !tbaa !9
  %1113 = icmp sge i32 %1112, 0
  %1114 = zext i1 %1113 to i64
  %1115 = select i1 %1113, i32 -1601891952, i32 -1610346096
  store i32 %1115, ptr %52, align 4, !tbaa !9
  %1116 = load i32, ptr %32, align 4, !tbaa !9
  %1117 = load i32, ptr %19, align 4, !tbaa !9
  %1118 = load i32, ptr %32, align 4, !tbaa !9
  %1119 = sub i32 8, %1118
  %1120 = urem i32 %1117, %1119
  %1121 = add i32 %1116, %1120
  store i32 %1121, ptr %33, align 4, !tbaa !9
  %1122 = load ptr, ptr %10, align 8, !tbaa !5
  %1123 = load i32, ptr %52, align 4, !tbaa !9
  %1124 = load i32, ptr %38, align 4, !tbaa !9
  %1125 = load i32, ptr %17, align 4, !tbaa !9
  %1126 = load i32, ptr %19, align 4, !tbaa !9
  %1127 = add i32 %1125, %1126
  %1128 = load ptr, ptr %13, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1128, i32 0, i32 30
  %1130 = load i32, ptr %1129, align 1, !tbaa !60
  %1131 = mul i32 %1127, %1130
  %1132 = udiv i32 %1131, 8
  %1133 = load i32, ptr %16, align 4, !tbaa !9
  %1134 = add nsw i32 %1133, 7
  %1135 = sdiv i32 %1134, 8
  %1136 = add i32 %1132, %1135
  %1137 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef %1122, i32 noundef %1123, i32 noundef %1124, i32 noundef 127, i32 noundef 0, i32 noundef %1136, i32 noundef %1137)
  %1138 = load ptr, ptr %10, align 8, !tbaa !5
  %1139 = load ptr, ptr %12, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1139, i32 0, i32 21
  %1141 = load i8, ptr %1140, align 4, !tbaa !38
  %1142 = load i32, ptr %20, align 4, !tbaa !9
  %1143 = load ptr, ptr %12, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1143, i32 0, i32 47
  %1145 = load i32, ptr %1144, align 4, !tbaa !59
  %1146 = load i32, ptr %20, align 4, !tbaa !9
  %1147 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %1138, i32 noundef -259709338, i8 noundef signext %1141, i32 noundef %1142, i32 noundef %1145, i32 noundef %1146, i32 noundef %1147, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  br label %1148

1148:                                             ; preds = %1111, %1108
  %1149 = load i32, ptr %31, align 4, !tbaa !9
  %1150 = icmp eq i32 %1149, 1
  br i1 %1150, label %1151, label %1236

1151:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #3
  %1152 = load i32, ptr %15, align 4, !tbaa !9
  %1153 = icmp sge i32 %1152, 0
  br i1 %1153, label %1154, label %1159

1154:                                             ; preds = %1151
  %1155 = load ptr, ptr %12, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1155, i32 0, i32 21
  %1157 = load i8, ptr %1156, align 4, !tbaa !38
  %1158 = sext i8 %1157 to i32
  br label %1178

1159:                                             ; preds = %1151
  %1160 = load i32, ptr %40, align 4, !tbaa !9
  %1161 = icmp ugt i32 %1160, 0
  br i1 %1161, label %1165, label %1162

1162:                                             ; preds = %1159
  %1163 = load i32, ptr %41, align 4, !tbaa !9
  %1164 = icmp ugt i32 %1163, 0
  br i1 %1164, label %1165, label %1166

1165:                                             ; preds = %1162, %1159
  br label %1176

1166:                                             ; preds = %1162
  %1167 = load i32, ptr %42, align 4, !tbaa !9
  %1168 = icmp ugt i32 %1167, 0
  br i1 %1168, label %1172, label %1169

1169:                                             ; preds = %1166
  %1170 = load i32, ptr %43, align 4, !tbaa !9
  %1171 = icmp ugt i32 %1170, 0
  br label %1172

1172:                                             ; preds = %1169, %1166
  %1173 = phi i1 [ true, %1166 ], [ %1171, %1169 ]
  %1174 = zext i1 %1173 to i64
  %1175 = select i1 %1173, i32 120, i32 122
  br label %1176

1176:                                             ; preds = %1172, %1165
  %1177 = phi i32 [ 121, %1165 ], [ %1175, %1172 ]
  br label %1178

1178:                                             ; preds = %1176, %1154
  %1179 = phi i32 [ %1158, %1154 ], [ %1177, %1176 ]
  %1180 = trunc i32 %1179 to i8
  store i8 %1180, ptr %53, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  %1181 = load i32, ptr %15, align 4, !tbaa !9
  %1182 = icmp sge i32 %1181, 0
  br i1 %1182, label %1183, label %1187

1183:                                             ; preds = %1178
  %1184 = load ptr, ptr %12, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1184, i32 0, i32 72
  %1186 = load i32, ptr %1185, align 8, !tbaa !40
  br label %1197

1187:                                             ; preds = %1178
  %1188 = load i32, ptr %46, align 4, !tbaa !9
  %1189 = icmp sgt i32 %1188, 0
  br i1 %1189, label %1190, label %1194

1190:                                             ; preds = %1187
  %1191 = load ptr, ptr %12, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1191, i32 0, i32 71
  %1193 = load i32, ptr %1192, align 4, !tbaa !37
  br label %1195

1194:                                             ; preds = %1187
  br label %1195

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

1197:                                             ; preds = %1195, %1183
  %1198 = phi i32 [ %1186, %1183 ], [ %1196, %1195 ]
  store i32 %1198, ptr %54, align 4, !tbaa !9
  %1199 = load ptr, ptr %10, align 8, !tbaa !5
  %1200 = load ptr, ptr %12, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1200, i32 0, i32 0
  %1202 = load i32, ptr %1201, align 8, !tbaa !32
  %1203 = load i32, ptr %40, align 4, !tbaa !9
  %1204 = icmp ugt i32 %1203, 0
  br i1 %1204, label %1208, label %1205

1205:                                             ; preds = %1197
  %1206 = load i32, ptr %41, align 4, !tbaa !9
  %1207 = icmp ugt i32 %1206, 0
  br i1 %1207, label %1208, label %1209

1208:                                             ; preds = %1205, %1197
  br label %1219

1209:                                             ; preds = %1205
  %1210 = load i32, ptr %42, align 4, !tbaa !9
  %1211 = icmp ugt i32 %1210, 0
  br i1 %1211, label %1215, label %1212

1212:                                             ; preds = %1209
  %1213 = load i32, ptr %43, align 4, !tbaa !9
  %1214 = icmp ugt i32 %1213, 0
  br label %1215

1215:                                             ; preds = %1212, %1209
  %1216 = phi i1 [ true, %1209 ], [ %1214, %1212 ]
  %1217 = zext i1 %1216 to i64
  %1218 = select i1 %1216, i32 -536406417, i32 537138704
  br label %1219

1219:                                             ; preds = %1215, %1208
  %1220 = phi i32 [ -528017809, %1208 ], [ %1218, %1215 ]
  %1221 = load i32, ptr %35, align 4, !tbaa !9
  %1222 = load i32, ptr %17, align 4, !tbaa !9
  %1223 = load i32, ptr %19, align 4, !tbaa !9
  %1224 = add i32 %1222, %1223
  %1225 = load ptr, ptr %13, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1225, i32 0, i32 5
  %1227 = load i32, ptr %1226, align 1, !tbaa !33
  %1228 = mul i32 %1224, %1227
  %1229 = load i32, ptr %16, align 4, !tbaa !9
  %1230 = add i32 %1228, %1229
  %1231 = load i32, ptr %44, align 4, !tbaa !9
  %1232 = mul i32 %1230, %1231
  %1233 = load i8, ptr %53, align 1, !tbaa !39
  %1234 = load i32, ptr %20, align 4, !tbaa !9
  %1235 = load i32, ptr %54, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1199, i32 noundef %1202, i32 noundef %1220, i32 noundef %1221, i32 noundef 127, i32 noundef 0, i32 noundef %1232, i8 noundef signext %1233, i32 noundef %1234, i32 noundef %1235, i32 noundef 0, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #3
  br label %1236

1236:                                             ; preds = %1219, %1148
  %1237 = load i32, ptr %37, align 4, !tbaa !9
  %1238 = icmp eq i32 %1237, 1
  br i1 %1238, label %1239, label %1354

1239:                                             ; preds = %1236
  %1240 = load i32, ptr %31, align 4, !tbaa !9
  %1241 = icmp eq i32 %1240, 1
  br i1 %1241, label %1242, label %1354

1242:                                             ; preds = %1239
  %1243 = load i32, ptr %19, align 4, !tbaa !9
  %1244 = urem i32 %1243, 2
  %1245 = icmp eq i32 %1244, 1
  br i1 %1245, label %1246, label %1353

1246:                                             ; preds = %1242
  %1247 = load i32, ptr %19, align 4, !tbaa !9
  %1248 = sub i32 %1247, 1
  %1249 = load i32, ptr %29, align 4, !tbaa !9
  %1250 = add i32 %1248, %1249
  %1251 = icmp ult i32 %1250, 16
  br i1 %1251, label %1252, label %1260

1252:                                             ; preds = %1246
  %1253 = load i32, ptr %19, align 4, !tbaa !9
  %1254 = sub i32 %1253, 1
  %1255 = load i32, ptr %29, align 4, !tbaa !9
  %1256 = sub i32 16, %1255
  %1257 = urem i32 %1254, %1256
  %1258 = load i32, ptr %29, align 4, !tbaa !9
  %1259 = add i32 %1257, %1258
  store i32 %1259, ptr %22, align 4, !tbaa !9
  br label %1268

1260:                                             ; preds = %1246
  %1261 = load i32, ptr %19, align 4, !tbaa !9
  %1262 = sub i32 %1261, 1
  %1263 = sub i32 %1262, 16
  %1264 = load i32, ptr %29, align 4, !tbaa !9
  %1265 = add i32 %1263, %1264
  %1266 = urem i32 %1265, 15
  %1267 = add i32 16, %1266
  store i32 %1267, ptr %22, align 4, !tbaa !9
  br label %1268

1268:                                             ; preds = %1260, %1252
  %1269 = load i32, ptr %22, align 4, !tbaa !9
  %1270 = add i32 %1269, 16
  %1271 = icmp ult i32 %1270, 32
  br i1 %1271, label %1272, label %1275

1272:                                             ; preds = %1268
  %1273 = load i32, ptr %22, align 4, !tbaa !9
  %1274 = add i32 %1273, 16
  br label %1276

1275:                                             ; preds = %1268
  br label %1276

1276:                                             ; preds = %1275, %1272
  %1277 = phi i32 [ %1274, %1272 ], [ 31, %1275 ]
  store i32 %1277, ptr %23, align 4, !tbaa !9
  %1278 = load ptr, ptr %10, align 8, !tbaa !5
  %1279 = load ptr, ptr %12, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1279, i32 0, i32 21
  %1281 = load i8, ptr %1280, align 4, !tbaa !38
  %1282 = load i32, ptr %22, align 4, !tbaa !9
  %1283 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1278, i32 noundef -528083345, i8 noundef signext %1281, i32 noundef %1282, i32 noundef 255, i32 noundef %1283)
  %1284 = load ptr, ptr %10, align 8, !tbaa !5
  %1285 = load ptr, ptr %12, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1285, i32 0, i32 21
  %1287 = load i8, ptr %1286, align 4, !tbaa !38
  %1288 = load i32, ptr %20, align 4, !tbaa !9
  %1289 = load ptr, ptr %12, align 8, !tbaa !5
  %1290 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1289, i32 0, i32 67
  %1291 = load i32, ptr %1290, align 4, !tbaa !61
  %1292 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1284, i32 noundef -259709315, i8 noundef signext %1287, i32 noundef %1288, i32 noundef %1291, i32 noundef %1292)
  %1293 = load ptr, ptr %10, align 8, !tbaa !5
  %1294 = load ptr, ptr %12, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1294, i32 0, i32 0
  %1296 = load i32, ptr %1295, align 8, !tbaa !32
  %1297 = load i32, ptr %36, align 4, !tbaa !9
  %1298 = load i32, ptr %17, align 4, !tbaa !9
  %1299 = sdiv i32 %1298, 2
  %1300 = load i32, ptr %19, align 4, !tbaa !9
  %1301 = udiv i32 %1300, 2
  %1302 = add i32 %1299, %1301
  %1303 = load ptr, ptr %13, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1303, i32 0, i32 5
  %1305 = load i32, ptr %1304, align 1, !tbaa !33
  %1306 = mul i32 %1302, %1305
  %1307 = load i32, ptr %16, align 4, !tbaa !9
  %1308 = add i32 %1306, %1307
  %1309 = mul i32 %1308, 2
  %1310 = mul i32 %1309, 2
  %1311 = load ptr, ptr %12, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1311, i32 0, i32 21
  %1313 = load i8, ptr %1312, align 4, !tbaa !38
  %1314 = load i32, ptr %23, align 4, !tbaa !9
  %1315 = load ptr, ptr %12, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1315, i32 0, i32 71
  %1317 = load i32, ptr %1316, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1293, i32 noundef %1296, i32 noundef 537138704, i32 noundef %1297, i32 noundef 127, i32 noundef 0, i32 noundef %1310, i8 noundef signext %1313, i32 noundef %1314, i32 noundef %1317, i32 noundef 0, i32 noundef 1)
  %1318 = load ptr, ptr %10, align 8, !tbaa !5
  %1319 = load ptr, ptr %12, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1319, i32 0, i32 21
  %1321 = load i8, ptr %1320, align 4, !tbaa !38
  %1322 = load i32, ptr %20, align 4, !tbaa !9
  %1323 = load ptr, ptr %12, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1323, i32 0, i32 68
  %1325 = load i32, ptr %1324, align 8, !tbaa !62
  %1326 = load i32, ptr %22, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1318, i32 noundef -259709315, i8 noundef signext %1321, i32 noundef %1322, i32 noundef %1325, i32 noundef %1326)
  %1327 = load ptr, ptr %10, align 8, !tbaa !5
  %1328 = load ptr, ptr %12, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1328, i32 0, i32 0
  %1330 = load i32, ptr %1329, align 8, !tbaa !32
  %1331 = load i32, ptr %36, align 4, !tbaa !9
  %1332 = load i32, ptr %17, align 4, !tbaa !9
  %1333 = sdiv i32 %1332, 2
  %1334 = load i32, ptr %19, align 4, !tbaa !9
  %1335 = udiv i32 %1334, 2
  %1336 = add i32 %1333, %1335
  %1337 = load ptr, ptr %13, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1337, i32 0, i32 5
  %1339 = load i32, ptr %1338, align 1, !tbaa !33
  %1340 = mul i32 %1336, %1339
  %1341 = load i32, ptr %16, align 4, !tbaa !9
  %1342 = add i32 %1340, %1341
  %1343 = add i32 %1342, 16
  %1344 = mul i32 %1343, 2
  %1345 = mul i32 %1344, 2
  %1346 = load ptr, ptr %12, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1346, i32 0, i32 21
  %1348 = load i8, ptr %1347, align 4, !tbaa !38
  %1349 = load i32, ptr %22, align 4, !tbaa !9
  %1350 = load ptr, ptr %12, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1350, i32 0, i32 71
  %1352 = load i32, ptr %1351, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1327, i32 noundef %1330, i32 noundef 537138704, i32 noundef %1331, i32 noundef 127, i32 noundef 0, i32 noundef %1345, i8 noundef signext %1348, i32 noundef %1349, i32 noundef %1352, i32 noundef 0, i32 noundef 1)
  br label %1353

1353:                                             ; preds = %1276, %1242
  br label %1354

1354:                                             ; preds = %1353, %1239, %1236
  br label %1355

1355:                                             ; preds = %1354
  %1356 = load i32, ptr %19, align 4, !tbaa !9
  %1357 = add i32 %1356, 1
  store i32 %1357, ptr %19, align 4, !tbaa !9
  br label %385, !llvm.loop !63

1358:                                             ; preds = %385
  %1359 = load i32, ptr %31, align 4, !tbaa !9
  %1360 = icmp eq i32 %1359, 0
  br i1 %1360, label %1361, label %1575

1361:                                             ; preds = %1358
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #3
  %1362 = load i32, ptr %15, align 4, !tbaa !9
  %1363 = icmp sge i32 %1362, 0
  br i1 %1363, label %1364, label %1369

1364:                                             ; preds = %1361
  %1365 = load ptr, ptr %12, align 8, !tbaa !5
  %1366 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1365, i32 0, i32 21
  %1367 = load i8, ptr %1366, align 4, !tbaa !38
  %1368 = sext i8 %1367 to i32
  br label %1388

1369:                                             ; preds = %1361
  %1370 = load i32, ptr %40, align 4, !tbaa !9
  %1371 = icmp ugt i32 %1370, 0
  br i1 %1371, label %1375, label %1372

1372:                                             ; preds = %1369
  %1373 = load i32, ptr %41, align 4, !tbaa !9
  %1374 = icmp ugt i32 %1373, 0
  br i1 %1374, label %1375, label %1376

1375:                                             ; preds = %1372, %1369
  br label %1386

1376:                                             ; preds = %1372
  %1377 = load i32, ptr %42, align 4, !tbaa !9
  %1378 = icmp ugt i32 %1377, 0
  br i1 %1378, label %1382, label %1379

1379:                                             ; preds = %1376
  %1380 = load i32, ptr %43, align 4, !tbaa !9
  %1381 = icmp ugt i32 %1380, 0
  br label %1382

1382:                                             ; preds = %1379, %1376
  %1383 = phi i1 [ true, %1376 ], [ %1381, %1379 ]
  %1384 = zext i1 %1383 to i64
  %1385 = select i1 %1383, i32 120, i32 122
  br label %1386

1386:                                             ; preds = %1382, %1375
  %1387 = phi i32 [ 121, %1375 ], [ %1385, %1382 ]
  br label %1388

1388:                                             ; preds = %1386, %1364
  %1389 = phi i32 [ %1368, %1364 ], [ %1387, %1386 ]
  %1390 = trunc i32 %1389 to i8
  store i8 %1390, ptr %55, align 1, !tbaa !39
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1391

1391:                                             ; preds = %1571, %1388
  %1392 = load i32, ptr %19, align 4, !tbaa !9
  %1393 = load i32, ptr %18, align 4, !tbaa !9
  %1394 = icmp ult i32 %1392, %1393
  br i1 %1394, label %1395, label %1574

1395:                                             ; preds = %1391
  %1396 = load i32, ptr %19, align 4, !tbaa !9
  %1397 = load i32, ptr %29, align 4, !tbaa !9
  %1398 = add i32 %1396, %1397
  %1399 = icmp ult i32 %1398, 16
  br i1 %1399, label %1400, label %1407

1400:                                             ; preds = %1395
  %1401 = load i32, ptr %19, align 4, !tbaa !9
  %1402 = load i32, ptr %29, align 4, !tbaa !9
  %1403 = sub i32 16, %1402
  %1404 = urem i32 %1401, %1403
  %1405 = load i32, ptr %29, align 4, !tbaa !9
  %1406 = add i32 %1404, %1405
  store i32 %1406, ptr %20, align 4, !tbaa !9
  br label %1414

1407:                                             ; preds = %1395
  %1408 = load i32, ptr %19, align 4, !tbaa !9
  %1409 = sub i32 %1408, 16
  %1410 = load i32, ptr %29, align 4, !tbaa !9
  %1411 = add i32 %1409, %1410
  %1412 = urem i32 %1411, 15
  %1413 = add i32 16, %1412
  store i32 %1413, ptr %20, align 4, !tbaa !9
  br label %1414

1414:                                             ; preds = %1407, %1400
  %1415 = load ptr, ptr %10, align 8, !tbaa !5
  %1416 = load ptr, ptr %12, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1416, i32 0, i32 0
  %1418 = load i32, ptr %1417, align 8, !tbaa !32
  %1419 = load i32, ptr %40, align 4, !tbaa !9
  %1420 = icmp ugt i32 %1419, 0
  br i1 %1420, label %1424, label %1421

1421:                                             ; preds = %1414
  %1422 = load i32, ptr %41, align 4, !tbaa !9
  %1423 = icmp ugt i32 %1422, 0
  br i1 %1423, label %1424, label %1425

1424:                                             ; preds = %1421, %1414
  br label %1435

1425:                                             ; preds = %1421
  %1426 = load i32, ptr %42, align 4, !tbaa !9
  %1427 = icmp ugt i32 %1426, 0
  br i1 %1427, label %1431, label %1428

1428:                                             ; preds = %1425
  %1429 = load i32, ptr %43, align 4, !tbaa !9
  %1430 = icmp ugt i32 %1429, 0
  br label %1431

1431:                                             ; preds = %1428, %1425
  %1432 = phi i1 [ true, %1425 ], [ %1430, %1428 ]
  %1433 = zext i1 %1432 to i64
  %1434 = select i1 %1432, i32 -536406417, i32 537138704
  br label %1435

1435:                                             ; preds = %1431, %1424
  %1436 = phi i32 [ -528017809, %1424 ], [ %1434, %1431 ]
  %1437 = load i32, ptr %35, align 4, !tbaa !9
  %1438 = load i32, ptr %17, align 4, !tbaa !9
  %1439 = load i32, ptr %19, align 4, !tbaa !9
  %1440 = add i32 %1438, %1439
  %1441 = load ptr, ptr %13, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1441, i32 0, i32 5
  %1443 = load i32, ptr %1442, align 1, !tbaa !33
  %1444 = mul i32 %1440, %1443
  %1445 = load i32, ptr %16, align 4, !tbaa !9
  %1446 = add i32 %1444, %1445
  %1447 = load i32, ptr %44, align 4, !tbaa !9
  %1448 = mul i32 %1446, %1447
  %1449 = load i8, ptr %55, align 1, !tbaa !39
  %1450 = load i32, ptr %20, align 4, !tbaa !9
  %1451 = load ptr, ptr %12, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1451, i32 0, i32 72
  %1453 = load i32, ptr %1452, align 8, !tbaa !40
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1415, i32 noundef %1418, i32 noundef %1436, i32 noundef %1437, i32 noundef 127, i32 noundef 0, i32 noundef %1448, i8 noundef signext %1449, i32 noundef %1450, i32 noundef %1453, i32 noundef 0, i32 noundef 1)
  %1454 = load i32, ptr %37, align 4, !tbaa !9
  %1455 = icmp eq i32 %1454, 1
  br i1 %1455, label %1456, label %1570

1456:                                             ; preds = %1435
  %1457 = load i32, ptr %19, align 4, !tbaa !9
  %1458 = urem i32 %1457, 2
  %1459 = icmp eq i32 %1458, 1
  br i1 %1459, label %1460, label %1569

1460:                                             ; preds = %1456
  %1461 = load i32, ptr %19, align 4, !tbaa !9
  %1462 = sub i32 %1461, 1
  %1463 = load i32, ptr %29, align 4, !tbaa !9
  %1464 = add i32 %1462, %1463
  %1465 = icmp ult i32 %1464, 16
  br i1 %1465, label %1466, label %1474

1466:                                             ; preds = %1460
  %1467 = load i32, ptr %19, align 4, !tbaa !9
  %1468 = sub i32 %1467, 1
  %1469 = load i32, ptr %29, align 4, !tbaa !9
  %1470 = sub i32 16, %1469
  %1471 = urem i32 %1468, %1470
  %1472 = load i32, ptr %29, align 4, !tbaa !9
  %1473 = add i32 %1471, %1472
  store i32 %1473, ptr %22, align 4, !tbaa !9
  br label %1482

1474:                                             ; preds = %1460
  %1475 = load i32, ptr %19, align 4, !tbaa !9
  %1476 = sub i32 %1475, 1
  %1477 = sub i32 %1476, 16
  %1478 = load i32, ptr %29, align 4, !tbaa !9
  %1479 = add i32 %1477, %1478
  %1480 = urem i32 %1479, 15
  %1481 = add i32 16, %1480
  store i32 %1481, ptr %22, align 4, !tbaa !9
  br label %1482

1482:                                             ; preds = %1474, %1466
  %1483 = load i32, ptr %22, align 4, !tbaa !9
  %1484 = load i32, ptr %18, align 4, !tbaa !9
  %1485 = add i32 %1483, %1484
  %1486 = icmp ult i32 %1485, 32
  br i1 %1486, label %1487, label %1491

1487:                                             ; preds = %1482
  %1488 = load i32, ptr %22, align 4, !tbaa !9
  %1489 = load i32, ptr %18, align 4, !tbaa !9
  %1490 = add i32 %1488, %1489
  br label %1492

1491:                                             ; preds = %1482
  br label %1492

1492:                                             ; preds = %1491, %1487
  %1493 = phi i32 [ %1490, %1487 ], [ 31, %1491 ]
  store i32 %1493, ptr %23, align 4, !tbaa !9
  %1494 = load ptr, ptr %10, align 8, !tbaa !5
  %1495 = load ptr, ptr %12, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1495, i32 0, i32 21
  %1497 = load i8, ptr %1496, align 4, !tbaa !38
  %1498 = load i32, ptr %22, align 4, !tbaa !9
  %1499 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1494, i32 noundef -528083345, i8 noundef signext %1497, i32 noundef %1498, i32 noundef 255, i32 noundef %1499)
  %1500 = load ptr, ptr %10, align 8, !tbaa !5
  %1501 = load ptr, ptr %12, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1501, i32 0, i32 21
  %1503 = load i8, ptr %1502, align 4, !tbaa !38
  %1504 = load i32, ptr %20, align 4, !tbaa !9
  %1505 = load ptr, ptr %12, align 8, !tbaa !5
  %1506 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1505, i32 0, i32 67
  %1507 = load i32, ptr %1506, align 4, !tbaa !61
  %1508 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1500, i32 noundef -259709315, i8 noundef signext %1503, i32 noundef %1504, i32 noundef %1507, i32 noundef %1508)
  %1509 = load ptr, ptr %10, align 8, !tbaa !5
  %1510 = load ptr, ptr %12, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1510, i32 0, i32 0
  %1512 = load i32, ptr %1511, align 8, !tbaa !32
  %1513 = load i32, ptr %36, align 4, !tbaa !9
  %1514 = load i32, ptr %17, align 4, !tbaa !9
  %1515 = sdiv i32 %1514, 2
  %1516 = load i32, ptr %19, align 4, !tbaa !9
  %1517 = udiv i32 %1516, 2
  %1518 = add i32 %1515, %1517
  %1519 = load ptr, ptr %13, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1519, i32 0, i32 5
  %1521 = load i32, ptr %1520, align 1, !tbaa !33
  %1522 = mul i32 %1518, %1521
  %1523 = load i32, ptr %16, align 4, !tbaa !9
  %1524 = add i32 %1522, %1523
  %1525 = mul i32 %1524, 2
  %1526 = mul i32 %1525, 2
  %1527 = load ptr, ptr %12, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1527, i32 0, i32 21
  %1529 = load i8, ptr %1528, align 4, !tbaa !38
  %1530 = load i32, ptr %23, align 4, !tbaa !9
  %1531 = load ptr, ptr %12, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1531, i32 0, i32 71
  %1533 = load i32, ptr %1532, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1509, i32 noundef %1512, i32 noundef 537138704, i32 noundef %1513, i32 noundef 127, i32 noundef 0, i32 noundef %1526, i8 noundef signext %1529, i32 noundef %1530, i32 noundef %1533, i32 noundef 0, i32 noundef 1)
  %1534 = load ptr, ptr %10, align 8, !tbaa !5
  %1535 = load ptr, ptr %12, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1535, i32 0, i32 21
  %1537 = load i8, ptr %1536, align 4, !tbaa !38
  %1538 = load i32, ptr %20, align 4, !tbaa !9
  %1539 = load ptr, ptr %12, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1539, i32 0, i32 68
  %1541 = load i32, ptr %1540, align 8, !tbaa !62
  %1542 = load i32, ptr %22, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1534, i32 noundef -259709315, i8 noundef signext %1537, i32 noundef %1538, i32 noundef %1541, i32 noundef %1542)
  %1543 = load ptr, ptr %10, align 8, !tbaa !5
  %1544 = load ptr, ptr %12, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1544, i32 0, i32 0
  %1546 = load i32, ptr %1545, align 8, !tbaa !32
  %1547 = load i32, ptr %36, align 4, !tbaa !9
  %1548 = load i32, ptr %17, align 4, !tbaa !9
  %1549 = sdiv i32 %1548, 2
  %1550 = load i32, ptr %19, align 4, !tbaa !9
  %1551 = udiv i32 %1550, 2
  %1552 = add i32 %1549, %1551
  %1553 = load ptr, ptr %13, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %1553, i32 0, i32 5
  %1555 = load i32, ptr %1554, align 1, !tbaa !33
  %1556 = mul i32 %1552, %1555
  %1557 = load i32, ptr %16, align 4, !tbaa !9
  %1558 = add i32 %1556, %1557
  %1559 = add i32 %1558, 16
  %1560 = mul i32 %1559, 2
  %1561 = mul i32 %1560, 2
  %1562 = load ptr, ptr %12, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1562, i32 0, i32 21
  %1564 = load i8, ptr %1563, align 4, !tbaa !38
  %1565 = load i32, ptr %22, align 4, !tbaa !9
  %1566 = load ptr, ptr %12, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1566, i32 0, i32 71
  %1568 = load i32, ptr %1567, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1543, i32 noundef %1546, i32 noundef 537138704, i32 noundef %1547, i32 noundef 127, i32 noundef 0, i32 noundef %1561, i8 noundef signext %1564, i32 noundef %1565, i32 noundef %1568, i32 noundef 0, i32 noundef 1)
  br label %1569

1569:                                             ; preds = %1492, %1456
  br label %1570

1570:                                             ; preds = %1569, %1435
  br label %1571

1571:                                             ; preds = %1570
  %1572 = load i32, ptr %19, align 4, !tbaa !9
  %1573 = add i32 %1572, 1
  store i32 %1573, ptr %19, align 4, !tbaa !9
  br label %1391, !llvm.loop !65

1574:                                             ; preds = %1391
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #3
  br label %1575

1575:                                             ; preds = %1574, %1358
  %1576 = load i32, ptr %39, align 4, !tbaa !9
  %1577 = icmp eq i32 %1576, 1
  br i1 %1577, label %1578, label %1581

1578:                                             ; preds = %1575
  %1579 = load ptr, ptr %10, align 8, !tbaa !5
  %1580 = load i32, ptr %38, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1579, i32 noundef %1580)
  br label %1581

1581:                                             ; preds = %1578, %1575
  %1582 = load i32, ptr %27, align 4, !tbaa !9
  %1583 = icmp eq i32 %1582, 1
  br i1 %1583, label %1584, label %1620

1584:                                             ; preds = %1581
  %1585 = load i32, ptr %34, align 4, !tbaa !9
  %1586 = icmp eq i32 %1585, 1
  br i1 %1586, label %1587, label %1620

1587:                                             ; preds = %1584
  %1588 = load i32, ptr %25, align 4, !tbaa !9
  %1589 = load ptr, ptr %11, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1589, i32 0, i32 23
  %1591 = load i32, ptr %1590, align 4, !tbaa !17
  %1592 = icmp eq i32 %1588, %1591
  br i1 %1592, label %1593, label %1603

1593:                                             ; preds = %1587
  %1594 = load ptr, ptr %12, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1594, i32 0, i32 24
  %1596 = load i32, ptr %1595, align 8, !tbaa !28
  %1597 = icmp eq i32 %1596, 1
  br i1 %1597, label %1598, label %1603

1598:                                             ; preds = %1593
  %1599 = load ptr, ptr %10, align 8, !tbaa !5
  %1600 = load ptr, ptr %11, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1600, i32 0, i32 23
  %1602 = load i32, ptr %1601, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1599, i32 noundef %1602)
  br label %1603

1603:                                             ; preds = %1598, %1593, %1587
  %1604 = load i32, ptr %25, align 4, !tbaa !9
  %1605 = load ptr, ptr %11, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1605, i32 0, i32 22
  %1607 = load i32, ptr %1606, align 4, !tbaa !15
  %1608 = icmp eq i32 %1604, %1607
  br i1 %1608, label %1609, label %1619

1609:                                             ; preds = %1603
  %1610 = load ptr, ptr %12, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1610, i32 0, i32 23
  %1612 = load i32, ptr %1611, align 4, !tbaa !11
  %1613 = icmp eq i32 %1612, 1
  br i1 %1613, label %1614, label %1619

1614:                                             ; preds = %1609
  %1615 = load ptr, ptr %10, align 8, !tbaa !5
  %1616 = load ptr, ptr %11, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1616, i32 0, i32 22
  %1618 = load i32, ptr %1617, align 4, !tbaa !15
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1615, i32 noundef %1618)
  br label %1619

1619:                                             ; preds = %1614, %1609, %1603
  br label %1620

1620:                                             ; preds = %1619, %1584, %1581
  %1621 = load i32, ptr %34, align 4, !tbaa !9
  %1622 = icmp eq i32 %1621, 0
  br i1 %1622, label %1626, label %1623

1623:                                             ; preds = %1620
  %1624 = load i32, ptr %37, align 4, !tbaa !9
  %1625 = icmp eq i32 %1624, 1
  br i1 %1625, label %1626, label %1659

1626:                                             ; preds = %1623, %1620
  %1627 = load i32, ptr %26, align 4, !tbaa !9
  %1628 = load ptr, ptr %11, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1628, i32 0, i32 23
  %1630 = load i32, ptr %1629, align 4, !tbaa !17
  %1631 = icmp eq i32 %1627, %1630
  br i1 %1631, label %1632, label %1642

1632:                                             ; preds = %1626
  %1633 = load ptr, ptr %12, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1633, i32 0, i32 24
  %1635 = load i32, ptr %1634, align 8, !tbaa !28
  %1636 = icmp eq i32 %1635, 1
  br i1 %1636, label %1637, label %1642

1637:                                             ; preds = %1632
  %1638 = load ptr, ptr %10, align 8, !tbaa !5
  %1639 = load ptr, ptr %11, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1639, i32 0, i32 23
  %1641 = load i32, ptr %1640, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1638, i32 noundef %1641)
  br label %1642

1642:                                             ; preds = %1637, %1632, %1626
  %1643 = load i32, ptr %26, align 4, !tbaa !9
  %1644 = load ptr, ptr %11, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1644, i32 0, i32 22
  %1646 = load i32, ptr %1645, align 4, !tbaa !15
  %1647 = icmp eq i32 %1643, %1646
  br i1 %1647, label %1648, label %1658

1648:                                             ; preds = %1642
  %1649 = load ptr, ptr %12, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1649, i32 0, i32 23
  %1651 = load i32, ptr %1650, align 4, !tbaa !11
  %1652 = icmp eq i32 %1651, 1
  br i1 %1652, label %1653, label %1658

1653:                                             ; preds = %1648
  %1654 = load ptr, ptr %10, align 8, !tbaa !5
  %1655 = load ptr, ptr %11, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1655, i32 0, i32 22
  %1657 = load i32, ptr %1656, align 4, !tbaa !15
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1654, i32 noundef %1657)
  br label %1658

1658:                                             ; preds = %1653, %1648, %1642
  br label %1659

1659:                                             ; preds = %1658, %1623
  %1660 = load i32, ptr %24, align 4, !tbaa !9
  %1661 = load ptr, ptr %11, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1661, i32 0, i32 23
  %1663 = load i32, ptr %1662, align 4, !tbaa !17
  %1664 = icmp eq i32 %1660, %1663
  br i1 %1664, label %1665, label %1675

1665:                                             ; preds = %1659
  %1666 = load ptr, ptr %12, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %1666, i32 0, i32 24
  %1668 = load i32, ptr %1667, align 8, !tbaa !28
  %1669 = icmp eq i32 %1668, 1
  br i1 %1669, label %1670, label %1675

1670:                                             ; preds = %1665
  %1671 = load ptr, ptr %10, align 8, !tbaa !5
  %1672 = load ptr, ptr %11, align 8, !tbaa !5
  %1673 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %1672, i32 0, i32 23
  %1674 = load i32, ptr %1673, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1671, i32 noundef %1674)
  br label %1675

1675:                                             ; preds = %1670, %1665, %1659
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  ret void
}

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) #0

declare void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

declare void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) #0

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

declare void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

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

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 92}
!12 = !{!"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, !13, 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}
!13 = !{!"libxsmm_tile_config", !7, i64 0, !14, i64 2, !7, i64 4, !14, i64 6, !7, i64 8, !14, i64 10, !7, i64 12, !14, i64 14, !7, i64 16, !14, i64 18, !7, i64 20, !14, i64 22, !7, i64 24, !14, i64 26, !7, i64 28, !14, i64 30, !7, i64 32}
!14 = !{!"short", !7, i64 0}
!15 = !{!16, !10, i64 88}
!16 = !{!"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}
!17 = !{!16, !10, i64 92}
!18 = !{!12, !10, i64 120}
!19 = !{!12, !10, i64 124}
!20 = !{!12, !10, i64 172}
!21 = !{!12, !10, i64 176}
!22 = !{!12, !10, i64 136}
!23 = !{!16, !10, i64 20}
!24 = !{!12, !10, i64 152}
!25 = !{!12, !10, i64 128}
!26 = !{!27, !10, i64 28}
!27 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!28 = !{!12, !10, i64 96}
!29 = !{!12, !10, i64 80}
!30 = !{!16, !10, i64 76}
!31 = !{!12, !10, i64 556}
!32 = !{!12, !10, i64 0}
!33 = !{!34, !10, i64 20}
!34 = !{!"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, !35, i64 33, !35, i64 41, !7, i64 49, !10, i64 50, !10, i64 54, !10, i64 58, !14, i64 62, !14, i64 64, !7, i64 66, !7, i64 67, !7, i64 68, !7, i64 69, !14, i64 70, !14, i64 72, !14, i64 74, !14, i64 76, !14, i64 78, !14, i64 80, !10, i64 82, !10, i64 86, !10, i64 90, !7, i64 94}
!35 = !{!"long long", !7, i64 0}
!36 = !{!12, !10, i64 132}
!37 = !{!12, !10, i64 284}
!38 = !{!12, !7, i64 84}
!39 = !{!7, !7, i64 0}
!40 = !{!12, !10, i64 288}
!41 = !{!12, !10, i64 600}
!42 = !{!12, !10, i64 200}
!43 = !{!12, !10, i64 204}
!44 = !{!12, !10, i64 208}
!45 = !{!12, !10, i64 260}
!46 = !{!12, !10, i64 264}
!47 = !{!12, !10, i64 212}
!48 = !{!12, !10, i64 216}
!49 = !{!12, !10, i64 220}
!50 = !{!12, !10, i64 224}
!51 = !{!12, !10, i64 228}
!52 = !{!12, !10, i64 232}
!53 = !{!12, !10, i64 236}
!54 = !{!12, !10, i64 240}
!55 = !{!12, !10, i64 244}
!56 = !{!12, !10, i64 248}
!57 = !{!12, !10, i64 252}
!58 = !{!12, !10, i64 256}
!59 = !{!12, !10, i64 188}
!60 = !{!34, !10, i64 90}
!61 = !{!12, !10, i64 268}
!62 = !{!12, !10, i64 272}
!63 = distinct !{!63, !64}
!64 = !{!"llvm.loop.mustprogress"}
!65 = distinct !{!65, !64}


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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_is_tile_in_last_tilerow(ptr noundef, i32 noundef) local_unnamed_addr #1

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

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

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

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

declare void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_x86_instruction_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_amx_paired_tilestore(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8) local_unnamed_addr #1 {
  %10 = getelementptr inbounds i8, ptr %2, i64 92
  %11 = load i32, ptr %10, align 4, !tbaa !5
  %12 = icmp eq i32 %11, 0
  %13 = getelementptr inbounds i8, ptr %1, i64 88
  %14 = getelementptr inbounds i8, ptr %1, i64 92
  %.in = select i1 %12, ptr %13, ptr %14
  %15 = load i32, ptr %.in, align 4, !tbaa !13
  %.in657 = select i1 %12, ptr %14, ptr %13
  %16 = load i32, ptr %.in657, align 4, !tbaa !13
  %17 = getelementptr inbounds i8, ptr %2, i64 120
  %18 = load i32, ptr %17, align 8, !tbaa !14
  %19 = getelementptr inbounds i8, ptr %2, i64 124
  %20 = load i32, ptr %19, align 4, !tbaa !15
  %21 = getelementptr inbounds i8, ptr %2, i64 172
  %22 = load i32, ptr %21, align 4, !tbaa !16
  %23 = getelementptr inbounds i8, ptr %2, i64 176
  %24 = load i32, ptr %23, align 8, !tbaa !17
  %25 = getelementptr inbounds i8, ptr %2, i64 136
  %26 = load i32, ptr %25, align 8, !tbaa !18
  %27 = icmp eq i32 %26, 1
  br i1 %27, label %28, label %31

28:                                               ; preds = %9
  %29 = getelementptr inbounds i8, ptr %1, i64 20
  %30 = load i32, ptr %29, align 4, !tbaa !19
  br label %31

31:                                               ; preds = %9, %28
  %32 = phi i32 [ %30, %28 ], [ %16, %9 ]
  %33 = getelementptr inbounds i8, ptr %2, i64 152
  %34 = load i32, ptr %33, align 8, !tbaa !21
  %35 = getelementptr inbounds i8, ptr %2, i64 128
  %36 = load i32, ptr %35, align 8, !tbaa !22
  %37 = getelementptr inbounds i8, ptr %3, i64 29
  %38 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %37) #3
  %39 = icmp eq i32 %38, 2
  %40 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %37) #3
  %41 = icmp eq i32 %40, 3
  %42 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %37) #3
  %43 = icmp eq i32 %42, 4
  %44 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %37) #3
  %45 = icmp eq i32 %44, 5
  %or.cond = select i1 %39, i1 true, i1 %41
  %46 = select i1 %43, i1 true, i1 %45
  %47 = getelementptr inbounds i8, ptr %0, i64 28
  %48 = load i32, ptr %47, align 4, !tbaa !23
  %49 = icmp ult i32 %48, 1106
  %50 = zext i1 %49 to i32
  %51 = tail call i32 @libxsmm_is_tile_in_last_tilerow(ptr noundef nonnull %2, i32 noundef %4)
  %52 = load i32, ptr %14, align 4, !tbaa !25
  %53 = icmp eq i32 %15, %52
  br i1 %53, label %54, label %59

54:                                               ; preds = %31
  %55 = getelementptr inbounds i8, ptr %2, i64 96
  %56 = load i32, ptr %55, align 8, !tbaa !26
  %57 = icmp eq i32 %56, 1
  br i1 %57, label %58, label %59

58:                                               ; preds = %54
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %15) #3
  br label %59

59:                                               ; preds = %58, %54, %31
  %60 = icmp eq i32 %18, 1
  %or.cond3 = and i1 %60, %27
  br i1 %or.cond3, label %61, label %76

61:                                               ; preds = %59
  %62 = load i32, ptr %14, align 4, !tbaa !25
  %63 = icmp eq i32 %16, %62
  br i1 %63, label %64, label %69

64:                                               ; preds = %61
  %65 = getelementptr inbounds i8, ptr %2, i64 96
  %66 = load i32, ptr %65, align 8, !tbaa !26
  %67 = icmp eq i32 %66, 1
  br i1 %67, label %68, label %69

68:                                               ; preds = %64
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %16) #3
  br label %69

69:                                               ; preds = %68, %64, %61
  %70 = load i32, ptr %13, align 4, !tbaa !27
  %71 = icmp eq i32 %16, %70
  br i1 %71, label %72, label %76

72:                                               ; preds = %69
  %73 = load i32, ptr %10, align 4, !tbaa !5
  %74 = icmp eq i32 %73, 1
  br i1 %74, label %75, label %76

75:                                               ; preds = %72
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %16) #3
  br label %76

76:                                               ; preds = %69, %72, %75, %59
  %77 = icmp eq i32 %26, 0
  %78 = icmp eq i32 %34, 1
  %or.cond5 = select i1 %77, i1 true, i1 %78
  br i1 %or.cond5, label %79, label %94

79:                                               ; preds = %76
  %80 = load i32, ptr %14, align 4, !tbaa !25
  %81 = icmp eq i32 %16, %80
  br i1 %81, label %82, label %87

82:                                               ; preds = %79
  %83 = getelementptr inbounds i8, ptr %2, i64 96
  %84 = load i32, ptr %83, align 8, !tbaa !26
  %85 = icmp eq i32 %84, 1
  br i1 %85, label %86, label %87

86:                                               ; preds = %82
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %16) #3
  br label %87

87:                                               ; preds = %86, %82, %79
  %88 = load i32, ptr %13, align 4, !tbaa !27
  %89 = icmp eq i32 %16, %88
  br i1 %89, label %90, label %94

90:                                               ; preds = %87
  %91 = load i32, ptr %10, align 4, !tbaa !5
  %92 = icmp eq i32 %91, 1
  br i1 %92, label %93, label %94

93:                                               ; preds = %90
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %16) #3
  br label %94

94:                                               ; preds = %87, %90, %93, %76
  %95 = icmp eq i32 %36, 1
  br i1 %95, label %96, label %97

96:                                               ; preds = %94
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef 10) #3
  br label %97

97:                                               ; preds = %96, %94
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 6, i32 noundef %15) #3
  br i1 %60, label %98, label %99

98:                                               ; preds = %97
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 8, i32 noundef %16) #3
  br label %99

99:                                               ; preds = %98, %97
  br i1 %78, label %100, label %101

100:                                              ; preds = %99
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 8, i32 noundef %16) #3
  br label %101

101:                                              ; preds = %100, %99
  br i1 %95, label %102, label %103

102:                                              ; preds = %101
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef nonnull %0, ptr noundef nonnull %2, i32 noundef 19, i32 noundef 10) #3
  br label %103

103:                                              ; preds = %102, %101
  br i1 %49, label %104, label %129

104:                                              ; preds = %103
  %105 = getelementptr inbounds i8, ptr %2, i64 80
  %106 = load i32, ptr %105, align 8, !tbaa !28
  %107 = getelementptr inbounds i8, ptr %1, i64 76
  %108 = load i32, ptr %107, align 4, !tbaa !29
  %109 = getelementptr inbounds i8, ptr %2, i64 556
  %110 = load i32, ptr %109, align 4, !tbaa !30
  %111 = and i32 %110, 1073741823
  %112 = zext nneg i32 %111 to i64
  tail call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %106, i32 noundef %108, i64 noundef %112) #3
  %113 = load i32, ptr %2, align 8, !tbaa !31
  %114 = load i32, ptr %107, align 4, !tbaa !29
  tail call void @libxsmm_x86_instruction_tile_move(ptr noundef nonnull %0, i32 noundef %113, i32 noundef 1611014219, i32 noundef %15, i32 noundef %114, i32 noundef 4, i32 noundef 0, i32 noundef %4) #3
  %115 = icmp sgt i32 %5, -1
  br i1 %115, label %116, label %122

116:                                              ; preds = %104
  %117 = load i32, ptr %2, align 8, !tbaa !31
  %118 = load i32, ptr %107, align 4, !tbaa !29
  %119 = load i32, ptr %109, align 4, !tbaa !30
  %120 = shl i32 %8, 2
  %121 = mul i32 %120, %119
  tail call void @libxsmm_x86_instruction_tile_move(ptr noundef nonnull %0, i32 noundef %117, i32 noundef 1611014219, i32 noundef %15, i32 noundef %118, i32 noundef 4, i32 noundef %121, i32 noundef %5) #3
  br label %122

122:                                              ; preds = %116, %104
  %123 = load i32, ptr %105, align 8, !tbaa !28
  %124 = load i32, ptr %107, align 4, !tbaa !29
  %125 = getelementptr inbounds i8, ptr %3, i64 20
  %126 = load i32, ptr %125, align 1, !tbaa !32
  %127 = and i32 %126, 1073741823
  %128 = zext nneg i32 %127 to i64
  tail call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %123, i32 noundef %124, i64 noundef %128) #3
  br label %129

129:                                              ; preds = %122, %103
  %130 = sub i32 31, %22
  %131 = icmp ult i32 %130, %8
  br i1 %131, label %.lr.ph, label %132

132:                                              ; preds = %129
  %133 = icmp eq i32 %18, 0
  %134 = icmp eq i32 %36, 0
  %or.cond7 = select i1 %133, i1 %134, i1 false
  %135 = icmp slt i32 %5, 0
  %spec.select = or i1 %135, %or.cond7
  %.not779 = icmp eq i32 %8, 0
  br i1 %.not779, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %129, %132
  %136 = phi i1 [ %spec.select, %132 ], [ true, %129 ]
  %137 = icmp sgt i32 %5, -1
  %138 = icmp ult i32 %22, 16
  %139 = sub i32 16, %22
  %140 = getelementptr inbounds i8, ptr %2, i64 132
  %141 = select i1 %46, i8 120, i8 122
  %spec.select771 = select i1 %or.cond, i8 121, i8 %141
  %142 = icmp sgt i32 %51, 0
  %143 = getelementptr inbounds i8, ptr %2, i64 284
  %144 = getelementptr inbounds i8, ptr %2, i64 600
  %145 = getelementptr inbounds i8, ptr %2, i64 84
  %146 = add i32 %22, 16
  %147 = select i1 %49, i32 %8, i32 0
  %148 = getelementptr inbounds i8, ptr %2, i64 288
  %149 = getelementptr inbounds i8, ptr %2, i64 556
  %150 = select i1 %46, i32 -536406417, i32 537138704
  %151 = select i1 %or.cond, i32 -528017809, i32 %150
  %152 = getelementptr inbounds i8, ptr %1, i64 20
  %153 = getelementptr inbounds i8, ptr %3, i64 20
  %154 = select i1 %46, i32 0, i32 2
  %155 = select i1 %or.cond, i32 1, i32 %154
  %156 = getelementptr inbounds i8, ptr %2, i64 200
  %157 = getelementptr inbounds i8, ptr %2, i64 204
  %158 = getelementptr inbounds i8, ptr %2, i64 208
  %159 = getelementptr inbounds i8, ptr %2, i64 260
  %160 = getelementptr inbounds i8, ptr %2, i64 264
  %161 = getelementptr inbounds i8, ptr %2, i64 212
  %162 = getelementptr inbounds i8, ptr %2, i64 216
  %163 = getelementptr inbounds i8, ptr %2, i64 220
  %164 = getelementptr inbounds i8, ptr %2, i64 224
  %165 = getelementptr inbounds i8, ptr %2, i64 228
  %166 = getelementptr inbounds i8, ptr %2, i64 232
  %167 = getelementptr inbounds i8, ptr %2, i64 236
  %168 = getelementptr inbounds i8, ptr %2, i64 240
  %169 = getelementptr inbounds i8, ptr %2, i64 244
  %170 = getelementptr inbounds i8, ptr %2, i64 248
  %171 = getelementptr inbounds i8, ptr %2, i64 252
  %172 = getelementptr inbounds i8, ptr %2, i64 256
  %173 = sub i32 8, %24
  %174 = select i1 %46, i32 -267569601, i32 -267569633
  %175 = select i1 %or.cond, i32 -259180993, i32 %174
  %176 = getelementptr inbounds i8, ptr %2, i64 188
  %177 = select i1 %137, i32 -1601891951, i32 -1610346095
  %178 = getelementptr inbounds i8, ptr %3, i64 90
  %179 = add nsw i32 %6, 7
  %180 = sdiv i32 %179, 8
  %181 = select i1 %46, i32 -268097946, i32 -268097948
  %182 = select i1 %or.cond, i32 -259709338, i32 %181
  %183 = icmp eq i32 %20, 1
  %184 = select i1 %46, i32 805643836, i32 805643837
  %185 = select i1 %or.cond, i32 805639918, i32 %184
  %186 = select i1 %137, i32 -1601891952, i32 -1610346096
  %187 = add i32 %22, -17
  %188 = getelementptr inbounds i8, ptr %2, i64 268
  %189 = sdiv i32 %7, 2
  %190 = getelementptr inbounds i8, ptr %2, i64 272
  %spec.select803 = select i1 %138, i32 %139, i32 %130
  br label %191

191:                                              ; preds = %.lr.ph, %.thread753
  %.0775 = phi i32 [ 0, %.lr.ph ], [ %412, %.thread753 ]
  br i1 %137, label %192, label %.thread676

192:                                              ; preds = %191
  %193 = add i32 %.0775, %22
  %194 = icmp ult i32 %193, 16
  br i1 %194, label %195, label %.thread

195:                                              ; preds = %192
  %196 = urem i32 %.0775, %139
  %197 = add i32 %196, %22
  %198 = add i32 %197, 16
  %199 = load i32, ptr %140, align 4, !tbaa !35
  %200 = icmp eq i32 %199, 1
  %201 = add i32 %146, %196
  %spec.select802 = select i1 %200, i32 %201, i32 %198
  br label %.thread666

.thread:                                          ; preds = %192
  %202 = urem i32 %.0775, %130
  %203 = add i32 %202, %22
  %204 = add i32 %203, 1
  br label %.thread666

.thread676:                                       ; preds = %191
  %.pn = urem i32 %.0775, %spec.select803
  %.1634 = add i32 %.pn, %22
  %205 = add i32 %.1634, 1
  %206 = load i32, ptr %140, align 4, !tbaa !35
  %207 = icmp eq i32 %206, 1
  %or.cond9679 = and i1 %77, %207
  br i1 %or.cond9679, label %.thread683, label %.thread707

.thread666:                                       ; preds = %195, %.thread
  %.1636.ph = phi i32 [ %204, %.thread ], [ %spec.select802, %195 ]
  %.2.ph = phi i32 [ %203, %.thread ], [ %197, %195 ]
  %208 = load i32, ptr %143, align 4, !tbaa !36
  %209 = add i32 %.0775, %147
  tail call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %0, ptr noundef nonnull %2, i32 noundef %50, i32 noundef %15, i32 noundef %208, i32 noundef %5, i32 noundef %209, i32 noundef %.2.ph)
  %210 = load i32, ptr %140, align 4, !tbaa !35
  %211 = icmp eq i32 %210, 1
  %or.cond9 = and i1 %77, %211
  br i1 %or.cond9, label %218, label %.thread758

.thread683:                                       ; preds = %.thread676
  br i1 %142, label %212, label %.thread794

212:                                              ; preds = %.thread683
  %213 = load i32, ptr %143, align 4, !tbaa !36
  %214 = load i32, ptr %144, align 8, !tbaa !37
  %215 = icmp eq i32 %214, 0
  %or.cond13 = select i1 %215, i1 %39, i1 false
  br i1 %or.cond13, label %.thread789, label %230

.thread794:                                       ; preds = %.thread683
  %216 = load i32, ptr %144, align 8, !tbaa !37
  %217 = icmp eq i32 %216, 0
  %or.cond13795 = select i1 %217, i1 %39, i1 false
  br i1 %or.cond13795, label %.thread789, label %.thread796

218:                                              ; preds = %.thread666
  %219 = load i8, ptr %145, align 4, !tbaa !38
  %220 = load i32, ptr %148, align 8, !tbaa !39
  br i1 %39, label %.thread789, label %236

.thread789:                                       ; preds = %212, %.thread794, %218
  %221 = phi i8 [ %219, %218 ], [ %spec.select771, %.thread794 ], [ %spec.select771, %212 ]
  %.1636671681686696703793 = phi i32 [ %.1636.ph, %218 ], [ %205, %.thread794 ], [ %205, %212 ]
  %.2674680688694705792 = phi i32 [ %.2.ph, %218 ], [ %.1634, %.thread794 ], [ %.1634, %212 ]
  %222 = phi i32 [ %220, %218 ], [ 0, %.thread794 ], [ %213, %212 ]
  br i1 %49, label %223, label %228

223:                                              ; preds = %.thread789
  %224 = load i8, ptr %145, align 4, !tbaa !38
  %225 = load i32, ptr %149, align 4, !tbaa !30
  %226 = shl i32 %.0775, 2
  %227 = mul i32 %226, %225
  tail call void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef %0, i32 noundef -267966862, i8 noundef signext %224, i32 noundef %15, i32 noundef 127, i32 noundef 0, i32 noundef %227, i32 noundef 0, i32 noundef %.2674680688694705792, i32 noundef %.1636671681686696703793) #3
  br label %236

228:                                              ; preds = %.thread789
  tail call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %0, ptr noundef nonnull %2, i32 noundef 0, i32 noundef %15, i32 noundef 0, i32 noundef %4, i32 noundef %.0775, i32 noundef %.1636671681686696703793)
  %229 = load i8, ptr %145, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -267966862, i8 noundef signext %229, i32 noundef %.1636671681686696703793, i32 noundef %.2674680688694705792, i32 noundef %.1636671681686696703793) #3
  br label %236

230:                                              ; preds = %212
  %231 = load i32, ptr %143, align 4, !tbaa !36
  br label %.thread796

.thread796:                                       ; preds = %.thread794, %230
  %232 = phi i32 [ %213, %230 ], [ 0, %.thread794 ]
  %233 = phi i32 [ %231, %230 ], [ 0, %.thread794 ]
  tail call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %0, ptr noundef nonnull %2, i32 noundef %50, i32 noundef %15, i32 noundef %233, i32 noundef %4, i32 noundef %.0775, i32 noundef %205)
  %234 = load i8, ptr %145, align 4, !tbaa !38
  %235 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %37) #3
  tail call void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef %0, i8 noundef signext %234, i32 noundef %235, i32 noundef %205, i32 noundef %205) #3
  br label %236

236:                                              ; preds = %.thread796, %223, %228, %218
  %237 = phi i32 [ %220, %218 ], [ %222, %228 ], [ %222, %223 ], [ %232, %.thread796 ]
  %.2674680688694706 = phi i32 [ %.2.ph, %218 ], [ %.2674680688694705792, %228 ], [ %.2674680688694705792, %223 ], [ %.1634, %.thread796 ]
  %.1636671681686696704 = phi i32 [ %.1636.ph, %218 ], [ %.1636671681686696703793, %228 ], [ %.1636671681686696703793, %223 ], [ %205, %.thread796 ]
  %238 = phi i8 [ %219, %218 ], [ %221, %228 ], [ %221, %223 ], [ %spec.select771, %.thread796 ]
  %239 = load i32, ptr %2, align 8, !tbaa !31
  %240 = load i32, ptr %152, align 4, !tbaa !19
  %241 = add i32 %.0775, %7
  %242 = load i32, ptr %153, align 1, !tbaa !32
  %243 = mul i32 %242, %241
  %244 = add i32 %243, %6
  %245 = shl i32 %244, %155
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %239, i32 noundef %151, i32 noundef %240, i32 noundef 127, i32 noundef 0, i32 noundef %245, i8 noundef signext %238, i32 noundef %.1636671681686696704, i32 noundef %237, i32 noundef 0, i32 noundef 1) #3
  %.pr = load i32, ptr %140, align 4, !tbaa !35
  %246 = icmp eq i32 %.pr, 1
  br i1 %246, label %247, label %290

.thread758:                                       ; preds = %.thread666
  br i1 %211, label %.thread720, label %.thread742

.thread707:                                       ; preds = %.thread676
  br i1 %207, label %.thread715, label %.thread726

247:                                              ; preds = %236
  br i1 %137, label %.thread720, label %.thread715

.thread720:                                       ; preds = %.thread758, %247
  %.1636671682710765 = phi i32 [ %.1636671681686696704, %247 ], [ %.1636.ph, %.thread758 ]
  %.2675712764 = phi i32 [ %.2674680688694706, %247 ], [ %.2.ph, %.thread758 ]
  %248 = load i32, ptr %156, align 8, !tbaa !40
  %249 = load i32, ptr %157, align 4, !tbaa !41
  %250 = load i32, ptr %158, align 8, !tbaa !42
  %251 = load i32, ptr %159, align 4, !tbaa !43
  %252 = load i32, ptr %160, align 8, !tbaa !44
  %253 = load i32, ptr %161, align 4, !tbaa !45
  %254 = load i32, ptr %162, align 8, !tbaa !46
  %255 = load i32, ptr %163, align 4, !tbaa !47
  %256 = load i32, ptr %164, align 8, !tbaa !48
  %257 = load i32, ptr %165, align 4, !tbaa !49
  %258 = load i32, ptr %166, align 8, !tbaa !50
  %259 = load i32, ptr %167, align 4, !tbaa !51
  %260 = load i32, ptr %168, align 8, !tbaa !52
  %261 = load i32, ptr %169, align 4, !tbaa !53
  %262 = load i32, ptr %170, align 8, !tbaa !54
  %263 = load i32, ptr %171, align 4, !tbaa !55
  %264 = load i32, ptr %172, align 8, !tbaa !56
  tail call void @libxsmm_generator_sigmoid_ps_rational_78_avx512(ptr noundef %0, i32 noundef %.2675712764, i32 noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, i32 noundef %252, i32 noundef %253, i32 noundef %254, i32 noundef %255, i32 noundef %256, i32 noundef %257, i32 noundef %258, i32 noundef %259, i32 noundef %260, i32 noundef %261, i32 noundef %262, i32 noundef %263, i32 noundef %264, i8 noundef zeroext 122) #3
  br label %267

.thread715:                                       ; preds = %.thread707, %247
  %.1636671682710719 = phi i32 [ %.1636671681686696704, %247 ], [ %205, %.thread707 ]
  %.2675712718 = phi i32 [ %.2674680688694706, %247 ], [ %.1634, %.thread707 ]
  br i1 %142, label %265, label %267

265:                                              ; preds = %.thread715
  %266 = load i32, ptr %143, align 4, !tbaa !36
  br label %267

267:                                              ; preds = %.thread720, %.thread715, %265
  %.2675712718725 = phi i32 [ %.2675712718, %265 ], [ %.2675712718, %.thread715 ], [ %.2675712764, %.thread720 ]
  %.1636671682710719724 = phi i32 [ %.1636671682710719, %265 ], [ %.1636671682710719, %.thread715 ], [ %.1636671682710765, %.thread720 ]
  %268 = phi i32 [ %266, %265 ], [ 0, %.thread715 ], [ 0, %.thread720 ]
  tail call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %0, ptr noundef nonnull %2, i32 noundef %50, i32 noundef %15, i32 noundef %268, i32 noundef %4, i32 noundef %.0775, i32 noundef %.1636671682710719724)
  %269 = load i32, ptr %156, align 8, !tbaa !40
  %270 = load i32, ptr %157, align 4, !tbaa !41
  %271 = load i32, ptr %158, align 8, !tbaa !42
  %272 = load i32, ptr %159, align 4, !tbaa !43
  %273 = load i32, ptr %160, align 8, !tbaa !44
  %274 = load i32, ptr %161, align 4, !tbaa !45
  %275 = load i32, ptr %162, align 8, !tbaa !46
  %276 = load i32, ptr %163, align 4, !tbaa !47
  %277 = load i32, ptr %164, align 8, !tbaa !48
  %278 = load i32, ptr %165, align 4, !tbaa !49
  %279 = load i32, ptr %166, align 8, !tbaa !50
  %280 = load i32, ptr %167, align 4, !tbaa !51
  %281 = load i32, ptr %168, align 8, !tbaa !52
  %282 = load i32, ptr %169, align 4, !tbaa !53
  %283 = load i32, ptr %170, align 8, !tbaa !54
  %284 = load i32, ptr %171, align 4, !tbaa !55
  %285 = load i32, ptr %172, align 8, !tbaa !56
  tail call void @libxsmm_generator_sigmoid_ps_rational_78_avx512(ptr noundef %0, i32 noundef %.1636671682710719724, i32 noundef %269, i32 noundef %270, i32 noundef %271, i32 noundef %272, i32 noundef %273, i32 noundef %274, i32 noundef %275, i32 noundef %276, i32 noundef %277, i32 noundef %278, i32 noundef %279, i32 noundef %280, i32 noundef %281, i32 noundef %282, i32 noundef %283, i32 noundef %284, i32 noundef %285, i8 noundef zeroext 122) #3
  %286 = load i8, ptr %145, align 4, !tbaa !38
  br i1 %39, label %287, label %288

287:                                              ; preds = %267
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -267966862, i8 noundef signext %286, i32 noundef %.1636671682710719724, i32 noundef %.2675712718725, i32 noundef %.2675712718725) #3
  br label %327

288:                                              ; preds = %267
  %289 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %37) #3
  tail call void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef %0, i8 noundef signext %286, i32 noundef %289, i32 noundef %.1636671682710719724, i32 noundef %.2675712718725) #3
  br label %327

290:                                              ; preds = %236
  br i1 %137, label %.thread742, label %.thread726

.thread726:                                       ; preds = %.thread707, %290
  %.1636671682711732 = phi i32 [ %.1636671681686696704, %290 ], [ %205, %.thread707 ]
  %.2675714730 = phi i32 [ %.2674680688694706, %290 ], [ %.1634, %.thread707 ]
  br i1 %142, label %293, label %.thread797

.thread742:                                       ; preds = %.thread758, %290
  %.1636671682711770 = phi i32 [ %.1636671681686696704, %290 ], [ %.1636.ph, %.thread758 ]
  %.2675714769 = phi i32 [ %.2674680688694706, %290 ], [ %.2.ph, %.thread758 ]
  %291 = load i8, ptr %145, align 4, !tbaa !38
  %292 = load i32, ptr %148, align 8, !tbaa !39
  br label %299

293:                                              ; preds = %.thread726
  %294 = load i32, ptr %143, align 4, !tbaa !36
  %295 = load i32, ptr %144, align 8, !tbaa !37
  %296 = icmp eq i32 %295, 0
  %or.cond21 = select i1 %296, i1 %39, i1 false
  %or.cond23 = or i1 %137, %or.cond21
  br i1 %or.cond23, label %299, label %310

.thread797:                                       ; preds = %.thread726
  %297 = load i32, ptr %144, align 8, !tbaa !37
  %298 = icmp eq i32 %297, 0
  %or.cond21798 = select i1 %298, i1 %39, i1 false
  %or.cond23799 = or i1 %137, %or.cond21798
  br i1 %or.cond23799, label %299, label %.thread800

299:                                              ; preds = %.thread797, %.thread742, %293
  %300 = phi i32 [ %292, %.thread742 ], [ %294, %293 ], [ 0, %.thread797 ]
  %.1636671682711731738749 = phi i32 [ %.1636671682711770, %.thread742 ], [ %.1636671682711732, %293 ], [ %.1636671682711732, %.thread797 ]
  %.2675714729740748 = phi i32 [ %.2675714769, %.thread742 ], [ %.2675714730, %293 ], [ %.2675714730, %.thread797 ]
  %301 = phi i8 [ %291, %.thread742 ], [ %spec.select771, %293 ], [ %spec.select771, %.thread797 ]
  br i1 %39, label %302, label %316

302:                                              ; preds = %299
  br i1 %49, label %303, label %308

303:                                              ; preds = %302
  %304 = load i8, ptr %145, align 4, !tbaa !38
  %305 = load i32, ptr %149, align 4, !tbaa !30
  %306 = shl i32 %.0775, 2
  %307 = mul i32 %306, %305
  tail call void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef %0, i32 noundef -267966862, i8 noundef signext %304, i32 noundef %15, i32 noundef 127, i32 noundef 0, i32 noundef %307, i32 noundef 0, i32 noundef %.2675714729740748, i32 noundef %.2675714729740748) #3
  br label %316

308:                                              ; preds = %302
  tail call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %0, ptr noundef nonnull %2, i32 noundef 0, i32 noundef %15, i32 noundef 0, i32 noundef %4, i32 noundef %.0775, i32 noundef %.1636671682711731738749)
  %309 = load i8, ptr %145, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -267966862, i8 noundef signext %309, i32 noundef %.1636671682711731738749, i32 noundef %.2675714729740748, i32 noundef %.2675714729740748) #3
  br label %316

310:                                              ; preds = %293
  %311 = load i32, ptr %143, align 4, !tbaa !36
  br label %.thread800

.thread800:                                       ; preds = %.thread797, %310
  %312 = phi i32 [ %294, %310 ], [ 0, %.thread797 ]
  %313 = phi i32 [ %311, %310 ], [ 0, %.thread797 ]
  tail call void @libxsmm_load_vreg_from_amx_tile(ptr noundef %0, ptr noundef nonnull %2, i32 noundef %50, i32 noundef %15, i32 noundef %313, i32 noundef %4, i32 noundef %.0775, i32 noundef %.2675714730)
  %314 = load i8, ptr %145, align 4, !tbaa !38
  %315 = tail call i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef nonnull %37) #3
  tail call void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef %0, i8 noundef signext %314, i32 noundef %315, i32 noundef %.2675714730, i32 noundef %.2675714730) #3
  br label %316

316:                                              ; preds = %299, %308, %303, %.thread800
  %317 = phi i32 [ %300, %299 ], [ %300, %308 ], [ %300, %303 ], [ %312, %.thread800 ]
  %.2675714729740747 = phi i32 [ %.2675714729740748, %299 ], [ %.2675714729740748, %308 ], [ %.2675714729740748, %303 ], [ %.2675714730, %.thread800 ]
  %318 = phi i8 [ %301, %299 ], [ %301, %308 ], [ %301, %303 ], [ %spec.select771, %.thread800 ]
  br i1 %77, label %319, label %327

319:                                              ; preds = %316
  %320 = load i32, ptr %2, align 8, !tbaa !31
  %321 = load i32, ptr %152, align 4, !tbaa !19
  %322 = add i32 %.0775, %7
  %323 = load i32, ptr %153, align 1, !tbaa !32
  %324 = mul i32 %323, %322
  %325 = add i32 %324, %6
  %326 = shl i32 %325, %155
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %320, i32 noundef %151, i32 noundef %321, i32 noundef 127, i32 noundef 0, i32 noundef %326, i8 noundef signext %318, i32 noundef %.2675714729740747, i32 noundef %317, i32 noundef 0, i32 noundef 1) #3
  br label %327

327:                                              ; preds = %316, %319, %287, %288
  %.2675713 = phi i32 [ %.2675714729740747, %316 ], [ %.2675714729740747, %319 ], [ %.2675712718725, %287 ], [ %.2675712718725, %288 ]
  br i1 %60, label %328, label %342

328:                                              ; preds = %327
  %329 = urem i32 %.0775, %173
  %330 = add i32 %329, %24
  %331 = load i8, ptr %145, align 4, !tbaa !38
  %332 = load i32, ptr %176, align 4, !tbaa !57
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %0, i32 noundef %175, i8 noundef signext %331, i32 noundef %332, i32 noundef %.2675713, i32 noundef %330, i32 noundef 6) #3
  br i1 %27, label %333, label %339

333:                                              ; preds = %328
  %334 = add i32 %.0775, %7
  %335 = load i32, ptr %178, align 1, !tbaa !58
  %336 = mul i32 %335, %334
  %337 = lshr i32 %336, 3
  %338 = add nsw i32 %337, %180
  tail call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef %0, i32 noundef %177, i32 noundef %16, i32 noundef 127, i32 noundef 0, i32 noundef %338, i32 noundef %330) #3
  br label %339

339:                                              ; preds = %333, %328
  %340 = load i8, ptr %145, align 4, !tbaa !38
  %341 = load i32, ptr %176, align 4, !tbaa !57
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %0, i32 noundef %182, i8 noundef signext %340, i32 noundef %.2675713, i32 noundef %341, i32 noundef %.2675713, i32 noundef %330, i32 noundef 0) #3
  br label %342

342:                                              ; preds = %339, %327
  br i1 %183, label %343, label %346

343:                                              ; preds = %342
  %344 = load i8, ptr %145, align 4, !tbaa !38
  %345 = load i32, ptr %176, align 4, !tbaa !57
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %185, i8 noundef signext %344, i32 noundef %.2675713, i32 noundef %345, i32 noundef %.2675713) #3
  br label %346

346:                                              ; preds = %343, %342
  br i1 %95, label %347, label %357

347:                                              ; preds = %346
  %348 = urem i32 %.0775, %173
  %349 = add i32 %348, %24
  %350 = add i32 %.0775, %7
  %351 = load i32, ptr %178, align 1, !tbaa !58
  %352 = mul i32 %351, %350
  %353 = lshr i32 %352, 3
  %354 = add nsw i32 %353, %180
  tail call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef %0, i32 noundef %186, i32 noundef 10, i32 noundef 127, i32 noundef 0, i32 noundef %354, i32 noundef %349) #3
  %355 = load i8, ptr %145, align 4, !tbaa !38
  %356 = load i32, ptr %176, align 4, !tbaa !57
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %0, i32 noundef -259709338, i8 noundef signext %355, i32 noundef %.2675713, i32 noundef %356, i32 noundef %.2675713, i32 noundef %349, i32 noundef 0) #3
  br label %357

357:                                              ; preds = %347, %346
  br i1 %136, label %358, label %.thread753

358:                                              ; preds = %357
  br i1 %137, label %360, label %359

359:                                              ; preds = %358
  br i1 %142, label %363, label %365

360:                                              ; preds = %358
  %361 = load i8, ptr %145, align 4, !tbaa !38
  %362 = load i32, ptr %148, align 8, !tbaa !39
  br label %365

363:                                              ; preds = %359
  %364 = load i32, ptr %143, align 4, !tbaa !36
  br label %365

365:                                              ; preds = %360, %359, %363
  %366 = phi i8 [ %361, %360 ], [ %spec.select771, %363 ], [ %spec.select771, %359 ]
  %367 = phi i32 [ %362, %360 ], [ %364, %363 ], [ 0, %359 ]
  %368 = load i32, ptr %2, align 8, !tbaa !31
  %369 = add i32 %.0775, %7
  %370 = load i32, ptr %153, align 1, !tbaa !32
  %371 = mul i32 %370, %369
  %372 = add i32 %371, %6
  %373 = shl i32 %372, %155
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %368, i32 noundef %151, i32 noundef %32, i32 noundef 127, i32 noundef 0, i32 noundef %373, i8 noundef signext %366, i32 noundef %.2675713, i32 noundef %367, i32 noundef 0, i32 noundef 1) #3
  %374 = and i32 %.0775, 1
  %.not659 = icmp ne i32 %374, 0
  %or.cond660.not = and i1 %78, %.not659
  br i1 %or.cond660.not, label %375, label %.thread753

375:                                              ; preds = %365
  %376 = add nsw i32 %.0775, -1
  %377 = add i32 %376, %22
  %378 = icmp ult i32 %377, 16
  br i1 %378, label %379, label %382

379:                                              ; preds = %375
  %380 = urem i32 %376, %139
  %381 = add i32 %380, %22
  br label %386

382:                                              ; preds = %375
  %383 = add i32 %187, %.0775
  %384 = urem i32 %383, 15
  %385 = or disjoint i32 %384, 16
  br label %386

386:                                              ; preds = %382, %379
  %.0637 = phi i32 [ %381, %379 ], [ %385, %382 ]
  %387 = add i32 %.0637, 16
  %388 = icmp ult i32 %387, 32
  %389 = select i1 %388, i32 %387, i32 31
  %390 = load i8, ptr %145, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -528083345, i8 noundef signext %390, i32 noundef %.0637, i32 noundef 255, i32 noundef %389) #3
  %391 = load i8, ptr %145, align 4, !tbaa !38
  %392 = load i32, ptr %188, align 4, !tbaa !59
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -259709315, i8 noundef signext %391, i32 noundef %.2675713, i32 noundef %392, i32 noundef %389) #3
  %393 = load i32, ptr %2, align 8, !tbaa !31
  %394 = lshr i32 %.0775, 1
  %395 = add i32 %394, %189
  %396 = load i32, ptr %153, align 1, !tbaa !32
  %397 = mul i32 %396, %395
  %398 = add i32 %397, %6
  %399 = shl i32 %398, 2
  %400 = load i8, ptr %145, align 4, !tbaa !38
  %401 = load i32, ptr %143, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %393, i32 noundef 537138704, i32 noundef %16, i32 noundef 127, i32 noundef 0, i32 noundef %399, i8 noundef signext %400, i32 noundef %389, i32 noundef %401, i32 noundef 0, i32 noundef 1) #3
  %402 = load i8, ptr %145, align 4, !tbaa !38
  %403 = load i32, ptr %190, align 8, !tbaa !60
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -259709315, i8 noundef signext %402, i32 noundef %.2675713, i32 noundef %403, i32 noundef %.0637) #3
  %404 = load i32, ptr %2, align 8, !tbaa !31
  %405 = load i32, ptr %153, align 1, !tbaa !32
  %406 = mul i32 %405, %395
  %407 = add i32 %406, %6
  %408 = shl i32 %407, 2
  %409 = add i32 %408, 64
  %410 = load i8, ptr %145, align 4, !tbaa !38
  %411 = load i32, ptr %143, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %404, i32 noundef 537138704, i32 noundef %16, i32 noundef 127, i32 noundef 0, i32 noundef %409, i8 noundef signext %410, i32 noundef %.0637, i32 noundef %411, i32 noundef 0, i32 noundef 1) #3
  br label %.thread753

.thread753:                                       ; preds = %357, %365, %386
  %412 = add nuw i32 %.0775, 1
  %exitcond.not = icmp eq i32 %412, %8
  br i1 %exitcond.not, label %._crit_edge, label %191, !llvm.loop !61

._crit_edge:                                      ; preds = %.thread753, %132
  %.not779788 = phi i1 [ true, %132 ], [ false, %.thread753 ]
  %413 = phi i1 [ %spec.select, %132 ], [ %136, %.thread753 ]
  br i1 %413, label %.loopexit, label %414

414:                                              ; preds = %._crit_edge
  %415 = icmp sgt i32 %5, -1
  br i1 %415, label %416, label %419

416:                                              ; preds = %414
  %417 = getelementptr inbounds i8, ptr %2, i64 84
  %418 = load i8, ptr %417, align 4, !tbaa !38
  br label %421

419:                                              ; preds = %414
  %420 = select i1 %46, i8 120, i8 122
  %spec.select774 = select i1 %or.cond, i8 121, i8 %420
  br label %421

421:                                              ; preds = %419, %416
  %422 = phi i8 [ %418, %416 ], [ %spec.select774, %419 ]
  br i1 %.not779788, label %.loopexit, label %.lr.ph778

.lr.ph778:                                        ; preds = %421
  %423 = add i32 %22, -16
  %424 = sub i32 16, %22
  %425 = select i1 %46, i32 -536406417, i32 537138704
  %426 = select i1 %or.cond, i32 -528017809, i32 %425
  %427 = getelementptr inbounds i8, ptr %3, i64 20
  %428 = select i1 %46, i32 0, i32 2
  %429 = select i1 %or.cond, i32 1, i32 %428
  %430 = getelementptr inbounds i8, ptr %2, i64 288
  %431 = add i32 %22, -17
  %432 = getelementptr inbounds i8, ptr %2, i64 84
  %433 = getelementptr inbounds i8, ptr %2, i64 268
  %434 = sdiv i32 %7, 2
  %435 = getelementptr inbounds i8, ptr %2, i64 284
  %436 = getelementptr inbounds i8, ptr %2, i64 272
  br i1 %78, label %.lr.ph778.split, label %.lr.ph778.split.us

.lr.ph778.split.us:                               ; preds = %.lr.ph778, %446
  %.1776.us = phi i32 [ %454, %446 ], [ 0, %.lr.ph778 ]
  %437 = add i32 %.1776.us, %22
  %438 = icmp ult i32 %437, 16
  br i1 %438, label %443, label %439

439:                                              ; preds = %.lr.ph778.split.us
  %440 = add i32 %423, %.1776.us
  %441 = urem i32 %440, 15
  %442 = or disjoint i32 %441, 16
  br label %446

443:                                              ; preds = %.lr.ph778.split.us
  %444 = urem i32 %.1776.us, %424
  %445 = add i32 %444, %22
  br label %446

446:                                              ; preds = %443, %439
  %.3.us = phi i32 [ %445, %443 ], [ %442, %439 ]
  %447 = load i32, ptr %2, align 8, !tbaa !31
  %448 = add i32 %.1776.us, %7
  %449 = load i32, ptr %427, align 1, !tbaa !32
  %450 = mul i32 %449, %448
  %451 = add i32 %450, %6
  %452 = shl i32 %451, %429
  %453 = load i32, ptr %430, align 8, !tbaa !39
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %447, i32 noundef %426, i32 noundef %32, i32 noundef 127, i32 noundef 0, i32 noundef %452, i8 noundef signext %422, i32 noundef %.3.us, i32 noundef %453, i32 noundef 0, i32 noundef 1) #3
  %454 = add nuw i32 %.1776.us, 1
  %exitcond783.not = icmp eq i32 %454, %8
  br i1 %exitcond783.not, label %.loopexit, label %.lr.ph778.split.us, !llvm.loop !63

.lr.ph778.split:                                  ; preds = %.lr.ph778, %509
  %.1776 = phi i32 [ %510, %509 ], [ 0, %.lr.ph778 ]
  %455 = add i32 %.1776, %22
  %456 = icmp ult i32 %455, 16
  br i1 %456, label %457, label %460

457:                                              ; preds = %.lr.ph778.split
  %458 = urem i32 %.1776, %424
  %459 = add i32 %458, %22
  br label %464

460:                                              ; preds = %.lr.ph778.split
  %461 = add i32 %423, %.1776
  %462 = urem i32 %461, 15
  %463 = or disjoint i32 %462, 16
  br label %464

464:                                              ; preds = %460, %457
  %.3 = phi i32 [ %459, %457 ], [ %463, %460 ]
  %465 = load i32, ptr %2, align 8, !tbaa !31
  %466 = add i32 %.1776, %7
  %467 = load i32, ptr %427, align 1, !tbaa !32
  %468 = mul i32 %467, %466
  %469 = add i32 %468, %6
  %470 = shl i32 %469, %429
  %471 = load i32, ptr %430, align 8, !tbaa !39
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %465, i32 noundef %426, i32 noundef %32, i32 noundef 127, i32 noundef 0, i32 noundef %470, i8 noundef signext %422, i32 noundef %.3, i32 noundef %471, i32 noundef 0, i32 noundef 1) #3
  %472 = and i32 %.1776, 1
  %.not.not = icmp eq i32 %472, 0
  br i1 %.not.not, label %509, label %473

473:                                              ; preds = %464
  %474 = add nsw i32 %.1776, -1
  %475 = add i32 %474, %22
  %476 = icmp ult i32 %475, 16
  br i1 %476, label %477, label %480

477:                                              ; preds = %473
  %478 = urem i32 %474, %424
  %479 = add i32 %478, %22
  br label %484

480:                                              ; preds = %473
  %481 = add i32 %431, %.1776
  %482 = urem i32 %481, 15
  %483 = or disjoint i32 %482, 16
  br label %484

484:                                              ; preds = %480, %477
  %.1638 = phi i32 [ %479, %477 ], [ %483, %480 ]
  %485 = add i32 %.1638, %8
  %486 = tail call i32 @llvm.umin.i32(i32 %485, i32 31)
  %487 = load i8, ptr %432, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -528083345, i8 noundef signext %487, i32 noundef %.1638, i32 noundef 255, i32 noundef %486) #3
  %488 = load i8, ptr %432, align 4, !tbaa !38
  %489 = load i32, ptr %433, align 4, !tbaa !59
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -259709315, i8 noundef signext %488, i32 noundef %.3, i32 noundef %489, i32 noundef %486) #3
  %490 = load i32, ptr %2, align 8, !tbaa !31
  %491 = lshr i32 %.1776, 1
  %492 = add i32 %491, %434
  %493 = load i32, ptr %427, align 1, !tbaa !32
  %494 = mul i32 %493, %492
  %495 = add i32 %494, %6
  %496 = shl i32 %495, 2
  %497 = load i8, ptr %432, align 4, !tbaa !38
  %498 = load i32, ptr %435, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %490, i32 noundef 537138704, i32 noundef %16, i32 noundef 127, i32 noundef 0, i32 noundef %496, i8 noundef signext %497, i32 noundef %486, i32 noundef %498, i32 noundef 0, i32 noundef 1) #3
  %499 = load i8, ptr %432, align 4, !tbaa !38
  %500 = load i32, ptr %436, align 8, !tbaa !60
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef -259709315, i8 noundef signext %499, i32 noundef %.3, i32 noundef %500, i32 noundef %.1638) #3
  %501 = load i32, ptr %2, align 8, !tbaa !31
  %502 = load i32, ptr %427, align 1, !tbaa !32
  %503 = mul i32 %502, %492
  %504 = add i32 %503, %6
  %505 = shl i32 %504, 2
  %506 = add i32 %505, 64
  %507 = load i8, ptr %432, align 4, !tbaa !38
  %508 = load i32, ptr %435, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %501, i32 noundef 537138704, i32 noundef %16, i32 noundef 127, i32 noundef 0, i32 noundef %506, i8 noundef signext %507, i32 noundef %.1638, i32 noundef %508, i32 noundef 0, i32 noundef 1) #3
  br label %509

509:                                              ; preds = %464, %484
  %510 = add nuw i32 %.1776, 1
  %exitcond784.not = icmp eq i32 %510, %8
  br i1 %exitcond784.not, label %.loopexit, label %.lr.ph778.split, !llvm.loop !63

.loopexit:                                        ; preds = %446, %509, %421, %._crit_edge
  br i1 %95, label %511, label %512

511:                                              ; preds = %.loopexit
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef 10) #3
  br label %512

512:                                              ; preds = %511, %.loopexit
  br i1 %or.cond3, label %513, label %528

513:                                              ; preds = %512
  %514 = load i32, ptr %14, align 4, !tbaa !25
  %515 = icmp eq i32 %16, %514
  br i1 %515, label %516, label %521

516:                                              ; preds = %513
  %517 = getelementptr inbounds i8, ptr %2, i64 96
  %518 = load i32, ptr %517, align 8, !tbaa !26
  %519 = icmp eq i32 %518, 1
  br i1 %519, label %520, label %521

520:                                              ; preds = %516
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %16) #3
  br label %521

521:                                              ; preds = %520, %516, %513
  %522 = load i32, ptr %13, align 4, !tbaa !27
  %523 = icmp eq i32 %16, %522
  br i1 %523, label %524, label %528

524:                                              ; preds = %521
  %525 = load i32, ptr %10, align 4, !tbaa !5
  %526 = icmp eq i32 %525, 1
  br i1 %526, label %527, label %528

527:                                              ; preds = %524
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %16) #3
  br label %528

528:                                              ; preds = %521, %524, %527, %512
  br i1 %or.cond5, label %529, label %544

529:                                              ; preds = %528
  %530 = load i32, ptr %14, align 4, !tbaa !25
  %531 = icmp eq i32 %16, %530
  br i1 %531, label %532, label %537

532:                                              ; preds = %529
  %533 = getelementptr inbounds i8, ptr %2, i64 96
  %534 = load i32, ptr %533, align 8, !tbaa !26
  %535 = icmp eq i32 %534, 1
  br i1 %535, label %536, label %537

536:                                              ; preds = %532
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %16) #3
  br label %537

537:                                              ; preds = %536, %532, %529
  %538 = load i32, ptr %13, align 4, !tbaa !27
  %539 = icmp eq i32 %16, %538
  br i1 %539, label %540, label %544

540:                                              ; preds = %537
  %541 = load i32, ptr %10, align 4, !tbaa !5
  %542 = icmp eq i32 %541, 1
  br i1 %542, label %543, label %544

543:                                              ; preds = %540
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %16) #3
  br label %544

544:                                              ; preds = %537, %540, %543, %528
  %545 = load i32, ptr %14, align 4, !tbaa !25
  %546 = icmp eq i32 %15, %545
  br i1 %546, label %547, label %552

547:                                              ; preds = %544
  %548 = getelementptr inbounds i8, ptr %2, i64 96
  %549 = load i32, ptr %548, align 8, !tbaa !26
  %550 = icmp eq i32 %549, 1
  br i1 %550, label %551, label %552

551:                                              ; preds = %547
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef %15) #3
  br label %552

552:                                              ; preds = %551, %547, %544
  ret void
}

declare i32 @LIBXSMM_GEMM_GETENUM_C_PREC(ptr noundef) local_unnamed_addr #0

declare void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_generator_cvt_from_ps_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

declare void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #2

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind }

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

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


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