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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.libxsmm_gemm_descriptor = type <{ i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], i8, i64, i64, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, i32, i32, i32, i8 }>
%struct.libxsmm_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_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%struct.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [359 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [359 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack = external hidden unnamed_addr constant [272 x i8], align 1

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, i32 noundef %6, i32 noundef %7) #1 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %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 i16, align 2
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store i32 %6, ptr %15, align 4, !tbaa !9
  store i32 %7, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %28 = load ptr, ptr %13, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %28, i32 0, i32 6
  %30 = load i32, ptr %29, align 1, !tbaa !11
  %31 = and i32 %30, 262144
  %32 = icmp ugt i32 %31, 0
  %33 = zext i1 %32 to i64
  %34 = select i1 %32, i32 1, i32 0
  store i32 %34, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %35 = load ptr, ptr %13, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %35, i32 0, i32 6
  %37 = load i32, ptr %36, align 1, !tbaa !11
  %38 = and i32 %37, 131072
  %39 = icmp ugt i32 %38, 0
  %40 = zext i1 %39 to i64
  %41 = select i1 %39, i32 1, i32 0
  store i32 %41, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  %42 = load ptr, ptr %13, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %42, i32 0, i32 6
  %44 = load i32, ptr %43, align 1, !tbaa !11
  %45 = and i32 %44, 65536
  %46 = icmp ugt i32 %45, 0
  %47 = zext i1 %46 to i64
  %48 = select i1 %46, i32 1, i32 0
  store i32 %48, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %49 = load i32, ptr %17, align 4, !tbaa !9
  %50 = icmp eq i32 %49, 1
  br i1 %50, label %57, label %51

51:                                               ; preds = %8
  %52 = load i32, ptr %18, align 4, !tbaa !9
  %53 = icmp eq i32 %52, 1
  br i1 %53, label %57, label %54

54:                                               ; preds = %51
  %55 = load i32, ptr %19, align 4, !tbaa !9
  %56 = icmp eq i32 %55, 1
  br label %57

57:                                               ; preds = %54, %51, %8
  %58 = phi i1 [ true, %51 ], [ true, %8 ], [ %56, %54 ]
  %59 = zext i1 %58 to i64
  %60 = select i1 %58, i32 1, i32 0
  store i32 %60, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %61 = load ptr, ptr %14, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %61, i32 0, i32 6
  %63 = load i32, ptr %62, align 1, !tbaa !11
  %64 = and i32 %63, 2048
  %65 = icmp ugt i32 %64, 0
  %66 = zext i1 %65 to i64
  %67 = select i1 %65, i32 1, i32 0
  store i32 %67, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store i32 15, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  store i32 14, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  store i32 13, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  store i32 12, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  store i32 2, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %27) #4
  store i16 -250, ptr %27, align 2, !tbaa !15
  %68 = load ptr, ptr %9, align 8, !tbaa !5
  %69 = load i16, ptr %27, align 2, !tbaa !15
  call void @libxsmm_generator_x86_save_gpr_regs(ptr noundef %68, i16 noundef zeroext %69)
  %70 = load i32, ptr %21, align 4, !tbaa !9
  %71 = icmp ugt i32 %70, 0
  br i1 %71, label %72, label %158

72:                                               ; preds = %57
  %73 = load ptr, ptr %9, align 8, !tbaa !5
  %74 = load ptr, ptr %10, align 8, !tbaa !5
  %75 = load ptr, ptr %12, align 8, !tbaa !5
  %76 = load ptr, ptr %13, align 8, !tbaa !5
  %77 = load ptr, ptr %11, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %77, i32 0, i32 1
  %79 = load i32, ptr %78, align 4, !tbaa !16
  %80 = load i32, ptr %22, align 4, !tbaa !9
  %81 = load i32, ptr %23, align 4, !tbaa !9
  %82 = load i32, ptr %24, align 4, !tbaa !9
  %83 = load i32, ptr %25, align 4, !tbaa !9
  %84 = load i32, ptr %26, align 4, !tbaa !9
  %85 = load i32, ptr %16, align 4, !tbaa !9
  %86 = icmp eq i32 %85, 1
  %87 = zext i1 %86 to i64
  %88 = select i1 %86, i32 61, i32 62
  %89 = load ptr, ptr %13, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %89, i32 0, i32 0
  %91 = load i32, ptr %90, align 1, !tbaa !18
  %92 = load ptr, ptr %13, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %92, i32 0, i32 2
  %94 = load i32, ptr %93, align 1, !tbaa !19
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %95, i32 0, i32 3
  %97 = load i32, ptr %96, align 1, !tbaa !20
  %98 = load ptr, ptr %13, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %98, i32 0, i32 3
  %100 = load i32, ptr %99, align 1, !tbaa !20
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %101, i32 0, i32 10
  %103 = load i64, ptr %102, align 1, !tbaa !21
  %104 = trunc i64 %103 to i32
  %105 = icmp eq i32 -2147483648, %104
  br i1 %105, label %112, label %106

106:                                              ; preds = %72
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %107, i32 0, i32 10
  %109 = load i64, ptr %108, align 1, !tbaa !21
  %110 = trunc i64 %109 to i32
  %111 = icmp slt i32 -2147483648, %110
  br i1 %111, label %112, label %135

112:                                              ; preds = %106, %72
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %113, i32 0, i32 10
  %115 = load i64, ptr %114, align 1, !tbaa !21
  %116 = mul i64 1, %115
  %117 = icmp ult i64 %116, 2147483647
  br i1 %117, label %118, label %123

118:                                              ; preds = %112
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %119, i32 0, i32 10
  %121 = load i64, ptr %120, align 1, !tbaa !21
  %122 = mul i64 1, %121
  br label %124

123:                                              ; preds = %112
  br label %124

124:                                              ; preds = %123, %118
  %125 = phi i64 [ %122, %118 ], [ 2147483647, %123 ]
  %126 = icmp ule i64 %125, 2147483647
  br i1 %126, label %127, label %135

127:                                              ; preds = %124
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %128, i32 0, i32 10
  %130 = load i64, ptr %129, align 1, !tbaa !21
  %131 = sitofp i64 %130 to double
  %132 = fcmp ole double 0.000000e+00, %131
  br i1 %132, label %134, label %133

133:                                              ; preds = %127
  br i1 true, label %134, label %135

134:                                              ; preds = %133, %127
  br label %136

135:                                              ; preds = %133, %124, %106
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 422, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack) #5
  unreachable

136:                                              ; preds = %134
  %137 = load ptr, ptr %14, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %137, i32 0, i32 10
  %139 = load i64, ptr %138, align 1, !tbaa !21
  %140 = trunc i64 %139 to i32
  %141 = load i32, ptr %15, align 4, !tbaa !9
  %142 = load i32, ptr %15, align 4, !tbaa !9
  %143 = load i32, ptr %15, align 4, !tbaa !9
  %144 = load ptr, ptr %13, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %144, i32 0, i32 0
  %146 = load i32, ptr %145, align 1, !tbaa !18
  %147 = load ptr, ptr %13, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %147, i32 0, i32 2
  %149 = load i32, ptr %148, align 1, !tbaa !19
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %150, i32 0, i32 3
  %152 = load i32, ptr %151, align 1, !tbaa !20
  %153 = load ptr, ptr %13, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %153, i32 0, i32 3
  %155 = load i32, ptr %154, align 1, !tbaa !20
  %156 = load i32, ptr %15, align 4, !tbaa !9
  %157 = load i32, ptr %16, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_apply_ops_input_tensor_and_store_to_stack(ptr noundef %73, ptr noundef %74, ptr noundef %75, ptr noundef %76, i32 noundef %79, i32 noundef %80, i32 noundef %81, i32 noundef %82, i32 noundef %83, i32 noundef %84, i32 noundef %88, i32 noundef %91, i32 noundef %94, i32 noundef %97, i32 noundef %100, i32 noundef %140, i32 noundef %141, i32 noundef %142, i32 noundef %143, i32 noundef 3, i32 noundef 27, i32 noundef 24, i32 noundef 1, i32 noundef %146, i32 noundef %149, i32 noundef %152, i32 noundef %155, i32 noundef %156, i32 noundef 1, i32 noundef %157)
  br label %244

158:                                              ; preds = %57
  %159 = load ptr, ptr %9, align 8, !tbaa !5
  %160 = load ptr, ptr %10, align 8, !tbaa !5
  %161 = load ptr, ptr %12, align 8, !tbaa !5
  %162 = load ptr, ptr %13, align 8, !tbaa !5
  %163 = load ptr, ptr %11, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %163, i32 0, i32 1
  %165 = load i32, ptr %164, align 4, !tbaa !16
  %166 = load i32, ptr %22, align 4, !tbaa !9
  %167 = load i32, ptr %23, align 4, !tbaa !9
  %168 = load i32, ptr %24, align 4, !tbaa !9
  %169 = load i32, ptr %25, align 4, !tbaa !9
  %170 = load i32, ptr %26, align 4, !tbaa !9
  %171 = load ptr, ptr %13, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %171, i32 0, i32 0
  %173 = load i32, ptr %172, align 1, !tbaa !18
  %174 = load ptr, ptr %13, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %174, i32 0, i32 2
  %176 = load i32, ptr %175, align 1, !tbaa !19
  %177 = load ptr, ptr %14, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %177, i32 0, i32 3
  %179 = load i32, ptr %178, align 1, !tbaa !20
  %180 = load ptr, ptr %13, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %180, i32 0, i32 3
  %182 = load i32, ptr %181, align 1, !tbaa !20
  %183 = load ptr, ptr %14, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %183, i32 0, i32 10
  %185 = load i64, ptr %184, align 1, !tbaa !21
  %186 = trunc i64 %185 to i32
  %187 = icmp eq i32 -2147483648, %186
  br i1 %187, label %194, label %188

188:                                              ; preds = %158
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %189, i32 0, i32 10
  %191 = load i64, ptr %190, align 1, !tbaa !21
  %192 = trunc i64 %191 to i32
  %193 = icmp slt i32 -2147483648, %192
  br i1 %193, label %194, label %217

194:                                              ; preds = %188, %158
  %195 = load ptr, ptr %14, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %195, i32 0, i32 10
  %197 = load i64, ptr %196, align 1, !tbaa !21
  %198 = mul i64 1, %197
  %199 = icmp ult i64 %198, 2147483647
  br i1 %199, label %200, label %205

200:                                              ; preds = %194
  %201 = load ptr, ptr %14, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %201, i32 0, i32 10
  %203 = load i64, ptr %202, align 1, !tbaa !21
  %204 = mul i64 1, %203
  br label %206

205:                                              ; preds = %194
  br label %206

206:                                              ; preds = %205, %200
  %207 = phi i64 [ %204, %200 ], [ 2147483647, %205 ]
  %208 = icmp ule i64 %207, 2147483647
  br i1 %208, label %209, label %217

209:                                              ; preds = %206
  %210 = load ptr, ptr %14, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %210, i32 0, i32 10
  %212 = load i64, ptr %211, align 1, !tbaa !21
  %213 = sitofp i64 %212 to double
  %214 = fcmp ole double 0.000000e+00, %213
  br i1 %214, label %216, label %215

215:                                              ; preds = %209
  br i1 true, label %216, label %217

216:                                              ; preds = %215, %209
  br label %218

217:                                              ; preds = %215, %206, %188
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 430, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack) #5
  unreachable

218:                                              ; preds = %216
  %219 = load ptr, ptr %14, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %219, i32 0, i32 10
  %221 = load i64, ptr %220, align 1, !tbaa !21
  %222 = trunc i64 %221 to i32
  %223 = load i32, ptr %15, align 4, !tbaa !9
  %224 = load i32, ptr %16, align 4, !tbaa !9
  %225 = load i32, ptr %16, align 4, !tbaa !9
  %226 = icmp eq i32 %225, 1
  %227 = zext i1 %226 to i64
  %228 = select i1 %226, i32 0, i32 28
  %229 = load ptr, ptr %13, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %229, i32 0, i32 0
  %231 = load i32, ptr %230, align 1, !tbaa !18
  %232 = load ptr, ptr %13, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %232, i32 0, i32 2
  %234 = load i32, ptr %233, align 1, !tbaa !19
  %235 = load ptr, ptr %13, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %235, i32 0, i32 3
  %237 = load i32, ptr %236, align 1, !tbaa !20
  %238 = load ptr, ptr %13, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %238, i32 0, i32 3
  %240 = load i32, ptr %239, align 1, !tbaa !20
  %241 = load i32, ptr %16, align 4, !tbaa !9
  %242 = load i32, ptr %16, align 4, !tbaa !9
  %243 = load i32, ptr %16, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_apply_ops_input_tensor_and_store_to_stack(ptr noundef %159, ptr noundef %160, ptr noundef %161, ptr noundef %162, i32 noundef %165, i32 noundef %166, i32 noundef %167, i32 noundef %168, i32 noundef %169, i32 noundef %170, i32 noundef 1, i32 noundef %173, i32 noundef %176, i32 noundef %179, i32 noundef %182, i32 noundef %222, i32 noundef %223, i32 noundef 1, i32 noundef %224, i32 noundef 3, i32 noundef 27, i32 noundef 24, i32 noundef %228, i32 noundef %231, i32 noundef %234, i32 noundef %237, i32 noundef %240, i32 noundef %241, i32 noundef %242, i32 noundef %243)
  br label %244

244:                                              ; preds = %218, %136
  %245 = load ptr, ptr %9, align 8, !tbaa !5
  %246 = load ptr, ptr %10, align 8, !tbaa !5
  %247 = load ptr, ptr %12, align 8, !tbaa !5
  %248 = load ptr, ptr %13, align 8, !tbaa !5
  %249 = load ptr, ptr %11, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %249, i32 0, i32 3
  %251 = load i32, ptr %250, align 4, !tbaa !22
  %252 = load i32, ptr %22, align 4, !tbaa !9
  %253 = load i32, ptr %23, align 4, !tbaa !9
  %254 = load i32, ptr %24, align 4, !tbaa !9
  %255 = load i32, ptr %25, align 4, !tbaa !9
  %256 = load i32, ptr %26, align 4, !tbaa !9
  %257 = load ptr, ptr %13, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %257, i32 0, i32 2
  %259 = load i32, ptr %258, align 1, !tbaa !19
  %260 = load ptr, ptr %13, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %260, i32 0, i32 1
  %262 = load i32, ptr %261, align 1, !tbaa !23
  %263 = load ptr, ptr %14, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %263, i32 0, i32 4
  %265 = load i32, ptr %264, align 1, !tbaa !24
  %266 = load ptr, ptr %13, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %266, i32 0, i32 2
  %268 = load i32, ptr %267, align 1, !tbaa !19
  %269 = load ptr, ptr %14, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %269, i32 0, i32 11
  %271 = load i64, ptr %270, align 1, !tbaa !25
  %272 = trunc i64 %271 to i32
  %273 = icmp eq i32 -2147483648, %272
  br i1 %273, label %280, label %274

274:                                              ; preds = %244
  %275 = load ptr, ptr %14, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %275, i32 0, i32 11
  %277 = load i64, ptr %276, align 1, !tbaa !25
  %278 = trunc i64 %277 to i32
  %279 = icmp slt i32 -2147483648, %278
  br i1 %279, label %280, label %303

280:                                              ; preds = %274, %244
  %281 = load ptr, ptr %14, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %281, i32 0, i32 11
  %283 = load i64, ptr %282, align 1, !tbaa !25
  %284 = mul i64 1, %283
  %285 = icmp ult i64 %284, 2147483647
  br i1 %285, label %286, label %291

286:                                              ; preds = %280
  %287 = load ptr, ptr %14, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %287, i32 0, i32 11
  %289 = load i64, ptr %288, align 1, !tbaa !25
  %290 = mul i64 1, %289
  br label %292

291:                                              ; preds = %280
  br label %292

292:                                              ; preds = %291, %286
  %293 = phi i64 [ %290, %286 ], [ 2147483647, %291 ]
  %294 = icmp ule i64 %293, 2147483647
  br i1 %294, label %295, label %303

295:                                              ; preds = %292
  %296 = load ptr, ptr %14, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %296, i32 0, i32 11
  %298 = load i64, ptr %297, align 1, !tbaa !25
  %299 = sitofp i64 %298 to double
  %300 = fcmp ole double 0.000000e+00, %299
  br i1 %300, label %302, label %301

301:                                              ; preds = %295
  br i1 true, label %302, label %303

302:                                              ; preds = %301, %295
  br label %304

303:                                              ; preds = %301, %292, %274
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 440, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack) #5
  unreachable

304:                                              ; preds = %302
  %305 = load ptr, ptr %14, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %305, i32 0, i32 11
  %307 = load i64, ptr %306, align 1, !tbaa !25
  %308 = trunc i64 %307 to i32
  %309 = load i32, ptr %15, align 4, !tbaa !9
  %310 = load i32, ptr %16, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_apply_ops_input_tensor_and_store_to_stack(ptr noundef %245, ptr noundef %246, ptr noundef %247, ptr noundef %248, i32 noundef %251, i32 noundef %252, i32 noundef %253, i32 noundef %254, i32 noundef %255, i32 noundef %256, i32 noundef 1, i32 noundef %259, i32 noundef %262, i32 noundef %265, i32 noundef %268, i32 noundef %308, i32 noundef %309, i32 noundef 1, i32 noundef %310, i32 noundef 4, i32 noundef 27, i32 noundef 25, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %311 = load ptr, ptr %9, align 8, !tbaa !5
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %311, ptr noundef %312, i32 noundef 24, i32 noundef %313)
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = load ptr, ptr %12, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.libxsmm_micro_kernel_config, ptr %315, i32 0, i32 20
  %317 = load i32, ptr %316, align 8, !tbaa !26
  %318 = load i32, ptr %23, align 4, !tbaa !9
  %319 = load ptr, ptr %11, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_gp_reg_mapping_struct, ptr %319, i32 0, i32 1
  %321 = load i32, ptr %320, align 4, !tbaa !16
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %314, i32 noundef %317, i32 noundef %318, i32 noundef %321)
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = load ptr, ptr %12, align 8, !tbaa !5
  %324 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %322, ptr noundef %323, i32 noundef 25, i32 noundef %324)
  %325 = load ptr, ptr %9, 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 20
  %328 = load i32, ptr %327, align 8, !tbaa !26
  %329 = load i32, ptr %23, 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 3
  %332 = load i32, ptr %331, align 4, !tbaa !22
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %325, i32 noundef %328, i32 noundef %329, i32 noundef %332)
  %333 = load i32, ptr %20, align 4, !tbaa !9
  %334 = icmp sgt i32 %333, 0
  br i1 %334, label %335, label %564

335:                                              ; preds = %304
  %336 = load i32, ptr %18, align 4, !tbaa !9
  %337 = icmp sgt i32 %336, 0
  br i1 %337, label %338, label %351

338:                                              ; preds = %335
  %339 = load ptr, ptr %13, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %339, i32 0, i32 6
  %341 = load i32, ptr %340, align 1, !tbaa !11
  %342 = xor i32 %341, 131072
  %343 = load ptr, ptr %13, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %343, i32 0, i32 6
  store i32 %342, ptr %344, align 1, !tbaa !11
  %345 = load ptr, ptr %13, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %345, i32 0, i32 6
  %347 = load i32, ptr %346, align 1, !tbaa !11
  %348 = or i32 %347, 262144
  %349 = load ptr, ptr %13, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %349, i32 0, i32 6
  store i32 %348, ptr %350, align 1, !tbaa !11
  br label %351

351:                                              ; preds = %338, %335
  %352 = load i32, ptr %19, align 4, !tbaa !9
  %353 = icmp sgt i32 %352, 0
  br i1 %353, label %354, label %367

354:                                              ; preds = %351
  %355 = load ptr, ptr %13, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %355, i32 0, i32 6
  %357 = load i32, ptr %356, align 1, !tbaa !11
  %358 = xor i32 %357, 65536
  %359 = load ptr, ptr %13, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %359, i32 0, i32 6
  store i32 %358, ptr %360, align 1, !tbaa !11
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %361, i32 0, i32 6
  %363 = load i32, ptr %362, align 1, !tbaa !11
  %364 = or i32 %363, 262144
  %365 = load ptr, ptr %13, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %365, i32 0, i32 6
  store i32 %364, ptr %366, align 1, !tbaa !11
  br label %367

367:                                              ; preds = %354, %351
  %368 = load i32, ptr %16, align 4, !tbaa !9
  %369 = icmp eq i32 0, %368
  br i1 %369, label %370, label %371

370:                                              ; preds = %367
  br label %451

371:                                              ; preds = %367
  %372 = load i32, ptr %16, align 4, !tbaa !9
  %373 = icmp eq i32 1, %372
  br i1 %373, label %374, label %375

374:                                              ; preds = %371
  br label %449

375:                                              ; preds = %371
  %376 = load i32, ptr %16, align 4, !tbaa !9
  %377 = icmp eq i32 2, %376
  br i1 %377, label %378, label %379

378:                                              ; preds = %375
  br label %447

379:                                              ; preds = %375
  %380 = load i32, ptr %16, align 4, !tbaa !9
  %381 = icmp eq i32 3, %380
  br i1 %381, label %382, label %383

382:                                              ; preds = %379
  br label %445

383:                                              ; preds = %379
  %384 = load i32, ptr %16, align 4, !tbaa !9
  %385 = icmp eq i32 4, %384
  br i1 %385, label %386, label %387

386:                                              ; preds = %383
  br label %443

387:                                              ; preds = %383
  %388 = load i32, ptr %16, align 4, !tbaa !9
  %389 = icmp eq i32 5, %388
  br i1 %389, label %390, label %391

390:                                              ; preds = %387
  br label %441

391:                                              ; preds = %387
  %392 = load i32, ptr %16, align 4, !tbaa !9
  %393 = icmp eq i32 6, %392
  br i1 %393, label %394, label %395

394:                                              ; preds = %391
  br label %439

395:                                              ; preds = %391
  %396 = load i32, ptr %16, align 4, !tbaa !9
  %397 = icmp eq i32 7, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %395
  br label %437

399:                                              ; preds = %395
  %400 = load i32, ptr %16, align 4, !tbaa !9
  %401 = icmp eq i32 8, %400
  br i1 %401, label %402, label %403

402:                                              ; preds = %399
  br label %435

403:                                              ; preds = %399
  %404 = load i32, ptr %16, align 4, !tbaa !9
  %405 = icmp eq i32 9, %404
  br i1 %405, label %406, label %407

406:                                              ; preds = %403
  br label %433

407:                                              ; preds = %403
  %408 = load i32, ptr %16, align 4, !tbaa !9
  %409 = icmp eq i32 10, %408
  br i1 %409, label %410, label %411

410:                                              ; preds = %407
  br label %431

411:                                              ; preds = %407
  %412 = load i32, ptr %16, align 4, !tbaa !9
  %413 = icmp eq i32 11, %412
  br i1 %413, label %414, label %415

414:                                              ; preds = %411
  br label %429

415:                                              ; preds = %411
  %416 = load i32, ptr %16, align 4, !tbaa !9
  %417 = icmp eq i32 12, %416
  br i1 %417, label %418, label %419

418:                                              ; preds = %415
  br label %427

419:                                              ; preds = %415
  %420 = load i32, ptr %16, align 4, !tbaa !9
  %421 = icmp eq i32 13, %420
  br i1 %421, label %422, label %423

422:                                              ; preds = %419
  br label %425

423:                                              ; preds = %419
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 461, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack) #5
  unreachable

424:                                              ; No predecessors!
  br label %425

425:                                              ; preds = %424, %422
  %426 = phi i32 [ 1, %422 ], [ 0, %424 ]
  br label %427

427:                                              ; preds = %425, %418
  %428 = phi i32 [ 1, %418 ], [ %426, %425 ]
  br label %429

429:                                              ; preds = %427, %414
  %430 = phi i32 [ 2, %414 ], [ %428, %427 ]
  br label %431

431:                                              ; preds = %429, %410
  %432 = phi i32 [ 2, %410 ], [ %430, %429 ]
  br label %433

433:                                              ; preds = %431, %406
  %434 = phi i32 [ 4, %406 ], [ %432, %431 ]
  br label %435

435:                                              ; preds = %433, %402
  %436 = phi i32 [ 4, %402 ], [ %434, %433 ]
  br label %437

437:                                              ; preds = %435, %398
  %438 = phi i32 [ 8, %398 ], [ %436, %435 ]
  br label %439

439:                                              ; preds = %437, %394
  %440 = phi i32 [ 8, %394 ], [ %438, %437 ]
  br label %441

441:                                              ; preds = %439, %390
  %442 = phi i32 [ 1, %390 ], [ %440, %439 ]
  br label %443

443:                                              ; preds = %441, %386
  %444 = phi i32 [ 1, %386 ], [ %442, %441 ]
  br label %445

445:                                              ; preds = %443, %382
  %446 = phi i32 [ 2, %382 ], [ %444, %443 ]
  br label %447

447:                                              ; preds = %445, %378
  %448 = phi i32 [ 2, %378 ], [ %446, %445 ]
  br label %449

449:                                              ; preds = %447, %374
  %450 = phi i32 [ 4, %374 ], [ %448, %447 ]
  br label %451

451:                                              ; preds = %449, %370
  %452 = phi i32 [ 8, %370 ], [ %450, %449 ]
  %453 = sext i32 %452 to i64
  %454 = load ptr, ptr %13, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %454, i32 0, i32 0
  %456 = load i32, ptr %455, align 1, !tbaa !18
  %457 = zext i32 %456 to i64
  %458 = mul nsw i64 %453, %457
  %459 = load ptr, ptr %13, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %459, i32 0, i32 2
  %461 = load i32, ptr %460, align 1, !tbaa !19
  %462 = zext i32 %461 to i64
  %463 = mul nsw i64 %458, %462
  %464 = load ptr, ptr %13, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %464, i32 0, i32 10
  store i64 %463, ptr %465, align 1, !tbaa !21
  %466 = load i32, ptr %16, align 4, !tbaa !9
  %467 = icmp eq i32 0, %466
  br i1 %467, label %468, label %469

468:                                              ; preds = %451
  br label %549

469:                                              ; preds = %451
  %470 = load i32, ptr %16, align 4, !tbaa !9
  %471 = icmp eq i32 1, %470
  br i1 %471, label %472, label %473

472:                                              ; preds = %469
  br label %547

473:                                              ; preds = %469
  %474 = load i32, ptr %16, align 4, !tbaa !9
  %475 = icmp eq i32 2, %474
  br i1 %475, label %476, label %477

476:                                              ; preds = %473
  br label %545

477:                                              ; preds = %473
  %478 = load i32, ptr %16, align 4, !tbaa !9
  %479 = icmp eq i32 3, %478
  br i1 %479, label %480, label %481

480:                                              ; preds = %477
  br label %543

481:                                              ; preds = %477
  %482 = load i32, ptr %16, align 4, !tbaa !9
  %483 = icmp eq i32 4, %482
  br i1 %483, label %484, label %485

484:                                              ; preds = %481
  br label %541

485:                                              ; preds = %481
  %486 = load i32, ptr %16, align 4, !tbaa !9
  %487 = icmp eq i32 5, %486
  br i1 %487, label %488, label %489

488:                                              ; preds = %485
  br label %539

489:                                              ; preds = %485
  %490 = load i32, ptr %16, align 4, !tbaa !9
  %491 = icmp eq i32 6, %490
  br i1 %491, label %492, label %493

492:                                              ; preds = %489
  br label %537

493:                                              ; preds = %489
  %494 = load i32, ptr %16, align 4, !tbaa !9
  %495 = icmp eq i32 7, %494
  br i1 %495, label %496, label %497

496:                                              ; preds = %493
  br label %535

497:                                              ; preds = %493
  %498 = load i32, ptr %16, align 4, !tbaa !9
  %499 = icmp eq i32 8, %498
  br i1 %499, label %500, label %501

500:                                              ; preds = %497
  br label %533

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

504:                                              ; preds = %501
  br label %531

505:                                              ; preds = %501
  %506 = load i32, ptr %16, align 4, !tbaa !9
  %507 = icmp eq i32 10, %506
  br i1 %507, label %508, label %509

508:                                              ; preds = %505
  br label %529

509:                                              ; preds = %505
  %510 = load i32, ptr %16, align 4, !tbaa !9
  %511 = icmp eq i32 11, %510
  br i1 %511, label %512, label %513

512:                                              ; preds = %509
  br label %527

513:                                              ; preds = %509
  %514 = load i32, ptr %16, align 4, !tbaa !9
  %515 = icmp eq i32 12, %514
  br i1 %515, label %516, label %517

516:                                              ; preds = %513
  br label %525

517:                                              ; preds = %513
  %518 = load i32, ptr %16, align 4, !tbaa !9
  %519 = icmp eq i32 13, %518
  br i1 %519, label %520, label %521

520:                                              ; preds = %517
  br label %523

521:                                              ; preds = %517
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 462, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack) #5
  unreachable

522:                                              ; No predecessors!
  br label %523

523:                                              ; preds = %522, %520
  %524 = phi i32 [ 1, %520 ], [ 0, %522 ]
  br label %525

525:                                              ; preds = %523, %516
  %526 = phi i32 [ 1, %516 ], [ %524, %523 ]
  br label %527

527:                                              ; preds = %525, %512
  %528 = phi i32 [ 2, %512 ], [ %526, %525 ]
  br label %529

529:                                              ; preds = %527, %508
  %530 = phi i32 [ 2, %508 ], [ %528, %527 ]
  br label %531

531:                                              ; preds = %529, %504
  %532 = phi i32 [ 4, %504 ], [ %530, %529 ]
  br label %533

533:                                              ; preds = %531, %500
  %534 = phi i32 [ 4, %500 ], [ %532, %531 ]
  br label %535

535:                                              ; preds = %533, %496
  %536 = phi i32 [ 8, %496 ], [ %534, %533 ]
  br label %537

537:                                              ; preds = %535, %492
  %538 = phi i32 [ 8, %492 ], [ %536, %535 ]
  br label %539

539:                                              ; preds = %537, %488
  %540 = phi i32 [ 1, %488 ], [ %538, %537 ]
  br label %541

541:                                              ; preds = %539, %484
  %542 = phi i32 [ 1, %484 ], [ %540, %539 ]
  br label %543

543:                                              ; preds = %541, %480
  %544 = phi i32 [ 2, %480 ], [ %542, %541 ]
  br label %545

545:                                              ; preds = %543, %476
  %546 = phi i32 [ 2, %476 ], [ %544, %543 ]
  br label %547

547:                                              ; preds = %545, %472
  %548 = phi i32 [ 4, %472 ], [ %546, %545 ]
  br label %549

549:                                              ; preds = %547, %468
  %550 = phi i32 [ 8, %468 ], [ %548, %547 ]
  %551 = sext i32 %550 to i64
  %552 = load ptr, ptr %13, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %552, i32 0, i32 1
  %554 = load i32, ptr %553, align 1, !tbaa !23
  %555 = zext i32 %554 to i64
  %556 = mul nsw i64 %551, %555
  %557 = load ptr, ptr %13, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %557, i32 0, i32 2
  %559 = load i32, ptr %558, align 1, !tbaa !19
  %560 = zext i32 %559 to i64
  %561 = mul nsw i64 %556, %560
  %562 = load ptr, ptr %13, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.libxsmm_gemm_descriptor, ptr %562, i32 0, i32 11
  store i64 %561, ptr %563, align 1, !tbaa !25
  br label %564

564:                                              ; preds = %549, %304
  %565 = load ptr, ptr %9, align 8, !tbaa !5
  %566 = load i16, ptr %27, align 2, !tbaa !15
  call void @libxsmm_generator_x86_restore_gpr_regs(ptr noundef %565, i16 noundef zeroext %566)
  call void @llvm.lifetime.end.p0(i64 2, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 24}
!12 = !{!"libxsmm_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, !13, i64 33, !13, 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}
!13 = !{!"long long", !7, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!14, !14, i64 0}
!16 = !{!17, !10, i64 4}
!17 = !{!"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}
!18 = !{!12, !10, i64 0}
!19 = !{!12, !10, i64 8}
!20 = !{!12, !10, i64 12}
!21 = !{!12, !13, i64 33}
!22 = !{!17, !10, i64 12}
!23 = !{!12, !10, i64 4}
!24 = !{!12, !10, i64 16}
!25 = !{!12, !13, i64 41}
!26 = !{!27, !10, i64 80}
!27 = !{!"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, !28, 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}
!28 = !{!"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}


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

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [77 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack = external hidden unnamed_addr constant [272 x i8], align 1

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

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

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

declare void @libxsmm_generator_x86_save_gpr_regs(ptr noundef, i16 noundef zeroext) local_unnamed_addr #1

declare void @libxsmm_generator_x86_restore_gpr_regs(ptr noundef, i16 noundef zeroext) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, i32 noundef %6, i32 noundef %7) local_unnamed_addr #0 {
  %9 = getelementptr inbounds i8, ptr %4, i64 24
  %10 = load i32, ptr %9, align 1, !tbaa !5
  %11 = and i32 %10, 131072
  %.not = icmp eq i32 %11, 0
  %12 = and i32 %10, 65536
  %.not188 = icmp eq i32 %12, 0
  %13 = and i32 %10, 458752
  %spec.select.not = icmp eq i32 %13, 0
  %14 = getelementptr inbounds i8, ptr %5, i64 24
  %15 = load i32, ptr %14, align 1, !tbaa !5
  %16 = and i32 %15, 2048
  %.not180 = icmp eq i32 %16, 0
  tail call void @libxsmm_generator_x86_save_gpr_regs(ptr noundef %0, i16 noundef zeroext -250) #3
  %17 = getelementptr inbounds i8, ptr %2, i64 4
  %18 = load i32, ptr %17, align 4, !tbaa !12
  br i1 %.not180, label %32, label %19

19:                                               ; preds = %8
  %20 = icmp eq i32 %7, 1
  %21 = select i1 %20, i32 61, i32 62
  %22 = load i32, ptr %4, align 1, !tbaa !14
  %23 = getelementptr inbounds i8, ptr %4, i64 8
  %24 = load i32, ptr %23, align 1, !tbaa !15
  %25 = getelementptr inbounds i8, ptr %5, i64 12
  %26 = load i32, ptr %25, align 1, !tbaa !16
  %27 = getelementptr inbounds i8, ptr %4, i64 12
  %28 = load i32, ptr %27, align 1, !tbaa !16
  %29 = getelementptr inbounds i8, ptr %5, i64 33
  %30 = load i64, ptr %29, align 1, !tbaa !17
  %31 = trunc i64 %30 to i32
  tail call void @libxsmm_generator_gemm_apply_ops_input_tensor_and_store_to_stack(ptr noundef %0, ptr noundef %1, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %18, i32 noundef 15, i32 noundef 14, i32 noundef 13, i32 noundef 12, i32 noundef 2, i32 noundef %21, i32 noundef %22, i32 noundef %24, i32 noundef %26, i32 noundef %28, i32 noundef %31, i32 noundef %6, i32 noundef %6, i32 noundef %6, i32 noundef 3, i32 noundef 27, i32 noundef 24, i32 noundef 1, i32 noundef %22, i32 noundef %24, i32 noundef %28, i32 noundef %28, i32 noundef %6, i32 noundef 1, i32 noundef %7)
  br label %45

32:                                               ; preds = %8
  %33 = load i32, ptr %4, align 1, !tbaa !14
  %34 = getelementptr inbounds i8, ptr %4, i64 8
  %35 = load i32, ptr %34, align 1, !tbaa !15
  %36 = getelementptr inbounds i8, ptr %5, i64 12
  %37 = load i32, ptr %36, align 1, !tbaa !16
  %38 = getelementptr inbounds i8, ptr %4, i64 12
  %39 = load i32, ptr %38, align 1, !tbaa !16
  %40 = getelementptr inbounds i8, ptr %5, i64 33
  %41 = load i64, ptr %40, align 1, !tbaa !17
  %42 = trunc i64 %41 to i32
  %43 = icmp eq i32 %7, 1
  %44 = select i1 %43, i32 0, i32 28
  tail call void @libxsmm_generator_gemm_apply_ops_input_tensor_and_store_to_stack(ptr noundef %0, ptr noundef %1, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %18, i32 noundef 15, i32 noundef 14, i32 noundef 13, i32 noundef 12, i32 noundef 2, i32 noundef 1, i32 noundef %33, i32 noundef %35, i32 noundef %37, i32 noundef %39, i32 noundef %42, i32 noundef %6, i32 noundef 1, i32 noundef %7, i32 noundef 3, i32 noundef 27, i32 noundef 24, i32 noundef %44, i32 noundef %33, i32 noundef %35, i32 noundef %39, i32 noundef %39, i32 noundef %7, i32 noundef %7, i32 noundef %7)
  br label %45

45:                                               ; preds = %32, %19
  %46 = getelementptr inbounds i8, ptr %2, i64 12
  %47 = load i32, ptr %46, align 4, !tbaa !18
  %48 = getelementptr inbounds i8, ptr %4, i64 8
  %49 = load i32, ptr %48, align 1, !tbaa !15
  %50 = getelementptr inbounds i8, ptr %4, i64 4
  %51 = load i32, ptr %50, align 1, !tbaa !19
  %52 = getelementptr inbounds i8, ptr %5, i64 16
  %53 = load i32, ptr %52, align 1, !tbaa !20
  %54 = getelementptr inbounds i8, ptr %5, i64 41
  %55 = load i64, ptr %54, align 1, !tbaa !21
  %56 = trunc i64 %55 to i32
  tail call void @libxsmm_generator_gemm_apply_ops_input_tensor_and_store_to_stack(ptr noundef %0, ptr noundef %1, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %47, i32 noundef 15, i32 noundef 14, i32 noundef 13, i32 noundef 12, i32 noundef 2, i32 noundef 1, i32 noundef %49, i32 noundef %51, i32 noundef %53, i32 noundef %49, i32 noundef %56, i32 noundef %6, i32 noundef 1, i32 noundef %7, i32 noundef 4, i32 noundef 27, i32 noundef 25, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef %3, i32 noundef 24, i32 noundef 14)
  %57 = getelementptr inbounds i8, ptr %3, i64 80
  %58 = load i32, ptr %57, align 8, !tbaa !22
  %59 = getelementptr inbounds i8, ptr %2, i64 4
  %60 = load i32, ptr %59, align 4, !tbaa !12
  tail call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %58, i32 noundef 14, i32 noundef %60) #3
  tail call void @libxsmm_generator_gemm_getval_stack_var(ptr noundef %0, ptr noundef %3, i32 noundef 25, i32 noundef 14)
  %61 = load i32, ptr %57, align 8, !tbaa !22
  %62 = load i32, ptr %46, align 4, !tbaa !18
  tail call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %61, i32 noundef 14, i32 noundef %62) #3
  br i1 %spec.select.not, label %134, label %63

63:                                               ; preds = %45
  br i1 %.not, label %68, label %64

64:                                               ; preds = %63
  %65 = load i32, ptr %9, align 1, !tbaa !5
  %66 = and i32 %65, -262145
  %67 = xor i32 %66, 393216
  store i32 %67, ptr %9, align 1, !tbaa !5
  br label %68

68:                                               ; preds = %64, %63
  br i1 %.not188, label %73, label %69

69:                                               ; preds = %68
  %70 = load i32, ptr %9, align 1, !tbaa !5
  %71 = and i32 %70, -262145
  %72 = xor i32 %71, 327680
  store i32 %72, ptr %9, align 1, !tbaa !5
  br label %73

73:                                               ; preds = %69, %68
  switch i32 %7, label %74 [
    i32 0, label %.critedge
    i32 1, label %77
  ]

74:                                               ; preds = %73
  %75 = and i32 %7, -2
  switch i32 %75, label %76 [
    i32 2, label %111
    i32 4, label %.thread
    i32 6, label %.thread190
    i32 8, label %.thread192
    i32 10, label %111
    i32 12, label %.thread194
  ]

76:                                               ; preds = %74
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 461, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack) #4
  unreachable

77:                                               ; preds = %73
  %78 = load i32, ptr %4, align 1, !tbaa !14
  %79 = zext i32 %78 to i64
  %80 = shl nuw nsw i64 %79, 2
  %81 = load i32, ptr %48, align 1, !tbaa !15
  %82 = zext i32 %81 to i64
  %83 = mul nuw nsw i64 %80, %82
  %84 = getelementptr inbounds i8, ptr %4, i64 33
  store i64 %83, ptr %84, align 1, !tbaa !17
  br label %127

.thread:                                          ; preds = %74
  %85 = load i32, ptr %4, align 1, !tbaa !14
  %86 = zext i32 %85 to i64
  %87 = load i32, ptr %48, align 1, !tbaa !15
  %88 = zext i32 %87 to i64
  %89 = mul nuw nsw i64 %86, %88
  %90 = getelementptr inbounds i8, ptr %4, i64 33
  store i64 %89, ptr %90, align 1, !tbaa !17
  br label %127

.thread190:                                       ; preds = %74
  %91 = load i32, ptr %4, align 1, !tbaa !14
  %92 = zext i32 %91 to i64
  %93 = shl nuw nsw i64 %92, 3
  %94 = load i32, ptr %48, align 1, !tbaa !15
  %95 = zext i32 %94 to i64
  %96 = mul nuw nsw i64 %93, %95
  %97 = getelementptr inbounds i8, ptr %4, i64 33
  store i64 %96, ptr %97, align 1, !tbaa !17
  br label %127

.thread192:                                       ; preds = %74
  %98 = load i32, ptr %4, align 1, !tbaa !14
  %99 = zext i32 %98 to i64
  %100 = shl nuw nsw i64 %99, 2
  %101 = load i32, ptr %48, align 1, !tbaa !15
  %102 = zext i32 %101 to i64
  %103 = mul nuw nsw i64 %100, %102
  %104 = getelementptr inbounds i8, ptr %4, i64 33
  store i64 %103, ptr %104, align 1, !tbaa !17
  br label %127

.thread194:                                       ; preds = %74
  %105 = load i32, ptr %4, align 1, !tbaa !14
  %106 = zext i32 %105 to i64
  %107 = load i32, ptr %48, align 1, !tbaa !15
  %108 = zext i32 %107 to i64
  %109 = mul nuw nsw i64 %106, %108
  %110 = getelementptr inbounds i8, ptr %4, i64 33
  store i64 %109, ptr %110, align 1, !tbaa !17
  br label %127

111:                                              ; preds = %74, %74
  %112 = load i32, ptr %4, align 1, !tbaa !14
  %113 = zext i32 %112 to i64
  %114 = shl nuw nsw i64 %113, 1
  %115 = load i32, ptr %48, align 1, !tbaa !15
  %116 = zext i32 %115 to i64
  %117 = mul nuw nsw i64 %114, %116
  %118 = getelementptr inbounds i8, ptr %4, i64 33
  store i64 %117, ptr %118, align 1, !tbaa !17
  switch i32 %75, label %119 [
    i32 2, label %127
    i32 4, label %.fold.split184
    i32 6, label %.fold.split185
    i32 8, label %.fold.split186
    i32 10, label %127
  ]

119:                                              ; preds = %111
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 462, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_gemm_setup_f8_AB_tensors_to_stack) #4
  unreachable

.critedge:                                        ; preds = %73
  %120 = load i32, ptr %4, align 1, !tbaa !14
  %121 = zext i32 %120 to i64
  %122 = shl nuw nsw i64 %121, 3
  %123 = load i32, ptr %48, align 1, !tbaa !15
  %124 = zext i32 %123 to i64
  %125 = mul nuw nsw i64 %122, %124
  %126 = getelementptr inbounds i8, ptr %4, i64 33
  store i64 %125, ptr %126, align 1, !tbaa !17
  br label %127

.fold.split184:                                   ; preds = %111
  br label %127

.fold.split185:                                   ; preds = %111
  br label %127

.fold.split186:                                   ; preds = %111
  br label %127

127:                                              ; preds = %.thread194, %.thread192, %.thread190, %.thread, %111, %111, %.fold.split186, %.fold.split185, %.fold.split184, %77, %.critedge
  %.pre-phi = phi i64 [ %116, %111 ], [ %116, %111 ], [ %82, %77 ], [ %124, %.critedge ], [ %88, %.thread ], [ %116, %.fold.split184 ], [ %95, %.thread190 ], [ %116, %.fold.split185 ], [ %102, %.thread192 ], [ %116, %.fold.split186 ], [ %108, %.thread194 ]
  %128 = phi i64 [ 2, %111 ], [ 2, %111 ], [ 4, %77 ], [ 8, %.critedge ], [ 1, %.thread ], [ 1, %.fold.split184 ], [ 8, %.thread190 ], [ 8, %.fold.split185 ], [ 4, %.thread192 ], [ 4, %.fold.split186 ], [ 1, %.thread194 ]
  %129 = load i32, ptr %50, align 1, !tbaa !19
  %130 = zext i32 %129 to i64
  %131 = mul nuw nsw i64 %128, %130
  %132 = mul nuw nsw i64 %131, %.pre-phi
  %133 = getelementptr inbounds i8, ptr %4, i64 41
  store i64 %132, ptr %133, align 1, !tbaa !21
  br label %134

134:                                              ; preds = %127, %45
  tail call void @libxsmm_generator_x86_restore_gpr_regs(ptr noundef %0, i16 noundef zeroext -250) #3
  ret void
}

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }
attributes #4 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 24}
!6 = !{!"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, !10, i64 33, !10, 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}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"long long", !8, i64 0}
!11 = !{!"short", !8, i64 0}
!12 = !{!13, !7, i64 4}
!13 = !{!"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}
!14 = !{!6, !7, i64 0}
!15 = !{!6, !7, i64 8}
!16 = !{!6, !7, i64 12}
!17 = !{!6, !10, i64 33}
!18 = !{!13, !7, i64 12}
!19 = !{!6, !7, i64 4}
!20 = !{!6, !7, i64 16}
!21 = !{!6, !10, i64 41}
!22 = !{!23, !7, i64 80}
!23 = !{!"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, !24, 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, !25, i64 592, !7, i64 600, !7, i64 604, !7, i64 608, !7, i64 612, !25, 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}
!24 = !{!"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}
!25 = !{!"any pointer", !8, i64 0}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass