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

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

%struct.libxsmm_jump_label_tracker_struct = type { [512 x i32], [512 x %struct.libxsmm_jump_source_struct] }
%struct.libxsmm_jump_source_struct = type { [512 x i32], [512 x i32], i32 }
%struct.libxsmm_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%struct.libxsmm_mateltwise_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_mateltwise_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1

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

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

declare i32 @libxsmm_meltw_getenum_precision(ptr noundef, i32 noundef) #2

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

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

declare void @libxsmm_generator_initialize_avx_mask(ptr 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) #2

declare void @libxsmm_x86_instruction_unified_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

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

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

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

declare void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext, i32 noundef) #2

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

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

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) #2

declare void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) #2

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

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

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

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

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

declare void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) #2

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) #2

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

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) #2

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_reduce_cols_index_avx512_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca 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 i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i8, align 1
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  %80 = alloca [4 x i64], align 16
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i8, align 1
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 4, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 1, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store i32 16, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %90 = load ptr, ptr %10, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %90, i32 0, i32 9
  %92 = load i16, ptr %91, align 1, !tbaa !11
  %93 = zext i16 %92 to i32
  %94 = and i32 %93, 256
  %95 = icmp sgt i32 %94, 0
  %96 = zext i1 %95 to i64
  %97 = select i1 %95, i32 8, i32 4
  store i32 %97, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %98 = load i32, ptr %21, align 4, !tbaa !9
  %99 = icmp eq i32 %98, 8
  %100 = zext i1 %99 to i64
  %101 = select i1 %99, i32 -1568407413, i32 -1610350453
  store i32 %101, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 -1809575912, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 1, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 1, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 1, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 1, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 2, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  store i32 16, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #6
  %102 = load ptr, ptr %9, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %102, i32 0, i32 128
  %104 = load i8, ptr %103, align 4, !tbaa !14
  store i8 %104, ptr %37, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #6
  %105 = load ptr, ptr %9, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %105, i32 0, i32 128
  %107 = load i8, ptr %106, align 4, !tbaa !14
  store i8 %107, ptr %38, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %108, i32 0, i32 6
  %110 = load i32, ptr %109, align 4, !tbaa !17
  store i32 %110, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %111, i32 0, i32 9
  %113 = load i32, ptr %112, align 4, !tbaa !18
  store i32 %113, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  store i32 0, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store i32 0, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  store i32 0, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 31, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  store i32 30, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  store i32 29, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 28, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 7, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  store i32 6, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  store i32 5, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  store i32 0, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  store i32 0, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  store i32 4, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  store i32 3, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  store i32 0, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  store i32 1, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  store i32 0, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  store i32 0, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  store i32 0, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  store i32 805574232, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  store i32 0, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  store i32 0, ptr %62, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  store i32 -32, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  store i32 -8, ptr %64, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #6
  %114 = load ptr, ptr %6, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %114, i32 0, i32 6
  %116 = load i32, ptr %115, align 4, !tbaa !19
  %117 = icmp ult i32 %116, 1101
  %118 = zext i1 %117 to i64
  %119 = select i1 %117, i32 121, i32 122
  %120 = trunc i32 %119 to i8
  store i8 %120, ptr %65, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %121 = load i32, ptr %21, align 4, !tbaa !9
  %122 = icmp eq i32 %121, 8
  %123 = zext i1 %122 to i64
  %124 = select i1 %122, i32 -528143527, i32 537209432
  store i32 %124, ptr %66, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %125 = load i32, ptr %21, align 4, !tbaa !9
  %126 = icmp eq i32 %125, 8
  %127 = zext i1 %126 to i64
  %128 = select i1 %126, i32 -528143492, i32 -536532356
  store i32 %128, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  store i32 806098626, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %129 = load i32, ptr %21, align 4, !tbaa !9
  %130 = icmp eq i32 %129, 8
  %131 = zext i1 %130 to i64
  %132 = select i1 %130, i32 -259709340, i32 -268097948
  store i32 %132, ptr %69, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  store i32 0, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  store i32 0, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #6
  store i32 0, ptr %72, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #6
  store i32 32, ptr %73, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  store i32 80, ptr %74, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %133 = call ptr @getenv(ptr noundef @.str.12) #6
  store ptr %133, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  %134 = call ptr @getenv(ptr noundef @.str.13) #6
  store ptr %134, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #6
  %135 = call ptr @getenv(ptr noundef @.str.14) #6
  store ptr %135, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #6
  %136 = call ptr @getenv(ptr noundef @.str.15) #6
  store ptr %136, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2101248, ptr %79) #6
  call void @libxsmm_reset_jump_label_tracker(ptr noundef %79)
  %137 = load ptr, ptr %6, align 8, !tbaa !5
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_reduce_set_lp_vlen_vname_vmove_x86(ptr noundef %137, ptr noundef %138, ptr noundef %139, ptr noundef %36, ptr noundef %37, ptr noundef %38, ptr noundef %39, ptr noundef %40)
  %140 = load ptr, ptr %10, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %140, i32 0, i32 10
  %142 = load i16, ptr %141, align 1, !tbaa !21
  %143 = zext i16 %142 to i32
  %144 = icmp eq i32 %143, 53
  br i1 %144, label %151, label %145

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

151:                                              ; preds = %145, %5
  store i32 0, ptr %56, align 4, !tbaa !9
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %152, i32 0, i32 10
  %154 = load i16, ptr %153, align 1, !tbaa !21
  %155 = zext i16 %154 to i32
  %156 = icmp eq i32 %155, 53
  br i1 %156, label %157, label %158

157:                                              ; preds = %151
  store i32 1, ptr %57, align 4, !tbaa !9
  store i32 805574239, ptr %60, align 4, !tbaa !9
  store i32 6, ptr %70, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %157, %151
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %159, i32 0, i32 10
  %161 = load i16, ptr %160, align 1, !tbaa !21
  %162 = zext i16 %161 to i32
  %163 = icmp eq i32 %162, 68
  br i1 %163, label %164, label %165

164:                                              ; preds = %158
  store i32 1, ptr %58, align 4, !tbaa !9
  store i32 805573981, ptr %60, align 4, !tbaa !9
  store i32 9, ptr %70, align 4, !tbaa !9
  br label %165

165:                                              ; preds = %164, %158
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %166, i32 0, i32 9
  %168 = load i16, ptr %167, align 1, !tbaa !11
  %169 = zext i16 %168 to i32
  %170 = and i32 %169, 2048
  %171 = icmp sgt i32 %170, 0
  br i1 %171, label %172, label %173

172:                                              ; preds = %165
  store i32 1, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %173

173:                                              ; preds = %172, %165
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %174, i32 0, i32 9
  %176 = load i16, ptr %175, align 1, !tbaa !11
  %177 = zext i16 %176 to i32
  %178 = and i32 %177, 512
  %179 = icmp sgt i32 %178, 0
  br i1 %179, label %180, label %181

180:                                              ; preds = %173
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %180, %173
  br label %182

182:                                              ; preds = %181, %145
  %183 = load ptr, ptr %75, align 8, !tbaa !5
  %184 = icmp eq ptr null, %183
  br i1 %184, label %185, label %186

185:                                              ; preds = %182
  br label %189

186:                                              ; preds = %182
  %187 = load ptr, ptr %75, align 8, !tbaa !5
  %188 = call i32 @atoi(ptr noundef %187) #7
  store i32 %188, ptr %23, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %186, %185
  %190 = load ptr, ptr %76, align 8, !tbaa !5
  %191 = icmp eq ptr null, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %189
  br label %196

193:                                              ; preds = %189
  %194 = load ptr, ptr %76, align 8, !tbaa !5
  %195 = call i32 @atoi(ptr noundef %194) #7
  store i32 %195, ptr %26, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = load ptr, ptr %77, align 8, !tbaa !5
  %198 = icmp eq ptr null, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %196
  br label %203

200:                                              ; preds = %196
  %201 = load ptr, ptr %77, align 8, !tbaa !5
  %202 = call i32 @atoi(ptr noundef %201) #7
  store i32 %202, ptr %24, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %200, %199
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %204, i32 0, i32 9
  %206 = load i16, ptr %205, align 1, !tbaa !11
  %207 = zext i16 %206 to i32
  %208 = and i32 %207, 64
  %209 = icmp sgt i32 %208, 0
  br i1 %209, label %210, label %211

210:                                              ; preds = %203
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %212

211:                                              ; preds = %203
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %211, %210
  %213 = load ptr, ptr %10, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %213, i32 0, i32 9
  %215 = load i16, ptr %214, align 1, !tbaa !11
  %216 = zext i16 %215 to i32
  %217 = and i32 %216, 512
  %218 = icmp sgt i32 %217, 0
  br i1 %218, label %219, label %220

219:                                              ; preds = %212
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %219, %212
  %221 = load ptr, ptr %78, align 8, !tbaa !5
  %222 = icmp eq ptr null, %221
  br i1 %222, label %223, label %224

223:                                              ; preds = %220
  br label %227

224:                                              ; preds = %220
  %225 = load ptr, ptr %78, align 8, !tbaa !5
  %226 = call i32 @atoi(ptr noundef %225) #7
  store i32 %226, ptr %27, align 4, !tbaa !9
  br label %227

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

234:                                              ; preds = %227
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %234, %227
  %236 = load i32, ptr %23, align 4, !tbaa !9
  %237 = icmp sgt i32 %236, 0
  br i1 %237, label %238, label %241

238:                                              ; preds = %235
  %239 = load i32, ptr %29, align 4, !tbaa !9
  %240 = add i32 %239, 1
  store i32 %240, ptr %29, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %238, %235
  %242 = load i32, ptr %26, align 4, !tbaa !9
  %243 = icmp eq i32 %242, 2
  %244 = zext i1 %243 to i64
  %245 = select i1 %243, i32 -1809575912, i32 -1810624488
  store i32 %245, ptr %25, align 4, !tbaa !9
  %246 = load i32, ptr %24, align 4, !tbaa !9
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %250

248:                                              ; preds = %241
  %249 = load i32, ptr %40, align 4, !tbaa !9
  br label %251

250:                                              ; preds = %241
  br label %251

251:                                              ; preds = %250, %248
  %252 = phi i32 [ %249, %248 ], [ 537138731, %250 ]
  store i32 %252, ptr %28, align 4, !tbaa !9
  %253 = load ptr, ptr %8, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %253, i32 0, i32 26
  store i32 8, ptr %254, align 4, !tbaa !22
  %255 = load ptr, ptr %8, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %255, i32 0, i32 27
  store i32 9, ptr %256, align 4, !tbaa !24
  %257 = load ptr, ptr %8, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %257, i32 0, i32 28
  store i32 10, ptr %258, align 4, !tbaa !25
  %259 = load ptr, ptr %8, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %259, i32 0, i32 6
  store i32 11, ptr %260, align 4, !tbaa !26
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %261, i32 0, i32 24
  store i32 0, ptr %262, align 4, !tbaa !27
  %263 = load ptr, ptr %8, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %263, i32 0, i32 25
  store i32 2, ptr %264, align 4, !tbaa !28
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %265, i32 0, i32 1
  store i32 6, ptr %266, align 4, !tbaa !29
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %267, i32 0, i32 4
  store i32 1, ptr %268, align 4, !tbaa !30
  store i32 7, ptr %61, align 4, !tbaa !9
  %269 = load ptr, ptr %6, align 8, !tbaa !5
  %270 = load ptr, ptr %9, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %270, i32 0, i32 14
  %272 = load i32, ptr %271, align 4, !tbaa !31
  %273 = load ptr, ptr %8, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %273, i32 0, i32 0
  %275 = load i32, ptr %274, align 4, !tbaa !32
  %276 = load i32, ptr %73, align 4, !tbaa !9
  %277 = add nsw i32 %276, 16
  %278 = load ptr, ptr %8, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %278, i32 0, i32 26
  %280 = load i32, ptr %279, align 4, !tbaa !22
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %269, i32 noundef %272, i32 noundef %275, i32 noundef 127, i32 noundef 0, i32 noundef %277, i32 noundef %280, i32 noundef 0)
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %282, i32 0, i32 14
  %284 = load i32, ptr %283, align 4, !tbaa !31
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %285, i32 0, i32 26
  %287 = load i32, ptr %286, align 4, !tbaa !22
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %288, i32 0, i32 26
  %290 = load i32, ptr %289, align 4, !tbaa !22
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %281, i32 noundef %284, i32 noundef %287, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %290, i32 noundef 0)
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  %292 = load ptr, ptr %9, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %292, i32 0, i32 12
  %294 = load i32, ptr %293, align 4, !tbaa !33
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %295, i32 0, i32 26
  %297 = load i32, ptr %296, align 4, !tbaa !22
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %291, i32 noundef %294, i32 noundef %297, i64 noundef 0)
  %298 = load ptr, ptr %6, align 8, !tbaa !5
  %299 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %298, i32 noundef 30107, i32 noundef %299, ptr noundef %79)
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = load ptr, ptr %9, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %301, i32 0, i32 14
  %303 = load i32, ptr %302, align 4, !tbaa !31
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %304, i32 0, i32 0
  %306 = load i32, ptr %305, align 4, !tbaa !32
  %307 = load i32, ptr %73, align 4, !tbaa !9
  %308 = add nsw i32 %307, 8
  %309 = load ptr, ptr %8, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %309, i32 0, i32 27
  %311 = load i32, ptr %310, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %300, i32 noundef %303, i32 noundef %306, i32 noundef 127, i32 noundef 0, i32 noundef %308, i32 noundef %311, i32 noundef 0)
  %312 = load ptr, ptr %6, align 8, !tbaa !5
  %313 = load ptr, ptr %9, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %313, i32 0, i32 14
  %315 = load i32, ptr %314, align 4, !tbaa !31
  %316 = load ptr, ptr %8, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %316, i32 0, i32 0
  %318 = load i32, ptr %317, align 4, !tbaa !32
  %319 = load i32, ptr %73, align 4, !tbaa !9
  %320 = load ptr, ptr %8, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %320, i32 0, i32 28
  %322 = load i32, ptr %321, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %312, i32 noundef %315, i32 noundef %318, i32 noundef 127, i32 noundef 0, i32 noundef %319, i32 noundef %322, i32 noundef 0)
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = load ptr, ptr %9, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %324, i32 0, i32 14
  %326 = load i32, ptr %325, align 4, !tbaa !31
  %327 = load ptr, ptr %8, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %327, i32 0, i32 0
  %329 = load i32, ptr %328, align 4, !tbaa !32
  %330 = load i32, ptr %74, align 4, !tbaa !9
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %331, i32 0, i32 6
  %333 = load i32, ptr %332, align 4, !tbaa !26
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %323, i32 noundef %326, i32 noundef %329, i32 noundef 127, i32 noundef 0, i32 noundef %330, i32 noundef %333, i32 noundef 0)
  %334 = load i32, ptr %59, align 4, !tbaa !9
  %335 = icmp ugt i32 %334, 0
  br i1 %335, label %336, label %347

336:                                              ; preds = %251
  %337 = load ptr, ptr %6, align 8, !tbaa !5
  %338 = load ptr, ptr %9, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %338, i32 0, i32 14
  %340 = load i32, ptr %339, align 4, !tbaa !31
  %341 = load ptr, ptr %8, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %341, i32 0, i32 0
  %343 = load i32, ptr %342, align 4, !tbaa !32
  %344 = load i32, ptr %74, align 4, !tbaa !9
  %345 = add nsw i32 %344, 8
  %346 = load i32, ptr %61, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %337, i32 noundef %340, i32 noundef %343, i32 noundef 127, i32 noundef 0, i32 noundef %345, i32 noundef %346, i32 noundef 0)
  br label %347

347:                                              ; preds = %336, %251
  %348 = load ptr, ptr %6, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %348, i32 0, i32 6
  %350 = load i32, ptr %349, align 4, !tbaa !19
  %351 = icmp ult i32 %350, 1101
  br i1 %351, label %352, label %353

352:                                              ; preds = %347
  store i32 8, ptr %36, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %352, %347
  %354 = load ptr, ptr %10, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %354, i32 0, i32 0
  %356 = load i32, ptr %355, align 1, !tbaa !34
  store i32 %356, ptr %11, align 4, !tbaa !9
  %357 = load i32, ptr %11, align 4, !tbaa !9
  %358 = load i32, ptr %36, align 4, !tbaa !9
  %359 = urem i32 %357, %358
  %360 = icmp eq i32 %359, 0
  %361 = zext i1 %360 to i64
  %362 = select i1 %360, i32 0, i32 1
  store i32 %362, ptr %13, align 4, !tbaa !9
  %363 = load i32, ptr %11, align 4, !tbaa !9
  %364 = load i32, ptr %36, align 4, !tbaa !9
  %365 = add i32 %363, %364
  %366 = sub i32 %365, 1
  %367 = load i32, ptr %36, align 4, !tbaa !9
  %368 = udiv i32 %366, %367
  store i32 %368, ptr %14, align 4, !tbaa !9
  %369 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %369, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  %370 = load ptr, ptr %6, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %370, i32 0, i32 6
  %372 = load i32, ptr %371, align 4, !tbaa !19
  %373 = icmp ult i32 %372, 1051
  br i1 %373, label %374, label %380

374:                                              ; preds = %353
  store i32 8, ptr %20, align 4, !tbaa !9
  store i32 8, ptr %15, align 4, !tbaa !9
  %375 = load ptr, ptr %10, align 8, !tbaa !5
  %376 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %375, i32 noundef 3)
  %377 = icmp eq i32 2, %376
  br i1 %377, label %378, label %379

378:                                              ; preds = %374
  store i32 6, ptr %15, align 4, !tbaa !9
  store i32 14, ptr %44, align 4, !tbaa !9
  store i32 13, ptr %45, align 4, !tbaa !9
  br label %379

379:                                              ; preds = %378, %374
  br label %381

380:                                              ; preds = %353
  store i32 14, ptr %15, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %380, %379
  %382 = load i32, ptr %13, align 4, !tbaa !9
  %383 = icmp eq i32 %382, 1
  br i1 %383, label %384, label %444

384:                                              ; preds = %381
  %385 = load ptr, ptr %6, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %385, i32 0, i32 6
  %387 = load i32, ptr %386, align 4, !tbaa !19
  %388 = icmp uge i32 %387, 1051
  br i1 %388, label %389, label %401

389:                                              ; preds = %384
  %390 = load i32, ptr %36, align 4, !tbaa !9
  %391 = load i32, ptr %11, align 4, !tbaa !9
  %392 = load i32, ptr %36, align 4, !tbaa !9
  %393 = urem i32 %391, %392
  %394 = sub i32 %390, %393
  store i32 %394, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  %395 = load ptr, ptr %6, align 8, !tbaa !5
  %396 = load i32, ptr %41, align 4, !tbaa !9
  %397 = load i32, ptr %19, align 4, !tbaa !9
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %395, i32 noundef 0, i32 noundef %396, i32 noundef %397, i32 noundef 1)
  %398 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %398, ptr %42, align 4, !tbaa !9
  %399 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %399, ptr %43, align 4, !tbaa !9
  %400 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %400, ptr %52, align 4, !tbaa !9
  store i32 4, ptr %53, align 4, !tbaa !9
  br label %443

401:                                              ; preds = %384
  store i32 15, ptr %41, align 4, !tbaa !9
  store i32 7, ptr %20, align 4, !tbaa !9
  %402 = load i32, ptr %15, align 4, !tbaa !9
  %403 = icmp ugt i32 %402, 7
  br i1 %403, label %404, label %405

404:                                              ; preds = %401
  store i32 7, ptr %15, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %404, %401
  %406 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %406, ptr %52, align 4, !tbaa !9
  %407 = load ptr, ptr %10, align 8, !tbaa !5
  %408 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %407, i32 noundef 0)
  %409 = icmp ne i32 1, %408
  %410 = zext i1 %409 to i64
  %411 = select i1 %409, i32 12, i32 14
  store i32 %411, ptr %53, align 4, !tbaa !9
  %412 = load ptr, ptr %6, align 8, !tbaa !5
  %413 = load i32, ptr %41, align 4, !tbaa !9
  %414 = load i32, ptr %11, align 4, !tbaa !9
  %415 = load i32, ptr %36, align 4, !tbaa !9
  %416 = urem i32 %414, %415
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef %412, i32 noundef %413, i32 noundef %416, i32 noundef 1)
  %417 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %417, ptr %42, align 4, !tbaa !9
  %418 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %418, ptr %43, align 4, !tbaa !9
  %419 = load ptr, ptr %10, align 8, !tbaa !5
  %420 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %419, i32 noundef 0)
  %421 = icmp eq i32 2, %420
  br i1 %421, label %426, label %422

422:                                              ; preds = %405
  %423 = load ptr, ptr %10, align 8, !tbaa !5
  %424 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %423, i32 noundef 0)
  %425 = icmp eq i32 3, %424
  br i1 %425, label %426, label %430

426:                                              ; preds = %422, %405
  %427 = load i32, ptr %11, align 4, !tbaa !9
  %428 = load i32, ptr %36, align 4, !tbaa !9
  %429 = urem i32 %427, %428
  store i32 %429, ptr %42, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %426, %422
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %431, i32 noundef 3)
  %433 = icmp eq i32 2, %432
  br i1 %433, label %438, label %434

434:                                              ; preds = %430
  %435 = load ptr, ptr %10, align 8, !tbaa !5
  %436 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %435, i32 noundef 3)
  %437 = icmp eq i32 3, %436
  br i1 %437, label %438, label %442

438:                                              ; preds = %434, %430
  %439 = load i32, ptr %11, align 4, !tbaa !9
  %440 = load i32, ptr %36, align 4, !tbaa !9
  %441 = urem i32 %439, %440
  store i32 %441, ptr %43, align 4, !tbaa !9
  br label %442

442:                                              ; preds = %438, %434
  br label %443

443:                                              ; preds = %442, %389
  br label %444

444:                                              ; preds = %443, %381
  %445 = load i32, ptr %59, align 4, !tbaa !9
  %446 = icmp ugt i32 %445, 0
  br i1 %446, label %447, label %473

447:                                              ; preds = %444
  %448 = load ptr, ptr %6, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %448, i32 0, i32 6
  %450 = load i32, ptr %449, align 4, !tbaa !19
  %451 = icmp uge i32 %450, 1051
  br i1 %451, label %452, label %458

452:                                              ; preds = %447
  store i32 27, ptr %51, align 4, !tbaa !9
  %453 = load i32, ptr %21, align 4, !tbaa !9
  %454 = icmp eq i32 %453, 8
  br i1 %454, label %455, label %456

455:                                              ; preds = %452
  store i32 6, ptr %15, align 4, !tbaa !9
  br label %457

456:                                              ; preds = %452
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %457

457:                                              ; preds = %456, %455
  br label %472

458:                                              ; preds = %447
  %459 = load i32, ptr %21, align 4, !tbaa !9
  %460 = icmp eq i32 %459, 8
  %461 = zext i1 %460 to i64
  %462 = select i1 %460, i32 545598233, i32 537209368
  store i32 %462, ptr %66, align 4, !tbaa !9
  %463 = load i32, ptr %21, align 4, !tbaa !9
  %464 = icmp eq i32 %463, 8
  %465 = zext i1 %464 to i64
  %466 = select i1 %464, i32 1879912523, i32 1879912522
  store i32 %466, ptr %69, align 4, !tbaa !9
  store i32 11, ptr %51, align 4, !tbaa !9
  store i32 10, ptr %54, align 4, !tbaa !9
  %467 = load i32, ptr %21, align 4, !tbaa !9
  %468 = icmp eq i32 %467, 8
  br i1 %468, label %469, label %470

469:                                              ; preds = %458
  store i32 2, ptr %15, align 4, !tbaa !9
  store i32 9, ptr %55, align 4, !tbaa !9
  br label %471

470:                                              ; preds = %458
  store i32 3, ptr %15, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %470, %469
  br label %472

472:                                              ; preds = %471, %457
  br label %473

473:                                              ; preds = %472, %444
  %474 = load ptr, ptr %6, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %474, i32 0, i32 6
  %476 = load i32, ptr %475, align 4, !tbaa !19
  %477 = icmp uge i32 %476, 1051
  br i1 %477, label %478, label %501

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

481:                                              ; preds = %478
  %482 = load i32, ptr %11, align 4, !tbaa !9
  %483 = load i32, ptr %36, align 4, !tbaa !9
  %484 = udiv i32 %483, 2
  %485 = urem i32 %482, %484
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %500

487:                                              ; preds = %481
  %488 = load i32, ptr %59, align 4, !tbaa !9
  %489 = icmp ugt i32 %488, 0
  br i1 %489, label %490, label %500

490:                                              ; preds = %487
  %491 = load ptr, ptr %6, align 8, !tbaa !5
  %492 = load i32, ptr %53, align 4, !tbaa !9
  %493 = load i32, ptr %36, align 4, !tbaa !9
  %494 = udiv i32 %493, 2
  %495 = load i32, ptr %11, align 4, !tbaa !9
  %496 = load i32, ptr %36, align 4, !tbaa !9
  %497 = udiv i32 %496, 2
  %498 = urem i32 %495, %497
  %499 = sub i32 %494, %498
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %491, i32 noundef 0, i32 noundef %492, i32 noundef %499, i32 noundef 0)
  br label %500

500:                                              ; preds = %490, %487, %481, %478
  br label %529

501:                                              ; preds = %473
  %502 = load i32, ptr %21, align 4, !tbaa !9
  %503 = icmp eq i32 %502, 8
  br i1 %503, label %504, label %528

504:                                              ; preds = %501
  %505 = load i32, ptr %11, align 4, !tbaa !9
  %506 = urem i32 %505, 4
  %507 = icmp ne i32 %506, 0
  br i1 %507, label %508, label %528

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

511:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #6
  call void @llvm.memset.p0.i64(ptr align 16 %80, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %512

512:                                              ; preds = %521, %511
  %513 = load i32, ptr %81, align 4, !tbaa !9
  %514 = load i32, ptr %11, align 4, !tbaa !9
  %515 = urem i32 %514, 4
  %516 = icmp ult i32 %513, %515
  br i1 %516, label %517, label %524

517:                                              ; preds = %512
  %518 = load i32, ptr %81, align 4, !tbaa !9
  %519 = zext i32 %518 to i64
  %520 = getelementptr inbounds [4 x i64], ptr %80, i64 0, i64 %519
  store i64 -1, ptr %520, align 8, !tbaa !35
  br label %521

521:                                              ; preds = %517
  %522 = load i32, ptr %81, align 4, !tbaa !9
  %523 = add i32 %522, 1
  store i32 %523, ptr %81, align 4, !tbaa !9
  br label %512, !llvm.loop !37

524:                                              ; preds = %512
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = getelementptr inbounds [4 x i64], ptr %80, i64 0, i64 0
  %527 = load i32, ptr %53, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %525, ptr noundef %526, ptr noundef @.str.16, i8 noundef signext 121, i32 noundef %527)
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #6
  br label %528

528:                                              ; preds = %524, %508, %504, %501
  br label %529

529:                                              ; preds = %528, %500
  %530 = load i32, ptr %62, align 4, !tbaa !9
  %531 = icmp ugt i32 %530, 0
  br i1 %531, label %532, label %563

532:                                              ; preds = %529
  %533 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %533, i32 noundef 5)
  %534 = load ptr, ptr %6, align 8, !tbaa !5
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %535, i32 0, i32 14
  %537 = load i32, ptr %536, align 4, !tbaa !31
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %534, i32 noundef %537, i32 noundef 4, i32 noundef 5)
  %538 = load ptr, ptr %6, align 8, !tbaa !5
  %539 = load ptr, ptr %9, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %539, i32 0, i32 11
  %541 = load i32, ptr %540, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %538, i32 noundef %541, i32 noundef 4, i64 noundef 40)
  %542 = load i32, ptr %57, align 4, !tbaa !9
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %549

544:                                              ; preds = %532
  %545 = load ptr, ptr %6, align 8, !tbaa !5
  %546 = load ptr, ptr %8, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %546, i32 0, i32 25
  %548 = load i32, ptr %547, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %545, i32 noundef -1568407413, i32 noundef %548, i64 noundef 4286578688)
  br label %549

549:                                              ; preds = %544, %532
  %550 = load i32, ptr %58, align 4, !tbaa !9
  %551 = icmp ne i32 %550, 0
  br i1 %551, label %552, label %557

552:                                              ; preds = %549
  %553 = load ptr, ptr %6, align 8, !tbaa !5
  %554 = load ptr, ptr %8, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %554, i32 0, i32 25
  %556 = load i32, ptr %555, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %553, i32 noundef -1568407413, i32 noundef %556, i64 noundef 2139095040)
  br label %557

557:                                              ; preds = %552, %549
  %558 = load ptr, ptr %6, align 8, !tbaa !5
  %559 = load i32, ptr %63, align 4, !tbaa !9
  %560 = load ptr, ptr %8, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %560, i32 0, i32 25
  %562 = load i32, ptr %561, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %558, i32 noundef -1568407413, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef %559, i32 noundef %562, i32 noundef 1)
  br label %563

563:                                              ; preds = %557, %529
  %564 = load ptr, ptr %10, align 8, !tbaa !5
  %565 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %564, i32 noundef 3)
  %566 = icmp eq i32 4, %565
  br i1 %566, label %567, label %569

567:                                              ; preds = %563
  %568 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf8_avx512_prep_stack(ptr noundef %568, i32 noundef 0)
  br label %593

569:                                              ; preds = %563
  %570 = load ptr, ptr %10, align 8, !tbaa !5
  %571 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %570, i32 noundef 3)
  %572 = icmp eq i32 2, %571
  br i1 %572, label %573, label %581

573:                                              ; preds = %569
  %574 = load ptr, ptr %6, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %574, i32 0, i32 6
  %576 = load i32, ptr %575, align 4, !tbaa !19
  %577 = icmp ult i32 %576, 1103
  br i1 %577, label %578, label %580

578:                                              ; preds = %573
  %579 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf16_avx512_prep_stack(ptr noundef %579, i32 noundef 0)
  br label %580

580:                                              ; preds = %578, %573
  br label %592

581:                                              ; preds = %569
  %582 = load ptr, ptr %10, align 8, !tbaa !5
  %583 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %582, i32 noundef 0)
  %584 = icmp eq i32 5, %583
  br i1 %584, label %589, label %585

585:                                              ; preds = %581
  %586 = load ptr, ptr %10, align 8, !tbaa !5
  %587 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %586, i32 noundef 3)
  %588 = icmp eq i32 5, %587
  br i1 %588, label %589, label %591

589:                                              ; preds = %585, %581
  %590 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef %590, i32 noundef 0)
  br label %591

591:                                              ; preds = %589, %585
  br label %592

592:                                              ; preds = %591, %580
  br label %593

593:                                              ; preds = %592, %567
  %594 = load i32, ptr %16, align 4, !tbaa !9
  %595 = load i32, ptr %15, align 4, !tbaa !9
  %596 = icmp ugt i32 %594, %595
  br i1 %596, label %597, label %621

597:                                              ; preds = %593
  %598 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %598, ptr %16, align 4, !tbaa !9
  %599 = load i32, ptr %14, align 4, !tbaa !9
  %600 = load i32, ptr %16, align 4, !tbaa !9
  %601 = udiv i32 %599, %600
  store i32 %601, ptr %17, align 4, !tbaa !9
  %602 = load i32, ptr %14, align 4, !tbaa !9
  %603 = load i32, ptr %16, align 4, !tbaa !9
  %604 = load i32, ptr %17, align 4, !tbaa !9
  %605 = mul i32 %603, %604
  %606 = sub i32 %602, %605
  store i32 %606, ptr %18, align 4, !tbaa !9
  %607 = load i32, ptr %13, align 4, !tbaa !9
  %608 = icmp ugt i32 %607, 0
  br i1 %608, label %609, label %620

609:                                              ; preds = %597
  %610 = load i32, ptr %18, align 4, !tbaa !9
  %611 = icmp eq i32 %610, 0
  br i1 %611, label %612, label %620

612:                                              ; preds = %609
  %613 = load i32, ptr %17, align 4, !tbaa !9
  %614 = add i32 %613, -1
  store i32 %614, ptr %17, align 4, !tbaa !9
  %615 = load i32, ptr %14, align 4, !tbaa !9
  %616 = load i32, ptr %16, align 4, !tbaa !9
  %617 = load i32, ptr %17, align 4, !tbaa !9
  %618 = mul i32 %616, %617
  %619 = sub i32 %615, %618
  store i32 %619, ptr %18, align 4, !tbaa !9
  br label %620

620:                                              ; preds = %612, %609, %597
  br label %636

621:                                              ; preds = %593
  %622 = load i32, ptr %13, align 4, !tbaa !9
  %623 = icmp ugt i32 %622, 0
  br i1 %623, label %624, label %635

624:                                              ; preds = %621
  %625 = load i32, ptr %18, align 4, !tbaa !9
  %626 = icmp eq i32 %625, 0
  br i1 %626, label %627, label %635

627:                                              ; preds = %624
  %628 = load i32, ptr %17, align 4, !tbaa !9
  %629 = add i32 %628, -1
  store i32 %629, ptr %17, align 4, !tbaa !9
  %630 = load i32, ptr %14, align 4, !tbaa !9
  %631 = load i32, ptr %16, align 4, !tbaa !9
  %632 = load i32, ptr %17, align 4, !tbaa !9
  %633 = mul i32 %631, %632
  %634 = sub i32 %630, %633
  store i32 %634, ptr %18, align 4, !tbaa !9
  br label %635

635:                                              ; preds = %627, %624, %621
  br label %636

636:                                              ; preds = %635, %620
  %637 = load i32, ptr %17, align 4, !tbaa !9
  %638 = icmp uge i32 %637, 1
  br i1 %638, label %639, label %642

639:                                              ; preds = %636
  %640 = load i32, ptr %31, align 4, !tbaa !9
  %641 = add i32 %640, 1
  store i32 %641, ptr %31, align 4, !tbaa !9
  br label %642

642:                                              ; preds = %639, %636
  %643 = load i32, ptr %18, align 4, !tbaa !9
  %644 = icmp ugt i32 %643, 0
  br i1 %644, label %645, label %648

645:                                              ; preds = %642
  %646 = load i32, ptr %31, align 4, !tbaa !9
  %647 = add i32 %646, 1
  store i32 %647, ptr %31, align 4, !tbaa !9
  br label %648

648:                                              ; preds = %645, %642
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %649

649:                                              ; preds = %1964, %648
  %650 = load i32, ptr %32, align 4, !tbaa !9
  %651 = load i32, ptr %31, align 4, !tbaa !9
  %652 = icmp ult i32 %650, %651
  br i1 %652, label %653, label %1967

653:                                              ; preds = %649
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  store i32 0, ptr %82, align 4, !tbaa !9
  %654 = load i32, ptr %17, align 4, !tbaa !9
  %655 = icmp ugt i32 %654, 1
  br i1 %655, label %656, label %666

656:                                              ; preds = %653
  %657 = load i32, ptr %32, align 4, !tbaa !9
  %658 = icmp eq i32 %657, 0
  br i1 %658, label %659, label %666

659:                                              ; preds = %656
  %660 = load ptr, ptr %6, align 8, !tbaa !5
  %661 = load ptr, ptr %7, align 8, !tbaa !5
  %662 = load ptr, ptr %9, align 8, !tbaa !5
  %663 = load ptr, ptr %8, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %663, i32 0, i32 24
  %665 = load i32, ptr %664, align 4, !tbaa !27
  call void @libxsmm_generator_mateltwise_header_m_loop(ptr noundef %660, ptr noundef %661, ptr noundef %662, i32 noundef %665)
  br label %666

666:                                              ; preds = %659, %656, %653
  %667 = load i32, ptr %17, align 4, !tbaa !9
  %668 = icmp eq i32 %667, 1
  br i1 %668, label %669, label %729

669:                                              ; preds = %666
  %670 = load i32, ptr %18, align 4, !tbaa !9
  %671 = icmp ugt i32 %670, 0
  br i1 %671, label %672, label %729

672:                                              ; preds = %669
  %673 = load i32, ptr %32, align 4, !tbaa !9
  %674 = load i32, ptr %31, align 4, !tbaa !9
  %675 = sub i32 %674, 1
  %676 = icmp eq i32 %673, %675
  br i1 %676, label %677, label %729

677:                                              ; preds = %672
  %678 = load ptr, ptr %6, align 8, !tbaa !5
  %679 = load ptr, ptr %9, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %679, i32 0, i32 10
  %681 = load i32, ptr %680, align 4, !tbaa !40
  %682 = load ptr, ptr %8, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %682, i32 0, i32 6
  %684 = load i32, ptr %683, align 4, !tbaa !26
  %685 = load i32, ptr %16, align 4, !tbaa !9
  %686 = zext i32 %685 to i64
  %687 = load i32, ptr %36, align 4, !tbaa !9
  %688 = zext i32 %687 to i64
  %689 = mul nsw i64 %686, %688
  %690 = load ptr, ptr %9, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %690, i32 0, i32 5
  %692 = load i32, ptr %691, align 4, !tbaa !41
  %693 = zext i32 %692 to i64
  %694 = mul nsw i64 %689, %693
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %678, i32 noundef %681, i32 noundef %684, i64 noundef %694)
  %695 = load i32, ptr %59, align 4, !tbaa !9
  %696 = icmp ugt i32 %695, 0
  br i1 %696, label %697, label %711

697:                                              ; preds = %677
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  %699 = load ptr, ptr %9, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %699, i32 0, i32 10
  %701 = load i32, ptr %700, align 4, !tbaa !40
  %702 = load i32, ptr %61, align 4, !tbaa !9
  %703 = load i32, ptr %16, align 4, !tbaa !9
  %704 = zext i32 %703 to i64
  %705 = load i32, ptr %36, align 4, !tbaa !9
  %706 = zext i32 %705 to i64
  %707 = mul nsw i64 %704, %706
  %708 = load i32, ptr %21, align 4, !tbaa !9
  %709 = zext i32 %708 to i64
  %710 = mul nsw i64 %707, %709
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %698, i32 noundef %701, i32 noundef %702, i64 noundef %710)
  br label %711

711:                                              ; preds = %697, %677
  %712 = load ptr, ptr %6, align 8, !tbaa !5
  %713 = load ptr, ptr %9, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %713, i32 0, i32 10
  %715 = load i32, ptr %714, align 4, !tbaa !40
  %716 = load ptr, ptr %8, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %716, i32 0, i32 28
  %718 = load i32, ptr %717, align 4, !tbaa !25
  %719 = load i32, ptr %16, align 4, !tbaa !9
  %720 = zext i32 %719 to i64
  %721 = load i32, ptr %36, align 4, !tbaa !9
  %722 = zext i32 %721 to i64
  %723 = mul nsw i64 %720, %722
  %724 = load ptr, ptr %9, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %724, i32 0, i32 2
  %726 = load i32, ptr %725, align 4, !tbaa !42
  %727 = zext i32 %726 to i64
  %728 = mul nsw i64 %723, %727
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %712, i32 noundef %715, i32 noundef %718, i64 noundef %728)
  br label %729

729:                                              ; preds = %711, %672, %669, %666
  %730 = load i32, ptr %17, align 4, !tbaa !9
  %731 = icmp eq i32 %730, 0
  br i1 %731, label %743, label %732

732:                                              ; preds = %729
  %733 = load i32, ptr %17, align 4, !tbaa !9
  %734 = icmp uge i32 %733, 1
  br i1 %734, label %735, label %745

735:                                              ; preds = %732
  %736 = load i32, ptr %18, align 4, !tbaa !9
  %737 = icmp ugt i32 %736, 0
  br i1 %737, label %738, label %745

738:                                              ; preds = %735
  %739 = load i32, ptr %32, align 4, !tbaa !9
  %740 = load i32, ptr %31, align 4, !tbaa !9
  %741 = sub i32 %740, 1
  %742 = icmp eq i32 %739, %741
  br i1 %742, label %743, label %745

743:                                              ; preds = %738, %729
  %744 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %744, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %745

745:                                              ; preds = %743, %738, %735, %732
  %746 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %746, ptr %20, align 4, !tbaa !9
  %747 = load i32, ptr %20, align 4, !tbaa !9
  %748 = mul i32 2, %747
  store i32 %748, ptr %71, align 4, !tbaa !9
  %749 = load i32, ptr %20, align 4, !tbaa !9
  %750 = mul i32 3, %749
  store i32 %750, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %751

751:                                              ; preds = %964, %745
  %752 = load i32, ptr %12, align 4, !tbaa !9
  %753 = load i32, ptr %16, align 4, !tbaa !9
  %754 = icmp ult i32 %752, %753
  br i1 %754, label %755, label %967

755:                                              ; preds = %751
  %756 = load i32, ptr %27, align 4, !tbaa !9
  %757 = icmp eq i32 %756, 0
  br i1 %757, label %758, label %793

758:                                              ; preds = %755
  %759 = load i32, ptr %57, align 4, !tbaa !9
  %760 = icmp ne i32 %759, 0
  br i1 %760, label %764, label %761

761:                                              ; preds = %758
  %762 = load i32, ptr %58, align 4, !tbaa !9
  %763 = icmp ne i32 %762, 0
  br i1 %763, label %764, label %784

764:                                              ; preds = %761, %758
  %765 = load i32, ptr %12, align 4, !tbaa !9
  %766 = icmp eq i32 %765, 0
  br i1 %766, label %767, label %777

767:                                              ; preds = %764
  %768 = load ptr, ptr %6, align 8, !tbaa !5
  %769 = load ptr, ptr %6, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %769, i32 0, i32 6
  %771 = load i32, ptr %770, align 4, !tbaa !19
  %772 = load i32, ptr %63, align 4, !tbaa !9
  %773 = load ptr, ptr %9, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %773, i32 0, i32 128
  %775 = load i8, ptr %774, align 4, !tbaa !14
  %776 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %768, i32 noundef %771, i32 noundef 537209368, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef %772, i8 noundef signext %775, i32 noundef %776, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %783

777:                                              ; preds = %764
  %778 = load ptr, ptr %6, align 8, !tbaa !5
  %779 = load ptr, ptr %9, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %779, i32 0, i32 128
  %781 = load i8, ptr %780, align 4, !tbaa !14
  %782 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %778, i32 noundef 537138704, i8 noundef signext %781, i32 noundef 0, i32 noundef %782)
  br label %783

783:                                              ; preds = %777, %767
  br label %792

784:                                              ; preds = %761
  %785 = load ptr, ptr %6, align 8, !tbaa !5
  %786 = load ptr, ptr %9, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %786, i32 0, i32 128
  %788 = load i8, ptr %787, align 4, !tbaa !14
  %789 = load i32, ptr %12, align 4, !tbaa !9
  %790 = load i32, ptr %12, align 4, !tbaa !9
  %791 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %785, i32 noundef 805574231, i8 noundef signext %788, i32 noundef %789, i32 noundef %790, i32 noundef %791)
  br label %792

792:                                              ; preds = %784, %783
  br label %929

793:                                              ; preds = %755
  %794 = load ptr, ptr %10, align 8, !tbaa !5
  %795 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %794, i32 noundef 3)
  %796 = icmp eq i32 3, %795
  br i1 %796, label %797, label %833

797:                                              ; preds = %793
  %798 = load ptr, ptr %6, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %798, i32 0, i32 6
  %800 = load i32, ptr %799, align 4, !tbaa !19
  %801 = icmp uge i32 %800, 1051
  br i1 %801, label %802, label %833

802:                                              ; preds = %797
  %803 = load ptr, ptr %6, align 8, !tbaa !5
  %804 = load ptr, ptr %9, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %804, i32 0, i32 128
  %806 = load i8, ptr %805, align 4, !tbaa !14
  %807 = load ptr, ptr %8, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %807, i32 0, i32 6
  %809 = load i32, ptr %808, align 4, !tbaa !26
  %810 = load i32, ptr %12, align 4, !tbaa !9
  %811 = load i32, ptr %36, align 4, !tbaa !9
  %812 = mul i32 %810, %811
  %813 = load ptr, ptr %9, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %813, i32 0, i32 5
  %815 = load i32, ptr %814, align 4, !tbaa !41
  %816 = mul i32 %812, %815
  %817 = load i32, ptr %12, align 4, !tbaa !9
  %818 = load i32, ptr %12, align 4, !tbaa !9
  %819 = load i32, ptr %18, align 4, !tbaa !9
  %820 = sub i32 %819, 1
  %821 = icmp eq i32 %818, %820
  br i1 %821, label %822, label %830

822:                                              ; preds = %802
  %823 = load i32, ptr %13, align 4, !tbaa !9
  %824 = icmp ugt i32 %823, 0
  br i1 %824, label %825, label %830

825:                                              ; preds = %822
  %826 = load i32, ptr %82, align 4, !tbaa !9
  %827 = icmp ugt i32 %826, 0
  br i1 %827, label %828, label %830

828:                                              ; preds = %825
  %829 = load i32, ptr %13, align 4, !tbaa !9
  br label %831

830:                                              ; preds = %825, %822, %802
  br label %831

831:                                              ; preds = %830, %828
  %832 = phi i32 [ %829, %828 ], [ 0, %830 ]
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef %803, i32 noundef 537208083, i8 noundef signext %806, i32 noundef %809, i32 noundef 127, i32 noundef 0, i32 noundef %816, i32 noundef 0, i32 noundef 255, i32 noundef %817, i32 noundef %832, i32 noundef 0, i32 noundef 0)
  br label %928

833:                                              ; preds = %797, %793
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = load i32, ptr %40, align 4, !tbaa !9
  %836 = load ptr, ptr %8, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %836, i32 0, i32 6
  %838 = load i32, ptr %837, align 4, !tbaa !26
  %839 = load i32, ptr %12, align 4, !tbaa !9
  %840 = load i32, ptr %36, align 4, !tbaa !9
  %841 = mul i32 %839, %840
  %842 = load ptr, ptr %9, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %842, i32 0, i32 5
  %844 = load i32, ptr %843, align 4, !tbaa !41
  %845 = mul i32 %841, %844
  %846 = load i8, ptr %38, align 1, !tbaa !16
  %847 = load i32, ptr %12, align 4, !tbaa !9
  %848 = load i32, ptr %12, align 4, !tbaa !9
  %849 = load i32, ptr %18, align 4, !tbaa !9
  %850 = sub i32 %849, 1
  %851 = icmp eq i32 %848, %850
  br i1 %851, label %852, label %858

852:                                              ; preds = %833
  %853 = load i32, ptr %13, align 4, !tbaa !9
  %854 = icmp ugt i32 %853, 0
  br i1 %854, label %855, label %858

855:                                              ; preds = %852
  %856 = load i32, ptr %82, align 4, !tbaa !9
  %857 = icmp ugt i32 %856, 0
  br label %858

858:                                              ; preds = %855, %852, %833
  %859 = phi i1 [ false, %852 ], [ false, %833 ], [ %857, %855 ]
  %860 = zext i1 %859 to i64
  %861 = select i1 %859, i32 1, i32 0
  %862 = load i32, ptr %12, align 4, !tbaa !9
  %863 = load i32, ptr %18, align 4, !tbaa !9
  %864 = sub i32 %863, 1
  %865 = icmp eq i32 %862, %864
  br i1 %865, label %866, label %874

866:                                              ; preds = %858
  %867 = load i32, ptr %13, align 4, !tbaa !9
  %868 = icmp ugt i32 %867, 0
  br i1 %868, label %869, label %874

869:                                              ; preds = %866
  %870 = load i32, ptr %82, align 4, !tbaa !9
  %871 = icmp ugt i32 %870, 0
  br i1 %871, label %872, label %874

872:                                              ; preds = %869
  %873 = load i32, ptr %43, align 4, !tbaa !9
  br label %875

874:                                              ; preds = %869, %866, %858
  br label %875

875:                                              ; preds = %874, %872
  %876 = phi i32 [ %873, %872 ], [ 0, %874 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %834, i32 noundef %835, i32 noundef %838, i32 noundef 127, i32 noundef 0, i32 noundef %845, i8 noundef signext %846, i32 noundef %847, i32 noundef %861, i32 noundef %876, i32 noundef 0)
  %877 = load ptr, ptr %10, align 8, !tbaa !5
  %878 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %877, i32 noundef 3)
  %879 = icmp eq i32 4, %878
  br i1 %879, label %880, label %887

880:                                              ; preds = %875
  %881 = load ptr, ptr %6, align 8, !tbaa !5
  %882 = load ptr, ptr %9, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %882, i32 0, i32 128
  %884 = load i8, ptr %883, align 4, !tbaa !14
  %885 = load i32, ptr %12, align 4, !tbaa !9
  %886 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %881, i8 noundef signext %884, i32 noundef %885, i32 noundef %886)
  br label %927

887:                                              ; preds = %875
  %888 = load ptr, ptr %10, align 8, !tbaa !5
  %889 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %888, i32 noundef 3)
  %890 = icmp eq i32 5, %889
  br i1 %890, label %891, label %902

891:                                              ; preds = %887
  %892 = load ptr, ptr %6, align 8, !tbaa !5
  %893 = load ptr, ptr %9, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %893, i32 0, i32 128
  %895 = load i8, ptr %894, align 4, !tbaa !14
  %896 = load i32, ptr %12, align 4, !tbaa !9
  %897 = load i32, ptr %12, align 4, !tbaa !9
  %898 = load i32, ptr %44, align 4, !tbaa !9
  %899 = load i32, ptr %45, align 4, !tbaa !9
  %900 = load i32, ptr %48, align 4, !tbaa !9
  %901 = load i32, ptr %49, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %892, i8 noundef signext %895, i32 noundef %896, i32 noundef %897, i32 noundef %898, i32 noundef %899, i32 noundef %900, i32 noundef %901)
  br label %926

902:                                              ; preds = %887
  %903 = load ptr, ptr %10, align 8, !tbaa !5
  %904 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %903, i32 noundef 3)
  %905 = icmp eq i32 2, %904
  br i1 %905, label %906, label %913

906:                                              ; preds = %902
  %907 = load ptr, ptr %6, align 8, !tbaa !5
  %908 = load ptr, ptr %9, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %908, i32 0, i32 128
  %910 = load i8, ptr %909, align 4, !tbaa !14
  %911 = load i32, ptr %12, align 4, !tbaa !9
  %912 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %907, i8 noundef signext %910, i32 noundef %911, i32 noundef %912)
  br label %925

913:                                              ; preds = %902
  %914 = load ptr, ptr %10, align 8, !tbaa !5
  %915 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %914, i32 noundef 3)
  %916 = icmp eq i32 3, %915
  br i1 %916, label %917, label %924

917:                                              ; preds = %913
  %918 = load ptr, ptr %6, align 8, !tbaa !5
  %919 = load ptr, ptr %9, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %919, i32 0, i32 128
  %921 = load i8, ptr %920, align 4, !tbaa !14
  %922 = load i32, ptr %12, align 4, !tbaa !9
  %923 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %918, i32 noundef 537208083, i8 noundef signext %921, i32 noundef %922, i32 noundef %923)
  br label %924

924:                                              ; preds = %917, %913
  br label %925

925:                                              ; preds = %924, %906
  br label %926

926:                                              ; preds = %925, %891
  br label %927

927:                                              ; preds = %926, %880
  br label %928

928:                                              ; preds = %927, %831
  br label %929

929:                                              ; preds = %928, %792
  %930 = load i32, ptr %59, align 4, !tbaa !9
  %931 = icmp ugt i32 %930, 0
  br i1 %931, label %932, label %963

932:                                              ; preds = %929
  %933 = load ptr, ptr %6, align 8, !tbaa !5
  %934 = load ptr, ptr %9, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %934, i32 0, i32 128
  %936 = load i8, ptr %935, align 4, !tbaa !14
  %937 = load i32, ptr %12, align 4, !tbaa !9
  %938 = load i32, ptr %71, align 4, !tbaa !9
  %939 = add i32 %937, %938
  %940 = load i32, ptr %12, align 4, !tbaa !9
  %941 = load i32, ptr %71, align 4, !tbaa !9
  %942 = add i32 %940, %941
  %943 = load i32, ptr %12, align 4, !tbaa !9
  %944 = load i32, ptr %71, align 4, !tbaa !9
  %945 = add i32 %943, %944
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %933, i32 noundef 805574231, i8 noundef signext %936, i32 noundef %939, i32 noundef %942, i32 noundef %945)
  %946 = load i32, ptr %21, align 4, !tbaa !9
  %947 = icmp eq i32 %946, 8
  br i1 %947, label %948, label %962

948:                                              ; preds = %932
  %949 = load ptr, ptr %6, align 8, !tbaa !5
  %950 = load ptr, ptr %9, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %950, i32 0, i32 128
  %952 = load i8, ptr %951, align 4, !tbaa !14
  %953 = load i32, ptr %12, align 4, !tbaa !9
  %954 = load i32, ptr %72, align 4, !tbaa !9
  %955 = add i32 %953, %954
  %956 = load i32, ptr %12, align 4, !tbaa !9
  %957 = load i32, ptr %72, align 4, !tbaa !9
  %958 = add i32 %956, %957
  %959 = load i32, ptr %12, align 4, !tbaa !9
  %960 = load i32, ptr %72, align 4, !tbaa !9
  %961 = add i32 %959, %960
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %949, i32 noundef 805574231, i8 noundef signext %952, i32 noundef %955, i32 noundef %958, i32 noundef %961)
  br label %962

962:                                              ; preds = %948, %932
  br label %963

963:                                              ; preds = %962, %929
  br label %964

964:                                              ; preds = %963
  %965 = load i32, ptr %12, align 4, !tbaa !9
  %966 = add i32 %965, 1
  store i32 %966, ptr %12, align 4, !tbaa !9
  br label %751, !llvm.loop !43

967:                                              ; preds = %751
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %968

968:                                              ; preds = %1532, %967
  %969 = load i32, ptr %30, align 4, !tbaa !9
  %970 = load i32, ptr %29, align 4, !tbaa !9
  %971 = icmp ult i32 %969, %970
  br i1 %971, label %972, label %1535

972:                                              ; preds = %968
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  %973 = load i32, ptr %23, align 4, !tbaa !9
  %974 = icmp sgt i32 %973, 0
  br i1 %974, label %975, label %978

975:                                              ; preds = %972
  %976 = load i32, ptr %30, align 4, !tbaa !9
  %977 = icmp eq i32 %976, 0
  br label %978

978:                                              ; preds = %975, %972
  %979 = phi i1 [ false, %972 ], [ %977, %975 ]
  %980 = zext i1 %979 to i64
  %981 = select i1 %979, i32 1, i32 0
  store i32 %981, ptr %83, align 4, !tbaa !9
  %982 = load i32, ptr %83, align 4, !tbaa !9
  %983 = icmp ne i32 %982, 0
  br i1 %983, label %984, label %1016

984:                                              ; preds = %978
  %985 = load ptr, ptr %6, align 8, !tbaa !5
  %986 = load ptr, ptr %9, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %986, i32 0, i32 14
  %988 = load i32, ptr %987, align 4, !tbaa !31
  %989 = load ptr, ptr %8, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %989, i32 0, i32 25
  %991 = load i32, ptr %990, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %985, i32 noundef %988, i32 noundef %991, i64 noundef 0)
  %992 = load ptr, ptr %6, align 8, !tbaa !5
  %993 = load ptr, ptr %9, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %993, i32 0, i32 12
  %995 = load i32, ptr %994, align 4, !tbaa !33
  %996 = load ptr, ptr %8, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %996, i32 0, i32 26
  %998 = load i32, ptr %997, align 4, !tbaa !22
  %999 = load i32, ptr %23, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %992, i32 noundef %995, i32 noundef %998, i64 noundef %1000)
  %1001 = load ptr, ptr %6, align 8, !tbaa !5
  %1002 = load i32, ptr %32, align 4, !tbaa !9
  %1003 = icmp eq i32 %1002, 0
  br i1 %1003, label %1004, label %1006

1004:                                             ; preds = %984
  %1005 = load i32, ptr %33, align 4, !tbaa !9
  br label %1008

1006:                                             ; preds = %984
  %1007 = load i32, ptr %34, align 4, !tbaa !9
  br label %1008

1008:                                             ; preds = %1006, %1004
  %1009 = phi i32 [ %1005, %1004 ], [ %1007, %1006 ]
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %1001, i32 noundef 30107, i32 noundef %1009, ptr noundef %79)
  %1010 = load ptr, ptr %6, align 8, !tbaa !5
  %1011 = load ptr, ptr %8, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1011, i32 0, i32 26
  %1013 = load i32, ptr %1012, align 4, !tbaa !22
  %1014 = load i32, ptr %23, align 4, !tbaa !9
  %1015 = sext i32 %1014 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1010, i32 noundef 30008, i32 noundef %1013, i64 noundef %1015)
  br label %1016

1016:                                             ; preds = %1008, %978
  %1017 = load ptr, ptr %6, align 8, !tbaa !5
  %1018 = load ptr, ptr %7, align 8, !tbaa !5
  %1019 = load ptr, ptr %9, align 8, !tbaa !5
  %1020 = load ptr, ptr %8, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1020, i32 0, i32 25
  %1022 = load i32, ptr %1021, align 4, !tbaa !28
  %1023 = load i32, ptr %23, align 4, !tbaa !9
  %1024 = icmp sgt i32 %1023, 0
  %1025 = zext i1 %1024 to i64
  %1026 = select i1 %1024, i32 1, i32 0
  call void @libxsmm_generator_mateltwise_header_n_dyn_loop(ptr noundef %1017, ptr noundef %1018, ptr noundef %1019, i32 noundef %1022, i32 noundef %1026)
  %1027 = load ptr, ptr %6, align 8, !tbaa !5
  %1028 = load i32, ptr %22, align 4, !tbaa !9
  %1029 = load ptr, ptr %8, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1029, i32 0, i32 27
  %1031 = load i32, ptr %1030, align 4, !tbaa !24
  %1032 = load ptr, ptr %8, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1032, i32 0, i32 25
  %1034 = load i32, ptr %1033, align 4, !tbaa !28
  %1035 = load i32, ptr %21, align 4, !tbaa !9
  %1036 = load ptr, ptr %8, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1036, i32 0, i32 1
  %1038 = load i32, ptr %1037, align 4, !tbaa !29
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1027, i32 noundef %1028, i32 noundef %1031, i32 noundef %1034, i32 noundef %1035, i32 noundef 0, i32 noundef %1038, i32 noundef 0)
  %1039 = load i32, ptr %83, align 4, !tbaa !9
  %1040 = icmp ne i32 %1039, 0
  br i1 %1040, label %1041, label %1057

1041:                                             ; preds = %1016
  %1042 = load ptr, ptr %6, align 8, !tbaa !5
  %1043 = load i32, ptr %22, align 4, !tbaa !9
  %1044 = load ptr, ptr %8, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1044, i32 0, i32 27
  %1046 = load i32, ptr %1045, align 4, !tbaa !24
  %1047 = load ptr, ptr %8, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1047, i32 0, i32 25
  %1049 = load i32, ptr %1048, align 4, !tbaa !28
  %1050 = load i32, ptr %21, align 4, !tbaa !9
  %1051 = load i32, ptr %23, align 4, !tbaa !9
  %1052 = load i32, ptr %21, align 4, !tbaa !9
  %1053 = mul i32 %1051, %1052
  %1054 = load ptr, ptr %8, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1054, i32 0, i32 4
  %1056 = load i32, ptr %1055, align 4, !tbaa !30
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1042, i32 noundef %1043, i32 noundef %1046, i32 noundef %1049, i32 noundef %1050, i32 noundef %1053, i32 noundef %1056, i32 noundef 0)
  br label %1057

1057:                                             ; preds = %1041, %1016
  %1058 = load i32, ptr %59, align 4, !tbaa !9
  %1059 = icmp ugt i32 %1058, 0
  br i1 %1059, label %1060, label %1088

1060:                                             ; preds = %1057
  %1061 = load ptr, ptr %6, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1061, i32 0, i32 6
  %1063 = load i32, ptr %1062, align 4, !tbaa !19
  %1064 = icmp uge i32 %1063, 1051
  br i1 %1064, label %1065, label %1073

1065:                                             ; preds = %1060
  %1066 = load ptr, ptr %6, align 8, !tbaa !5
  %1067 = load i32, ptr %67, align 4, !tbaa !9
  %1068 = load i8, ptr %65, align 1, !tbaa !16
  %1069 = load ptr, ptr %8, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1069, i32 0, i32 1
  %1071 = load i32, ptr %1070, align 4, !tbaa !29
  %1072 = load i32, ptr %51, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1066, i32 noundef %1067, i8 noundef signext %1068, i32 noundef %1071, i32 noundef 255, i32 noundef %1072, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0)
  br label %1087

1073:                                             ; preds = %1060
  %1074 = load ptr, ptr %6, align 8, !tbaa !5
  %1075 = load i32, ptr %64, align 4, !tbaa !9
  %1076 = load ptr, ptr %8, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1076, i32 0, i32 1
  %1078 = load i32, ptr %1077, align 4, !tbaa !29
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1074, i32 noundef -1568407413, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef %1075, i32 noundef %1078, i32 noundef 1)
  %1079 = load ptr, ptr %6, align 8, !tbaa !5
  %1080 = load ptr, ptr %9, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1080, i32 0, i32 0
  %1082 = load i32, ptr %1081, align 4, !tbaa !44
  %1083 = load i32, ptr %66, align 4, !tbaa !9
  %1084 = load i32, ptr %64, align 4, !tbaa !9
  %1085 = load i8, ptr %65, align 1, !tbaa !16
  %1086 = load i32, ptr %51, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1079, i32 noundef %1082, i32 noundef %1083, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef %1084, i8 noundef signext %1085, i32 noundef %1086, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  br label %1087

1087:                                             ; preds = %1073, %1065
  br label %1088

1088:                                             ; preds = %1087, %1057
  %1089 = load ptr, ptr %6, align 8, !tbaa !5
  %1090 = load ptr, ptr %8, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1090, i32 0, i32 1
  %1092 = load i32, ptr %1091, align 4, !tbaa !29
  %1093 = load ptr, ptr %10, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1093, i32 0, i32 2
  %1095 = load i32, ptr %1094, align 1, !tbaa !45
  %1096 = zext i32 %1095 to i64
  %1097 = load ptr, ptr %9, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1097, i32 0, i32 2
  %1099 = load i32, ptr %1098, align 4, !tbaa !42
  %1100 = zext i32 %1099 to i64
  %1101 = mul nsw i64 %1096, %1100
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1089, i32 noundef 30003, i32 noundef %1092, i64 noundef %1101)
  %1102 = load i32, ptr %83, align 4, !tbaa !9
  %1103 = icmp ne i32 %1102, 0
  br i1 %1103, label %1104, label %1118

1104:                                             ; preds = %1088
  %1105 = load ptr, ptr %6, align 8, !tbaa !5
  %1106 = load ptr, ptr %8, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1106, i32 0, i32 4
  %1108 = load i32, ptr %1107, align 4, !tbaa !30
  %1109 = load ptr, ptr %10, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1109, i32 0, i32 2
  %1111 = load i32, ptr %1110, align 1, !tbaa !45
  %1112 = zext i32 %1111 to i64
  %1113 = load ptr, ptr %9, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1113, i32 0, i32 2
  %1115 = load i32, ptr %1114, align 4, !tbaa !42
  %1116 = zext i32 %1115 to i64
  %1117 = mul nsw i64 %1112, %1116
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1105, i32 noundef 30003, i32 noundef %1108, i64 noundef %1117)
  br label %1118

1118:                                             ; preds = %1104, %1088
  %1119 = load ptr, ptr %6, align 8, !tbaa !5
  %1120 = load ptr, ptr %9, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1120, i32 0, i32 10
  %1122 = load i32, ptr %1121, align 4, !tbaa !40
  %1123 = load ptr, ptr %8, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1123, i32 0, i32 28
  %1125 = load i32, ptr %1124, align 4, !tbaa !25
  %1126 = load ptr, ptr %8, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1126, i32 0, i32 1
  %1128 = load i32, ptr %1127, align 4, !tbaa !29
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1119, i32 noundef %1122, i32 noundef %1125, i32 noundef %1128)
  %1129 = load i32, ptr %83, align 4, !tbaa !9
  %1130 = icmp ne i32 %1129, 0
  br i1 %1130, label %1131, label %1142

1131:                                             ; preds = %1118
  %1132 = load ptr, ptr %6, align 8, !tbaa !5
  %1133 = load ptr, ptr %9, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1133, i32 0, i32 10
  %1135 = load i32, ptr %1134, align 4, !tbaa !40
  %1136 = load ptr, ptr %8, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1136, i32 0, i32 28
  %1138 = load i32, ptr %1137, align 4, !tbaa !25
  %1139 = load ptr, ptr %8, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1139, i32 0, i32 4
  %1141 = load i32, ptr %1140, align 4, !tbaa !30
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %1132, i32 noundef %1135, i32 noundef %1138, i32 noundef %1141)
  br label %1142

1142:                                             ; preds = %1131, %1118
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1143

1143:                                             ; preds = %1493, %1142
  %1144 = load i32, ptr %12, align 4, !tbaa !9
  %1145 = load i32, ptr %16, align 4, !tbaa !9
  %1146 = icmp ult i32 %1144, %1145
  br i1 %1146, label %1147, label %1496

1147:                                             ; preds = %1143
  %1148 = load ptr, ptr %10, align 8, !tbaa !5
  %1149 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1148, i32 noundef 0)
  %1150 = icmp eq i32 3, %1149
  br i1 %1150, label %1151, label %1202

1151:                                             ; preds = %1147
  %1152 = load ptr, ptr %6, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1152, i32 0, i32 6
  %1154 = load i32, ptr %1153, align 4, !tbaa !19
  %1155 = icmp uge i32 %1154, 1051
  br i1 %1155, label %1156, label %1202

1156:                                             ; preds = %1151
  %1157 = load i32, ptr %56, align 4, !tbaa !9
  %1158 = icmp ugt i32 %1157, 0
  br i1 %1158, label %1159, label %1202

1159:                                             ; preds = %1156
  %1160 = load ptr, ptr %6, align 8, !tbaa !5
  %1161 = load ptr, ptr %9, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1161, i32 0, i32 128
  %1163 = load i8, ptr %1162, align 4, !tbaa !14
  %1164 = load ptr, ptr %8, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1164, i32 0, i32 1
  %1166 = load i32, ptr %1165, align 4, !tbaa !29
  %1167 = load i32, ptr %12, align 4, !tbaa !9
  %1168 = load i32, ptr %36, align 4, !tbaa !9
  %1169 = mul i32 %1167, %1168
  %1170 = load ptr, ptr %9, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1170, i32 0, i32 2
  %1172 = load i32, ptr %1171, align 4, !tbaa !42
  %1173 = mul i32 %1169, %1172
  %1174 = load i32, ptr %12, align 4, !tbaa !9
  %1175 = load i32, ptr %20, align 4, !tbaa !9
  %1176 = add i32 %1174, %1175
  %1177 = load i32, ptr %12, align 4, !tbaa !9
  %1178 = load i32, ptr %18, align 4, !tbaa !9
  %1179 = sub i32 %1178, 1
  %1180 = icmp eq i32 %1177, %1179
  br i1 %1180, label %1181, label %1189

1181:                                             ; preds = %1159
  %1182 = load i32, ptr %13, align 4, !tbaa !9
  %1183 = icmp ugt i32 %1182, 0
  br i1 %1183, label %1184, label %1189

1184:                                             ; preds = %1181
  %1185 = load i32, ptr %82, align 4, !tbaa !9
  %1186 = icmp ugt i32 %1185, 0
  br i1 %1186, label %1187, label %1189

1187:                                             ; preds = %1184
  %1188 = load i32, ptr %13, align 4, !tbaa !9
  br label %1190

1189:                                             ; preds = %1184, %1181, %1159
  br label %1190

1190:                                             ; preds = %1189, %1187
  %1191 = phi i32 [ %1188, %1187 ], [ 0, %1189 ]
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef %1160, i32 noundef 537208083, i8 noundef signext %1163, i32 noundef %1166, i32 noundef 127, i32 noundef 0, i32 noundef %1173, i32 noundef 0, i32 noundef 255, i32 noundef %1176, i32 noundef %1191, i32 noundef 0, i32 noundef 0)
  %1192 = load ptr, ptr %6, align 8, !tbaa !5
  %1193 = load i32, ptr %60, align 4, !tbaa !9
  %1194 = load ptr, ptr %9, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1194, i32 0, i32 128
  %1196 = load i8, ptr %1195, align 4, !tbaa !14
  %1197 = load i32, ptr %12, align 4, !tbaa !9
  %1198 = load i32, ptr %12, align 4, !tbaa !9
  %1199 = load i32, ptr %20, align 4, !tbaa !9
  %1200 = add i32 %1198, %1199
  %1201 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1192, i32 noundef %1193, i8 noundef signext %1196, i32 noundef %1197, i32 noundef %1200, i32 noundef %1201)
  br label %1466

1202:                                             ; preds = %1156, %1151, %1147
  %1203 = load ptr, ptr %10, align 8, !tbaa !5
  %1204 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1203, i32 noundef 0)
  %1205 = icmp eq i32 1, %1204
  br i1 %1205, label %1206, label %1237

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

1209:                                             ; preds = %1206
  %1210 = load i32, ptr %12, align 4, !tbaa !9
  %1211 = load i32, ptr %18, align 4, !tbaa !9
  %1212 = sub i32 %1211, 1
  %1213 = icmp eq i32 %1210, %1212
  br i1 %1213, label %1214, label %1220

1214:                                             ; preds = %1209
  %1215 = load i32, ptr %13, align 4, !tbaa !9
  %1216 = icmp ugt i32 %1215, 0
  br i1 %1216, label %1217, label %1220

1217:                                             ; preds = %1214
  %1218 = load i32, ptr %82, align 4, !tbaa !9
  %1219 = icmp ugt i32 %1218, 0
  br i1 %1219, label %1237, label %1220

1220:                                             ; preds = %1217, %1214, %1209
  %1221 = load ptr, ptr %6, align 8, !tbaa !5
  %1222 = load ptr, ptr %9, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1222, i32 0, i32 128
  %1224 = load i8, ptr %1223, align 4, !tbaa !14
  %1225 = load ptr, ptr %8, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1225, i32 0, i32 1
  %1227 = load i32, ptr %1226, align 4, !tbaa !29
  %1228 = load i32, ptr %12, align 4, !tbaa !9
  %1229 = load i32, ptr %36, align 4, !tbaa !9
  %1230 = mul i32 %1228, %1229
  %1231 = load ptr, ptr %9, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1231, i32 0, i32 2
  %1233 = load i32, ptr %1232, align 4, !tbaa !42
  %1234 = mul i32 %1230, %1233
  %1235 = load i32, ptr %12, align 4, !tbaa !9
  %1236 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef %1221, i32 noundef 805574232, i8 noundef signext %1224, i32 noundef %1227, i32 noundef 127, i32 noundef 0, i32 noundef %1234, i32 noundef 0, i32 noundef %1235, i32 noundef %1236)
  br label %1465

1237:                                             ; preds = %1217, %1206, %1202
  %1238 = load ptr, ptr %6, align 8, !tbaa !5
  %1239 = load i32, ptr %39, align 4, !tbaa !9
  %1240 = load ptr, ptr %8, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1240, i32 0, i32 1
  %1242 = load i32, ptr %1241, align 4, !tbaa !29
  %1243 = load i32, ptr %12, align 4, !tbaa !9
  %1244 = load i32, ptr %36, align 4, !tbaa !9
  %1245 = mul i32 %1243, %1244
  %1246 = load ptr, ptr %9, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1246, i32 0, i32 2
  %1248 = load i32, ptr %1247, align 4, !tbaa !42
  %1249 = mul i32 %1245, %1248
  %1250 = load i8, ptr %37, align 1, !tbaa !16
  %1251 = load i32, ptr %12, align 4, !tbaa !9
  %1252 = load i32, ptr %20, align 4, !tbaa !9
  %1253 = add i32 %1251, %1252
  %1254 = load i32, ptr %12, align 4, !tbaa !9
  %1255 = load i32, ptr %18, align 4, !tbaa !9
  %1256 = sub i32 %1255, 1
  %1257 = icmp eq i32 %1254, %1256
  br i1 %1257, label %1258, label %1266

1258:                                             ; preds = %1237
  %1259 = load i32, ptr %13, align 4, !tbaa !9
  %1260 = icmp ugt i32 %1259, 0
  br i1 %1260, label %1261, label %1266

1261:                                             ; preds = %1258
  %1262 = load i32, ptr %82, align 4, !tbaa !9
  %1263 = icmp ugt i32 %1262, 0
  br i1 %1263, label %1264, label %1266

1264:                                             ; preds = %1261
  %1265 = load i32, ptr %13, align 4, !tbaa !9
  br label %1267

1266:                                             ; preds = %1261, %1258, %1237
  br label %1267

1267:                                             ; preds = %1266, %1264
  %1268 = phi i32 [ %1265, %1264 ], [ 0, %1266 ]
  %1269 = load i32, ptr %12, align 4, !tbaa !9
  %1270 = load i32, ptr %18, align 4, !tbaa !9
  %1271 = sub i32 %1270, 1
  %1272 = icmp eq i32 %1269, %1271
  br i1 %1272, label %1273, label %1281

1273:                                             ; preds = %1267
  %1274 = load i32, ptr %13, align 4, !tbaa !9
  %1275 = icmp ugt i32 %1274, 0
  br i1 %1275, label %1276, label %1281

1276:                                             ; preds = %1273
  %1277 = load i32, ptr %82, align 4, !tbaa !9
  %1278 = icmp ugt i32 %1277, 0
  br i1 %1278, label %1279, label %1281

1279:                                             ; preds = %1276
  %1280 = load i32, ptr %42, align 4, !tbaa !9
  br label %1282

1281:                                             ; preds = %1276, %1273, %1267
  br label %1282

1282:                                             ; preds = %1281, %1279
  %1283 = phi i32 [ %1280, %1279 ], [ 0, %1281 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1238, i32 noundef %1239, i32 noundef %1242, i32 noundef 127, i32 noundef 0, i32 noundef %1249, i8 noundef signext %1250, i32 noundef %1253, i32 noundef %1268, i32 noundef %1283, i32 noundef 0)
  %1284 = load ptr, ptr %10, align 8, !tbaa !5
  %1285 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1284, i32 noundef 0)
  %1286 = icmp eq i32 4, %1285
  br i1 %1286, label %1287, label %1298

1287:                                             ; preds = %1282
  %1288 = load ptr, ptr %6, align 8, !tbaa !5
  %1289 = load ptr, ptr %9, align 8, !tbaa !5
  %1290 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1289, i32 0, i32 128
  %1291 = load i8, ptr %1290, align 4, !tbaa !14
  %1292 = load i32, ptr %12, align 4, !tbaa !9
  %1293 = load i32, ptr %20, align 4, !tbaa !9
  %1294 = add i32 %1292, %1293
  %1295 = load i32, ptr %12, align 4, !tbaa !9
  %1296 = load i32, ptr %20, align 4, !tbaa !9
  %1297 = add i32 %1295, %1296
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1288, i8 noundef signext %1291, i32 noundef %1294, i32 noundef %1297)
  br label %1351

1298:                                             ; preds = %1282
  %1299 = load ptr, ptr %10, align 8, !tbaa !5
  %1300 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1299, i32 noundef 0)
  %1301 = icmp eq i32 5, %1300
  br i1 %1301, label %1302, label %1317

1302:                                             ; preds = %1298
  %1303 = load ptr, ptr %6, align 8, !tbaa !5
  %1304 = load ptr, ptr %9, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1304, i32 0, i32 128
  %1306 = load i8, ptr %1305, align 4, !tbaa !14
  %1307 = load i32, ptr %12, align 4, !tbaa !9
  %1308 = load i32, ptr %20, align 4, !tbaa !9
  %1309 = add i32 %1307, %1308
  %1310 = load i32, ptr %12, align 4, !tbaa !9
  %1311 = load i32, ptr %20, align 4, !tbaa !9
  %1312 = add i32 %1310, %1311
  %1313 = load i32, ptr %44, align 4, !tbaa !9
  %1314 = load i32, ptr %45, align 4, !tbaa !9
  %1315 = load i32, ptr %48, align 4, !tbaa !9
  %1316 = load i32, ptr %49, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1303, i8 noundef signext %1306, i32 noundef %1309, i32 noundef %1312, i32 noundef %1313, i32 noundef %1314, i32 noundef %1315, i32 noundef %1316)
  br label %1350

1317:                                             ; preds = %1298
  %1318 = load ptr, ptr %10, align 8, !tbaa !5
  %1319 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1318, i32 noundef 0)
  %1320 = icmp eq i32 2, %1319
  br i1 %1320, label %1321, label %1332

1321:                                             ; preds = %1317
  %1322 = load ptr, ptr %6, align 8, !tbaa !5
  %1323 = load ptr, ptr %9, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1323, i32 0, i32 128
  %1325 = load i8, ptr %1324, align 4, !tbaa !14
  %1326 = load i32, ptr %12, align 4, !tbaa !9
  %1327 = load i32, ptr %20, align 4, !tbaa !9
  %1328 = add i32 %1326, %1327
  %1329 = load i32, ptr %12, align 4, !tbaa !9
  %1330 = load i32, ptr %20, align 4, !tbaa !9
  %1331 = add i32 %1329, %1330
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1322, i8 noundef signext %1325, i32 noundef %1328, i32 noundef %1331)
  br label %1349

1332:                                             ; preds = %1317
  %1333 = load ptr, ptr %10, align 8, !tbaa !5
  %1334 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1333, i32 noundef 0)
  %1335 = icmp eq i32 3, %1334
  br i1 %1335, label %1336, label %1347

1336:                                             ; preds = %1332
  %1337 = load ptr, ptr %6, align 8, !tbaa !5
  %1338 = load ptr, ptr %9, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1338, i32 0, i32 128
  %1340 = load i8, ptr %1339, align 4, !tbaa !14
  %1341 = load i32, ptr %12, align 4, !tbaa !9
  %1342 = load i32, ptr %20, align 4, !tbaa !9
  %1343 = add i32 %1341, %1342
  %1344 = load i32, ptr %12, align 4, !tbaa !9
  %1345 = load i32, ptr %20, align 4, !tbaa !9
  %1346 = add i32 %1344, %1345
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1337, i32 noundef 537208083, i8 noundef signext %1340, i32 noundef %1343, i32 noundef %1346)
  br label %1348

1347:                                             ; preds = %1332
  br label %1348

1348:                                             ; preds = %1347, %1336
  br label %1349

1349:                                             ; preds = %1348, %1321
  br label %1350

1350:                                             ; preds = %1349, %1302
  br label %1351

1351:                                             ; preds = %1350, %1287
  %1352 = load i32, ptr %59, align 4, !tbaa !9
  %1353 = icmp ugt i32 %1352, 0
  br i1 %1353, label %1354, label %1454

1354:                                             ; preds = %1351
  %1355 = load ptr, ptr %6, align 8, !tbaa !5
  %1356 = load i32, ptr %68, align 4, !tbaa !9
  %1357 = load ptr, ptr %9, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1357, i32 0, i32 128
  %1359 = load i8, ptr %1358, align 4, !tbaa !14
  %1360 = load i32, ptr %12, align 4, !tbaa !9
  %1361 = load i32, ptr %20, align 4, !tbaa !9
  %1362 = add i32 %1360, %1361
  %1363 = load i32, ptr %12, align 4, !tbaa !9
  %1364 = load i32, ptr %54, align 4, !tbaa !9
  %1365 = load i32, ptr %70, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %1355, i32 noundef %1356, i8 noundef signext %1359, i32 noundef %1362, i32 noundef %1363, i32 noundef %1364, i32 noundef %1365)
  %1366 = load ptr, ptr %6, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1366, i32 0, i32 6
  %1368 = load i32, ptr %1367, align 4, !tbaa !19
  %1369 = icmp uge i32 %1368, 1051
  br i1 %1369, label %1370, label %1410

1370:                                             ; preds = %1354
  %1371 = load ptr, ptr %6, align 8, !tbaa !5
  %1372 = load i32, ptr %69, align 4, !tbaa !9
  %1373 = load ptr, ptr %9, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1373, i32 0, i32 128
  %1375 = load i8, ptr %1374, align 4, !tbaa !14
  %1376 = load i32, ptr %12, align 4, !tbaa !9
  %1377 = load i32, ptr %71, align 4, !tbaa !9
  %1378 = add i32 %1376, %1377
  %1379 = load i32, ptr %51, align 4, !tbaa !9
  %1380 = load i32, ptr %12, align 4, !tbaa !9
  %1381 = load i32, ptr %71, align 4, !tbaa !9
  %1382 = add i32 %1380, %1381
  %1383 = load i32, ptr %54, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %1371, i32 noundef %1372, i8 noundef signext %1375, i32 noundef %1378, i32 noundef %1379, i32 noundef %1382, i32 noundef %1383, i32 noundef 0)
  %1384 = load i32, ptr %21, align 4, !tbaa !9
  %1385 = icmp eq i32 %1384, 8
  br i1 %1385, label %1386, label %1409

1386:                                             ; preds = %1370
  %1387 = load ptr, ptr %6, align 8, !tbaa !5
  %1388 = load i32, ptr %54, align 4, !tbaa !9
  %1389 = load i32, ptr %54, align 4, !tbaa !9
  %1390 = load ptr, ptr %6, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1390, i32 0, i32 6
  %1392 = load i32, ptr %1391, align 4, !tbaa !19
  %1393 = icmp uge i32 %1392, 1101
  %1394 = zext i1 %1393 to i64
  %1395 = select i1 %1393, i32 8, i32 4
  call void @libxsmm_x86_instruction_mask_compute_reg(ptr noundef %1387, i32 noundef -1601359568, i32 noundef %1388, i32 noundef 255, i32 noundef %1389, i32 noundef %1395)
  %1396 = load ptr, ptr %6, align 8, !tbaa !5
  %1397 = load i32, ptr %69, align 4, !tbaa !9
  %1398 = load ptr, ptr %9, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1398, i32 0, i32 128
  %1400 = load i8, ptr %1399, align 4, !tbaa !14
  %1401 = load i32, ptr %12, align 4, !tbaa !9
  %1402 = load i32, ptr %72, align 4, !tbaa !9
  %1403 = add i32 %1401, %1402
  %1404 = load i32, ptr %51, align 4, !tbaa !9
  %1405 = load i32, ptr %12, align 4, !tbaa !9
  %1406 = load i32, ptr %72, align 4, !tbaa !9
  %1407 = add i32 %1405, %1406
  %1408 = load i32, ptr %54, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %1396, i32 noundef %1397, i8 noundef signext %1400, i32 noundef %1403, i32 noundef %1404, i32 noundef %1407, i32 noundef %1408, i32 noundef 0)
  br label %1409

1409:                                             ; preds = %1386, %1370
  br label %1453

1410:                                             ; preds = %1354
  %1411 = load i32, ptr %21, align 4, !tbaa !9
  %1412 = icmp eq i32 %1411, 8
  br i1 %1412, label %1413, label %1420

1413:                                             ; preds = %1410
  %1414 = load ptr, ptr %6, align 8, !tbaa !5
  %1415 = load i32, ptr %54, align 4, !tbaa !9
  %1416 = load i32, ptr %55, align 4, !tbaa !9
  call void @libxsmm_generator_avx_extract_mask4_from_mask8(ptr noundef %1414, i32 noundef %1415, i32 noundef %1416, i32 noundef 1)
  %1417 = load ptr, ptr %6, align 8, !tbaa !5
  %1418 = load i32, ptr %54, align 4, !tbaa !9
  %1419 = load i32, ptr %54, align 4, !tbaa !9
  call void @libxsmm_generator_avx_extract_mask4_from_mask8(ptr noundef %1417, i32 noundef %1418, i32 noundef %1419, i32 noundef 0)
  br label %1420

1420:                                             ; preds = %1413, %1410
  %1421 = load ptr, ptr %6, align 8, !tbaa !5
  %1422 = load i32, ptr %69, align 4, !tbaa !9
  %1423 = load ptr, ptr %9, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1423, i32 0, i32 128
  %1425 = load i8, ptr %1424, align 4, !tbaa !14
  %1426 = load i32, ptr %12, align 4, !tbaa !9
  %1427 = load i32, ptr %71, align 4, !tbaa !9
  %1428 = add i32 %1426, %1427
  %1429 = load i32, ptr %51, align 4, !tbaa !9
  %1430 = load i32, ptr %12, align 4, !tbaa !9
  %1431 = load i32, ptr %71, align 4, !tbaa !9
  %1432 = add i32 %1430, %1431
  %1433 = load i32, ptr %54, align 4, !tbaa !9
  %1434 = shl i32 %1433, 4
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1421, i32 noundef %1422, i8 noundef signext %1425, i32 noundef %1428, i32 noundef %1429, i32 noundef %1432, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %1434)
  %1435 = load i32, ptr %21, align 4, !tbaa !9
  %1436 = icmp eq i32 %1435, 8
  br i1 %1436, label %1437, label %1452

1437:                                             ; preds = %1420
  %1438 = load ptr, ptr %6, align 8, !tbaa !5
  %1439 = load i32, ptr %69, align 4, !tbaa !9
  %1440 = load ptr, ptr %9, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1440, i32 0, i32 128
  %1442 = load i8, ptr %1441, align 4, !tbaa !14
  %1443 = load i32, ptr %12, align 4, !tbaa !9
  %1444 = load i32, ptr %72, align 4, !tbaa !9
  %1445 = add i32 %1443, %1444
  %1446 = load i32, ptr %51, align 4, !tbaa !9
  %1447 = load i32, ptr %12, align 4, !tbaa !9
  %1448 = load i32, ptr %72, align 4, !tbaa !9
  %1449 = add i32 %1447, %1448
  %1450 = load i32, ptr %55, align 4, !tbaa !9
  %1451 = shl i32 %1450, 4
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1438, i32 noundef %1439, i8 noundef signext %1442, i32 noundef %1445, i32 noundef %1446, i32 noundef %1449, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %1451)
  br label %1452

1452:                                             ; preds = %1437, %1420
  br label %1453

1453:                                             ; preds = %1452, %1409
  br label %1454

1454:                                             ; preds = %1453, %1351
  %1455 = load ptr, ptr %6, align 8, !tbaa !5
  %1456 = load i32, ptr %60, align 4, !tbaa !9
  %1457 = load ptr, ptr %9, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1457, i32 0, i32 128
  %1459 = load i8, ptr %1458, align 4, !tbaa !14
  %1460 = load i32, ptr %12, align 4, !tbaa !9
  %1461 = load i32, ptr %12, align 4, !tbaa !9
  %1462 = load i32, ptr %20, align 4, !tbaa !9
  %1463 = add i32 %1461, %1462
  %1464 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1455, i32 noundef %1456, i8 noundef signext %1459, i32 noundef %1460, i32 noundef %1463, i32 noundef %1464)
  br label %1465

1465:                                             ; preds = %1454, %1220
  br label %1466

1466:                                             ; preds = %1465, %1190
  %1467 = load i32, ptr %12, align 4, !tbaa !9
  %1468 = load i32, ptr %36, align 4, !tbaa !9
  %1469 = mul i32 %1467, %1468
  %1470 = load ptr, ptr %9, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1470, i32 0, i32 2
  %1472 = load i32, ptr %1471, align 4, !tbaa !42
  %1473 = mul i32 %1469, %1472
  %1474 = urem i32 %1473, 64
  %1475 = icmp eq i32 %1474, 0
  br i1 %1475, label %1476, label %1492

1476:                                             ; preds = %1466
  %1477 = load i32, ptr %83, align 4, !tbaa !9
  %1478 = icmp ugt i32 %1477, 0
  br i1 %1478, label %1479, label %1492

1479:                                             ; preds = %1476
  %1480 = load ptr, ptr %6, align 8, !tbaa !5
  %1481 = load i32, ptr %25, align 4, !tbaa !9
  %1482 = load ptr, ptr %8, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1482, i32 0, i32 4
  %1484 = load i32, ptr %1483, align 4, !tbaa !30
  %1485 = load i32, ptr %12, align 4, !tbaa !9
  %1486 = load i32, ptr %36, align 4, !tbaa !9
  %1487 = mul i32 %1485, %1486
  %1488 = load ptr, ptr %9, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1488, i32 0, i32 2
  %1490 = load i32, ptr %1489, align 4, !tbaa !42
  %1491 = mul i32 %1487, %1490
  call void @libxsmm_x86_instruction_prefetch(ptr noundef %1480, i32 noundef %1481, i32 noundef %1484, i32 noundef 127, i32 noundef 0, i32 noundef %1491)
  br label %1492

1492:                                             ; preds = %1479, %1476, %1466
  br label %1493

1493:                                             ; preds = %1492
  %1494 = load i32, ptr %12, align 4, !tbaa !9
  %1495 = add i32 %1494, 1
  store i32 %1495, ptr %12, align 4, !tbaa !9
  br label %1143, !llvm.loop !46

1496:                                             ; preds = %1143
  %1497 = load ptr, ptr %6, align 8, !tbaa !5
  %1498 = load ptr, ptr %7, align 8, !tbaa !5
  %1499 = load ptr, ptr %9, align 8, !tbaa !5
  %1500 = load ptr, ptr %8, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1500, i32 0, i32 25
  %1502 = load i32, ptr %1501, align 4, !tbaa !28
  %1503 = load ptr, ptr %8, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1503, i32 0, i32 26
  %1505 = load i32, ptr %1504, align 4, !tbaa !22
  call void @libxsmm_generator_mateltwise_footer_n_dyn_loop(ptr noundef %1497, ptr noundef %1498, ptr noundef %1499, i32 noundef %1502, i32 noundef %1505)
  %1506 = load i32, ptr %83, align 4, !tbaa !9
  %1507 = icmp ne i32 %1506, 0
  br i1 %1507, label %1508, label %1518

1508:                                             ; preds = %1496
  %1509 = load ptr, ptr %6, align 8, !tbaa !5
  %1510 = load ptr, ptr %9, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1510, i32 0, i32 10
  %1512 = load i32, ptr %1511, align 4, !tbaa !40
  %1513 = load ptr, ptr %8, align 8, !tbaa !5
  %1514 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1513, i32 0, i32 26
  %1515 = load i32, ptr %1514, align 4, !tbaa !22
  %1516 = load i32, ptr %23, align 4, !tbaa !9
  %1517 = sext i32 %1516 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1509, i32 noundef %1512, i32 noundef %1515, i64 noundef %1517)
  br label %1518

1518:                                             ; preds = %1508, %1496
  %1519 = load i32, ptr %83, align 4, !tbaa !9
  %1520 = icmp ne i32 %1519, 0
  br i1 %1520, label %1521, label %1531

1521:                                             ; preds = %1518
  %1522 = load ptr, ptr %6, align 8, !tbaa !5
  %1523 = load i32, ptr %32, align 4, !tbaa !9
  %1524 = icmp eq i32 %1523, 0
  br i1 %1524, label %1525, label %1527

1525:                                             ; preds = %1521
  %1526 = load i32, ptr %33, align 4, !tbaa !9
  br label %1529

1527:                                             ; preds = %1521
  %1528 = load i32, ptr %34, align 4, !tbaa !9
  br label %1529

1529:                                             ; preds = %1527, %1525
  %1530 = phi i32 [ %1526, %1525 ], [ %1528, %1527 ]
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %1522, i32 noundef %1530, ptr noundef %79)
  br label %1531

1531:                                             ; preds = %1529, %1518
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  br label %1532

1532:                                             ; preds = %1531
  %1533 = load i32, ptr %30, align 4, !tbaa !9
  %1534 = add i32 %1533, 1
  store i32 %1534, ptr %30, align 4, !tbaa !9
  br label %968, !llvm.loop !47

1535:                                             ; preds = %968
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1536

1536:                                             ; preds = %1710, %1535
  %1537 = load i32, ptr %12, align 4, !tbaa !9
  %1538 = load i32, ptr %16, align 4, !tbaa !9
  %1539 = icmp ult i32 %1537, %1538
  br i1 %1539, label %1540, label %1713

1540:                                             ; preds = %1536
  %1541 = load ptr, ptr %10, align 8, !tbaa !5
  %1542 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1541, i32 noundef 3)
  %1543 = icmp eq i32 3, %1542
  br i1 %1543, label %1544, label %1580

1544:                                             ; preds = %1540
  %1545 = load ptr, ptr %6, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1545, i32 0, i32 6
  %1547 = load i32, ptr %1546, align 4, !tbaa !19
  %1548 = icmp uge i32 %1547, 1051
  br i1 %1548, label %1549, label %1580

1549:                                             ; preds = %1544
  %1550 = load ptr, ptr %6, align 8, !tbaa !5
  %1551 = load ptr, ptr %9, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1551, i32 0, i32 128
  %1553 = load i8, ptr %1552, align 4, !tbaa !14
  %1554 = load ptr, ptr %8, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1554, i32 0, i32 6
  %1556 = load i32, ptr %1555, align 4, !tbaa !26
  %1557 = load i32, ptr %12, align 4, !tbaa !9
  %1558 = load i32, ptr %36, align 4, !tbaa !9
  %1559 = mul i32 %1557, %1558
  %1560 = load ptr, ptr %9, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1560, i32 0, i32 5
  %1562 = load i32, ptr %1561, align 4, !tbaa !41
  %1563 = mul i32 %1559, %1562
  %1564 = load i32, ptr %12, align 4, !tbaa !9
  %1565 = load i32, ptr %12, align 4, !tbaa !9
  %1566 = load i32, ptr %18, align 4, !tbaa !9
  %1567 = sub i32 %1566, 1
  %1568 = icmp eq i32 %1565, %1567
  br i1 %1568, label %1569, label %1577

1569:                                             ; preds = %1549
  %1570 = load i32, ptr %13, align 4, !tbaa !9
  %1571 = icmp ugt i32 %1570, 0
  br i1 %1571, label %1572, label %1577

1572:                                             ; preds = %1569
  %1573 = load i32, ptr %82, align 4, !tbaa !9
  %1574 = icmp ugt i32 %1573, 0
  br i1 %1574, label %1575, label %1577

1575:                                             ; preds = %1572
  %1576 = load i32, ptr %13, align 4, !tbaa !9
  br label %1578

1577:                                             ; preds = %1572, %1569, %1549
  br label %1578

1578:                                             ; preds = %1577, %1575
  %1579 = phi i32 [ %1576, %1575 ], [ 0, %1577 ]
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef %1550, i32 noundef 671954205, i8 noundef signext %1553, i32 noundef %1556, i32 noundef 127, i32 noundef 0, i32 noundef %1563, i32 noundef 0, i32 noundef 255, i32 noundef %1564, i32 noundef %1579, i32 noundef 0, i32 noundef 0)
  br label %1709

1580:                                             ; preds = %1544, %1540
  %1581 = load ptr, ptr %10, align 8, !tbaa !5
  %1582 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1581, i32 noundef 3)
  %1583 = icmp eq i32 4, %1582
  br i1 %1583, label %1584, label %1593

1584:                                             ; preds = %1580
  %1585 = load ptr, ptr %6, align 8, !tbaa !5
  %1586 = load ptr, ptr %9, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1586, i32 0, i32 128
  %1588 = load i8, ptr %1587, align 4, !tbaa !14
  %1589 = load i32, ptr %12, align 4, !tbaa !9
  %1590 = load i32, ptr %12, align 4, !tbaa !9
  %1591 = load i32, ptr %44, align 4, !tbaa !9
  %1592 = load i32, ptr %45, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %1585, i8 noundef signext %1588, i32 noundef %1589, i32 noundef %1590, i32 noundef %1591, i32 noundef %1592, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0)
  br label %1664

1593:                                             ; preds = %1580
  %1594 = load ptr, ptr %10, align 8, !tbaa !5
  %1595 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1594, i32 noundef 3)
  %1596 = icmp eq i32 5, %1595
  br i1 %1596, label %1597, label %1611

1597:                                             ; preds = %1593
  %1598 = load ptr, ptr %6, align 8, !tbaa !5
  %1599 = load ptr, ptr %9, align 8, !tbaa !5
  %1600 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1599, i32 0, i32 128
  %1601 = load i8, ptr %1600, align 4, !tbaa !14
  %1602 = load i32, ptr %12, align 4, !tbaa !9
  %1603 = load i32, ptr %12, align 4, !tbaa !9
  %1604 = load i32, ptr %44, align 4, !tbaa !9
  %1605 = load i32, ptr %45, align 4, !tbaa !9
  %1606 = load i32, ptr %46, align 4, !tbaa !9
  %1607 = load i32, ptr %47, align 4, !tbaa !9
  %1608 = load i32, ptr %48, align 4, !tbaa !9
  %1609 = load i32, ptr %49, align 4, !tbaa !9
  %1610 = load i32, ptr %50, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %1598, i8 noundef signext %1601, i32 noundef %1602, i32 noundef %1603, i32 noundef %1604, i32 noundef %1605, i32 noundef %1606, i32 noundef %1607, i32 noundef %1608, i32 noundef %1609, i32 noundef %1610)
  br label %1663

1611:                                             ; preds = %1593
  %1612 = load ptr, ptr %10, align 8, !tbaa !5
  %1613 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1612, i32 noundef 3)
  %1614 = icmp eq i32 2, %1613
  br i1 %1614, label %1615, label %1637

1615:                                             ; preds = %1611
  %1616 = load ptr, ptr %6, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1616, i32 0, i32 6
  %1618 = load i32, ptr %1617, align 4, !tbaa !19
  %1619 = icmp ult i32 %1618, 1103
  br i1 %1619, label %1620, label %1629

1620:                                             ; preds = %1615
  %1621 = load ptr, ptr %6, align 8, !tbaa !5
  %1622 = load ptr, ptr %9, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1622, i32 0, i32 128
  %1624 = load i8, ptr %1623, align 4, !tbaa !14
  %1625 = load i32, ptr %12, align 4, !tbaa !9
  %1626 = load i32, ptr %12, align 4, !tbaa !9
  %1627 = load i32, ptr %44, align 4, !tbaa !9
  %1628 = load i32, ptr %45, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %1621, i8 noundef signext %1624, i32 noundef %1625, i32 noundef %1626, i32 noundef %1627, i32 noundef %1628, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br label %1636

1629:                                             ; preds = %1615
  %1630 = load ptr, ptr %6, align 8, !tbaa !5
  %1631 = load ptr, ptr %9, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1631, i32 0, i32 128
  %1633 = load i8, ptr %1632, align 4, !tbaa !14
  %1634 = load i32, ptr %12, align 4, !tbaa !9
  %1635 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1630, i32 noundef 537273970, i8 noundef signext %1633, i32 noundef %1634, i32 noundef %1635)
  br label %1636

1636:                                             ; preds = %1629, %1620
  br label %1662

1637:                                             ; preds = %1611
  %1638 = load ptr, ptr %10, align 8, !tbaa !5
  %1639 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1638, i32 noundef 3)
  %1640 = icmp eq i32 3, %1639
  br i1 %1640, label %1641, label %1661

1641:                                             ; preds = %1637
  %1642 = load ptr, ptr %6, align 8, !tbaa !5
  %1643 = load ptr, ptr %9, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1643, i32 0, i32 128
  %1645 = load i8, ptr %1644, align 4, !tbaa !14
  %1646 = load i32, ptr %12, align 4, !tbaa !9
  %1647 = load i32, ptr %12, align 4, !tbaa !9
  %1648 = load ptr, ptr %6, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1648, i32 0, i32 6
  %1650 = load i32, ptr %1649, align 4, !tbaa !19
  %1651 = icmp ult i32 %1650, 1101
  %1652 = zext i1 %1651 to i64
  %1653 = select i1 %1651, i32 0, i32 1
  %1654 = load ptr, ptr %6, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1654, i32 0, i32 6
  %1656 = load i32, ptr %1655, align 4, !tbaa !19
  %1657 = icmp ult i32 %1656, 1101
  %1658 = zext i1 %1657 to i64
  %1659 = select i1 %1657, i32 0, i32 1
  %1660 = trunc i32 %1659 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %1642, i32 noundef 671954205, i8 noundef signext %1645, i32 noundef %1646, i32 noundef %1647, i32 noundef 0, i32 noundef %1653, i8 noundef zeroext %1660, i32 noundef 0)
  br label %1661

1661:                                             ; preds = %1641, %1637
  br label %1662

1662:                                             ; preds = %1661, %1636
  br label %1663

1663:                                             ; preds = %1662, %1597
  br label %1664

1664:                                             ; preds = %1663, %1584
  %1665 = load ptr, ptr %6, align 8, !tbaa !5
  %1666 = load i32, ptr %28, align 4, !tbaa !9
  %1667 = load ptr, ptr %8, align 8, !tbaa !5
  %1668 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1667, i32 0, i32 6
  %1669 = load i32, ptr %1668, align 4, !tbaa !26
  %1670 = load i32, ptr %12, align 4, !tbaa !9
  %1671 = load i32, ptr %36, align 4, !tbaa !9
  %1672 = mul i32 %1670, %1671
  %1673 = load ptr, ptr %9, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1673, i32 0, i32 5
  %1675 = load i32, ptr %1674, align 4, !tbaa !41
  %1676 = mul i32 %1672, %1675
  %1677 = load i8, ptr %38, align 1, !tbaa !16
  %1678 = load i32, ptr %12, align 4, !tbaa !9
  %1679 = load i32, ptr %12, align 4, !tbaa !9
  %1680 = load i32, ptr %18, align 4, !tbaa !9
  %1681 = sub i32 %1680, 1
  %1682 = icmp eq i32 %1679, %1681
  br i1 %1682, label %1683, label %1691

1683:                                             ; preds = %1664
  %1684 = load i32, ptr %13, align 4, !tbaa !9
  %1685 = icmp ugt i32 %1684, 0
  br i1 %1685, label %1686, label %1691

1686:                                             ; preds = %1683
  %1687 = load i32, ptr %82, align 4, !tbaa !9
  %1688 = icmp ugt i32 %1687, 0
  br i1 %1688, label %1689, label %1691

1689:                                             ; preds = %1686
  %1690 = load i32, ptr %13, align 4, !tbaa !9
  br label %1692

1691:                                             ; preds = %1686, %1683, %1664
  br label %1692

1692:                                             ; preds = %1691, %1689
  %1693 = phi i32 [ %1690, %1689 ], [ 0, %1691 ]
  %1694 = load i32, ptr %12, align 4, !tbaa !9
  %1695 = load i32, ptr %18, align 4, !tbaa !9
  %1696 = sub i32 %1695, 1
  %1697 = icmp eq i32 %1694, %1696
  br i1 %1697, label %1698, label %1706

1698:                                             ; preds = %1692
  %1699 = load i32, ptr %13, align 4, !tbaa !9
  %1700 = icmp ugt i32 %1699, 0
  br i1 %1700, label %1701, label %1706

1701:                                             ; preds = %1698
  %1702 = load i32, ptr %82, align 4, !tbaa !9
  %1703 = icmp ugt i32 %1702, 0
  br i1 %1703, label %1704, label %1706

1704:                                             ; preds = %1701
  %1705 = load i32, ptr %43, align 4, !tbaa !9
  br label %1707

1706:                                             ; preds = %1701, %1698, %1692
  br label %1707

1707:                                             ; preds = %1706, %1704
  %1708 = phi i32 [ %1705, %1704 ], [ 0, %1706 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1665, i32 noundef %1666, i32 noundef %1669, i32 noundef 127, i32 noundef 0, i32 noundef %1676, i8 noundef signext %1677, i32 noundef %1678, i32 noundef %1693, i32 noundef %1708, i32 noundef 1)
  br label %1709

1709:                                             ; preds = %1707, %1578
  br label %1710

1710:                                             ; preds = %1709
  %1711 = load i32, ptr %12, align 4, !tbaa !9
  %1712 = add i32 %1711, 1
  store i32 %1712, ptr %12, align 4, !tbaa !9
  br label %1536, !llvm.loop !48

1713:                                             ; preds = %1536
  %1714 = load i32, ptr %59, align 4, !tbaa !9
  %1715 = icmp ugt i32 %1714, 0
  br i1 %1715, label %1716, label %1898

1716:                                             ; preds = %1713
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #6
  %1717 = load ptr, ptr %6, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1717, i32 0, i32 6
  %1719 = load i32, ptr %1718, align 4, !tbaa !19
  %1720 = icmp ult i32 %1719, 1101
  %1721 = zext i1 %1720 to i64
  %1722 = select i1 %1720, i32 121, i32 122
  %1723 = trunc i32 %1722 to i8
  store i8 %1723, ptr %84, align 1, !tbaa !16
  %1724 = load i32, ptr %21, align 4, !tbaa !9
  %1725 = icmp eq i32 %1724, 4
  br i1 %1725, label %1726, label %1777

1726:                                             ; preds = %1716
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1727

1727:                                             ; preds = %1773, %1726
  %1728 = load i32, ptr %12, align 4, !tbaa !9
  %1729 = load i32, ptr %16, align 4, !tbaa !9
  %1730 = icmp ult i32 %1728, %1729
  br i1 %1730, label %1731, label %1776

1731:                                             ; preds = %1727
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #6
  %1732 = load i32, ptr %12, align 4, !tbaa !9
  %1733 = load i32, ptr %71, align 4, !tbaa !9
  %1734 = add i32 %1732, %1733
  store i32 %1734, ptr %85, align 4, !tbaa !9
  %1735 = load ptr, ptr %6, align 8, !tbaa !5
  %1736 = load i32, ptr %61, align 4, !tbaa !9
  %1737 = load i32, ptr %12, align 4, !tbaa !9
  %1738 = load i32, ptr %36, align 4, !tbaa !9
  %1739 = mul i32 %1737, %1738
  %1740 = mul i32 %1739, 4
  %1741 = load i8, ptr %84, align 1, !tbaa !16
  %1742 = load i32, ptr %85, align 4, !tbaa !9
  %1743 = load i32, ptr %12, align 4, !tbaa !9
  %1744 = load i32, ptr %18, align 4, !tbaa !9
  %1745 = sub i32 %1744, 1
  %1746 = icmp eq i32 %1743, %1745
  br i1 %1746, label %1747, label %1755

1747:                                             ; preds = %1731
  %1748 = load i32, ptr %13, align 4, !tbaa !9
  %1749 = icmp ugt i32 %1748, 0
  br i1 %1749, label %1750, label %1755

1750:                                             ; preds = %1747
  %1751 = load i32, ptr %82, align 4, !tbaa !9
  %1752 = icmp ugt i32 %1751, 0
  br i1 %1752, label %1753, label %1755

1753:                                             ; preds = %1750
  %1754 = load i32, ptr %13, align 4, !tbaa !9
  br label %1756

1755:                                             ; preds = %1750, %1747, %1731
  br label %1756

1756:                                             ; preds = %1755, %1753
  %1757 = phi i32 [ %1754, %1753 ], [ 0, %1755 ]
  %1758 = load i32, ptr %12, align 4, !tbaa !9
  %1759 = load i32, ptr %18, align 4, !tbaa !9
  %1760 = sub i32 %1759, 1
  %1761 = icmp eq i32 %1758, %1760
  br i1 %1761, label %1762, label %1770

1762:                                             ; preds = %1756
  %1763 = load i32, ptr %13, align 4, !tbaa !9
  %1764 = icmp ugt i32 %1763, 0
  br i1 %1764, label %1765, label %1770

1765:                                             ; preds = %1762
  %1766 = load i32, ptr %82, align 4, !tbaa !9
  %1767 = icmp ugt i32 %1766, 0
  br i1 %1767, label %1768, label %1770

1768:                                             ; preds = %1765
  %1769 = load i32, ptr %52, align 4, !tbaa !9
  br label %1771

1770:                                             ; preds = %1765, %1762, %1756
  br label %1771

1771:                                             ; preds = %1770, %1768
  %1772 = phi i32 [ %1769, %1768 ], [ 0, %1770 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1735, i32 noundef 537138704, i32 noundef %1736, i32 noundef 127, i32 noundef 0, i32 noundef %1740, i8 noundef signext %1741, i32 noundef %1742, i32 noundef %1757, i32 noundef %1772, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  br label %1773

1773:                                             ; preds = %1771
  %1774 = load i32, ptr %12, align 4, !tbaa !9
  %1775 = add i32 %1774, 1
  store i32 %1775, ptr %12, align 4, !tbaa !9
  br label %1727, !llvm.loop !49

1776:                                             ; preds = %1727
  br label %1897

1777:                                             ; preds = %1716
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %1778

1778:                                             ; preds = %1893, %1777
  %1779 = load i32, ptr %12, align 4, !tbaa !9
  %1780 = load i32, ptr %16, align 4, !tbaa !9
  %1781 = icmp ult i32 %1779, %1780
  br i1 %1781, label %1782, label %1896

1782:                                             ; preds = %1778
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #6
  %1783 = load i32, ptr %12, align 4, !tbaa !9
  %1784 = load i32, ptr %18, align 4, !tbaa !9
  %1785 = sub i32 %1784, 1
  %1786 = icmp eq i32 %1783, %1785
  br i1 %1786, label %1787, label %1804

1787:                                             ; preds = %1782
  %1788 = load i32, ptr %82, align 4, !tbaa !9
  %1789 = icmp ugt i32 %1788, 0
  br i1 %1789, label %1790, label %1804

1790:                                             ; preds = %1787
  %1791 = load i32, ptr %11, align 4, !tbaa !9
  %1792 = load i32, ptr %36, align 4, !tbaa !9
  %1793 = urem i32 %1791, %1792
  %1794 = load i32, ptr %36, align 4, !tbaa !9
  %1795 = udiv i32 %1794, 2
  %1796 = icmp ult i32 %1793, %1795
  br i1 %1796, label %1797, label %1802

1797:                                             ; preds = %1790
  %1798 = load i32, ptr %11, align 4, !tbaa !9
  %1799 = load i32, ptr %36, align 4, !tbaa !9
  %1800 = urem i32 %1798, %1799
  %1801 = icmp ne i32 %1800, 0
  br label %1802

1802:                                             ; preds = %1797, %1790
  %1803 = phi i1 [ false, %1790 ], [ %1801, %1797 ]
  br label %1804

1804:                                             ; preds = %1802, %1787, %1782
  %1805 = phi i1 [ false, %1787 ], [ false, %1782 ], [ %1803, %1802 ]
  %1806 = zext i1 %1805 to i64
  %1807 = select i1 %1805, i32 1, i32 0
  store i32 %1807, ptr %86, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #6
  %1808 = load i32, ptr %12, align 4, !tbaa !9
  %1809 = load i32, ptr %18, align 4, !tbaa !9
  %1810 = sub i32 %1809, 1
  %1811 = icmp eq i32 %1808, %1810
  br i1 %1811, label %1812, label %1829

1812:                                             ; preds = %1804
  %1813 = load i32, ptr %82, align 4, !tbaa !9
  %1814 = icmp ugt i32 %1813, 0
  br i1 %1814, label %1815, label %1829

1815:                                             ; preds = %1812
  %1816 = load i32, ptr %11, align 4, !tbaa !9
  %1817 = load i32, ptr %36, align 4, !tbaa !9
  %1818 = urem i32 %1816, %1817
  %1819 = load i32, ptr %36, align 4, !tbaa !9
  %1820 = udiv i32 %1819, 2
  %1821 = icmp ugt i32 %1818, %1820
  br i1 %1821, label %1822, label %1827

1822:                                             ; preds = %1815
  %1823 = load i32, ptr %11, align 4, !tbaa !9
  %1824 = load i32, ptr %36, align 4, !tbaa !9
  %1825 = urem i32 %1823, %1824
  %1826 = icmp ne i32 %1825, 0
  br label %1827

1827:                                             ; preds = %1822, %1815
  %1828 = phi i1 [ false, %1815 ], [ %1826, %1822 ]
  br label %1829

1829:                                             ; preds = %1827, %1812, %1804
  %1830 = phi i1 [ false, %1812 ], [ false, %1804 ], [ %1828, %1827 ]
  %1831 = zext i1 %1830 to i64
  %1832 = select i1 %1830, i32 1, i32 0
  store i32 %1832, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #6
  %1833 = load i32, ptr %12, align 4, !tbaa !9
  %1834 = load i32, ptr %71, align 4, !tbaa !9
  %1835 = add i32 %1833, %1834
  store i32 %1835, ptr %88, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #6
  %1836 = load i32, ptr %12, align 4, !tbaa !9
  %1837 = load i32, ptr %72, align 4, !tbaa !9
  %1838 = add i32 %1836, %1837
  store i32 %1838, ptr %89, align 4, !tbaa !9
  %1839 = load ptr, ptr %6, align 8, !tbaa !5
  %1840 = load i32, ptr %61, align 4, !tbaa !9
  %1841 = load i32, ptr %12, align 4, !tbaa !9
  %1842 = load i32, ptr %36, align 4, !tbaa !9
  %1843 = mul i32 %1841, %1842
  %1844 = mul i32 %1843, 8
  %1845 = load i8, ptr %84, align 1, !tbaa !16
  %1846 = load i32, ptr %88, align 4, !tbaa !9
  %1847 = load i32, ptr %86, align 4, !tbaa !9
  %1848 = load i32, ptr %86, align 4, !tbaa !9
  %1849 = icmp ugt i32 %1848, 0
  br i1 %1849, label %1850, label %1852

1850:                                             ; preds = %1829
  %1851 = load i32, ptr %53, align 4, !tbaa !9
  br label %1853

1852:                                             ; preds = %1829
  br label %1853

1853:                                             ; preds = %1852, %1850
  %1854 = phi i32 [ %1851, %1850 ], [ 0, %1852 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1839, i32 noundef 545592848, i32 noundef %1840, i32 noundef 127, i32 noundef 0, i32 noundef %1844, i8 noundef signext %1845, i32 noundef %1846, i32 noundef %1847, i32 noundef %1854, i32 noundef 1)
  %1855 = load i32, ptr %86, align 4, !tbaa !9
  %1856 = icmp eq i32 %1855, 0
  br i1 %1856, label %1857, label %1892

1857:                                             ; preds = %1853
  %1858 = load i32, ptr %11, align 4, !tbaa !9
  %1859 = load i32, ptr %36, align 4, !tbaa !9
  %1860 = urem i32 %1858, %1859
  %1861 = load i32, ptr %36, align 4, !tbaa !9
  %1862 = udiv i32 %1861, 2
  %1863 = icmp eq i32 %1860, %1862
  br i1 %1863, label %1864, label %1872

1864:                                             ; preds = %1857
  %1865 = load i32, ptr %12, align 4, !tbaa !9
  %1866 = load i32, ptr %18, align 4, !tbaa !9
  %1867 = sub i32 %1866, 1
  %1868 = icmp eq i32 %1865, %1867
  br i1 %1868, label %1869, label %1872

1869:                                             ; preds = %1864
  %1870 = load i32, ptr %82, align 4, !tbaa !9
  %1871 = icmp ugt i32 %1870, 0
  br i1 %1871, label %1892, label %1872

1872:                                             ; preds = %1869, %1864, %1857
  %1873 = load ptr, ptr %6, align 8, !tbaa !5
  %1874 = load i32, ptr %61, align 4, !tbaa !9
  %1875 = load i32, ptr %12, align 4, !tbaa !9
  %1876 = load i32, ptr %36, align 4, !tbaa !9
  %1877 = mul i32 %1875, %1876
  %1878 = mul i32 %1877, 8
  %1879 = load i32, ptr %36, align 4, !tbaa !9
  %1880 = mul i32 %1879, 4
  %1881 = add i32 %1878, %1880
  %1882 = load i8, ptr %84, align 1, !tbaa !16
  %1883 = load i32, ptr %89, align 4, !tbaa !9
  %1884 = load i32, ptr %87, align 4, !tbaa !9
  %1885 = load i32, ptr %87, align 4, !tbaa !9
  %1886 = icmp ugt i32 %1885, 0
  br i1 %1886, label %1887, label %1889

1887:                                             ; preds = %1872
  %1888 = load i32, ptr %53, align 4, !tbaa !9
  br label %1890

1889:                                             ; preds = %1872
  br label %1890

1890:                                             ; preds = %1889, %1887
  %1891 = phi i32 [ %1888, %1887 ], [ 0, %1889 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1873, i32 noundef 545592848, i32 noundef %1874, i32 noundef 127, i32 noundef 0, i32 noundef %1881, i8 noundef signext %1882, i32 noundef %1883, i32 noundef %1884, i32 noundef %1891, i32 noundef 1)
  br label %1892

1892:                                             ; preds = %1890, %1869, %1853
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  br label %1893

1893:                                             ; preds = %1892
  %1894 = load i32, ptr %12, align 4, !tbaa !9
  %1895 = add i32 %1894, 1
  store i32 %1895, ptr %12, align 4, !tbaa !9
  br label %1778, !llvm.loop !50

1896:                                             ; preds = %1778
  br label %1897

1897:                                             ; preds = %1896, %1776
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #6
  br label %1898

1898:                                             ; preds = %1897, %1713
  %1899 = load i32, ptr %17, align 4, !tbaa !9
  %1900 = icmp ugt i32 %1899, 1
  br i1 %1900, label %1901, label %1963

1901:                                             ; preds = %1898
  %1902 = load i32, ptr %32, align 4, !tbaa !9
  %1903 = icmp eq i32 %1902, 0
  br i1 %1903, label %1904, label %1963

1904:                                             ; preds = %1901
  %1905 = load ptr, ptr %6, align 8, !tbaa !5
  %1906 = load ptr, ptr %9, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1906, i32 0, i32 10
  %1908 = load i32, ptr %1907, align 4, !tbaa !40
  %1909 = load ptr, ptr %8, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1909, i32 0, i32 6
  %1911 = load i32, ptr %1910, align 4, !tbaa !26
  %1912 = load i32, ptr %16, align 4, !tbaa !9
  %1913 = zext i32 %1912 to i64
  %1914 = load i32, ptr %36, align 4, !tbaa !9
  %1915 = zext i32 %1914 to i64
  %1916 = mul nsw i64 %1913, %1915
  %1917 = load ptr, ptr %9, align 8, !tbaa !5
  %1918 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1917, i32 0, i32 5
  %1919 = load i32, ptr %1918, align 4, !tbaa !41
  %1920 = zext i32 %1919 to i64
  %1921 = mul nsw i64 %1916, %1920
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1905, i32 noundef %1908, i32 noundef %1911, i64 noundef %1921)
  %1922 = load i32, ptr %59, align 4, !tbaa !9
  %1923 = icmp ugt i32 %1922, 0
  br i1 %1923, label %1924, label %1938

1924:                                             ; preds = %1904
  %1925 = load ptr, ptr %6, align 8, !tbaa !5
  %1926 = load ptr, ptr %9, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1926, i32 0, i32 10
  %1928 = load i32, ptr %1927, align 4, !tbaa !40
  %1929 = load i32, ptr %61, align 4, !tbaa !9
  %1930 = load i32, ptr %16, align 4, !tbaa !9
  %1931 = zext i32 %1930 to i64
  %1932 = load i32, ptr %36, align 4, !tbaa !9
  %1933 = zext i32 %1932 to i64
  %1934 = mul nsw i64 %1931, %1933
  %1935 = load i32, ptr %21, align 4, !tbaa !9
  %1936 = zext i32 %1935 to i64
  %1937 = mul nsw i64 %1934, %1936
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1925, i32 noundef %1928, i32 noundef %1929, i64 noundef %1937)
  br label %1938

1938:                                             ; preds = %1924, %1904
  %1939 = load ptr, ptr %6, align 8, !tbaa !5
  %1940 = load ptr, ptr %9, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1940, i32 0, i32 10
  %1942 = load i32, ptr %1941, align 4, !tbaa !40
  %1943 = load ptr, ptr %8, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1943, i32 0, i32 28
  %1945 = load i32, ptr %1944, align 4, !tbaa !25
  %1946 = load i32, ptr %16, align 4, !tbaa !9
  %1947 = zext i32 %1946 to i64
  %1948 = load i32, ptr %36, align 4, !tbaa !9
  %1949 = zext i32 %1948 to i64
  %1950 = mul nsw i64 %1947, %1949
  %1951 = load ptr, ptr %9, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1951, i32 0, i32 2
  %1953 = load i32, ptr %1952, align 4, !tbaa !42
  %1954 = zext i32 %1953 to i64
  %1955 = mul nsw i64 %1950, %1954
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1939, i32 noundef %1942, i32 noundef %1945, i64 noundef %1955)
  %1956 = load ptr, ptr %6, align 8, !tbaa !5
  %1957 = load ptr, ptr %7, align 8, !tbaa !5
  %1958 = load ptr, ptr %9, align 8, !tbaa !5
  %1959 = load ptr, ptr %8, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1959, i32 0, i32 24
  %1961 = load i32, ptr %1960, align 4, !tbaa !27
  %1962 = load i32, ptr %17, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_footer_m_loop(ptr noundef %1956, ptr noundef %1957, ptr noundef %1958, i32 noundef %1961, i32 noundef %1962)
  br label %1963

1963:                                             ; preds = %1938, %1901, %1898
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  br label %1964

1964:                                             ; preds = %1963
  %1965 = load i32, ptr %32, align 4, !tbaa !9
  %1966 = add i32 %1965, 1
  store i32 %1966, ptr %32, align 4, !tbaa !9
  br label %649, !llvm.loop !51

1967:                                             ; preds = %649
  %1968 = load ptr, ptr %10, align 8, !tbaa !5
  %1969 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1968, i32 noundef 3)
  %1970 = icmp eq i32 4, %1969
  br i1 %1970, label %1971, label %1973

1971:                                             ; preds = %1967
  %1972 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf8_avx512_clean_stack(ptr noundef %1972, i32 noundef 0)
  br label %1997

1973:                                             ; preds = %1967
  %1974 = load ptr, ptr %10, align 8, !tbaa !5
  %1975 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1974, i32 noundef 3)
  %1976 = icmp eq i32 2, %1975
  br i1 %1976, label %1977, label %1985

1977:                                             ; preds = %1973
  %1978 = load ptr, ptr %6, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1978, i32 0, i32 6
  %1980 = load i32, ptr %1979, align 4, !tbaa !19
  %1981 = icmp ult i32 %1980, 1103
  br i1 %1981, label %1982, label %1984

1982:                                             ; preds = %1977
  %1983 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf16_avx512_clean_stack(ptr noundef %1983, i32 noundef 0)
  br label %1984

1984:                                             ; preds = %1982, %1977
  br label %1996

1985:                                             ; preds = %1973
  %1986 = load ptr, ptr %10, align 8, !tbaa !5
  %1987 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1986, i32 noundef 0)
  %1988 = icmp eq i32 5, %1987
  br i1 %1988, label %1993, label %1989

1989:                                             ; preds = %1985
  %1990 = load ptr, ptr %10, align 8, !tbaa !5
  %1991 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1990, i32 noundef 3)
  %1992 = icmp eq i32 5, %1991
  br i1 %1992, label %1993, label %1995

1993:                                             ; preds = %1989, %1985
  %1994 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef %1994, i32 noundef 0)
  br label %1995

1995:                                             ; preds = %1993, %1989
  br label %1996

1996:                                             ; preds = %1995, %1984
  br label %1997

1997:                                             ; preds = %1996, %1971
  %1998 = load i32, ptr %62, align 4, !tbaa !9
  %1999 = icmp ugt i32 %1998, 0
  br i1 %1999, label %2000, label %2006

2000:                                             ; preds = %1997
  %2001 = load ptr, ptr %6, align 8, !tbaa !5
  %2002 = load ptr, ptr %9, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2002, i32 0, i32 14
  %2004 = load i32, ptr %2003, align 4, !tbaa !31
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %2001, i32 noundef %2004, i32 noundef 5, i32 noundef 4)
  %2005 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %2005, i32 noundef 5)
  br label %2006

2006:                                             ; preds = %2000, %1997
  %2007 = load ptr, ptr %6, align 8, !tbaa !5
  %2008 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %2007, i32 noundef %2008, ptr noundef %79)
  call void @llvm.lifetime.end.p0(i64 2101248, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  ret void
}

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

declare void @libxsmm_reset_jump_label_tracker(ptr noundef) #2

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

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

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

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

declare void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

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

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) #2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 27}
!12 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !13, i64 27, !13, i64 29, !7, i64 31}
!13 = !{!"short", !7, i64 0}
!14 = !{!15, !7, i64 512}
!15 = !{!"libxsmm_mateltwise_kernel_config_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !10, i64 392, !10, i64 396, !10, i64 400, !10, i64 404, !10, i64 408, !10, i64 412, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !10, i64 432, !10, i64 436, !10, i64 440, !10, i64 444, !10, i64 448, !10, i64 452, !10, i64 456, !10, i64 460, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !7, i64 512}
!16 = !{!7, !7, i64 0}
!17 = !{!15, !10, i64 24}
!18 = !{!15, !10, i64 36}
!19 = !{!20, !10, i64 28}
!20 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!21 = !{!12, !13, i64 29}
!22 = !{!23, !10, i64 104}
!23 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144}
!24 = !{!23, !10, i64 108}
!25 = !{!23, !10, i64 112}
!26 = !{!23, !10, i64 24}
!27 = !{!23, !10, i64 96}
!28 = !{!23, !10, i64 100}
!29 = !{!23, !10, i64 4}
!30 = !{!23, !10, i64 16}
!31 = !{!15, !10, i64 56}
!32 = !{!23, !10, i64 0}
!33 = !{!15, !10, i64 48}
!34 = !{!12, !10, i64 0}
!35 = !{!36, !36, i64 0}
!36 = !{!"long long", !7, i64 0}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!15, !10, i64 44}
!40 = !{!15, !10, i64 40}
!41 = !{!15, !10, i64 20}
!42 = !{!15, !10, i64 8}
!43 = distinct !{!43, !38}
!44 = !{!15, !10, i64 0}
!45 = !{!12, !10, i64 8}
!46 = distinct !{!46, !38}
!47 = distinct !{!47, !38}
!48 = distinct !{!48, !38}
!49 = distinct !{!49, !38}
!50 = distinct !{!50, !38}
!51 = distinct !{!51, !38}


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

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

@.str.12 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1

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

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

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

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

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

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

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

declare void @libxsmm_x86_instruction_unified_vec_move(ptr 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 #2

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

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

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

declare void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext, i32 noundef) local_unnamed_addr #2

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

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

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 #2

declare void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

declare void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef) local_unnamed_addr #2

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

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 #2

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 #2

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_reduce_cols_index_avx512_microkernel(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %struct.libxsmm_jump_label_tracker_struct, align 4
  %12 = alloca [4 x i64], align 16
  %13 = getelementptr inbounds i8, ptr %4, i64 27
  %14 = load i16, ptr %13, align 1, !tbaa !5
  %15 = and i16 %14, 256
  %.not = icmp eq i16 %15, 0
  %16 = select i1 %.not, i32 4, i32 8
  %17 = select i1 %.not, i32 -1610350453, i32 -1568407413
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 16, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  %18 = getelementptr inbounds i8, ptr %3, i64 512
  %19 = load i8, ptr %18, align 4, !tbaa !12
  store i8 %19, ptr %7, align 1, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  store i8 %19, ptr %8, align 1, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %20 = getelementptr inbounds i8, ptr %3, i64 24
  %21 = load i32, ptr %20, align 4, !tbaa !15
  store i32 %21, ptr %9, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  %22 = getelementptr inbounds i8, ptr %3, i64 36
  %23 = load i32, ptr %22, align 4, !tbaa !16
  store i32 %23, ptr %10, align 4, !tbaa !11
  %24 = getelementptr inbounds i8, ptr %0, i64 28
  %25 = load i32, ptr %24, align 4, !tbaa !17
  %26 = icmp ult i32 %25, 1101
  %27 = select i1 %26, i8 121, i8 122
  %28 = select i1 %.not, i32 537209432, i32 -528143527
  %29 = select i1 %.not, i32 -536532356, i32 -528143492
  %30 = select i1 %.not, i32 -268097948, i32 -259709340
  %31 = tail call ptr @getenv(ptr noundef nonnull @.str.12) #6
  %32 = tail call ptr @getenv(ptr noundef nonnull @.str.13) #6
  %33 = tail call ptr @getenv(ptr noundef nonnull @.str.14) #6
  %34 = tail call ptr @getenv(ptr noundef nonnull @.str.15) #6
  call void @llvm.lifetime.start.p0(i64 2101248, ptr nonnull %11) #6
  call void @libxsmm_reset_jump_label_tracker(ptr noundef nonnull %11) #6
  call void @libxsmm_generator_reduce_set_lp_vlen_vname_vmove_x86(ptr noundef %0, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10)
  %35 = getelementptr inbounds i8, ptr %4, i64 29
  %36 = load i16, ptr %35, align 1, !tbaa !20
  switch i16 %36, label %43 [
    i16 53, label %37
    i16 68, label %37
  ]

37:                                               ; preds = %5, %5
  %38 = icmp eq i16 %36, 53
  %.0830 = zext i1 %38 to i32
  %.0823 = select i1 %38, i32 805574239, i32 805574232
  %.0811 = select i1 %38, i32 6, i32 0
  %39 = icmp eq i16 %36, 68
  %.0828 = zext i1 %39 to i32
  %.1824 = select i1 %39, i32 805573981, i32 %.0823
  %.1812 = select i1 %39, i32 9, i32 %.0811
  %40 = load i16, ptr %13, align 1, !tbaa !5
  %41 = lshr i16 %40, 11
  %.lobit = and i16 %41, 1
  %.0821 = zext nneg i16 %.lobit to i32
  %42 = and i16 %40, 512
  %.not854 = icmp eq i16 %42, 0
  %spec.select882 = select i1 %.not854, i32 %.0821, i32 1
  br label %43

43:                                               ; preds = %37, %5
  %44 = phi i1 [ true, %5 ], [ false, %37 ]
  %.1831 = phi i32 [ 0, %5 ], [ %.0830, %37 ]
  %.1829 = phi i32 [ 0, %5 ], [ %.0828, %37 ]
  %.1827 = phi i32 [ 0, %5 ], [ %.0821, %37 ]
  %.2825 = phi i32 [ 805574232, %5 ], [ %.1824, %37 ]
  %.1822 = phi i32 [ 0, %5 ], [ %spec.select882, %37 ]
  %.2813 = phi i32 [ 0, %5 ], [ %.1812, %37 ]
  %45 = icmp eq ptr %31, null
  br i1 %45, label %48, label %46

46:                                               ; preds = %43
  %47 = call i32 @atoi(ptr nocapture noundef %31) #7
  br label %48

48:                                               ; preds = %43, %46
  %.0804 = phi i32 [ 0, %43 ], [ %47, %46 ]
  %49 = icmp eq ptr %32, null
  br i1 %49, label %52, label %50

50:                                               ; preds = %48
  %51 = call i32 @atoi(ptr nocapture noundef %32) #7
  br label %52

52:                                               ; preds = %48, %50
  %.0807 = phi i32 [ 1, %48 ], [ %51, %50 ]
  %53 = icmp eq ptr %33, null
  br i1 %53, label %56, label %54

54:                                               ; preds = %52
  %55 = call i32 @atoi(ptr nocapture noundef %33) #7
  br label %56

56:                                               ; preds = %52, %54
  %.0806 = phi i32 [ 0, %52 ], [ %55, %54 ]
  %57 = load i16, ptr %13, align 1, !tbaa !5
  %58 = lshr i16 %57, 6
  %.lobit906 = and i16 %58, 1
  %59 = and i16 %57, 512
  %.not856 = icmp eq i16 %59, 0
  %narrow = select i1 %.not856, i16 %.lobit906, i16 0
  %.1809 = zext nneg i16 %narrow to i32
  %60 = icmp eq ptr %34, null
  br i1 %60, label %63, label %61

61:                                               ; preds = %56
  %62 = call i32 @atoi(ptr nocapture noundef %34) #7
  br label %63

63:                                               ; preds = %56, %61
  %.2810 = phi i32 [ %.1809, %56 ], [ %62, %61 ]
  %64 = and i16 %57, 1024
  %.not857 = icmp eq i16 %64, 0
  %spec.select = select i1 %.not857, i32 %.0804, i32 0
  %65 = icmp sgt i32 %spec.select, 0
  %66 = icmp eq i32 %.0807, 2
  %67 = select i1 %66, i32 -1809575912, i32 -1810624488
  %68 = icmp eq i32 %.0806, 0
  %69 = load i32, ptr %10, align 4
  %70 = select i1 %68, i32 %69, i32 537138731
  %71 = getelementptr inbounds i8, ptr %2, i64 104
  %72 = getelementptr inbounds i8, ptr %2, i64 108
  %73 = getelementptr inbounds i8, ptr %2, i64 112
  store i32 10, ptr %73, align 4, !tbaa !21
  %74 = getelementptr inbounds i8, ptr %2, i64 24
  store i32 11, ptr %74, align 4, !tbaa !23
  %75 = getelementptr inbounds i8, ptr %2, i64 96
  %76 = getelementptr inbounds i8, ptr %2, i64 100
  store <4 x i32> <i32 0, i32 2, i32 8, i32 9>, ptr %75, align 4, !tbaa !11
  %77 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 6, ptr %77, align 4, !tbaa !24
  %78 = getelementptr inbounds i8, ptr %2, i64 16
  store i32 1, ptr %78, align 4, !tbaa !25
  %79 = getelementptr inbounds i8, ptr %3, i64 56
  %80 = load i32, ptr %79, align 4, !tbaa !26
  %81 = load i32, ptr %2, align 4, !tbaa !27
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %80, i32 noundef %81, i32 noundef 127, i32 noundef 0, i32 noundef 48, i32 noundef 8, i32 noundef 0) #6
  %82 = load i32, ptr %79, align 4, !tbaa !26
  %83 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %82, i32 noundef %83, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %83, i32 noundef 0) #6
  %84 = getelementptr inbounds i8, ptr %3, i64 48
  %85 = load i32, ptr %84, align 4, !tbaa !29
  %86 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %85, i32 noundef %86, i64 noundef 0) #6
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef nonnull %0, i32 noundef 30107, i32 noundef 2, ptr noundef nonnull %11) #6
  %87 = load i32, ptr %79, align 4, !tbaa !26
  %88 = load i32, ptr %2, align 4, !tbaa !27
  %89 = load i32, ptr %72, align 4, !tbaa !30
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %87, i32 noundef %88, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %89, i32 noundef 0) #6
  %90 = load i32, ptr %79, align 4, !tbaa !26
  %91 = load i32, ptr %2, align 4, !tbaa !27
  %92 = load i32, ptr %73, align 4, !tbaa !21
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %90, i32 noundef %91, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef %92, i32 noundef 0) #6
  %93 = load i32, ptr %79, align 4, !tbaa !26
  %94 = load i32, ptr %2, align 4, !tbaa !27
  %95 = load i32, ptr %74, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %93, i32 noundef %94, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %95, i32 noundef 0) #6
  %96 = icmp ne i32 %.1827, 0
  br i1 %96, label %97, label %100

97:                                               ; preds = %63
  %98 = load i32, ptr %79, align 4, !tbaa !26
  %99 = load i32, ptr %2, align 4, !tbaa !27
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %98, i32 noundef %99, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef 7, i32 noundef 0) #6
  br label %100

100:                                              ; preds = %97, %63
  %101 = load i32, ptr %24, align 4, !tbaa !17
  %102 = icmp ult i32 %101, 1101
  br i1 %102, label %103, label %._crit_edge951

._crit_edge951:                                   ; preds = %100
  %.pre = load i32, ptr %6, align 4, !tbaa !11
  br label %104

103:                                              ; preds = %100
  store i32 8, ptr %6, align 4, !tbaa !11
  br label %104

104:                                              ; preds = %._crit_edge951, %103
  %105 = phi i32 [ %.pre, %._crit_edge951 ], [ 8, %103 ]
  %106 = load i32, ptr %4, align 1, !tbaa !31
  %107 = urem i32 %106, %105
  %108 = icmp ne i32 %107, 0
  %109 = zext i1 %108 to i32
  %110 = add i32 %106, -1
  %111 = add i32 %110, %105
  %112 = udiv i32 %111, %105
  %113 = icmp ult i32 %101, 1051
  br i1 %113, label %114, label %118

114:                                              ; preds = %104
  %115 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %116 = icmp eq i32 %115, 2
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  br label %118

118:                                              ; preds = %104, %114, %117
  %.0842 = phi i32 [ 13, %117 ], [ 30, %114 ], [ 30, %104 ]
  %.0841 = phi i32 [ 14, %117 ], [ 31, %114 ], [ 31, %104 ]
  %spec.store.select = phi i32 [ 6, %117 ], [ 7, %114 ], [ 7, %104 ]
  %.0794 = phi i32 [ 6, %117 ], [ 8, %114 ], [ 14, %104 ]
  br i1 %108, label %119, label %148

119:                                              ; preds = %118
  %120 = load i32, ptr %24, align 4, !tbaa !17
  %121 = icmp ugt i32 %120, 1050
  br i1 %121, label %122, label %126

122:                                              ; preds = %119
  %123 = load i32, ptr %6, align 4, !tbaa !11
  %124 = urem i32 %106, %123
  %125 = sub i32 %123, %124
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef 0, i32 noundef 1, i32 noundef %125, i32 noundef 1) #6
  br label %148

126:                                              ; preds = %119
  %127 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %.not858 = icmp eq i32 %127, 1
  %128 = select i1 %.not858, i32 14, i32 12
  %129 = load i32, ptr %6, align 4, !tbaa !11
  %130 = urem i32 %106, %129
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef nonnull %0, i32 noundef 15, i32 noundef %130, i32 noundef 1) #6
  %131 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %132 = icmp eq i32 %131, 2
  br i1 %132, label %136, label %133

133:                                              ; preds = %126
  %134 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %135 = icmp eq i32 %134, 3
  br i1 %135, label %136, label %139

136:                                              ; preds = %133, %126
  %137 = load i32, ptr %6, align 4, !tbaa !11
  %138 = urem i32 %106, %137
  br label %139

139:                                              ; preds = %136, %133
  %.0838 = phi i32 [ %138, %136 ], [ 15, %133 ]
  %140 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %141 = icmp eq i32 %140, 2
  br i1 %141, label %145, label %142

142:                                              ; preds = %139
  %143 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %144 = icmp eq i32 %143, 3
  br i1 %144, label %145, label %148

145:                                              ; preds = %142, %139
  %146 = load i32, ptr %6, align 4, !tbaa !11
  %147 = urem i32 %106, %146
  br label %148

148:                                              ; preds = %122, %145, %142, %118
  %.0840 = phi i32 [ 1, %122 ], [ %147, %145 ], [ 15, %142 ], [ 0, %118 ]
  %.1839 = phi i32 [ 1, %122 ], [ %.0838, %145 ], [ %.0838, %142 ], [ 0, %118 ]
  %.0836 = phi i32 [ 1, %122 ], [ 15, %145 ], [ 15, %142 ], [ 0, %118 ]
  %.0835 = phi i32 [ 4, %122 ], [ %128, %145 ], [ %128, %142 ], [ 4, %118 ]
  %.1795 = phi i32 [ %.0794, %122 ], [ %spec.store.select, %145 ], [ %spec.store.select, %142 ], [ %.0794, %118 ]
  %.pr.pre = load i32, ptr %24, align 4, !tbaa !17
  %149 = icmp ugt i32 %.pr.pre, 1050
  br i1 %96, label %150, label %153

150:                                              ; preds = %148
  br i1 %149, label %.thread, label %.thread954

.thread:                                          ; preds = %150
  %.864 = select i1 %.not, i32 8, i32 6
  br label %154

.thread954:                                       ; preds = %150
  %151 = select i1 %.not, i32 537209368, i32 545598233
  %152 = select i1 %.not, i32 1879912522, i32 1879912523
  %.865 = select i1 %.not, i32 0, i32 9
  %.866 = select i1 %.not, i32 3, i32 2
  br label %162

153:                                              ; preds = %148
  br i1 %149, label %154, label %162

154:                                              ; preds = %.thread, %153
  %.2796900 = phi i32 [ %.864, %.thread ], [ %.1795, %153 ]
  %.0837890 = phi i32 [ 27, %.thread ], [ 0, %153 ]
  br i1 %.not, label %170, label %155

155:                                              ; preds = %154
  %156 = load i32, ptr %6, align 4, !tbaa !11
  %157 = lshr i32 %156, 1
  %158 = urem i32 %106, %157
  %159 = icmp ne i32 %158, 0
  %or.cond = and i1 %96, %159
  br i1 %or.cond, label %160, label %170

160:                                              ; preds = %155
  %161 = sub nsw i32 %157, %158
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef 0, i32 noundef %.0835, i32 noundef %161, i32 noundef 0) #6
  br label %170

162:                                              ; preds = %.thread954, %153
  %.2796.ph966 = phi i32 [ %.866, %.thread954 ], [ %.1795, %153 ]
  %.0814.ph965 = phi i32 [ %152, %.thread954 ], [ %30, %153 ]
  %.0817.ph964 = phi i32 [ %151, %.thread954 ], [ %28, %153 ]
  %.0833.ph963 = phi i32 [ %.865, %.thread954 ], [ 0, %153 ]
  %.0834.ph962 = phi i32 [ 10, %.thread954 ], [ 3, %153 ]
  %.0837.ph961 = phi i32 [ 11, %.thread954 ], [ 0, %153 ]
  br i1 %.not, label %170, label %163

163:                                              ; preds = %162
  %164 = and i32 %106, 3
  %165 = icmp ne i32 %164, 0
  %or.cond3 = and i1 %96, %165
  br i1 %or.cond3, label %166, label %170

166:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %12, i8 0, i64 32, i1 false)
  %167 = shl i32 %106, 3
  %168 = and i32 %167, 24
  %169 = zext nneg i32 %168 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 16 %12, i8 -1, i64 %169, i1 false), !tbaa !32
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %12, ptr noundef nonnull @.str.16, i8 noundef signext 121, i32 noundef %.0835) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %170

170:                                              ; preds = %162, %163, %166, %154, %155, %160
  %.2796899 = phi i32 [ %.2796.ph966, %162 ], [ %.2796.ph966, %163 ], [ %.2796.ph966, %166 ], [ %.2796900, %154 ], [ %.2796900, %155 ], [ %.2796900, %160 ]
  %.0814897 = phi i32 [ %.0814.ph965, %162 ], [ %.0814.ph965, %163 ], [ %.0814.ph965, %166 ], [ %30, %154 ], [ %30, %155 ], [ %30, %160 ]
  %.0817895 = phi i32 [ %.0817.ph964, %162 ], [ %.0817.ph964, %163 ], [ %.0817.ph964, %166 ], [ %28, %154 ], [ %28, %155 ], [ %28, %160 ]
  %.0833893 = phi i32 [ %.0833.ph963, %162 ], [ %.0833.ph963, %163 ], [ %.0833.ph963, %166 ], [ 0, %154 ], [ 0, %155 ], [ 0, %160 ]
  %.0834891 = phi i32 [ %.0834.ph962, %162 ], [ %.0834.ph962, %163 ], [ %.0834.ph962, %166 ], [ 3, %154 ], [ 3, %155 ], [ 3, %160 ]
  %.0837889 = phi i32 [ %.0837.ph961, %162 ], [ %.0837.ph961, %163 ], [ %.0837.ph961, %166 ], [ %.0837890, %154 ], [ %.0837890, %155 ], [ %.0837890, %160 ]
  %.not859 = icmp eq i32 %.1822, 0
  br i1 %.not859, label %182, label %171

171:                                              ; preds = %170
  call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef 5) #6
  %172 = load i32, ptr %79, align 4, !tbaa !26
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef %172, i32 noundef 4, i32 noundef 5) #6
  %173 = getelementptr inbounds i8, ptr %3, i64 44
  %174 = load i32, ptr %173, align 4, !tbaa !34
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef %174, i32 noundef 4, i64 noundef 40) #6
  %.not860 = icmp eq i32 %.1831, 0
  br i1 %.not860, label %177, label %175

175:                                              ; preds = %171
  %176 = load i32, ptr %76, align 4, !tbaa !35
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef %176, i64 noundef 4286578688) #6
  br label %177

177:                                              ; preds = %175, %171
  %.not861 = icmp eq i32 %.1829, 0
  br i1 %.not861, label %180, label %178

178:                                              ; preds = %177
  %179 = load i32, ptr %76, align 4, !tbaa !35
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef %179, i64 noundef 2139095040) #6
  br label %180

180:                                              ; preds = %178, %177
  %181 = load i32, ptr %76, align 4, !tbaa !35
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef -32, i32 noundef %181, i32 noundef 1) #6
  br label %182

182:                                              ; preds = %180, %170
  %183 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %184 = icmp eq i32 %183, 4
  br i1 %184, label %185, label %186

185:                                              ; preds = %182
  call void @libxsmm_generator_vcvtneps2bf8_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef 0) #6
  br label %200

186:                                              ; preds = %182
  %187 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %188 = icmp eq i32 %187, 2
  br i1 %188, label %189, label %193

189:                                              ; preds = %186
  %190 = load i32, ptr %24, align 4, !tbaa !17
  %191 = icmp ult i32 %190, 1103
  br i1 %191, label %192, label %200

192:                                              ; preds = %189
  call void @libxsmm_generator_vcvtneps2bf16_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef 0) #6
  br label %200

193:                                              ; preds = %186
  %194 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %195 = icmp eq i32 %194, 5
  br i1 %195, label %199, label %196

196:                                              ; preds = %193
  %197 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %198 = icmp eq i32 %197, 5
  br i1 %198, label %199, label %200

199:                                              ; preds = %196, %193
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef 0) #6
  br label %200

200:                                              ; preds = %192, %189, %199, %196, %185
  %201 = icmp ugt i32 %112, %.2796899
  br i1 %201, label %202, label %210

202:                                              ; preds = %200
  %203 = udiv i32 %112, %.2796899
  %204 = mul i32 %203, %.2796899
  %.recomposed = urem i32 %112, %.2796899
  %205 = icmp eq i32 %.recomposed, 0
  %or.cond5 = select i1 %108, i1 %205, i1 false
  br i1 %or.cond5, label %206, label %211

206:                                              ; preds = %202
  %207 = add nsw i32 %203, -1
  %208 = mul i32 %207, %.2796899
  %209 = sub i32 %112, %208
  br label %211

210:                                              ; preds = %200
  %spec.select867 = select i1 %108, i32 %112, i32 0
  %not.907 = xor i1 %108, true
  %spec.select868 = zext i1 %not.907 to i32
  br label %211

211:                                              ; preds = %210, %202, %206
  %.0801 = phi i32 [ %209, %206 ], [ %.recomposed, %202 ], [ %spec.select867, %210 ]
  %.0800 = phi i32 [ %207, %206 ], [ %203, %202 ], [ %spec.select868, %210 ]
  %.0797 = phi i32 [ %.2796899, %206 ], [ %.2796899, %202 ], [ %112, %210 ]
  %.not862 = icmp ne i32 %.0800, 0
  %spec.select869 = zext i1 %.not862 to i32
  %212 = icmp ne i32 %.0801, 0
  %213 = select i1 %.not862, i32 2, i32 1
  %.1819 = select i1 %212, i32 %213, i32 %spec.select869
  %.not938 = icmp eq i32 %.1819, 0
  br i1 %.not938, label %._crit_edge933, label %.lr.ph932

.lr.ph932:                                        ; preds = %211
  %214 = icmp ugt i32 %.0800, 1
  %215 = icmp eq i32 %.0800, 1
  %or.cond11 = and i1 %212, %215
  %216 = add nsw i32 %.1819, -1
  %217 = getelementptr inbounds i8, ptr %3, i64 40
  %218 = getelementptr inbounds i8, ptr %3, i64 20
  %219 = select i1 %.not, i64 2, i64 3
  %220 = getelementptr inbounds i8, ptr %3, i64 8
  %221 = icmp eq i32 %.2810, 0
  %222 = add i32 %.0801, -1
  %223 = or i32 %.1829, %.1831
  %or.cond15.not = icmp eq i32 %223, 0
  %224 = zext i1 %65 to i32
  %225 = zext nneg i32 %spec.select to i64
  %226 = select i1 %.not, i32 2, i32 3
  %227 = shl i32 %spec.select, %226
  %228 = getelementptr inbounds i8, ptr %4, i64 8
  %229 = shl nuw nsw i32 %.0834891, 4
  %230 = shl nuw nsw i32 %.0833893, 4
  %231 = icmp eq i32 %216, 0
  br label %232

232:                                              ; preds = %.lr.ph932, %603
  %.1798930 = phi i32 [ %.0797, %.lr.ph932 ], [ %.2799, %603 ]
  %.0820927 = phi i32 [ 0, %.lr.ph932 ], [ %604, %603 ]
  %233 = icmp eq i32 %.0820927, 0
  %or.cond9 = and i1 %214, %233
  br i1 %or.cond9, label %.thread901, label %235

.thread901:                                       ; preds = %232
  %234 = load i32, ptr %75, align 4, !tbaa !36
  call void @libxsmm_generator_mateltwise_header_m_loop(ptr noundef %0, ptr noundef %1, ptr noundef %3, i32 noundef %234) #6
  br label %.thread904

235:                                              ; preds = %232
  %236 = icmp eq i32 %.0820927, %216
  %or.cond871 = select i1 %or.cond11, i1 %236, i1 false
  br i1 %or.cond871, label %237, label %262

237:                                              ; preds = %235
  %238 = load i32, ptr %217, align 4, !tbaa !37
  %239 = load i32, ptr %74, align 4, !tbaa !23
  %240 = zext i32 %.1798930 to i64
  %241 = load i32, ptr %6, align 4, !tbaa !11
  %242 = zext i32 %241 to i64
  %243 = mul nuw nsw i64 %242, %240
  %244 = load i32, ptr %218, align 4, !tbaa !38
  %245 = zext i32 %244 to i64
  %246 = mul nuw nsw i64 %243, %245
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %238, i32 noundef %239, i64 noundef %246) #6
  br i1 %96, label %247, label %253

247:                                              ; preds = %237
  %248 = load i32, ptr %217, align 4, !tbaa !37
  %249 = load i32, ptr %6, align 4, !tbaa !11
  %250 = zext i32 %249 to i64
  %251 = mul nuw nsw i64 %250, %240
  %252 = shl i64 %251, %219
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %248, i32 noundef 7, i64 noundef %252) #6
  br label %253

253:                                              ; preds = %247, %237
  %254 = load i32, ptr %217, align 4, !tbaa !37
  %255 = load i32, ptr %73, align 4, !tbaa !21
  %256 = load i32, ptr %6, align 4, !tbaa !11
  %257 = zext i32 %256 to i64
  %258 = mul nuw nsw i64 %257, %240
  %259 = load i32, ptr %220, align 4, !tbaa !39
  %260 = zext i32 %259 to i64
  %261 = mul nuw nsw i64 %258, %260
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %254, i32 noundef %255, i64 noundef %261) #6
  br label %.thread904

262:                                              ; preds = %235
  br i1 %.not862, label %.thread904, label %264

.thread904:                                       ; preds = %253, %.thread901, %262
  %263 = phi i1 [ %236, %262 ], [ true, %253 ], [ %231, %.thread901 ]
  %or.cond873 = select i1 %212, i1 %263, i1 false
  %spec.select937 = select i1 %or.cond873, i32 %.0801, i32 %.1798930
  br label %264

264:                                              ; preds = %.thread904, %262
  %265 = phi i1 [ true, %262 ], [ %or.cond873, %.thread904 ]
  %.2799 = phi i32 [ %.0801, %262 ], [ %spec.select937, %.thread904 ]
  %266 = shl i32 %.2799, 1
  %267 = mul i32 %.2799, 3
  %.not939 = icmp eq i32 %.2799, 0
  br i1 %.not939, label %.preheader912, label %.lr.ph

.preheader912:                                    ; preds = %331, %264
  %not. = xor i1 %233, true
  %268 = zext i1 %not. to i32
  br label %333

.lr.ph:                                           ; preds = %264, %331
  %.0914 = phi i32 [ %332, %331 ], [ 0, %264 ]
  br i1 %221, label %269, label %279

269:                                              ; preds = %.lr.ph
  br i1 %or.cond15.not, label %277, label %270

270:                                              ; preds = %269
  %271 = icmp eq i32 %.0914, 0
  br i1 %271, label %272, label %275

272:                                              ; preds = %270
  %273 = load i32, ptr %24, align 4, !tbaa !17
  %274 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %273, i32 noundef 537209368, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef -32, i8 noundef signext %274, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0) #6
  br label %324

275:                                              ; preds = %270
  %276 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537138704, i8 noundef signext %276, i32 noundef 0, i32 noundef %.0914) #6
  br label %324

277:                                              ; preds = %269
  %278 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %278, i32 noundef %.0914, i32 noundef %.0914, i32 noundef %.0914) #6
  br label %324

279:                                              ; preds = %.lr.ph
  %280 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %281 = icmp eq i32 %280, 3
  br i1 %281, label %282, label %294

282:                                              ; preds = %279
  %283 = load i32, ptr %24, align 4, !tbaa !17
  %284 = icmp ugt i32 %283, 1050
  br i1 %284, label %285, label %294

285:                                              ; preds = %282
  %286 = load i8, ptr %18, align 4, !tbaa !12
  %287 = load i32, ptr %74, align 4, !tbaa !23
  %288 = load i32, ptr %6, align 4, !tbaa !11
  %289 = mul i32 %288, %.0914
  %290 = load i32, ptr %218, align 4, !tbaa !38
  %291 = mul i32 %289, %290
  %292 = icmp eq i32 %.0914, %222
  %or.cond17 = select i1 %292, i1 %108, i1 false
  %or.cond19 = and i1 %265, %or.cond17
  %293 = select i1 %or.cond19, i32 %109, i32 0
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %286, i32 noundef %287, i32 noundef 127, i32 noundef 0, i32 noundef %291, i32 noundef 0, i32 noundef 255, i32 noundef %.0914, i32 noundef %293, i32 noundef 0, i32 noundef 0) #6
  br label %324

294:                                              ; preds = %282, %279
  %295 = load i32, ptr %10, align 4, !tbaa !11
  %296 = load i32, ptr %74, align 4, !tbaa !23
  %297 = load i32, ptr %6, align 4, !tbaa !11
  %298 = mul i32 %297, %.0914
  %299 = load i32, ptr %218, align 4, !tbaa !38
  %300 = mul i32 %298, %299
  %301 = load i8, ptr %8, align 1, !tbaa !14
  %302 = icmp eq i32 %.0914, %222
  %or.cond21 = select i1 %302, i1 %108, i1 false
  %spec.select874 = and i1 %265, %or.cond21
  %303 = zext i1 %spec.select874 to i32
  %304 = select i1 %spec.select874, i32 %.0840, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %295, i32 noundef %296, i32 noundef 127, i32 noundef 0, i32 noundef %300, i8 noundef signext %301, i32 noundef %.0914, i32 noundef %303, i32 noundef %304, i32 noundef 0) #6
  %305 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %306 = icmp eq i32 %305, 4
  br i1 %306, label %307, label %309

307:                                              ; preds = %294
  %308 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %308, i32 noundef %.0914, i32 noundef %.0914) #6
  br label %324

309:                                              ; preds = %294
  %310 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %311 = icmp eq i32 %310, 5
  br i1 %311, label %312, label %314

312:                                              ; preds = %309
  %313 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %313, i32 noundef %.0914, i32 noundef %.0914, i32 noundef %.0841, i32 noundef %.0842, i32 noundef 7, i32 noundef 6) #6
  br label %324

314:                                              ; preds = %309
  %315 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %316 = icmp eq i32 %315, 2
  br i1 %316, label %317, label %319

317:                                              ; preds = %314
  %318 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %318, i32 noundef %.0914, i32 noundef %.0914) #6
  br label %324

319:                                              ; preds = %314
  %320 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %321 = icmp eq i32 %320, 3
  br i1 %321, label %322, label %324

322:                                              ; preds = %319
  %323 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %323, i32 noundef %.0914, i32 noundef %.0914) #6
  br label %324

324:                                              ; preds = %285, %312, %319, %322, %317, %307, %277, %275, %272
  br i1 %96, label %325, label %331

325:                                              ; preds = %324
  %326 = load i8, ptr %18, align 4, !tbaa !12
  %327 = add i32 %.0914, %266
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %326, i32 noundef %327, i32 noundef %327, i32 noundef %327) #6
  br i1 %.not, label %331, label %328

328:                                              ; preds = %325
  %329 = load i8, ptr %18, align 4, !tbaa !12
  %330 = add i32 %.0914, %267
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %329, i32 noundef %330, i32 noundef %330, i32 noundef %330) #6
  br label %331

331:                                              ; preds = %324, %328, %325
  %332 = add nuw i32 %.0914, 1
  %exitcond.not = icmp eq i32 %332, %.2799
  br i1 %exitcond.not, label %.preheader912, label %.lr.ph, !llvm.loop !40

333:                                              ; preds = %.critedge878, %.preheader912
  %334 = phi i1 [ true, %.preheader912 ], [ false, %.critedge878 ]
  %335 = and i1 %65, %334
  br i1 %335, label %336, label %.critedge

336:                                              ; preds = %333
  %337 = load i32, ptr %79, align 4, !tbaa !26
  %338 = load i32, ptr %76, align 4, !tbaa !35
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %337, i32 noundef %338, i64 noundef 0) #6
  %339 = load i32, ptr %84, align 4, !tbaa !29
  %340 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %339, i32 noundef %340, i64 noundef %225) #6
  call void @libxsmm_x86_instruction_jump_to_label(ptr noundef %0, i32 noundef 30107, i32 noundef %268, ptr noundef nonnull %11) #6
  %341 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30008, i32 noundef %341, i64 noundef %225) #6
  %342 = load i32, ptr %76, align 4, !tbaa !35
  call void @libxsmm_generator_mateltwise_header_n_dyn_loop(ptr noundef %0, ptr noundef %1, ptr noundef %3, i32 noundef %342, i32 noundef 1) #6
  %343 = load i32, ptr %72, align 4, !tbaa !30
  %344 = load i32, ptr %76, align 4, !tbaa !35
  %345 = load i32, ptr %77, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %17, i32 noundef %343, i32 noundef %344, i32 noundef %16, i32 noundef 0, i32 noundef %345, i32 noundef 0) #6
  br label %347

.critedge:                                        ; preds = %333
  %346 = load i32, ptr %76, align 4, !tbaa !35
  call void @libxsmm_generator_mateltwise_header_n_dyn_loop(ptr noundef %0, ptr noundef %1, ptr noundef %3, i32 noundef %346, i32 noundef %224) #6
  br label %347

347:                                              ; preds = %.critedge, %336
  %.sink983 = phi ptr [ %77, %.critedge ], [ %78, %336 ]
  %.sink981 = phi i32 [ 0, %.critedge ], [ %227, %336 ]
  %348 = load i32, ptr %72, align 4, !tbaa !30
  %349 = load i32, ptr %76, align 4, !tbaa !35
  %350 = load i32, ptr %.sink983, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %17, i32 noundef %348, i32 noundef %349, i32 noundef %16, i32 noundef %.sink981, i32 noundef %350, i32 noundef 0) #6
  br i1 %96, label %351, label %358

351:                                              ; preds = %347
  %352 = load i32, ptr %24, align 4, !tbaa !17
  %353 = icmp ugt i32 %352, 1050
  %354 = load i32, ptr %77, align 4, !tbaa !24
  br i1 %353, label %355, label %356

355:                                              ; preds = %351
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %29, i8 noundef signext %27, i32 noundef %354, i32 noundef 255, i32 noundef %.0837889, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 0) #6
  br label %358

356:                                              ; preds = %351
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef -8, i32 noundef %354, i32 noundef 1) #6
  %357 = load i32, ptr %3, align 4, !tbaa !42
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %357, i32 noundef %.0817895, i32 noundef 5, i32 noundef 127, i32 noundef 0, i32 noundef -8, i8 noundef signext %27, i32 noundef %.0837889, i32 noundef 0, i32 noundef 0, i32 noundef 0) #6
  br label %358

358:                                              ; preds = %355, %356, %347
  %359 = load i32, ptr %77, align 4, !tbaa !24
  %360 = load i32, ptr %228, align 1, !tbaa !43
  %361 = zext i32 %360 to i64
  %362 = load i32, ptr %220, align 4, !tbaa !39
  %363 = zext i32 %362 to i64
  %364 = mul nuw nsw i64 %363, %361
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef %359, i64 noundef %364) #6
  br i1 %335, label %365, label %.thread978

365:                                              ; preds = %358
  %366 = load i32, ptr %78, align 4, !tbaa !25
  %367 = load i32, ptr %228, align 1, !tbaa !43
  %368 = zext i32 %367 to i64
  %369 = load i32, ptr %220, align 4, !tbaa !39
  %370 = zext i32 %369 to i64
  %371 = mul nuw nsw i64 %370, %368
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef 30003, i32 noundef %366, i64 noundef %371) #6
  %372 = load i32, ptr %217, align 4, !tbaa !37
  %373 = load i32, ptr %73, align 4, !tbaa !21
  %374 = load i32, ptr %77, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %372, i32 noundef %373, i32 noundef %374) #6
  %375 = load i32, ptr %217, align 4, !tbaa !37
  %376 = load i32, ptr %73, align 4, !tbaa !21
  %377 = load i32, ptr %78, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %375, i32 noundef %376, i32 noundef %377) #6
  br i1 %.not939, label %._crit_edge.thread, label %.lr.ph917.preheader

.lr.ph917.preheader:                              ; preds = %.thread978, %365
  br label %.lr.ph917

.thread978:                                       ; preds = %358
  %378 = load i32, ptr %217, align 4, !tbaa !37
  %379 = load i32, ptr %73, align 4, !tbaa !21
  %380 = load i32, ptr %77, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %378, i32 noundef %379, i32 noundef %380) #6
  br i1 %.not939, label %._crit_edge.thread.thread, label %.lr.ph917.preheader

._crit_edge.thread.thread:                        ; preds = %.thread978
  %381 = load i32, ptr %76, align 4, !tbaa !35
  %382 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_footer_n_dyn_loop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %381, i32 noundef %382) #6
  br label %._crit_edge922

.lr.ph917:                                        ; preds = %.lr.ph917.preheader, %474
  %.1915 = phi i32 [ %475, %474 ], [ 0, %.lr.ph917.preheader ]
  %383 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %384 = icmp eq i32 %383, 3
  br i1 %384, label %385, label %399

385:                                              ; preds = %.lr.ph917
  %386 = load i32, ptr %24, align 4, !tbaa !17
  %387 = icmp ugt i32 %386, 1050
  %or.cond27 = and i1 %44, %387
  br i1 %or.cond27, label %388, label %399

388:                                              ; preds = %385
  %389 = load i8, ptr %18, align 4, !tbaa !12
  %390 = load i32, ptr %77, align 4, !tbaa !24
  %391 = load i32, ptr %6, align 4, !tbaa !11
  %392 = mul i32 %391, %.1915
  %393 = load i32, ptr %220, align 4, !tbaa !39
  %394 = mul i32 %392, %393
  %395 = add i32 %.1915, %.2799
  %396 = icmp eq i32 %.1915, %222
  %or.cond29 = select i1 %396, i1 %108, i1 false
  %or.cond31 = and i1 %265, %or.cond29
  %397 = select i1 %or.cond31, i32 %109, i32 0
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %389, i32 noundef %390, i32 noundef 127, i32 noundef 0, i32 noundef %394, i32 noundef 0, i32 noundef 255, i32 noundef %395, i32 noundef %397, i32 noundef 0, i32 noundef 0) #6
  %398 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.2825, i8 noundef signext %398, i32 noundef %.1915, i32 noundef %395, i32 noundef %.1915) #6
  br label %465

399:                                              ; preds = %385, %.lr.ph917
  %400 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %401 = icmp eq i32 %400, 1
  %or.cond33 = and i1 %44, %401
  br i1 %or.cond33, label %402, label %._crit_edge953

402:                                              ; preds = %399
  %403 = icmp eq i32 %.1915, %222
  %or.cond35 = select i1 %403, i1 %108, i1 false
  %or.cond37 = and i1 %265, %or.cond35
  br i1 %or.cond37, label %._crit_edge953, label %404

404:                                              ; preds = %402
  %405 = load i8, ptr %18, align 4, !tbaa !12
  %406 = load i32, ptr %77, align 4, !tbaa !24
  %407 = load i32, ptr %6, align 4, !tbaa !11
  %408 = mul i32 %407, %.1915
  %409 = load i32, ptr %220, align 4, !tbaa !39
  %410 = mul i32 %408, %409
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg(ptr noundef %0, i32 noundef 805574232, i8 noundef signext %405, i32 noundef %406, i32 noundef 127, i32 noundef 0, i32 noundef %410, i32 noundef 0, i32 noundef %.1915, i32 noundef %.1915) #6
  br label %465

._crit_edge953:                                   ; preds = %399, %402
  %411 = load i32, ptr %9, align 4, !tbaa !11
  %412 = load i32, ptr %77, align 4, !tbaa !24
  %413 = load i32, ptr %6, align 4, !tbaa !11
  %414 = mul i32 %413, %.1915
  %415 = load i32, ptr %220, align 4, !tbaa !39
  %416 = mul i32 %414, %415
  %417 = load i8, ptr %7, align 1, !tbaa !14
  %418 = add i32 %.1915, %.2799
  %419 = icmp eq i32 %.1915, %222
  %or.cond39 = select i1 %419, i1 %108, i1 false
  %or.cond41 = and i1 %265, %or.cond39
  %420 = select i1 %or.cond41, i32 %109, i32 0
  %421 = select i1 %or.cond41, i32 %.1839, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %411, i32 noundef %412, i32 noundef 127, i32 noundef 0, i32 noundef %416, i8 noundef signext %417, i32 noundef %418, i32 noundef %420, i32 noundef %421, i32 noundef 0) #6
  %422 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %423 = icmp eq i32 %422, 4
  br i1 %423, label %424, label %426

424:                                              ; preds = %._crit_edge953
  %425 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %425, i32 noundef %418, i32 noundef %418) #6
  br label %441

426:                                              ; preds = %._crit_edge953
  %427 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %428 = icmp eq i32 %427, 5
  br i1 %428, label %429, label %431

429:                                              ; preds = %426
  %430 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %430, i32 noundef %418, i32 noundef %418, i32 noundef %.0841, i32 noundef %.0842, i32 noundef 7, i32 noundef 6) #6
  br label %441

431:                                              ; preds = %426
  %432 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %433 = icmp eq i32 %432, 2
  br i1 %433, label %434, label %436

434:                                              ; preds = %431
  %435 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %435, i32 noundef %418, i32 noundef %418) #6
  br label %441

436:                                              ; preds = %431
  %437 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %438 = icmp eq i32 %437, 3
  br i1 %438, label %439, label %441

439:                                              ; preds = %436
  %440 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %440, i32 noundef %418, i32 noundef %418) #6
  br label %441

441:                                              ; preds = %429, %439, %436, %434, %424
  br i1 %96, label %442, label %463

442:                                              ; preds = %441
  %443 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %0, i32 noundef 806098626, i8 noundef signext %443, i32 noundef %418, i32 noundef %.1915, i32 noundef %.0834891, i32 noundef %.2813) #6
  %444 = load i32, ptr %24, align 4, !tbaa !17
  %445 = icmp ugt i32 %444, 1050
  br i1 %445, label %446, label %455

446:                                              ; preds = %442
  %447 = load i8, ptr %18, align 4, !tbaa !12
  %448 = add i32 %.1915, %266
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef nonnull %0, i32 noundef %.0814897, i8 noundef signext %447, i32 noundef %448, i32 noundef %.0837889, i32 noundef %448, i32 noundef %.0834891, i32 noundef 0) #6
  br i1 %.not, label %463, label %449

449:                                              ; preds = %446
  %450 = load i32, ptr %24, align 4, !tbaa !17
  %451 = icmp ugt i32 %450, 1100
  %452 = select i1 %451, i32 8, i32 4
  call void @libxsmm_x86_instruction_mask_compute_reg(ptr noundef nonnull %0, i32 noundef -1601359568, i32 noundef %.0834891, i32 noundef 255, i32 noundef %.0834891, i32 noundef %452) #6
  %453 = load i8, ptr %18, align 4, !tbaa !12
  %454 = add i32 %.1915, %267
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef nonnull %0, i32 noundef %.0814897, i8 noundef signext %453, i32 noundef %454, i32 noundef %.0837889, i32 noundef %454, i32 noundef %.0834891, i32 noundef 0) #6
  br label %463

455:                                              ; preds = %442
  br i1 %.not, label %.critedge876, label %456

456:                                              ; preds = %455
  call void @libxsmm_generator_avx_extract_mask4_from_mask8(ptr noundef nonnull %0, i32 noundef %.0834891, i32 noundef %.0833893, i32 noundef 1)
  call void @libxsmm_generator_avx_extract_mask4_from_mask8(ptr noundef nonnull %0, i32 noundef %.0834891, i32 noundef %.0834891, i32 noundef 0)
  %457 = load i8, ptr %18, align 4, !tbaa !12
  %458 = add i32 %.1915, %266
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.0814897, i8 noundef signext %457, i32 noundef %458, i32 noundef %.0837889, i32 noundef %458, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %229) #6
  %459 = load i8, ptr %18, align 4, !tbaa !12
  %460 = add i32 %.1915, %267
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.0814897, i8 noundef signext %459, i32 noundef %460, i32 noundef %.0837889, i32 noundef %460, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %230) #6
  br label %463

.critedge876:                                     ; preds = %455
  %461 = load i8, ptr %18, align 4, !tbaa !12
  %462 = add i32 %.1915, %266
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.0814897, i8 noundef signext %461, i32 noundef %462, i32 noundef %.0837889, i32 noundef %462, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %229) #6
  br label %463

463:                                              ; preds = %.critedge876, %449, %446, %456, %441
  %464 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.2825, i8 noundef signext %464, i32 noundef %.1915, i32 noundef %418, i32 noundef %.1915) #6
  br label %465

465:                                              ; preds = %404, %463, %388
  %466 = load i32, ptr %6, align 4, !tbaa !11
  %467 = mul i32 %466, %.1915
  %468 = load i32, ptr %220, align 4, !tbaa !39
  %469 = mul i32 %467, %468
  %470 = and i32 %469, 63
  %471 = icmp eq i32 %470, 0
  %or.cond47 = and i1 %335, %471
  br i1 %or.cond47, label %472, label %474

472:                                              ; preds = %465
  %473 = load i32, ptr %78, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_prefetch(ptr noundef %0, i32 noundef %67, i32 noundef %473, i32 noundef 127, i32 noundef 0, i32 noundef %469) #6
  br label %474

474:                                              ; preds = %465, %472
  %475 = add nuw i32 %.1915, 1
  %exitcond946.not = icmp eq i32 %475, %.2799
  br i1 %exitcond946.not, label %._crit_edge, label %.lr.ph917, !llvm.loop !44

._crit_edge:                                      ; preds = %474
  %476 = load i32, ptr %76, align 4, !tbaa !35
  %477 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_footer_n_dyn_loop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %476, i32 noundef %477) #6
  br i1 %335, label %.critedge878, label %.lr.ph921

._crit_edge.thread:                               ; preds = %365
  %478 = load i32, ptr %76, align 4, !tbaa !35
  %479 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_footer_n_dyn_loop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %478, i32 noundef %479) #6
  br label %.critedge878

.critedge878:                                     ; preds = %._crit_edge.thread, %._crit_edge
  %480 = load i32, ptr %217, align 4, !tbaa !37
  %481 = load i32, ptr %71, align 4, !tbaa !28
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %480, i32 noundef %481, i64 noundef %225) #6
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %0, i32 noundef %268, ptr noundef nonnull %11) #6
  br label %333

.lr.ph921:                                        ; preds = %._crit_edge, %534
  %.2919 = phi i32 [ %535, %534 ], [ 0, %._crit_edge ]
  %482 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %483 = icmp eq i32 %482, 3
  br i1 %483, label %484, label %496

484:                                              ; preds = %.lr.ph921
  %485 = load i32, ptr %24, align 4, !tbaa !17
  %486 = icmp ugt i32 %485, 1050
  br i1 %486, label %487, label %496

487:                                              ; preds = %484
  %488 = load i8, ptr %18, align 4, !tbaa !12
  %489 = load i32, ptr %74, align 4, !tbaa !23
  %490 = load i32, ptr %6, align 4, !tbaa !11
  %491 = mul i32 %490, %.2919
  %492 = load i32, ptr %218, align 4, !tbaa !38
  %493 = mul i32 %491, %492
  %494 = icmp eq i32 %.2919, %222
  %or.cond49 = select i1 %494, i1 %108, i1 false
  %or.cond51 = and i1 %265, %or.cond49
  %495 = select i1 %or.cond51, i32 %109, i32 0
  call void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef nonnull %0, i32 noundef 671954205, i8 noundef signext %488, i32 noundef %489, i32 noundef 127, i32 noundef 0, i32 noundef %493, i32 noundef 0, i32 noundef 255, i32 noundef %.2919, i32 noundef %495, i32 noundef 0, i32 noundef 0) #6
  br label %534

496:                                              ; preds = %484, %.lr.ph921
  %497 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %498 = icmp eq i32 %497, 4
  br i1 %498, label %499, label %501

499:                                              ; preds = %496
  %500 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %500, i32 noundef %.2919, i32 noundef %.2919, i32 noundef %.0841, i32 noundef %.0842, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0) #6
  br label %524

501:                                              ; preds = %496
  %502 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %503 = icmp eq i32 %502, 5
  br i1 %503, label %504, label %506

504:                                              ; preds = %501
  %505 = load i8, ptr %18, align 4, !tbaa !12
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %505, i32 noundef %.2919, i32 noundef %.2919, i32 noundef %.0841, i32 noundef %.0842, i32 noundef 29, i32 noundef 28, i32 noundef 7, i32 noundef 6, i32 noundef 5) #6
  br label %524

506:                                              ; preds = %501
  %507 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %508 = icmp eq i32 %507, 2
  br i1 %508, label %509, label %515

509:                                              ; preds = %506
  %510 = load i32, ptr %24, align 4, !tbaa !17
  %511 = icmp ult i32 %510, 1103
  %512 = load i8, ptr %18, align 4, !tbaa !12
  br i1 %511, label %513, label %514

513:                                              ; preds = %509
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %512, i32 noundef %.2919, i32 noundef %.2919, i32 noundef %.0841, i32 noundef %.0842, i32 noundef 2, i32 noundef 3, i32 noundef 0) #6
  br label %524

514:                                              ; preds = %509
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %512, i32 noundef %.2919, i32 noundef %.2919) #6
  br label %524

515:                                              ; preds = %506
  %516 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %517 = icmp eq i32 %516, 3
  br i1 %517, label %518, label %524

518:                                              ; preds = %515
  %519 = load i8, ptr %18, align 4, !tbaa !12
  %520 = load i32, ptr %24, align 4, !tbaa !17
  %521 = icmp ugt i32 %520, 1100
  %522 = zext i1 %521 to i32
  %523 = zext i1 %521 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %0, i32 noundef 671954205, i8 noundef signext %519, i32 noundef %.2919, i32 noundef %.2919, i32 noundef 0, i32 noundef %522, i8 noundef zeroext %523, i32 noundef 0) #6
  br label %524

524:                                              ; preds = %504, %515, %518, %513, %514, %499
  %525 = load i32, ptr %74, align 4, !tbaa !23
  %526 = load i32, ptr %6, align 4, !tbaa !11
  %527 = mul i32 %526, %.2919
  %528 = load i32, ptr %218, align 4, !tbaa !38
  %529 = mul i32 %527, %528
  %530 = load i8, ptr %8, align 1, !tbaa !14
  %531 = icmp eq i32 %.2919, %222
  %or.cond53 = select i1 %531, i1 %108, i1 false
  %or.cond55 = and i1 %265, %or.cond53
  %532 = select i1 %or.cond55, i32 %109, i32 0
  %533 = select i1 %or.cond55, i32 %.0840, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %70, i32 noundef %525, i32 noundef 127, i32 noundef 0, i32 noundef %529, i8 noundef signext %530, i32 noundef %.2919, i32 noundef %532, i32 noundef %533, i32 noundef 1) #6
  br label %534

534:                                              ; preds = %487, %524
  %535 = add nuw i32 %.2919, 1
  %exitcond947.not = icmp eq i32 %535, %.2799
  br i1 %exitcond947.not, label %._crit_edge922, label %.lr.ph921, !llvm.loop !45

._crit_edge922:                                   ; preds = %534, %._crit_edge.thread.thread
  br i1 %96, label %536, label %.loopexit

536:                                              ; preds = %._crit_edge922
  %537 = load i32, ptr %24, align 4, !tbaa !17
  %538 = icmp ult i32 %537, 1101
  %539 = select i1 %538, i8 121, i8 122
  br i1 %.not, label %.preheader, label %.preheader909

.preheader909:                                    ; preds = %536
  br i1 %.not939, label %.loopexit, label %.lr.ph924

.preheader:                                       ; preds = %536
  br i1 %.not939, label %.loopexit, label %.lr.ph926

.lr.ph926:                                        ; preds = %.preheader, %.lr.ph926
  %.3925 = phi i32 [ %547, %.lr.ph926 ], [ 0, %.preheader ]
  %540 = add i32 %.3925, %266
  %541 = load i32, ptr %6, align 4, !tbaa !11
  %542 = shl i32 %.3925, 2
  %543 = mul i32 %542, %541
  %544 = icmp eq i32 %.3925, %222
  %or.cond61 = select i1 %544, i1 %108, i1 false
  %or.cond63 = and i1 %265, %or.cond61
  %545 = select i1 %or.cond63, i32 %109, i32 0
  %546 = select i1 %or.cond63, i32 %.0836, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef 537138704, i32 noundef 7, i32 noundef 127, i32 noundef 0, i32 noundef %543, i8 noundef signext %539, i32 noundef %540, i32 noundef %545, i32 noundef %546, i32 noundef 1) #6
  %547 = add nuw i32 %.3925, 1
  %exitcond949.not = icmp eq i32 %547, %.2799
  br i1 %exitcond949.not, label %.loopexit, label %.lr.ph926, !llvm.loop !46

.lr.ph924:                                        ; preds = %.preheader909, %575
  %.4923 = phi i32 [ %576, %575 ], [ 0, %.preheader909 ]
  %548 = icmp eq i32 %.4923, %222
  %or.cond69 = and i1 %265, %548
  %.pre952 = load i32, ptr %6, align 4, !tbaa !11
  br i1 %or.cond69, label %553, label %.thread973

.thread973:                                       ; preds = %.lr.ph924
  %549 = add i32 %.4923, %266
  %550 = shl i32 %.4923, 3
  %551 = mul i32 %550, %.pre952
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef 545592848, i32 noundef 7, i32 noundef 127, i32 noundef 0, i32 noundef %551, i8 noundef signext %539, i32 noundef %549, i32 noundef 0, i32 noundef 0, i32 noundef 1) #6
  %552 = load i32, ptr %6, align 4, !tbaa !11
  %reass.add974 = or disjoint i32 %550, 4
  %reass.mul975 = mul i32 %reass.add974, %552
  br label %571

553:                                              ; preds = %.lr.ph924
  %554 = urem i32 %106, %.pre952
  %555 = lshr i32 %.pre952, 1
  %556 = icmp ult i32 %554, %555
  %557 = icmp ne i32 %554, 0
  %spec.select879 = and i1 %556, %557
  %cond.fr = freeze i1 %spec.select879
  %558 = zext i1 %cond.fr to i32
  %559 = icmp ugt i32 %554, %555
  %cond.fr972 = freeze i1 %559
  %560 = zext i1 %cond.fr972 to i32
  %561 = add i32 %.4923, %266
  %562 = shl i32 %.4923, 3
  %563 = mul i32 %562, %.pre952
  br i1 %cond.fr, label %564, label %565

564:                                              ; preds = %553
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef 545592848, i32 noundef 7, i32 noundef 127, i32 noundef 0, i32 noundef %563, i8 noundef signext %539, i32 noundef %561, i32 noundef %558, i32 noundef %.0835, i32 noundef 1) #6
  br label %575

565:                                              ; preds = %553
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef 545592848, i32 noundef 7, i32 noundef 127, i32 noundef 0, i32 noundef %563, i8 noundef signext %539, i32 noundef %561, i32 noundef %558, i32 noundef 0, i32 noundef 1) #6
  %566 = load i32, ptr %6, align 4, !tbaa !11
  %567 = urem i32 %106, %566
  %568 = lshr i32 %566, 1
  %569 = icmp eq i32 %567, %568
  %brmerge.not = and i1 %or.cond69, %569
  br i1 %brmerge.not, label %575, label %570

570:                                              ; preds = %565
  %reass.add = or disjoint i32 %562, 4
  %reass.mul = mul i32 %reass.add, %566
  %spec.select984 = select i1 %cond.fr972, i32 %.0835, i32 0
  br label %571

571:                                              ; preds = %570, %.thread973
  %reass.mul977 = phi i32 [ %reass.mul975, %.thread973 ], [ %reass.mul, %570 ]
  %572 = phi i32 [ 0, %.thread973 ], [ %560, %570 ]
  %573 = phi i32 [ 0, %.thread973 ], [ %spec.select984, %570 ]
  %574 = add i32 %.4923, %267
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef 545592848, i32 noundef 7, i32 noundef 127, i32 noundef 0, i32 noundef %reass.mul977, i8 noundef signext %539, i32 noundef %574, i32 noundef %572, i32 noundef %573, i32 noundef 1) #6
  br label %575

575:                                              ; preds = %564, %565, %571
  %576 = add nuw i32 %.4923, 1
  %exitcond948.not = icmp eq i32 %576, %.2799
  br i1 %exitcond948.not, label %.loopexit, label %.lr.ph924, !llvm.loop !47

.loopexit:                                        ; preds = %575, %.lr.ph926, %.preheader909, %.preheader, %._crit_edge922
  br i1 %or.cond9, label %577, label %603

577:                                              ; preds = %.loopexit
  %578 = load i32, ptr %217, align 4, !tbaa !37
  %579 = load i32, ptr %74, align 4, !tbaa !23
  %580 = zext i32 %.2799 to i64
  %581 = load i32, ptr %6, align 4, !tbaa !11
  %582 = zext i32 %581 to i64
  %583 = mul nuw nsw i64 %582, %580
  %584 = load i32, ptr %218, align 4, !tbaa !38
  %585 = zext i32 %584 to i64
  %586 = mul nuw nsw i64 %583, %585
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %578, i32 noundef %579, i64 noundef %586) #6
  br i1 %96, label %587, label %593

587:                                              ; preds = %577
  %588 = load i32, ptr %217, align 4, !tbaa !37
  %589 = load i32, ptr %6, align 4, !tbaa !11
  %590 = zext i32 %589 to i64
  %591 = mul nuw nsw i64 %590, %580
  %592 = shl i64 %591, %219
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %588, i32 noundef 7, i64 noundef %592) #6
  br label %593

593:                                              ; preds = %587, %577
  %594 = load i32, ptr %217, align 4, !tbaa !37
  %595 = load i32, ptr %73, align 4, !tbaa !21
  %596 = load i32, ptr %6, align 4, !tbaa !11
  %597 = zext i32 %596 to i64
  %598 = mul nuw nsw i64 %597, %580
  %599 = load i32, ptr %220, align 4, !tbaa !39
  %600 = zext i32 %599 to i64
  %601 = mul nuw nsw i64 %598, %600
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %594, i32 noundef %595, i64 noundef %601) #6
  %602 = load i32, ptr %75, align 4, !tbaa !36
  call void @libxsmm_generator_mateltwise_footer_m_loop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %602, i32 noundef %.0800) #6
  br label %603

603:                                              ; preds = %593, %.loopexit
  %604 = add nuw nsw i32 %.0820927, 1
  %exitcond950.not = icmp eq i32 %604, %.1819
  br i1 %exitcond950.not, label %._crit_edge933, label %232, !llvm.loop !48

._crit_edge933:                                   ; preds = %603, %211
  %605 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %606 = icmp eq i32 %605, 4
  br i1 %606, label %607, label %608

607:                                              ; preds = %._crit_edge933
  call void @libxsmm_generator_vcvtneps2bf8_avx512_clean_stack(ptr noundef %0, i32 noundef 0) #6
  br label %622

608:                                              ; preds = %._crit_edge933
  %609 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %610 = icmp eq i32 %609, 2
  br i1 %610, label %611, label %615

611:                                              ; preds = %608
  %612 = load i32, ptr %24, align 4, !tbaa !17
  %613 = icmp ult i32 %612, 1103
  br i1 %613, label %614, label %622

614:                                              ; preds = %611
  call void @libxsmm_generator_vcvtneps2bf16_avx512_clean_stack(ptr noundef nonnull %0, i32 noundef 0) #6
  br label %622

615:                                              ; preds = %608
  %616 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #6
  %617 = icmp eq i32 %616, 5
  br i1 %617, label %621, label %618

618:                                              ; preds = %615
  %619 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #6
  %620 = icmp eq i32 %619, 5
  br i1 %620, label %621, label %622

621:                                              ; preds = %618, %615
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef %0, i32 noundef 0) #6
  br label %622

622:                                              ; preds = %614, %611, %621, %618, %607
  br i1 %.not859, label %625, label %623

623:                                              ; preds = %622
  %624 = load i32, ptr %79, align 4, !tbaa !26
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %0, i32 noundef %624, i32 noundef 5, i32 noundef 4) #6
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %0, i32 noundef 5) #6
  br label %625

625:                                              ; preds = %623, %622
  call void @libxsmm_x86_instruction_register_jump_label(ptr noundef %0, i32 noundef 2, ptr noundef nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 2101248, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  ret void
}

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

declare void @libxsmm_reset_jump_label_tracker(ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #4

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

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

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

declare void @libxsmm_x86_instruction_vec_compute_mem_2reg_mask_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

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 #2

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nofree nounwind memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 27}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !8, i64 512}
!13 = !{!"libxsmm_mateltwise_kernel_config_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !7, i64 304, !7, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !7, i64 364, !7, i64 368, !7, i64 372, !7, i64 376, !7, i64 380, !7, i64 384, !7, i64 388, !7, i64 392, !7, i64 396, !7, i64 400, !7, i64 404, !7, i64 408, !7, i64 412, !7, i64 416, !7, i64 420, !7, i64 424, !7, i64 428, !7, i64 432, !7, i64 436, !7, i64 440, !7, i64 444, !7, i64 448, !7, i64 452, !7, i64 456, !7, i64 460, !7, i64 464, !7, i64 468, !7, i64 472, !7, i64 476, !7, i64 480, !7, i64 484, !7, i64 488, !7, i64 492, !7, i64 496, !7, i64 500, !7, i64 504, !7, i64 508, !8, i64 512}
!14 = !{!8, !8, i64 0}
!15 = !{!13, !7, i64 24}
!16 = !{!13, !7, i64 36}
!17 = !{!18, !7, i64 28}
!18 = !{!"libxsmm_generated_code", !19, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!19 = !{!"any pointer", !8, i64 0}
!20 = !{!6, !10, i64 29}
!21 = !{!22, !7, i64 112}
!22 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144}
!23 = !{!22, !7, i64 24}
!24 = !{!22, !7, i64 4}
!25 = !{!22, !7, i64 16}
!26 = !{!13, !7, i64 56}
!27 = !{!22, !7, i64 0}
!28 = !{!22, !7, i64 104}
!29 = !{!13, !7, i64 48}
!30 = !{!22, !7, i64 108}
!31 = !{!6, !7, i64 0}
!32 = !{!33, !33, i64 0}
!33 = !{!"long long", !8, i64 0}
!34 = !{!13, !7, i64 44}
!35 = !{!22, !7, i64 100}
!36 = !{!22, !7, i64 96}
!37 = !{!13, !7, i64 40}
!38 = !{!13, !7, i64 20}
!39 = !{!13, !7, i64 8}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!13, !7, i64 0}
!43 = !{!6, !7, i64 8}
!44 = distinct !{!44, !41}
!45 = distinct !{!45, !41}
!46 = distinct !{!46, !41}
!47 = distinct !{!47, !41}
!48 = distinct !{!48, !41}


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