; 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_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_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, 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 = external hidden unnamed_addr constant [94 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@__func__.libxsmm_generator_reduce_cols_avx512_microkernel = external hidden unnamed_addr constant [49 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [63 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_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

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_generator_mateltwise_header_n_loop(ptr noundef, ptr noundef, ptr 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_mateltwise_footer_n_loop(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 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_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_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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_reduce_cols_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 i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca 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
  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) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  store i32 0, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  store i32 0, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #3
  %64 = load ptr, ptr %9, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %64, i32 0, i32 128
  %66 = load i8, ptr %65, align 4, !tbaa !11
  store i8 %66, ptr %26, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #3
  %67 = load ptr, ptr %9, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %67, i32 0, i32 128
  %69 = load i8, ptr %68, align 4, !tbaa !11
  store i8 %69, ptr %27, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %70 = load ptr, ptr %9, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %70, i32 0, i32 6
  %72 = load i32, ptr %71, align 4, !tbaa !14
  store i32 %72, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %73 = load ptr, ptr %9, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %73, i32 0, i32 9
  %75 = load i32, ptr %74, align 4, !tbaa !15
  store i32 %75, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  store i32 16, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  store i32 31, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  store i32 30, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  store i32 29, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  store i32 27, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  store i32 28, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  store i32 7, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  store i32 6, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  store i32 5, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  store i32 30, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  store i32 30, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  store i32 0, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  store i32 0, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  store i32 0, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  store i32 0, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  store i32 0, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  store i32 0, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  store i32 0, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %76, i32 0, i32 10
  %78 = load i16, ptr %77, align 1, !tbaa !16
  %79 = zext i16 %78 to i32
  %80 = icmp eq i32 %79, 18
  br i1 %80, label %105, label %81

81:                                               ; preds = %5
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %82, i32 0, i32 10
  %84 = load i16, ptr %83, align 1, !tbaa !16
  %85 = zext i16 %84 to i32
  %86 = icmp eq i32 %85, 20
  br i1 %86, label %105, label %87

87:                                               ; preds = %81
  %88 = load ptr, ptr %10, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %88, i32 0, i32 10
  %90 = load i16, ptr %89, align 1, !tbaa !16
  %91 = zext i16 %90 to i32
  %92 = icmp eq i32 %91, 21
  br i1 %92, label %105, label %93

93:                                               ; preds = %87
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %94, i32 0, i32 10
  %96 = load i16, ptr %95, align 1, !tbaa !16
  %97 = zext i16 %96 to i32
  %98 = icmp eq i32 %97, 70
  br i1 %98, label %105, label %99

99:                                               ; preds = %93
  %100 = load ptr, ptr %10, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %100, i32 0, i32 10
  %102 = load i16, ptr %101, align 1, !tbaa !16
  %103 = zext i16 %102 to i32
  %104 = icmp eq i32 %103, 69
  br label %105

105:                                              ; preds = %99, %93, %87, %81, %5
  %106 = phi i1 [ true, %93 ], [ true, %87 ], [ true, %81 ], [ true, %5 ], [ %104, %99 ]
  %107 = zext i1 %106 to i64
  %108 = select i1 %106, i32 1, i32 0
  store i32 %108, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %109, i32 0, i32 10
  %111 = load i16, ptr %110, align 1, !tbaa !16
  %112 = zext i16 %111 to i32
  %113 = icmp eq i32 %112, 19
  br i1 %113, label %120, label %114

114:                                              ; preds = %105
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %115, i32 0, i32 10
  %117 = load i16, ptr %116, align 1, !tbaa !16
  %118 = zext i16 %117 to i32
  %119 = icmp eq i32 %118, 20
  br label %120

120:                                              ; preds = %114, %105
  %121 = phi i1 [ true, %105 ], [ %119, %114 ]
  %122 = zext i1 %121 to i64
  %123 = select i1 %121, i32 1, i32 0
  store i32 %123, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %124, i32 0, i32 10
  %126 = load i16, ptr %125, align 1, !tbaa !16
  %127 = zext i16 %126 to i32
  %128 = icmp eq i32 %127, 18
  br i1 %128, label %141, label %129

129:                                              ; preds = %120
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %130, i32 0, i32 10
  %132 = load i16, ptr %131, align 1, !tbaa !16
  %133 = zext i16 %132 to i32
  %134 = icmp eq i32 %133, 20
  br i1 %134, label %141, label %135

135:                                              ; preds = %129
  %136 = load ptr, ptr %10, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %136, i32 0, i32 10
  %138 = load i16, ptr %137, align 1, !tbaa !16
  %139 = zext i16 %138 to i32
  %140 = icmp eq i32 %139, 19
  br label %141

141:                                              ; preds = %135, %129, %120
  %142 = phi i1 [ true, %129 ], [ true, %120 ], [ %140, %135 ]
  %143 = zext i1 %142 to i64
  %144 = select i1 %142, i32 1, i32 0
  store i32 %144, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %145, i32 0, i32 10
  %147 = load i16, ptr %146, align 1, !tbaa !16
  %148 = zext i16 %147 to i32
  %149 = icmp eq i32 %148, 21
  %150 = zext i1 %149 to i64
  %151 = select i1 %149, i32 1, i32 0
  store i32 %151, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  %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 !16
  %155 = zext i16 %154 to i32
  %156 = icmp eq i32 %155, 70
  %157 = zext i1 %156 to i64
  %158 = select i1 %156, i32 1, i32 0
  store i32 %158, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  %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 !16
  %162 = zext i16 %161 to i32
  %163 = icmp eq i32 %162, 69
  %164 = zext i1 %163 to i64
  %165 = select i1 %163, i32 1, i32 0
  store i32 %165, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  %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 !19
  %169 = zext i16 %168 to i32
  %170 = and i32 %169, 64
  %171 = icmp sgt i32 %170, 0
  %172 = zext i1 %171 to i64
  %173 = select i1 %171, i32 1, i32 0
  store i32 %173, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  store i32 32, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #3
  store i32 80, ptr %60, align 4, !tbaa !9
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %174, i32 noundef 0)
  %176 = icmp eq i32 5, %175
  br i1 %176, label %181, label %177

177:                                              ; preds = %141
  %178 = load ptr, ptr %10, align 8, !tbaa !5
  %179 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %178, i32 noundef 3)
  %180 = icmp eq i32 5, %179
  br i1 %180, label %181, label %182

181:                                              ; preds = %177, %141
  store i32 28, ptr %43, align 4, !tbaa !9
  store i32 28, ptr %44, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %181, %177
  %183 = load ptr, ptr %6, align 8, !tbaa !5
  %184 = load ptr, ptr %9, align 8, !tbaa !5
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_reduce_set_lp_vlen_vname_vmove_x86(ptr noundef %183, ptr noundef %184, ptr noundef %185, ptr noundef %33, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %29)
  %186 = load ptr, ptr %10, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %186, i32 0, i32 0
  %188 = load i32, ptr %187, align 1, !tbaa !20
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %189, i32 0, i32 2
  %191 = load i32, ptr %190, align 1, !tbaa !21
  %192 = icmp ugt i32 %188, %191
  br i1 %192, label %193, label %202

193:                                              ; preds = %182
  %194 = load ptr, ptr %6, align 8, !tbaa !5
  %195 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %196 = icmp ult i32 1, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %193
  %198 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %200

199:                                              ; preds = %193
  br label %200

200:                                              ; preds = %199, %197
  %201 = phi i32 [ %198, %197 ], [ 1, %199 ]
  call void @libxsmm_handle_error(ptr noundef %194, i32 noundef 90007, ptr noundef @__func__.libxsmm_generator_reduce_cols_avx512_microkernel, ptr noundef @.str, i32 noundef 699, i32 noundef %201)
  store i32 1, ptr %61, align 4
  br label %3564

202:                                              ; preds = %182
  %203 = load i32, ptr %52, align 4, !tbaa !9
  %204 = icmp ugt i32 %203, 0
  br i1 %204, label %205, label %206

205:                                              ; preds = %202
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %207

206:                                              ; preds = %202
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %206, %205
  %208 = load i32, ptr %53, align 4, !tbaa !9
  %209 = icmp ugt i32 %208, 0
  br i1 %209, label %210, label %211

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

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

212:                                              ; preds = %211, %210
  %213 = load i32, ptr %54, align 4, !tbaa !9
  %214 = icmp ugt i32 %213, 0
  br i1 %214, label %215, label %222

215:                                              ; preds = %212
  %216 = load ptr, ptr %10, align 8, !tbaa !5
  %217 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %216, i32 noundef 4)
  %218 = icmp eq i32 0, %217
  br i1 %218, label %219, label %220

219:                                              ; preds = %215
  store i32 814028376, ptr %23, align 4, !tbaa !9
  store i32 814032568, ptr %24, align 4, !tbaa !9
  br label %221

220:                                              ; preds = %215
  store i32 805574232, ptr %23, align 4, !tbaa !9
  store i32 805643960, ptr %24, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %220, %219
  br label %271

222:                                              ; preds = %212
  %223 = load i32, ptr %55, align 4, !tbaa !9
  %224 = icmp ugt i32 %223, 0
  br i1 %224, label %228, label %225

225:                                              ; preds = %222
  %226 = load i32, ptr %56, align 4, !tbaa !9
  %227 = icmp ugt i32 %226, 0
  br i1 %227, label %228, label %249

228:                                              ; preds = %225, %222
  %229 = load ptr, ptr %10, align 8, !tbaa !5
  %230 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %229, i32 noundef 4)
  %231 = icmp eq i32 0, %230
  br i1 %231, label %232, label %240

232:                                              ; preds = %228
  store i32 814028383, ptr %23, align 4, !tbaa !9
  %233 = load ptr, ptr %6, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %233, i32 0, i32 6
  %235 = load i32, ptr %234, align 4, !tbaa !22
  %236 = icmp uge i32 %235, 1051
  br i1 %236, label %237, label %238

237:                                              ; preds = %232
  store i32 -259180976, ptr %25, align 4, !tbaa !9
  br label %239

238:                                              ; preds = %232
  store i32 814028507, ptr %25, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %238, %237
  br label %248

240:                                              ; preds = %228
  store i32 805574239, ptr %23, align 4, !tbaa !9
  %241 = load ptr, ptr %6, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %241, i32 0, i32 6
  %243 = load i32, ptr %242, align 4, !tbaa !22
  %244 = icmp uge i32 %243, 1051
  br i1 %244, label %245, label %246

245:                                              ; preds = %240
  store i32 -267569584, ptr %25, align 4, !tbaa !9
  br label %247

246:                                              ; preds = %240
  store i32 814028507, ptr %25, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %246, %245
  br label %248

248:                                              ; preds = %247, %239
  br label %270

249:                                              ; preds = %225
  %250 = load i32, ptr %57, align 4, !tbaa !9
  %251 = icmp ugt i32 %250, 0
  br i1 %251, label %252, label %259

252:                                              ; preds = %249
  %253 = load ptr, ptr %10, align 8, !tbaa !5
  %254 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %253, i32 noundef 4)
  %255 = icmp eq i32 0, %254
  br i1 %255, label %256, label %257

256:                                              ; preds = %252
  store i32 814028381, ptr %23, align 4, !tbaa !9
  br label %258

257:                                              ; preds = %252
  store i32 805573981, ptr %23, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %257, %256
  br label %269

259:                                              ; preds = %249
  %260 = call i32 (ptr, ...) @printf(ptr noundef @.str.10)
  %261 = load ptr, ptr %6, align 8, !tbaa !5
  %262 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %263 = icmp ult i32 1, %262
  br i1 %263, label %264, label %266

264:                                              ; preds = %259
  %265 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %267

266:                                              ; preds = %259
  br label %267

267:                                              ; preds = %266, %264
  %268 = phi i32 [ %265, %264 ], [ 1, %266 ]
  call void @libxsmm_handle_error(ptr noundef %261, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_reduce_cols_avx512_microkernel, ptr noundef @.str, i32 noundef 748, i32 noundef %268)
  store i32 1, ptr %61, align 4
  br label %3564

269:                                              ; preds = %258
  br label %270

270:                                              ; preds = %269, %248
  br label %271

271:                                              ; preds = %270, %221
  %272 = load i32, ptr %19, align 4, !tbaa !9
  %273 = icmp ugt i32 %272, 0
  br i1 %273, label %274, label %290

274:                                              ; preds = %271
  %275 = load i32, ptr %23, align 4, !tbaa !9
  %276 = icmp eq i32 %275, 805574232
  br i1 %276, label %290, label %277

277:                                              ; preds = %274
  %278 = load i32, ptr %23, align 4, !tbaa !9
  %279 = icmp eq i32 %278, 814028376
  br i1 %279, label %290, label %280

280:                                              ; preds = %277
  %281 = call i32 (ptr, ...) @printf(ptr noundef @.str.11)
  %282 = load ptr, ptr %6, align 8, !tbaa !5
  %283 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %284 = icmp ult i32 1, %283
  br i1 %284, label %285, label %287

285:                                              ; preds = %280
  %286 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %288

287:                                              ; preds = %280
  br label %288

288:                                              ; preds = %287, %285
  %289 = phi i32 [ %286, %285 ], [ 1, %287 ]
  call void @libxsmm_handle_error(ptr noundef %282, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_reduce_cols_avx512_microkernel, ptr noundef @.str, i32 noundef 755, i32 noundef %289)
  store i32 1, ptr %61, align 4
  br label %3564

290:                                              ; preds = %277, %274, %271
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %291, i32 0, i32 6
  %293 = load i32, ptr %292, align 4, !tbaa !22
  %294 = icmp ult i32 %293, 1051
  br i1 %294, label %295, label %326

295:                                              ; preds = %290
  store i32 8, ptr %33, align 4, !tbaa !9
  store i32 15, ptr %35, align 4, !tbaa !9
  store i32 15, ptr %43, align 4, !tbaa !9
  %296 = load i32, ptr %56, align 4, !tbaa !9
  %297 = icmp ugt i32 %296, 0
  br i1 %297, label %298, label %317

298:                                              ; preds = %295
  store i32 14, ptr %34, align 4, !tbaa !9
  %299 = load i32, ptr %43, align 4, !tbaa !9
  %300 = add i32 %299, -1
  store i32 %300, ptr %43, align 4, !tbaa !9
  %301 = load ptr, ptr %10, align 8, !tbaa !5
  %302 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %301, i32 noundef 4)
  %303 = icmp eq i32 0, %302
  br i1 %303, label %304, label %310

304:                                              ; preds = %298
  %305 = load ptr, ptr %6, align 8, !tbaa !5
  %306 = load ptr, ptr %9, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %306, i32 0, i32 128
  %308 = load i8, ptr %307, align 4, !tbaa !11
  %309 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_load_vreg_signmask(ptr noundef %305, i8 noundef zeroext %308, i32 noundef 0, i32 noundef %309, i32 noundef 0)
  br label %316

310:                                              ; preds = %298
  %311 = load ptr, ptr %6, align 8, !tbaa !5
  %312 = load ptr, ptr %9, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %312, i32 0, i32 128
  %314 = load i8, ptr %313, align 4, !tbaa !11
  %315 = load i32, ptr %34, align 4, !tbaa !9
  call void @libxsmm_generator_load_vreg_signmask(ptr noundef %311, i8 noundef zeroext %314, i32 noundef 0, i32 noundef %315, i32 noundef 1)
  br label %316

316:                                              ; preds = %310, %304
  br label %317

317:                                              ; preds = %316, %295
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %318, i32 noundef 3)
  %320 = icmp eq i32 2, %319
  br i1 %320, label %321, label %325

321:                                              ; preds = %317
  %322 = load i32, ptr %43, align 4, !tbaa !9
  %323 = add i32 %322, -1
  store i32 %323, ptr %43, align 4, !tbaa !9
  %324 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %324, ptr %36, align 4, !tbaa !9
  br label %325

325:                                              ; preds = %321, %317
  br label %326

326:                                              ; preds = %325, %290
  %327 = load ptr, ptr %10, align 8, !tbaa !5
  %328 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %327, i32 noundef 4)
  %329 = icmp eq i32 0, %328
  br i1 %329, label %330, label %333

330:                                              ; preds = %326
  %331 = load i32, ptr %33, align 4, !tbaa !9
  %332 = udiv i32 %331, 2
  store i32 %332, ptr %33, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %330, %326
  %334 = load ptr, ptr %8, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %334, i32 0, i32 1
  store i32 8, ptr %335, align 4, !tbaa !24
  %336 = load ptr, ptr %8, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %336, i32 0, i32 16
  store i32 9, ptr %337, align 4, !tbaa !26
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %338, i32 0, i32 17
  store i32 10, ptr %339, align 4, !tbaa !27
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %340, i32 0, i32 24
  store i32 11, ptr %341, align 4, !tbaa !28
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %342, i32 0, i32 25
  store i32 0, ptr %343, align 4, !tbaa !29
  %344 = load ptr, ptr %6, align 8, !tbaa !5
  %345 = load ptr, ptr %9, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %345, i32 0, i32 14
  %347 = load i32, ptr %346, align 4, !tbaa !30
  %348 = load ptr, ptr %8, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %348, i32 0, i32 0
  %350 = load i32, ptr %349, align 4, !tbaa !31
  %351 = load i32, ptr %59, align 4, !tbaa !9
  %352 = load ptr, ptr %8, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %352, i32 0, i32 1
  %354 = load i32, ptr %353, align 4, !tbaa !24
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %344, i32 noundef %347, i32 noundef %350, i32 noundef 127, i32 noundef 0, i32 noundef %351, i32 noundef %354, i32 noundef 0)
  %355 = load i32, ptr %20, align 4, !tbaa !9
  %356 = icmp ugt i32 %355, 0
  br i1 %356, label %357, label %396

357:                                              ; preds = %333
  %358 = load ptr, ptr %6, align 8, !tbaa !5
  %359 = load ptr, ptr %9, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %359, i32 0, i32 14
  %361 = load i32, ptr %360, align 4, !tbaa !30
  %362 = load ptr, ptr %8, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %362, i32 0, i32 0
  %364 = load i32, ptr %363, align 4, !tbaa !31
  %365 = load i32, ptr %60, align 4, !tbaa !9
  %366 = load ptr, ptr %8, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %366, i32 0, i32 16
  %368 = load i32, ptr %367, align 4, !tbaa !26
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %358, i32 noundef %361, i32 noundef %364, i32 noundef 127, i32 noundef 0, i32 noundef %365, i32 noundef %368, i32 noundef 0)
  %369 = load i32, ptr %19, align 4, !tbaa !9
  %370 = icmp ugt i32 %369, 0
  br i1 %370, label %371, label %395

371:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  %372 = load ptr, ptr %10, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %372, i32 0, i32 3
  %374 = load i32, ptr %373, align 1, !tbaa !32
  %375 = load ptr, ptr %9, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %375, i32 0, i32 5
  %377 = load i32, ptr %376, align 4, !tbaa !33
  %378 = mul i32 %374, %377
  store i32 %378, ptr %62, align 4, !tbaa !9
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = load ptr, ptr %9, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %380, i32 0, i32 14
  %382 = load i32, ptr %381, align 4, !tbaa !30
  %383 = load ptr, ptr %8, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %383, i32 0, i32 16
  %385 = load i32, ptr %384, align 4, !tbaa !26
  %386 = load ptr, ptr %8, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %386, i32 0, i32 17
  %388 = load i32, ptr %387, align 4, !tbaa !27
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef %379, i32 noundef %382, i32 noundef %385, i32 noundef %388)
  %389 = load ptr, ptr %6, align 8, !tbaa !5
  %390 = load ptr, ptr %8, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %390, i32 0, i32 17
  %392 = load i32, ptr %391, align 4, !tbaa !27
  %393 = load i32, ptr %62, align 4, !tbaa !9
  %394 = zext i32 %393 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %389, i32 noundef 30000, i32 noundef %392, i64 noundef %394)
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  br label %395

395:                                              ; preds = %371, %357
  br label %408

396:                                              ; preds = %333
  %397 = load ptr, ptr %6, align 8, !tbaa !5
  %398 = load ptr, ptr %9, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %398, i32 0, i32 14
  %400 = load i32, ptr %399, align 4, !tbaa !30
  %401 = load ptr, ptr %8, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %401, i32 0, i32 0
  %403 = load i32, ptr %402, align 4, !tbaa !31
  %404 = load i32, ptr %60, align 4, !tbaa !9
  %405 = load ptr, ptr %8, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %405, i32 0, i32 17
  %407 = load i32, ptr %406, align 4, !tbaa !27
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %397, i32 noundef %400, i32 noundef %403, i32 noundef 127, i32 noundef 0, i32 noundef %404, i32 noundef %407, i32 noundef 0)
  br label %408

408:                                              ; preds = %396, %395
  %409 = load ptr, ptr %10, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %409, i32 0, i32 0
  %411 = load i32, ptr %410, align 1, !tbaa !20
  store i32 %411, ptr %14, align 4, !tbaa !9
  %412 = load ptr, ptr %10, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %412, i32 0, i32 1
  %414 = load i32, ptr %413, align 1, !tbaa !34
  store i32 %414, ptr %15, align 4, !tbaa !9
  %415 = load i32, ptr %14, align 4, !tbaa !9
  %416 = load i32, ptr %33, align 4, !tbaa !9
  %417 = urem i32 %415, %416
  %418 = icmp eq i32 %417, 0
  %419 = zext i1 %418 to i64
  %420 = select i1 %418, i32 0, i32 1
  store i32 %420, ptr %17, align 4, !tbaa !9
  %421 = load i32, ptr %17, align 4, !tbaa !9
  %422 = icmp eq i32 %421, 1
  br i1 %422, label %423, label %479

423:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  %425 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %424, i32 noundef 4)
  store i32 %425, ptr %63, align 4, !tbaa !9
  %426 = load ptr, ptr %6, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %426, i32 0, i32 6
  %428 = load i32, ptr %427, align 4, !tbaa !22
  %429 = icmp uge i32 %428, 1051
  br i1 %429, label %430, label %442

430:                                              ; preds = %423
  %431 = load i32, ptr %33, align 4, !tbaa !9
  %432 = load i32, ptr %14, align 4, !tbaa !9
  %433 = load i32, ptr %33, align 4, !tbaa !9
  %434 = urem i32 %432, %433
  %435 = sub i32 %431, %434
  store i32 %435, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  %436 = load ptr, ptr %6, align 8, !tbaa !5
  %437 = load i32, ptr %30, align 4, !tbaa !9
  %438 = load i32, ptr %18, align 4, !tbaa !9
  %439 = load i32, ptr %63, align 4, !tbaa !9
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef %436, i32 noundef 0, i32 noundef %437, i32 noundef %438, i32 noundef %439)
  %440 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %440, ptr %31, align 4, !tbaa !9
  %441 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %441, ptr %32, align 4, !tbaa !9
  br label %478

442:                                              ; preds = %423
  %443 = load i32, ptr %43, align 4, !tbaa !9
  %444 = add i32 %443, -1
  store i32 %444, ptr %43, align 4, !tbaa !9
  %445 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %445, ptr %30, align 4, !tbaa !9
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = load i32, ptr %30, align 4, !tbaa !9
  %448 = load i32, ptr %14, align 4, !tbaa !9
  %449 = load i32, ptr %33, align 4, !tbaa !9
  %450 = urem i32 %448, %449
  %451 = load i32, ptr %63, align 4, !tbaa !9
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef %446, i32 noundef %447, i32 noundef %450, i32 noundef %451)
  %452 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %452, ptr %31, align 4, !tbaa !9
  %453 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %453, ptr %32, align 4, !tbaa !9
  %454 = load ptr, ptr %10, align 8, !tbaa !5
  %455 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %454, i32 noundef 0)
  %456 = icmp eq i32 2, %455
  br i1 %456, label %461, label %457

457:                                              ; preds = %442
  %458 = load ptr, ptr %10, align 8, !tbaa !5
  %459 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %458, i32 noundef 0)
  %460 = icmp eq i32 3, %459
  br i1 %460, label %461, label %465

461:                                              ; preds = %457, %442
  %462 = load i32, ptr %14, align 4, !tbaa !9
  %463 = load i32, ptr %33, align 4, !tbaa !9
  %464 = urem i32 %462, %463
  store i32 %464, ptr %31, align 4, !tbaa !9
  br label %465

465:                                              ; preds = %461, %457
  %466 = load ptr, ptr %10, align 8, !tbaa !5
  %467 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %466, i32 noundef 3)
  %468 = icmp eq i32 2, %467
  br i1 %468, label %473, label %469

469:                                              ; preds = %465
  %470 = load ptr, ptr %10, align 8, !tbaa !5
  %471 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %470, i32 noundef 3)
  %472 = icmp eq i32 3, %471
  br i1 %472, label %473, label %477

473:                                              ; preds = %469, %465
  %474 = load i32, ptr %14, align 4, !tbaa !9
  %475 = load i32, ptr %33, align 4, !tbaa !9
  %476 = urem i32 %474, %475
  store i32 %476, ptr %32, align 4, !tbaa !9
  br label %477

477:                                              ; preds = %473, %469
  br label %478

478:                                              ; preds = %477, %430
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  br label %479

479:                                              ; preds = %478, %408
  %480 = load i32, ptr %14, align 4, !tbaa !9
  %481 = load i32, ptr %33, align 4, !tbaa !9
  %482 = add i32 %480, %481
  %483 = sub i32 %482, 1
  %484 = load i32, ptr %33, align 4, !tbaa !9
  %485 = udiv i32 %483, %484
  store i32 %485, ptr %16, align 4, !tbaa !9
  %486 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %486, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  store i32 0, ptr %45, align 4, !tbaa !9
  %487 = load i32, ptr %20, align 4, !tbaa !9
  %488 = icmp ugt i32 %487, 0
  br i1 %488, label %489, label %496

489:                                              ; preds = %479
  %490 = load i32, ptr %19, align 4, !tbaa !9
  %491 = icmp ugt i32 %490, 0
  br i1 %491, label %492, label %496

492:                                              ; preds = %489
  %493 = load i32, ptr %43, align 4, !tbaa !9
  %494 = udiv i32 %493, 2
  store i32 %494, ptr %43, align 4, !tbaa !9
  %495 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %495, ptr %22, align 4, !tbaa !9
  br label %496

496:                                              ; preds = %492, %489, %479
  %497 = load ptr, ptr %10, align 8, !tbaa !5
  %498 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %497, i32 noundef 3)
  %499 = icmp eq i32 4, %498
  br i1 %499, label %500, label %502

500:                                              ; preds = %496
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf8_avx512_prep_stack(ptr noundef %501, i32 noundef 0)
  br label %536

502:                                              ; preds = %496
  %503 = load ptr, ptr %10, align 8, !tbaa !5
  %504 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %503, i32 noundef 3)
  %505 = icmp eq i32 2, %504
  br i1 %505, label %506, label %524

506:                                              ; preds = %502
  %507 = load ptr, ptr %6, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %507, i32 0, i32 6
  %509 = load i32, ptr %508, align 4, !tbaa !22
  %510 = icmp ult i32 %509, 1103
  br i1 %510, label %511, label %523

511:                                              ; preds = %506
  %512 = load ptr, ptr %6, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %512, i32 0, i32 6
  %514 = load i32, ptr %513, align 4, !tbaa !22
  %515 = icmp ne i32 %514, 1053
  br i1 %515, label %516, label %523

516:                                              ; preds = %511
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %517, i32 0, i32 6
  %519 = load i32, ptr %518, align 4, !tbaa !22
  %520 = icmp ne i32 %519, 1008
  br i1 %520, label %521, label %523

521:                                              ; preds = %516
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf16_avx512_prep_stack(ptr noundef %522, i32 noundef 0)
  br label %523

523:                                              ; preds = %521, %516, %511, %506
  br label %535

524:                                              ; preds = %502
  %525 = load ptr, ptr %10, align 8, !tbaa !5
  %526 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %525, i32 noundef 0)
  %527 = icmp eq i32 5, %526
  br i1 %527, label %532, label %528

528:                                              ; preds = %524
  %529 = load ptr, ptr %10, align 8, !tbaa !5
  %530 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %529, i32 noundef 3)
  %531 = icmp eq i32 5, %530
  br i1 %531, label %532, label %534

532:                                              ; preds = %528, %524
  %533 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef %533, i32 noundef 0)
  br label %534

534:                                              ; preds = %532, %528
  br label %535

535:                                              ; preds = %534, %523
  br label %536

536:                                              ; preds = %535, %500
  %537 = load i32, ptr %44, align 4, !tbaa !9
  %538 = load i32, ptr %43, align 4, !tbaa !9
  %539 = icmp ugt i32 %537, %538
  br i1 %539, label %540, label %564

540:                                              ; preds = %536
  %541 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %541, ptr %44, align 4, !tbaa !9
  %542 = load i32, ptr %16, align 4, !tbaa !9
  %543 = load i32, ptr %44, align 4, !tbaa !9
  %544 = udiv i32 %542, %543
  store i32 %544, ptr %46, align 4, !tbaa !9
  %545 = load i32, ptr %16, align 4, !tbaa !9
  %546 = load i32, ptr %44, align 4, !tbaa !9
  %547 = load i32, ptr %46, align 4, !tbaa !9
  %548 = mul i32 %546, %547
  %549 = sub i32 %545, %548
  store i32 %549, ptr %45, align 4, !tbaa !9
  %550 = load i32, ptr %17, align 4, !tbaa !9
  %551 = icmp ugt i32 %550, 0
  br i1 %551, label %552, label %563

552:                                              ; preds = %540
  %553 = load i32, ptr %45, align 4, !tbaa !9
  %554 = icmp eq i32 %553, 0
  br i1 %554, label %555, label %563

555:                                              ; preds = %552
  %556 = load i32, ptr %46, align 4, !tbaa !9
  %557 = add i32 %556, -1
  store i32 %557, ptr %46, align 4, !tbaa !9
  %558 = load i32, ptr %16, align 4, !tbaa !9
  %559 = load i32, ptr %44, align 4, !tbaa !9
  %560 = load i32, ptr %46, align 4, !tbaa !9
  %561 = mul i32 %559, %560
  %562 = sub i32 %558, %561
  store i32 %562, ptr %45, align 4, !tbaa !9
  br label %563

563:                                              ; preds = %555, %552, %540
  br label %579

564:                                              ; preds = %536
  %565 = load i32, ptr %17, align 4, !tbaa !9
  %566 = icmp ugt i32 %565, 0
  br i1 %566, label %567, label %578

567:                                              ; preds = %564
  %568 = load i32, ptr %45, align 4, !tbaa !9
  %569 = icmp eq i32 %568, 0
  br i1 %569, label %570, label %578

570:                                              ; preds = %567
  %571 = load i32, ptr %46, align 4, !tbaa !9
  %572 = add i32 %571, -1
  store i32 %572, ptr %46, align 4, !tbaa !9
  %573 = load i32, ptr %16, align 4, !tbaa !9
  %574 = load i32, ptr %44, align 4, !tbaa !9
  %575 = load i32, ptr %46, align 4, !tbaa !9
  %576 = mul i32 %574, %575
  %577 = sub i32 %573, %576
  store i32 %577, ptr %45, align 4, !tbaa !9
  br label %578

578:                                              ; preds = %570, %567, %564
  br label %579

579:                                              ; preds = %578, %563
  %580 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %580, ptr %47, align 4, !tbaa !9
  %581 = load i32, ptr %43, align 4, !tbaa !9
  %582 = load i32, ptr %47, align 4, !tbaa !9
  %583 = udiv i32 %581, %582
  %584 = icmp ugt i32 %583, 1
  br i1 %584, label %585, label %589

585:                                              ; preds = %579
  %586 = load i32, ptr %43, align 4, !tbaa !9
  %587 = load i32, ptr %47, align 4, !tbaa !9
  %588 = udiv i32 %586, %587
  store i32 %588, ptr %48, align 4, !tbaa !9
  br label %590

589:                                              ; preds = %579
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %590

590:                                              ; preds = %589, %585
  %591 = load i32, ptr %15, align 4, !tbaa !9
  %592 = load i32, ptr %48, align 4, !tbaa !9
  %593 = add i32 %591, %592
  %594 = sub i32 %593, 1
  %595 = load i32, ptr %48, align 4, !tbaa !9
  %596 = udiv i32 %594, %595
  store i32 %596, ptr %49, align 4, !tbaa !9
  %597 = load i32, ptr %15, align 4, !tbaa !9
  %598 = load i32, ptr %48, align 4, !tbaa !9
  %599 = urem i32 %597, %598
  store i32 %599, ptr %50, align 4, !tbaa !9
  store i32 0, ptr %51, align 4, !tbaa !9
  %600 = load i32, ptr %50, align 4, !tbaa !9
  %601 = icmp ugt i32 %600, 0
  br i1 %601, label %602, label %610

602:                                              ; preds = %590
  %603 = load i32, ptr %49, align 4, !tbaa !9
  %604 = add i32 %603, -1
  store i32 %604, ptr %49, align 4, !tbaa !9
  %605 = load i32, ptr %15, align 4, !tbaa !9
  %606 = load i32, ptr %49, align 4, !tbaa !9
  %607 = load i32, ptr %48, align 4, !tbaa !9
  %608 = mul i32 %606, %607
  %609 = sub i32 %605, %608
  store i32 %609, ptr %51, align 4, !tbaa !9
  br label %610

610:                                              ; preds = %602, %590
  %611 = load i32, ptr %46, align 4, !tbaa !9
  %612 = icmp uge i32 %611, 1
  br i1 %612, label %613, label %1969

613:                                              ; preds = %610
  %614 = load i32, ptr %46, align 4, !tbaa !9
  %615 = icmp ugt i32 %614, 1
  br i1 %615, label %616, label %623

616:                                              ; preds = %613
  %617 = load ptr, ptr %6, align 8, !tbaa !5
  %618 = load ptr, ptr %7, align 8, !tbaa !5
  %619 = load ptr, ptr %9, align 8, !tbaa !5
  %620 = load ptr, ptr %8, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %620, i32 0, i32 24
  %622 = load i32, ptr %621, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_header_m_loop(ptr noundef %617, ptr noundef %618, ptr noundef %619, i32 noundef %622)
  br label %623

623:                                              ; preds = %616, %613
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %624

624:                                              ; preds = %846, %623
  %625 = load i32, ptr %11, align 4, !tbaa !9
  %626 = load i32, ptr %48, align 4, !tbaa !9
  %627 = icmp ult i32 %625, %626
  br i1 %627, label %628, label %849

628:                                              ; preds = %624
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %629

629:                                              ; preds = %842, %628
  %630 = load i32, ptr %13, align 4, !tbaa !9
  %631 = load i32, ptr %44, align 4, !tbaa !9
  %632 = icmp ult i32 %630, %631
  br i1 %632, label %633, label %845

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

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

639:                                              ; preds = %636
  %640 = load i32, ptr %56, align 4, !tbaa !9
  %641 = icmp ugt i32 %640, 0
  br i1 %641, label %642, label %668

642:                                              ; preds = %639, %636
  %643 = load ptr, ptr %6, align 8, !tbaa !5
  %644 = load ptr, ptr %9, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %644, i32 0, i32 128
  %646 = load i8, ptr %645, align 4, !tbaa !11
  %647 = load i32, ptr %21, align 4, !tbaa !9
  %648 = load i32, ptr %13, align 4, !tbaa !9
  %649 = add i32 %647, %648
  %650 = load i32, ptr %11, align 4, !tbaa !9
  %651 = load i32, ptr %44, align 4, !tbaa !9
  %652 = mul i32 %650, %651
  %653 = add i32 %649, %652
  %654 = load i32, ptr %21, align 4, !tbaa !9
  %655 = load i32, ptr %13, align 4, !tbaa !9
  %656 = add i32 %654, %655
  %657 = load i32, ptr %11, align 4, !tbaa !9
  %658 = load i32, ptr %44, align 4, !tbaa !9
  %659 = mul i32 %657, %658
  %660 = add i32 %656, %659
  %661 = load i32, ptr %21, align 4, !tbaa !9
  %662 = load i32, ptr %13, align 4, !tbaa !9
  %663 = add i32 %661, %662
  %664 = load i32, ptr %11, align 4, !tbaa !9
  %665 = load i32, ptr %44, align 4, !tbaa !9
  %666 = mul i32 %664, %665
  %667 = add i32 %663, %666
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %643, i32 noundef 805574231, i8 noundef signext %646, i32 noundef %653, i32 noundef %660, i32 noundef %667)
  br label %811

668:                                              ; preds = %639
  %669 = load i32, ptr %55, align 4, !tbaa !9
  %670 = icmp ugt i32 %669, 0
  br i1 %670, label %674, label %671

671:                                              ; preds = %668
  %672 = load i32, ptr %57, align 4, !tbaa !9
  %673 = icmp ugt i32 %672, 0
  br i1 %673, label %674, label %810

674:                                              ; preds = %671, %668
  %675 = load ptr, ptr %6, align 8, !tbaa !5
  %676 = load ptr, ptr %10, align 8, !tbaa !5
  %677 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %676, i32 noundef 0)
  %678 = icmp eq i32 4, %677
  br i1 %678, label %683, label %679

679:                                              ; preds = %674
  %680 = load ptr, ptr %10, align 8, !tbaa !5
  %681 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %680, i32 noundef 0)
  %682 = icmp eq i32 5, %681
  br i1 %682, label %683, label %689

683:                                              ; preds = %679, %674
  %684 = load ptr, ptr %6, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %684, i32 0, i32 6
  %686 = load i32, ptr %685, align 4, !tbaa !22
  %687 = icmp ult i32 %686, 1101
  br i1 %687, label %688, label %689

688:                                              ; preds = %683
  br label %691

689:                                              ; preds = %683, %679
  %690 = load i32, ptr %28, align 4, !tbaa !9
  br label %691

691:                                              ; preds = %689, %688
  %692 = phi i32 [ 545725200, %688 ], [ %690, %689 ]
  %693 = load ptr, ptr %8, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %693, i32 0, i32 1
  %695 = load i32, ptr %694, align 4, !tbaa !24
  %696 = load i32, ptr %13, align 4, !tbaa !9
  %697 = load i32, ptr %33, align 4, !tbaa !9
  %698 = mul i32 %696, %697
  %699 = load ptr, ptr %9, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %699, i32 0, i32 2
  %701 = load i32, ptr %700, align 4, !tbaa !35
  %702 = mul i32 %698, %701
  %703 = load i8, ptr %26, align 1, !tbaa !13
  %704 = load i32, ptr %21, align 4, !tbaa !9
  %705 = load i32, ptr %13, align 4, !tbaa !9
  %706 = add i32 %704, %705
  %707 = load i32, ptr %11, align 4, !tbaa !9
  %708 = load i32, ptr %44, align 4, !tbaa !9
  %709 = mul i32 %707, %708
  %710 = add i32 %706, %709
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %675, i32 noundef %692, i32 noundef %695, i32 noundef 127, i32 noundef 0, i32 noundef %702, i8 noundef signext %703, i32 noundef %710, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %711 = load ptr, ptr %10, align 8, !tbaa !5
  %712 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %711, i32 noundef 0)
  %713 = icmp eq i32 4, %712
  br i1 %713, label %714, label %733

714:                                              ; preds = %691
  %715 = load ptr, ptr %6, align 8, !tbaa !5
  %716 = load ptr, ptr %9, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %716, i32 0, i32 128
  %718 = load i8, ptr %717, align 4, !tbaa !11
  %719 = load i32, ptr %21, align 4, !tbaa !9
  %720 = load i32, ptr %13, align 4, !tbaa !9
  %721 = add i32 %719, %720
  %722 = load i32, ptr %11, align 4, !tbaa !9
  %723 = load i32, ptr %44, align 4, !tbaa !9
  %724 = mul i32 %722, %723
  %725 = add i32 %721, %724
  %726 = load i32, ptr %21, align 4, !tbaa !9
  %727 = load i32, ptr %13, align 4, !tbaa !9
  %728 = add i32 %726, %727
  %729 = load i32, ptr %11, align 4, !tbaa !9
  %730 = load i32, ptr %44, align 4, !tbaa !9
  %731 = mul i32 %729, %730
  %732 = add i32 %728, %731
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %715, i8 noundef signext %718, i32 noundef %725, i32 noundef %732)
  br label %809

733:                                              ; preds = %691
  %734 = load ptr, ptr %10, align 8, !tbaa !5
  %735 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %734, i32 noundef 0)
  %736 = icmp eq i32 5, %735
  br i1 %736, label %737, label %760

737:                                              ; preds = %733
  %738 = load ptr, ptr %6, align 8, !tbaa !5
  %739 = load ptr, ptr %9, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %739, i32 0, i32 128
  %741 = load i8, ptr %740, align 4, !tbaa !11
  %742 = load i32, ptr %21, align 4, !tbaa !9
  %743 = load i32, ptr %13, align 4, !tbaa !9
  %744 = add i32 %742, %743
  %745 = load i32, ptr %11, align 4, !tbaa !9
  %746 = load i32, ptr %44, align 4, !tbaa !9
  %747 = mul i32 %745, %746
  %748 = add i32 %744, %747
  %749 = load i32, ptr %21, align 4, !tbaa !9
  %750 = load i32, ptr %13, align 4, !tbaa !9
  %751 = add i32 %749, %750
  %752 = load i32, ptr %11, align 4, !tbaa !9
  %753 = load i32, ptr %44, align 4, !tbaa !9
  %754 = mul i32 %752, %753
  %755 = add i32 %751, %754
  %756 = load i32, ptr %36, align 4, !tbaa !9
  %757 = load i32, ptr %37, align 4, !tbaa !9
  %758 = load i32, ptr %40, align 4, !tbaa !9
  %759 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %738, i8 noundef signext %741, i32 noundef %748, i32 noundef %755, i32 noundef %756, i32 noundef %757, i32 noundef %758, i32 noundef %759)
  br label %808

760:                                              ; preds = %733
  %761 = load ptr, ptr %10, align 8, !tbaa !5
  %762 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %761, i32 noundef 0)
  %763 = icmp eq i32 3, %762
  br i1 %763, label %764, label %783

764:                                              ; preds = %760
  %765 = load ptr, ptr %6, align 8, !tbaa !5
  %766 = load ptr, ptr %9, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %766, i32 0, i32 128
  %768 = load i8, ptr %767, align 4, !tbaa !11
  %769 = load i32, ptr %21, align 4, !tbaa !9
  %770 = load i32, ptr %13, align 4, !tbaa !9
  %771 = add i32 %769, %770
  %772 = load i32, ptr %11, align 4, !tbaa !9
  %773 = load i32, ptr %44, align 4, !tbaa !9
  %774 = mul i32 %772, %773
  %775 = add i32 %771, %774
  %776 = load i32, ptr %21, align 4, !tbaa !9
  %777 = load i32, ptr %13, align 4, !tbaa !9
  %778 = add i32 %776, %777
  %779 = load i32, ptr %11, align 4, !tbaa !9
  %780 = load i32, ptr %44, align 4, !tbaa !9
  %781 = mul i32 %779, %780
  %782 = add i32 %778, %781
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %765, i32 noundef 537208083, i8 noundef signext %768, i32 noundef %775, i32 noundef %782)
  br label %807

783:                                              ; preds = %760
  %784 = load ptr, ptr %10, align 8, !tbaa !5
  %785 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %784, i32 noundef 0)
  %786 = icmp eq i32 2, %785
  br i1 %786, label %787, label %806

787:                                              ; preds = %783
  %788 = load ptr, ptr %6, align 8, !tbaa !5
  %789 = load ptr, ptr %9, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %789, i32 0, i32 128
  %791 = load i8, ptr %790, align 4, !tbaa !11
  %792 = load i32, ptr %21, align 4, !tbaa !9
  %793 = load i32, ptr %13, align 4, !tbaa !9
  %794 = add i32 %792, %793
  %795 = load i32, ptr %11, align 4, !tbaa !9
  %796 = load i32, ptr %44, align 4, !tbaa !9
  %797 = mul i32 %795, %796
  %798 = add i32 %794, %797
  %799 = load i32, ptr %21, align 4, !tbaa !9
  %800 = load i32, ptr %13, align 4, !tbaa !9
  %801 = add i32 %799, %800
  %802 = load i32, ptr %11, align 4, !tbaa !9
  %803 = load i32, ptr %44, align 4, !tbaa !9
  %804 = mul i32 %802, %803
  %805 = add i32 %801, %804
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %788, i8 noundef signext %791, i32 noundef %798, i32 noundef %805)
  br label %806

806:                                              ; preds = %787, %783
  br label %807

807:                                              ; preds = %806, %764
  br label %808

808:                                              ; preds = %807, %737
  br label %809

809:                                              ; preds = %808, %714
  br label %810

810:                                              ; preds = %809, %671
  br label %811

811:                                              ; preds = %810, %642
  br label %812

812:                                              ; preds = %811, %633
  %813 = load i32, ptr %19, align 4, !tbaa !9
  %814 = icmp ugt i32 %813, 0
  br i1 %814, label %815, label %841

815:                                              ; preds = %812
  %816 = load ptr, ptr %6, align 8, !tbaa !5
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %817, i32 0, i32 128
  %819 = load i8, ptr %818, align 4, !tbaa !11
  %820 = load i32, ptr %22, align 4, !tbaa !9
  %821 = load i32, ptr %13, align 4, !tbaa !9
  %822 = add i32 %820, %821
  %823 = load i32, ptr %11, align 4, !tbaa !9
  %824 = load i32, ptr %44, align 4, !tbaa !9
  %825 = mul i32 %823, %824
  %826 = add i32 %822, %825
  %827 = load i32, ptr %22, align 4, !tbaa !9
  %828 = load i32, ptr %13, align 4, !tbaa !9
  %829 = add i32 %827, %828
  %830 = load i32, ptr %11, align 4, !tbaa !9
  %831 = load i32, ptr %44, align 4, !tbaa !9
  %832 = mul i32 %830, %831
  %833 = add i32 %829, %832
  %834 = load i32, ptr %22, align 4, !tbaa !9
  %835 = load i32, ptr %13, align 4, !tbaa !9
  %836 = add i32 %834, %835
  %837 = load i32, ptr %11, align 4, !tbaa !9
  %838 = load i32, ptr %44, align 4, !tbaa !9
  %839 = mul i32 %837, %838
  %840 = add i32 %836, %839
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %816, i32 noundef 805574231, i8 noundef signext %819, i32 noundef %826, i32 noundef %833, i32 noundef %840)
  br label %841

841:                                              ; preds = %815, %812
  br label %842

842:                                              ; preds = %841
  %843 = load i32, ptr %13, align 4, !tbaa !9
  %844 = add i32 %843, 1
  store i32 %844, ptr %13, align 4, !tbaa !9
  br label %629, !llvm.loop !36

845:                                              ; preds = %629
  br label %846

846:                                              ; preds = %845
  %847 = load i32, ptr %11, align 4, !tbaa !9
  %848 = add i32 %847, 1
  store i32 %848, ptr %11, align 4, !tbaa !9
  br label %624, !llvm.loop !38

849:                                              ; preds = %624
  %850 = load i32, ptr %49, align 4, !tbaa !9
  %851 = icmp uge i32 %850, 1
  br i1 %851, label %852, label %1083

852:                                              ; preds = %849
  %853 = load i32, ptr %49, align 4, !tbaa !9
  %854 = icmp ugt i32 %853, 1
  br i1 %854, label %855, label %862

855:                                              ; preds = %852
  %856 = load ptr, ptr %6, align 8, !tbaa !5
  %857 = load ptr, ptr %7, align 8, !tbaa !5
  %858 = load ptr, ptr %9, align 8, !tbaa !5
  %859 = load ptr, ptr %8, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %859, i32 0, i32 25
  %861 = load i32, ptr %860, align 4, !tbaa !29
  call void @libxsmm_generator_mateltwise_header_n_loop(ptr noundef %856, ptr noundef %857, ptr noundef %858, i32 noundef %861)
  br label %862

862:                                              ; preds = %855, %852
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %863

863:                                              ; preds = %1049, %862
  %864 = load i32, ptr %11, align 4, !tbaa !9
  %865 = load i32, ptr %48, align 4, !tbaa !9
  %866 = icmp ult i32 %864, %865
  br i1 %866, label %867, label %1052

867:                                              ; preds = %863
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %868

868:                                              ; preds = %1045, %867
  %869 = load i32, ptr %13, align 4, !tbaa !9
  %870 = load i32, ptr %44, align 4, !tbaa !9
  %871 = icmp ult i32 %869, %870
  br i1 %871, label %872, label %1048

872:                                              ; preds = %868
  %873 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %873, ptr %12, align 4, !tbaa !9
  %874 = load ptr, ptr %6, align 8, !tbaa !5
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %875, i32 noundef 0)
  %877 = icmp eq i32 4, %876
  br i1 %877, label %882, label %878

878:                                              ; preds = %872
  %879 = load ptr, ptr %10, align 8, !tbaa !5
  %880 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %879, i32 noundef 0)
  %881 = icmp eq i32 5, %880
  br i1 %881, label %882, label %888

882:                                              ; preds = %878, %872
  %883 = load ptr, ptr %6, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %883, i32 0, i32 6
  %885 = load i32, ptr %884, align 4, !tbaa !22
  %886 = icmp ult i32 %885, 1101
  br i1 %886, label %887, label %888

887:                                              ; preds = %882
  br label %890

888:                                              ; preds = %882, %878
  %889 = load i32, ptr %28, align 4, !tbaa !9
  br label %890

890:                                              ; preds = %888, %887
  %891 = phi i32 [ 545725200, %887 ], [ %889, %888 ]
  %892 = load ptr, ptr %8, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %892, i32 0, i32 1
  %894 = load i32, ptr %893, align 4, !tbaa !24
  %895 = load i32, ptr %13, align 4, !tbaa !9
  %896 = load i32, ptr %33, align 4, !tbaa !9
  %897 = mul i32 %895, %896
  %898 = load i32, ptr %12, align 4, !tbaa !9
  %899 = load ptr, ptr %10, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %899, i32 0, i32 2
  %901 = load i32, ptr %900, align 1, !tbaa !21
  %902 = mul i32 %898, %901
  %903 = add i32 %897, %902
  %904 = load ptr, ptr %9, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %904, i32 0, i32 2
  %906 = load i32, ptr %905, align 4, !tbaa !35
  %907 = mul i32 %903, %906
  %908 = load i8, ptr %26, align 1, !tbaa !13
  %909 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %874, i32 noundef %891, i32 noundef %894, i32 noundef 127, i32 noundef 0, i32 noundef %907, i8 noundef signext %908, i32 noundef %909, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %910 = load ptr, ptr %10, align 8, !tbaa !5
  %911 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %910, i32 noundef 0)
  %912 = icmp eq i32 4, %911
  br i1 %912, label %913, label %920

913:                                              ; preds = %890
  %914 = load ptr, ptr %6, align 8, !tbaa !5
  %915 = load ptr, ptr %9, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %915, i32 0, i32 128
  %917 = load i8, ptr %916, align 4, !tbaa !11
  %918 = load i32, ptr %35, align 4, !tbaa !9
  %919 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %914, i8 noundef signext %917, i32 noundef %918, i32 noundef %919)
  br label %960

920:                                              ; preds = %890
  %921 = load ptr, ptr %10, align 8, !tbaa !5
  %922 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %921, i32 noundef 0)
  %923 = icmp eq i32 5, %922
  br i1 %923, label %924, label %935

924:                                              ; preds = %920
  %925 = load ptr, ptr %6, align 8, !tbaa !5
  %926 = load ptr, ptr %9, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %926, i32 0, i32 128
  %928 = load i8, ptr %927, align 4, !tbaa !11
  %929 = load i32, ptr %35, align 4, !tbaa !9
  %930 = load i32, ptr %35, align 4, !tbaa !9
  %931 = load i32, ptr %36, align 4, !tbaa !9
  %932 = load i32, ptr %37, align 4, !tbaa !9
  %933 = load i32, ptr %40, align 4, !tbaa !9
  %934 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %925, i8 noundef signext %928, i32 noundef %929, i32 noundef %930, i32 noundef %931, i32 noundef %932, i32 noundef %933, i32 noundef %934)
  br label %959

935:                                              ; preds = %920
  %936 = load ptr, ptr %10, align 8, !tbaa !5
  %937 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %936, i32 noundef 0)
  %938 = icmp eq i32 3, %937
  br i1 %938, label %939, label %946

939:                                              ; preds = %935
  %940 = load ptr, ptr %6, align 8, !tbaa !5
  %941 = load ptr, ptr %9, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %941, i32 0, i32 128
  %943 = load i8, ptr %942, align 4, !tbaa !11
  %944 = load i32, ptr %35, align 4, !tbaa !9
  %945 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %940, i32 noundef 537208083, i8 noundef signext %943, i32 noundef %944, i32 noundef %945)
  br label %958

946:                                              ; preds = %935
  %947 = load ptr, ptr %10, align 8, !tbaa !5
  %948 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %947, i32 noundef 0)
  %949 = icmp eq i32 2, %948
  br i1 %949, label %950, label %957

950:                                              ; preds = %946
  %951 = load ptr, ptr %6, align 8, !tbaa !5
  %952 = load ptr, ptr %9, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %952, i32 0, i32 128
  %954 = load i8, ptr %953, align 4, !tbaa !11
  %955 = load i32, ptr %35, align 4, !tbaa !9
  %956 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %951, i8 noundef signext %954, i32 noundef %955, i32 noundef %956)
  br label %957

957:                                              ; preds = %950, %946
  br label %958

958:                                              ; preds = %957, %939
  br label %959

959:                                              ; preds = %958, %924
  br label %960

960:                                              ; preds = %959, %913
  %961 = load i32, ptr %20, align 4, !tbaa !9
  %962 = icmp ugt i32 %961, 0
  br i1 %962, label %963, label %1026

963:                                              ; preds = %960
  %964 = load ptr, ptr %6, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %964, i32 0, i32 6
  %966 = load i32, ptr %965, align 4, !tbaa !22
  %967 = icmp uge i32 %966, 1051
  br i1 %967, label %968, label %992

968:                                              ; preds = %963
  %969 = load i32, ptr %56, align 4, !tbaa !9
  %970 = icmp ugt i32 %969, 0
  br i1 %970, label %971, label %992

971:                                              ; preds = %968
  %972 = load ptr, ptr %6, align 8, !tbaa !5
  %973 = load i32, ptr %25, align 4, !tbaa !9
  %974 = load ptr, ptr %9, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %974, i32 0, i32 128
  %976 = load i8, ptr %975, align 4, !tbaa !11
  %977 = load i32, ptr %35, align 4, !tbaa !9
  %978 = load i32, ptr %21, align 4, !tbaa !9
  %979 = load i32, ptr %13, align 4, !tbaa !9
  %980 = add i32 %978, %979
  %981 = load i32, ptr %11, align 4, !tbaa !9
  %982 = load i32, ptr %44, align 4, !tbaa !9
  %983 = mul i32 %981, %982
  %984 = add i32 %980, %983
  %985 = load i32, ptr %21, align 4, !tbaa !9
  %986 = load i32, ptr %13, align 4, !tbaa !9
  %987 = add i32 %985, %986
  %988 = load i32, ptr %11, align 4, !tbaa !9
  %989 = load i32, ptr %44, align 4, !tbaa !9
  %990 = mul i32 %988, %989
  %991 = add i32 %987, %990
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %972, i32 noundef %973, i8 noundef signext %976, i32 noundef %977, i32 noundef %984, i32 noundef %991, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3)
  br label %1025

992:                                              ; preds = %968, %963
  %993 = load i32, ptr %56, align 4, !tbaa !9
  %994 = icmp ugt i32 %993, 0
  br i1 %994, label %995, label %1004

995:                                              ; preds = %992
  %996 = load ptr, ptr %6, align 8, !tbaa !5
  %997 = load i32, ptr %25, align 4, !tbaa !9
  %998 = load ptr, ptr %9, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %998, i32 0, i32 128
  %1000 = load i8, ptr %999, align 4, !tbaa !11
  %1001 = load i32, ptr %35, align 4, !tbaa !9
  %1002 = load i32, ptr %34, align 4, !tbaa !9
  %1003 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %996, i32 noundef %997, i8 noundef signext %1000, i32 noundef %1001, i32 noundef %1002, i32 noundef %1003)
  br label %1004

1004:                                             ; preds = %995, %992
  %1005 = load ptr, ptr %6, align 8, !tbaa !5
  %1006 = load i32, ptr %23, align 4, !tbaa !9
  %1007 = load ptr, ptr %9, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1007, i32 0, i32 128
  %1009 = load i8, ptr %1008, align 4, !tbaa !11
  %1010 = load i32, ptr %35, align 4, !tbaa !9
  %1011 = load i32, ptr %21, align 4, !tbaa !9
  %1012 = load i32, ptr %13, align 4, !tbaa !9
  %1013 = add i32 %1011, %1012
  %1014 = load i32, ptr %11, align 4, !tbaa !9
  %1015 = load i32, ptr %44, align 4, !tbaa !9
  %1016 = mul i32 %1014, %1015
  %1017 = add i32 %1013, %1016
  %1018 = load i32, ptr %21, align 4, !tbaa !9
  %1019 = load i32, ptr %13, align 4, !tbaa !9
  %1020 = add i32 %1018, %1019
  %1021 = load i32, ptr %11, align 4, !tbaa !9
  %1022 = load i32, ptr %44, align 4, !tbaa !9
  %1023 = mul i32 %1021, %1022
  %1024 = add i32 %1020, %1023
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1005, i32 noundef %1006, i8 noundef signext %1009, i32 noundef %1010, i32 noundef %1017, i32 noundef %1024)
  br label %1025

1025:                                             ; preds = %1004, %971
  br label %1026

1026:                                             ; preds = %1025, %960
  %1027 = load i32, ptr %19, align 4, !tbaa !9
  %1028 = icmp ugt i32 %1027, 0
  br i1 %1028, label %1029, label %1044

1029:                                             ; preds = %1026
  %1030 = load ptr, ptr %6, align 8, !tbaa !5
  %1031 = load i32, ptr %24, align 4, !tbaa !9
  %1032 = load ptr, ptr %9, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1032, i32 0, i32 128
  %1034 = load i8, ptr %1033, align 4, !tbaa !11
  %1035 = load i32, ptr %35, align 4, !tbaa !9
  %1036 = load i32, ptr %35, align 4, !tbaa !9
  %1037 = load i32, ptr %22, align 4, !tbaa !9
  %1038 = load i32, ptr %13, align 4, !tbaa !9
  %1039 = add i32 %1037, %1038
  %1040 = load i32, ptr %11, align 4, !tbaa !9
  %1041 = load i32, ptr %44, align 4, !tbaa !9
  %1042 = mul i32 %1040, %1041
  %1043 = add i32 %1039, %1042
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1030, i32 noundef %1031, i8 noundef signext %1034, i32 noundef %1035, i32 noundef %1036, i32 noundef %1043)
  br label %1044

1044:                                             ; preds = %1029, %1026
  br label %1045

1045:                                             ; preds = %1044
  %1046 = load i32, ptr %13, align 4, !tbaa !9
  %1047 = add i32 %1046, 1
  store i32 %1047, ptr %13, align 4, !tbaa !9
  br label %868, !llvm.loop !39

1048:                                             ; preds = %868
  br label %1049

1049:                                             ; preds = %1048
  %1050 = load i32, ptr %11, align 4, !tbaa !9
  %1051 = add i32 %1050, 1
  store i32 %1051, ptr %11, align 4, !tbaa !9
  br label %863, !llvm.loop !40

1052:                                             ; preds = %863
  %1053 = load ptr, ptr %6, align 8, !tbaa !5
  %1054 = load ptr, ptr %9, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1054, i32 0, i32 10
  %1056 = load i32, ptr %1055, align 4, !tbaa !41
  %1057 = load ptr, ptr %8, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1057, i32 0, i32 1
  %1059 = load i32, ptr %1058, align 4, !tbaa !24
  %1060 = load ptr, ptr %10, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1060, i32 0, i32 2
  %1062 = load i32, ptr %1061, align 1, !tbaa !21
  %1063 = zext i32 %1062 to i64
  %1064 = load i32, ptr %48, align 4, !tbaa !9
  %1065 = zext i32 %1064 to i64
  %1066 = mul nsw i64 %1063, %1065
  %1067 = load ptr, ptr %9, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1067, i32 0, i32 2
  %1069 = load i32, ptr %1068, align 4, !tbaa !35
  %1070 = zext i32 %1069 to i64
  %1071 = mul nsw i64 %1066, %1070
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1053, i32 noundef %1056, i32 noundef %1059, i64 noundef %1071)
  %1072 = load i32, ptr %49, align 4, !tbaa !9
  %1073 = icmp ugt i32 %1072, 1
  br i1 %1073, label %1074, label %1082

1074:                                             ; preds = %1052
  %1075 = load ptr, ptr %6, align 8, !tbaa !5
  %1076 = load ptr, ptr %7, align 8, !tbaa !5
  %1077 = load ptr, ptr %9, align 8, !tbaa !5
  %1078 = load ptr, ptr %8, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1078, i32 0, i32 25
  %1080 = load i32, ptr %1079, align 4, !tbaa !29
  %1081 = load i32, ptr %49, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_footer_n_loop(ptr noundef %1075, ptr noundef %1076, ptr noundef %1077, i32 noundef %1080, i32 noundef %1081)
  br label %1082

1082:                                             ; preds = %1074, %1052
  br label %1083

1083:                                             ; preds = %1082, %849
  %1084 = load i32, ptr %51, align 4, !tbaa !9
  %1085 = icmp ugt i32 %1084, 0
  br i1 %1085, label %1086, label %1277

1086:                                             ; preds = %1083
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1087

1087:                                             ; preds = %1273, %1086
  %1088 = load i32, ptr %11, align 4, !tbaa !9
  %1089 = load i32, ptr %51, align 4, !tbaa !9
  %1090 = icmp ult i32 %1088, %1089
  br i1 %1090, label %1091, label %1276

1091:                                             ; preds = %1087
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %1092

1092:                                             ; preds = %1269, %1091
  %1093 = load i32, ptr %13, align 4, !tbaa !9
  %1094 = load i32, ptr %44, align 4, !tbaa !9
  %1095 = icmp ult i32 %1093, %1094
  br i1 %1095, label %1096, label %1272

1096:                                             ; preds = %1092
  %1097 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1097, ptr %12, align 4, !tbaa !9
  %1098 = load ptr, ptr %6, align 8, !tbaa !5
  %1099 = load ptr, ptr %10, align 8, !tbaa !5
  %1100 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1099, i32 noundef 0)
  %1101 = icmp eq i32 4, %1100
  br i1 %1101, label %1106, label %1102

1102:                                             ; preds = %1096
  %1103 = load ptr, ptr %10, align 8, !tbaa !5
  %1104 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1103, i32 noundef 0)
  %1105 = icmp eq i32 5, %1104
  br i1 %1105, label %1106, label %1112

1106:                                             ; preds = %1102, %1096
  %1107 = load ptr, ptr %6, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1107, i32 0, i32 6
  %1109 = load i32, ptr %1108, align 4, !tbaa !22
  %1110 = icmp ult i32 %1109, 1101
  br i1 %1110, label %1111, label %1112

1111:                                             ; preds = %1106
  br label %1114

1112:                                             ; preds = %1106, %1102
  %1113 = load i32, ptr %28, align 4, !tbaa !9
  br label %1114

1114:                                             ; preds = %1112, %1111
  %1115 = phi i32 [ 545725200, %1111 ], [ %1113, %1112 ]
  %1116 = load ptr, ptr %8, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1116, i32 0, i32 1
  %1118 = load i32, ptr %1117, align 4, !tbaa !24
  %1119 = load i32, ptr %13, align 4, !tbaa !9
  %1120 = load i32, ptr %33, align 4, !tbaa !9
  %1121 = mul i32 %1119, %1120
  %1122 = load i32, ptr %12, align 4, !tbaa !9
  %1123 = load ptr, ptr %10, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1123, i32 0, i32 2
  %1125 = load i32, ptr %1124, align 1, !tbaa !21
  %1126 = mul i32 %1122, %1125
  %1127 = add i32 %1121, %1126
  %1128 = load ptr, ptr %9, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1128, i32 0, i32 2
  %1130 = load i32, ptr %1129, align 4, !tbaa !35
  %1131 = mul i32 %1127, %1130
  %1132 = load i8, ptr %26, align 1, !tbaa !13
  %1133 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1098, i32 noundef %1115, i32 noundef %1118, i32 noundef 127, i32 noundef 0, i32 noundef %1131, i8 noundef signext %1132, i32 noundef %1133, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1134 = load ptr, ptr %10, align 8, !tbaa !5
  %1135 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1134, i32 noundef 0)
  %1136 = icmp eq i32 4, %1135
  br i1 %1136, label %1137, label %1144

1137:                                             ; preds = %1114
  %1138 = load ptr, ptr %6, align 8, !tbaa !5
  %1139 = load ptr, ptr %9, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1139, i32 0, i32 128
  %1141 = load i8, ptr %1140, align 4, !tbaa !11
  %1142 = load i32, ptr %35, align 4, !tbaa !9
  %1143 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1138, i8 noundef signext %1141, i32 noundef %1142, i32 noundef %1143)
  br label %1184

1144:                                             ; preds = %1114
  %1145 = load ptr, ptr %10, align 8, !tbaa !5
  %1146 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1145, i32 noundef 0)
  %1147 = icmp eq i32 5, %1146
  br i1 %1147, label %1148, label %1159

1148:                                             ; preds = %1144
  %1149 = load ptr, ptr %6, align 8, !tbaa !5
  %1150 = load ptr, ptr %9, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1150, i32 0, i32 128
  %1152 = load i8, ptr %1151, align 4, !tbaa !11
  %1153 = load i32, ptr %35, align 4, !tbaa !9
  %1154 = load i32, ptr %35, align 4, !tbaa !9
  %1155 = load i32, ptr %36, align 4, !tbaa !9
  %1156 = load i32, ptr %37, align 4, !tbaa !9
  %1157 = load i32, ptr %40, align 4, !tbaa !9
  %1158 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1149, i8 noundef signext %1152, i32 noundef %1153, i32 noundef %1154, i32 noundef %1155, i32 noundef %1156, i32 noundef %1157, i32 noundef %1158)
  br label %1183

1159:                                             ; preds = %1144
  %1160 = load ptr, ptr %10, align 8, !tbaa !5
  %1161 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1160, i32 noundef 0)
  %1162 = icmp eq i32 3, %1161
  br i1 %1162, label %1163, label %1170

1163:                                             ; preds = %1159
  %1164 = load ptr, ptr %6, align 8, !tbaa !5
  %1165 = load ptr, ptr %9, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1165, i32 0, i32 128
  %1167 = load i8, ptr %1166, align 4, !tbaa !11
  %1168 = load i32, ptr %35, align 4, !tbaa !9
  %1169 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1164, i32 noundef 537208083, i8 noundef signext %1167, i32 noundef %1168, i32 noundef %1169)
  br label %1182

1170:                                             ; preds = %1159
  %1171 = load ptr, ptr %10, align 8, !tbaa !5
  %1172 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1171, i32 noundef 0)
  %1173 = icmp eq i32 2, %1172
  br i1 %1173, label %1174, label %1181

1174:                                             ; preds = %1170
  %1175 = load ptr, ptr %6, align 8, !tbaa !5
  %1176 = load ptr, ptr %9, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1176, i32 0, i32 128
  %1178 = load i8, ptr %1177, align 4, !tbaa !11
  %1179 = load i32, ptr %35, align 4, !tbaa !9
  %1180 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1175, i8 noundef signext %1178, i32 noundef %1179, i32 noundef %1180)
  br label %1181

1181:                                             ; preds = %1174, %1170
  br label %1182

1182:                                             ; preds = %1181, %1163
  br label %1183

1183:                                             ; preds = %1182, %1148
  br label %1184

1184:                                             ; preds = %1183, %1137
  %1185 = load i32, ptr %20, align 4, !tbaa !9
  %1186 = icmp ugt i32 %1185, 0
  br i1 %1186, label %1187, label %1250

1187:                                             ; preds = %1184
  %1188 = load ptr, ptr %6, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1188, i32 0, i32 6
  %1190 = load i32, ptr %1189, align 4, !tbaa !22
  %1191 = icmp uge i32 %1190, 1051
  br i1 %1191, label %1192, label %1216

1192:                                             ; preds = %1187
  %1193 = load i32, ptr %56, align 4, !tbaa !9
  %1194 = icmp ugt i32 %1193, 0
  br i1 %1194, label %1195, label %1216

1195:                                             ; preds = %1192
  %1196 = load ptr, ptr %6, align 8, !tbaa !5
  %1197 = load i32, ptr %25, align 4, !tbaa !9
  %1198 = load ptr, ptr %9, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1198, i32 0, i32 128
  %1200 = load i8, ptr %1199, align 4, !tbaa !11
  %1201 = load i32, ptr %35, align 4, !tbaa !9
  %1202 = load i32, ptr %21, align 4, !tbaa !9
  %1203 = load i32, ptr %13, align 4, !tbaa !9
  %1204 = add i32 %1202, %1203
  %1205 = load i32, ptr %11, align 4, !tbaa !9
  %1206 = load i32, ptr %44, align 4, !tbaa !9
  %1207 = mul i32 %1205, %1206
  %1208 = add i32 %1204, %1207
  %1209 = load i32, ptr %21, align 4, !tbaa !9
  %1210 = load i32, ptr %13, align 4, !tbaa !9
  %1211 = add i32 %1209, %1210
  %1212 = load i32, ptr %11, align 4, !tbaa !9
  %1213 = load i32, ptr %44, align 4, !tbaa !9
  %1214 = mul i32 %1212, %1213
  %1215 = add i32 %1211, %1214
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1196, i32 noundef %1197, i8 noundef signext %1200, i32 noundef %1201, i32 noundef %1208, i32 noundef %1215, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3)
  br label %1249

1216:                                             ; preds = %1192, %1187
  %1217 = load i32, ptr %56, align 4, !tbaa !9
  %1218 = icmp ugt i32 %1217, 0
  br i1 %1218, label %1219, label %1228

1219:                                             ; preds = %1216
  %1220 = load ptr, ptr %6, align 8, !tbaa !5
  %1221 = load i32, ptr %25, align 4, !tbaa !9
  %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 !11
  %1225 = load i32, ptr %35, align 4, !tbaa !9
  %1226 = load i32, ptr %34, align 4, !tbaa !9
  %1227 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1220, i32 noundef %1221, i8 noundef signext %1224, i32 noundef %1225, i32 noundef %1226, i32 noundef %1227)
  br label %1228

1228:                                             ; preds = %1219, %1216
  %1229 = load ptr, ptr %6, align 8, !tbaa !5
  %1230 = load i32, ptr %23, align 4, !tbaa !9
  %1231 = load ptr, ptr %9, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1231, i32 0, i32 128
  %1233 = load i8, ptr %1232, align 4, !tbaa !11
  %1234 = load i32, ptr %35, align 4, !tbaa !9
  %1235 = load i32, ptr %21, align 4, !tbaa !9
  %1236 = load i32, ptr %13, align 4, !tbaa !9
  %1237 = add i32 %1235, %1236
  %1238 = load i32, ptr %11, align 4, !tbaa !9
  %1239 = load i32, ptr %44, align 4, !tbaa !9
  %1240 = mul i32 %1238, %1239
  %1241 = add i32 %1237, %1240
  %1242 = load i32, ptr %21, align 4, !tbaa !9
  %1243 = load i32, ptr %13, align 4, !tbaa !9
  %1244 = add i32 %1242, %1243
  %1245 = load i32, ptr %11, align 4, !tbaa !9
  %1246 = load i32, ptr %44, align 4, !tbaa !9
  %1247 = mul i32 %1245, %1246
  %1248 = add i32 %1244, %1247
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1229, i32 noundef %1230, i8 noundef signext %1233, i32 noundef %1234, i32 noundef %1241, i32 noundef %1248)
  br label %1249

1249:                                             ; preds = %1228, %1195
  br label %1250

1250:                                             ; preds = %1249, %1184
  %1251 = load i32, ptr %19, align 4, !tbaa !9
  %1252 = icmp ugt i32 %1251, 0
  br i1 %1252, label %1253, label %1268

1253:                                             ; preds = %1250
  %1254 = load ptr, ptr %6, align 8, !tbaa !5
  %1255 = load i32, ptr %24, align 4, !tbaa !9
  %1256 = load ptr, ptr %9, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1256, i32 0, i32 128
  %1258 = load i8, ptr %1257, align 4, !tbaa !11
  %1259 = load i32, ptr %35, align 4, !tbaa !9
  %1260 = load i32, ptr %35, align 4, !tbaa !9
  %1261 = load i32, ptr %22, align 4, !tbaa !9
  %1262 = load i32, ptr %13, align 4, !tbaa !9
  %1263 = add i32 %1261, %1262
  %1264 = load i32, ptr %11, align 4, !tbaa !9
  %1265 = load i32, ptr %44, align 4, !tbaa !9
  %1266 = mul i32 %1264, %1265
  %1267 = add i32 %1263, %1266
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1254, i32 noundef %1255, i8 noundef signext %1258, i32 noundef %1259, i32 noundef %1260, i32 noundef %1267)
  br label %1268

1268:                                             ; preds = %1253, %1250
  br label %1269

1269:                                             ; preds = %1268
  %1270 = load i32, ptr %13, align 4, !tbaa !9
  %1271 = add i32 %1270, 1
  store i32 %1271, ptr %13, align 4, !tbaa !9
  br label %1092, !llvm.loop !42

1272:                                             ; preds = %1092
  br label %1273

1273:                                             ; preds = %1272
  %1274 = load i32, ptr %11, align 4, !tbaa !9
  %1275 = add i32 %1274, 1
  store i32 %1275, ptr %11, align 4, !tbaa !9
  br label %1087, !llvm.loop !43

1276:                                             ; preds = %1087
  br label %1277

1277:                                             ; preds = %1276, %1083
  %1278 = load i32, ptr %49, align 4, !tbaa !9
  %1279 = icmp uge i32 %1278, 1
  br i1 %1279, label %1280, label %1303

1280:                                             ; preds = %1277
  %1281 = load ptr, ptr %6, align 8, !tbaa !5
  %1282 = load ptr, ptr %9, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1282, i32 0, i32 11
  %1284 = load i32, ptr %1283, align 4, !tbaa !44
  %1285 = load ptr, ptr %8, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1285, i32 0, i32 1
  %1287 = load i32, ptr %1286, align 4, !tbaa !24
  %1288 = load ptr, ptr %10, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1288, i32 0, i32 2
  %1290 = load i32, ptr %1289, align 1, !tbaa !21
  %1291 = zext i32 %1290 to i64
  %1292 = load i32, ptr %48, align 4, !tbaa !9
  %1293 = zext i32 %1292 to i64
  %1294 = mul nsw i64 %1291, %1293
  %1295 = load i32, ptr %49, align 4, !tbaa !9
  %1296 = zext i32 %1295 to i64
  %1297 = mul nsw i64 %1294, %1296
  %1298 = load ptr, ptr %9, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1298, i32 0, i32 2
  %1300 = load i32, ptr %1299, align 4, !tbaa !35
  %1301 = zext i32 %1300 to i64
  %1302 = mul nsw i64 %1297, %1301
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1281, i32 noundef %1284, i32 noundef %1287, i64 noundef %1302)
  br label %1303

1303:                                             ; preds = %1280, %1277
  store i32 1, ptr %11, align 4, !tbaa !9
  br label %1304

1304:                                             ; preds = %1362, %1303
  %1305 = load i32, ptr %11, align 4, !tbaa !9
  %1306 = load i32, ptr %48, align 4, !tbaa !9
  %1307 = icmp ult i32 %1305, %1306
  br i1 %1307, label %1308, label %1365

1308:                                             ; preds = %1304
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %1309

1309:                                             ; preds = %1358, %1308
  %1310 = load i32, ptr %13, align 4, !tbaa !9
  %1311 = load i32, ptr %44, align 4, !tbaa !9
  %1312 = icmp ult i32 %1310, %1311
  br i1 %1312, label %1313, label %1361

1313:                                             ; preds = %1309
  %1314 = load i32, ptr %20, align 4, !tbaa !9
  %1315 = icmp ugt i32 %1314, 0
  br i1 %1315, label %1316, label %1335

1316:                                             ; preds = %1313
  %1317 = load ptr, ptr %6, align 8, !tbaa !5
  %1318 = load i32, ptr %23, align 4, !tbaa !9
  %1319 = load ptr, ptr %9, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1319, i32 0, i32 128
  %1321 = load i8, ptr %1320, align 4, !tbaa !11
  %1322 = load i32, ptr %21, align 4, !tbaa !9
  %1323 = load i32, ptr %13, align 4, !tbaa !9
  %1324 = add i32 %1322, %1323
  %1325 = load i32, ptr %21, align 4, !tbaa !9
  %1326 = load i32, ptr %13, align 4, !tbaa !9
  %1327 = add i32 %1325, %1326
  %1328 = load i32, ptr %11, align 4, !tbaa !9
  %1329 = load i32, ptr %44, align 4, !tbaa !9
  %1330 = mul i32 %1328, %1329
  %1331 = add i32 %1327, %1330
  %1332 = load i32, ptr %21, align 4, !tbaa !9
  %1333 = load i32, ptr %13, align 4, !tbaa !9
  %1334 = add i32 %1332, %1333
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1317, i32 noundef %1318, i8 noundef signext %1321, i32 noundef %1324, i32 noundef %1331, i32 noundef %1334)
  br label %1335

1335:                                             ; preds = %1316, %1313
  %1336 = load i32, ptr %19, align 4, !tbaa !9
  %1337 = icmp ugt i32 %1336, 0
  br i1 %1337, label %1338, label %1357

1338:                                             ; preds = %1335
  %1339 = load ptr, ptr %6, align 8, !tbaa !5
  %1340 = load i32, ptr %23, align 4, !tbaa !9
  %1341 = load ptr, ptr %9, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1341, i32 0, i32 128
  %1343 = load i8, ptr %1342, align 4, !tbaa !11
  %1344 = load i32, ptr %22, align 4, !tbaa !9
  %1345 = load i32, ptr %13, align 4, !tbaa !9
  %1346 = add i32 %1344, %1345
  %1347 = load i32, ptr %22, align 4, !tbaa !9
  %1348 = load i32, ptr %13, align 4, !tbaa !9
  %1349 = add i32 %1347, %1348
  %1350 = load i32, ptr %11, align 4, !tbaa !9
  %1351 = load i32, ptr %44, align 4, !tbaa !9
  %1352 = mul i32 %1350, %1351
  %1353 = add i32 %1349, %1352
  %1354 = load i32, ptr %22, align 4, !tbaa !9
  %1355 = load i32, ptr %13, align 4, !tbaa !9
  %1356 = add i32 %1354, %1355
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1339, i32 noundef %1340, i8 noundef signext %1343, i32 noundef %1346, i32 noundef %1353, i32 noundef %1356)
  br label %1357

1357:                                             ; preds = %1338, %1335
  br label %1358

1358:                                             ; preds = %1357
  %1359 = load i32, ptr %13, align 4, !tbaa !9
  %1360 = add i32 %1359, 1
  store i32 %1360, ptr %13, align 4, !tbaa !9
  br label %1309, !llvm.loop !45

1361:                                             ; preds = %1309
  br label %1362

1362:                                             ; preds = %1361
  %1363 = load i32, ptr %11, align 4, !tbaa !9
  %1364 = add i32 %1363, 1
  store i32 %1364, ptr %11, align 4, !tbaa !9
  br label %1304, !llvm.loop !46

1365:                                             ; preds = %1304
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %1366

1366:                                             ; preds = %1895, %1365
  %1367 = load i32, ptr %13, align 4, !tbaa !9
  %1368 = load i32, ptr %44, align 4, !tbaa !9
  %1369 = icmp ult i32 %1367, %1368
  br i1 %1369, label %1370, label %1898

1370:                                             ; preds = %1366
  %1371 = load i32, ptr %20, align 4, !tbaa !9
  %1372 = icmp ugt i32 %1371, 0
  br i1 %1372, label %1373, label %1649

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

1376:                                             ; preds = %1373
  %1377 = load ptr, ptr %6, align 8, !tbaa !5
  %1378 = load ptr, ptr %10, align 8, !tbaa !5
  %1379 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1378, i32 noundef 3)
  %1380 = icmp eq i32 4, %1379
  br i1 %1380, label %1385, label %1381

1381:                                             ; preds = %1376
  %1382 = load ptr, ptr %10, align 8, !tbaa !5
  %1383 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1382, i32 noundef 3)
  %1384 = icmp eq i32 5, %1383
  br i1 %1384, label %1385, label %1391

1385:                                             ; preds = %1381, %1376
  %1386 = load ptr, ptr %6, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1386, i32 0, i32 6
  %1388 = load i32, ptr %1387, align 4, !tbaa !22
  %1389 = icmp ult i32 %1388, 1101
  br i1 %1389, label %1390, label %1391

1390:                                             ; preds = %1385
  br label %1393

1391:                                             ; preds = %1385, %1381
  %1392 = load i32, ptr %29, align 4, !tbaa !9
  br label %1393

1393:                                             ; preds = %1391, %1390
  %1394 = phi i32 [ 545725200, %1390 ], [ %1392, %1391 ]
  %1395 = load ptr, ptr %8, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1395, i32 0, i32 16
  %1397 = load i32, ptr %1396, align 4, !tbaa !26
  %1398 = load i32, ptr %13, align 4, !tbaa !9
  %1399 = load i32, ptr %33, align 4, !tbaa !9
  %1400 = mul i32 %1398, %1399
  %1401 = load ptr, ptr %9, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1401, i32 0, i32 5
  %1403 = load i32, ptr %1402, align 4, !tbaa !33
  %1404 = mul i32 %1400, %1403
  %1405 = load i8, ptr %27, align 1, !tbaa !13
  %1406 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1377, i32 noundef %1394, i32 noundef %1397, i32 noundef 127, i32 noundef 0, i32 noundef %1404, i8 noundef signext %1405, i32 noundef %1406, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1407 = load ptr, ptr %10, align 8, !tbaa !5
  %1408 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1407, i32 noundef 3)
  %1409 = icmp eq i32 4, %1408
  br i1 %1409, label %1410, label %1417

1410:                                             ; preds = %1393
  %1411 = load ptr, ptr %6, align 8, !tbaa !5
  %1412 = load ptr, ptr %9, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1412, i32 0, i32 128
  %1414 = load i8, ptr %1413, align 4, !tbaa !11
  %1415 = load i32, ptr %35, align 4, !tbaa !9
  %1416 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1411, i8 noundef signext %1414, i32 noundef %1415, i32 noundef %1416)
  br label %1457

1417:                                             ; preds = %1393
  %1418 = load ptr, ptr %10, align 8, !tbaa !5
  %1419 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1418, i32 noundef 3)
  %1420 = icmp eq i32 5, %1419
  br i1 %1420, label %1421, label %1432

1421:                                             ; preds = %1417
  %1422 = load ptr, ptr %6, align 8, !tbaa !5
  %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 !11
  %1426 = load i32, ptr %35, align 4, !tbaa !9
  %1427 = load i32, ptr %35, align 4, !tbaa !9
  %1428 = load i32, ptr %36, align 4, !tbaa !9
  %1429 = load i32, ptr %37, align 4, !tbaa !9
  %1430 = load i32, ptr %40, align 4, !tbaa !9
  %1431 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1422, i8 noundef signext %1425, i32 noundef %1426, i32 noundef %1427, i32 noundef %1428, i32 noundef %1429, i32 noundef %1430, i32 noundef %1431)
  br label %1456

1432:                                             ; preds = %1417
  %1433 = load ptr, ptr %10, align 8, !tbaa !5
  %1434 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1433, i32 noundef 3)
  %1435 = icmp eq i32 3, %1434
  br i1 %1435, label %1436, label %1443

1436:                                             ; preds = %1432
  %1437 = load ptr, ptr %6, align 8, !tbaa !5
  %1438 = load ptr, ptr %9, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1438, i32 0, i32 128
  %1440 = load i8, ptr %1439, align 4, !tbaa !11
  %1441 = load i32, ptr %35, align 4, !tbaa !9
  %1442 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1437, i32 noundef 537208083, i8 noundef signext %1440, i32 noundef %1441, i32 noundef %1442)
  br label %1455

1443:                                             ; preds = %1432
  %1444 = load ptr, ptr %10, align 8, !tbaa !5
  %1445 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1444, i32 noundef 3)
  %1446 = icmp eq i32 2, %1445
  br i1 %1446, label %1447, label %1454

1447:                                             ; preds = %1443
  %1448 = load ptr, ptr %6, align 8, !tbaa !5
  %1449 = load ptr, ptr %9, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1449, i32 0, i32 128
  %1451 = load i8, ptr %1450, align 4, !tbaa !11
  %1452 = load i32, ptr %35, align 4, !tbaa !9
  %1453 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1448, i8 noundef signext %1451, i32 noundef %1452, i32 noundef %1453)
  br label %1454

1454:                                             ; preds = %1447, %1443
  br label %1455

1455:                                             ; preds = %1454, %1436
  br label %1456

1456:                                             ; preds = %1455, %1421
  br label %1457

1457:                                             ; preds = %1456, %1410
  %1458 = load ptr, ptr %6, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1458, i32 0, i32 6
  %1460 = load i32, ptr %1459, align 4, !tbaa !22
  %1461 = icmp uge i32 %1460, 1051
  br i1 %1461, label %1462, label %1478

1462:                                             ; preds = %1457
  %1463 = load i32, ptr %56, align 4, !tbaa !9
  %1464 = icmp ugt i32 %1463, 0
  br i1 %1464, label %1465, label %1478

1465:                                             ; preds = %1462
  %1466 = load ptr, ptr %6, align 8, !tbaa !5
  %1467 = load i32, ptr %25, align 4, !tbaa !9
  %1468 = load ptr, ptr %9, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1468, i32 0, i32 128
  %1470 = load i8, ptr %1469, align 4, !tbaa !11
  %1471 = load i32, ptr %35, align 4, !tbaa !9
  %1472 = load i32, ptr %21, align 4, !tbaa !9
  %1473 = load i32, ptr %13, align 4, !tbaa !9
  %1474 = add i32 %1472, %1473
  %1475 = load i32, ptr %21, align 4, !tbaa !9
  %1476 = load i32, ptr %13, align 4, !tbaa !9
  %1477 = add i32 %1475, %1476
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %1466, i32 noundef %1467, i8 noundef signext %1470, i32 noundef %1471, i32 noundef %1474, i32 noundef %1477, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3)
  br label %1503

1478:                                             ; preds = %1462, %1457
  %1479 = load i32, ptr %56, align 4, !tbaa !9
  %1480 = icmp ugt i32 %1479, 0
  br i1 %1480, label %1481, label %1490

1481:                                             ; preds = %1478
  %1482 = load ptr, ptr %6, align 8, !tbaa !5
  %1483 = load i32, ptr %25, align 4, !tbaa !9
  %1484 = load ptr, ptr %9, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1484, i32 0, i32 128
  %1486 = load i8, ptr %1485, align 4, !tbaa !11
  %1487 = load i32, ptr %35, align 4, !tbaa !9
  %1488 = load i32, ptr %34, align 4, !tbaa !9
  %1489 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1482, i32 noundef %1483, i8 noundef signext %1486, i32 noundef %1487, i32 noundef %1488, i32 noundef %1489)
  br label %1490

1490:                                             ; preds = %1481, %1478
  %1491 = load ptr, ptr %6, align 8, !tbaa !5
  %1492 = load i32, ptr %23, align 4, !tbaa !9
  %1493 = load ptr, ptr %9, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1493, i32 0, i32 128
  %1495 = load i8, ptr %1494, align 4, !tbaa !11
  %1496 = load i32, ptr %35, align 4, !tbaa !9
  %1497 = load i32, ptr %21, align 4, !tbaa !9
  %1498 = load i32, ptr %13, align 4, !tbaa !9
  %1499 = add i32 %1497, %1498
  %1500 = load i32, ptr %21, align 4, !tbaa !9
  %1501 = load i32, ptr %13, align 4, !tbaa !9
  %1502 = add i32 %1500, %1501
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1491, i32 noundef %1492, i8 noundef signext %1495, i32 noundef %1496, i32 noundef %1499, i32 noundef %1502)
  br label %1503

1503:                                             ; preds = %1490, %1465
  br label %1504

1504:                                             ; preds = %1503, %1373
  %1505 = load ptr, ptr %10, align 8, !tbaa !5
  %1506 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1505, i32 noundef 3)
  %1507 = icmp eq i32 4, %1506
  br i1 %1507, label %1508, label %1519

1508:                                             ; preds = %1504
  %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 128
  %1512 = load i8, ptr %1511, align 4, !tbaa !11
  %1513 = load i32, ptr %21, align 4, !tbaa !9
  %1514 = load i32, ptr %13, align 4, !tbaa !9
  %1515 = add i32 %1513, %1514
  %1516 = load i32, ptr %21, align 4, !tbaa !9
  %1517 = load i32, ptr %13, align 4, !tbaa !9
  %1518 = add i32 %1516, %1517
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %1509, i8 noundef signext %1512, i32 noundef %1515, i32 noundef %1518, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0)
  br label %1616

1519:                                             ; preds = %1504
  %1520 = load ptr, ptr %10, align 8, !tbaa !5
  %1521 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1520, i32 noundef 3)
  %1522 = icmp eq i32 5, %1521
  br i1 %1522, label %1523, label %1541

1523:                                             ; preds = %1519
  %1524 = load ptr, ptr %6, align 8, !tbaa !5
  %1525 = load ptr, ptr %9, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1525, i32 0, i32 128
  %1527 = load i8, ptr %1526, align 4, !tbaa !11
  %1528 = load i32, ptr %21, align 4, !tbaa !9
  %1529 = load i32, ptr %13, align 4, !tbaa !9
  %1530 = add i32 %1528, %1529
  %1531 = load i32, ptr %21, align 4, !tbaa !9
  %1532 = load i32, ptr %13, align 4, !tbaa !9
  %1533 = add i32 %1531, %1532
  %1534 = load i32, ptr %36, align 4, !tbaa !9
  %1535 = load i32, ptr %37, align 4, !tbaa !9
  %1536 = load i32, ptr %38, align 4, !tbaa !9
  %1537 = load i32, ptr %39, align 4, !tbaa !9
  %1538 = load i32, ptr %40, align 4, !tbaa !9
  %1539 = load i32, ptr %41, align 4, !tbaa !9
  %1540 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %1524, i8 noundef signext %1527, i32 noundef %1530, i32 noundef %1533, i32 noundef %1534, i32 noundef %1535, i32 noundef %1536, i32 noundef %1537, i32 noundef %1538, i32 noundef %1539, i32 noundef %1540)
  br label %1615

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

1545:                                             ; preds = %1541
  %1546 = load ptr, ptr %6, align 8, !tbaa !5
  %1547 = load ptr, ptr %9, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1547, i32 0, i32 128
  %1549 = load i8, ptr %1548, align 4, !tbaa !11
  %1550 = load i32, ptr %21, align 4, !tbaa !9
  %1551 = load i32, ptr %13, align 4, !tbaa !9
  %1552 = add i32 %1550, %1551
  %1553 = load i32, ptr %21, align 4, !tbaa !9
  %1554 = load i32, ptr %13, align 4, !tbaa !9
  %1555 = add i32 %1553, %1554
  %1556 = load ptr, ptr %6, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1556, i32 0, i32 6
  %1558 = load i32, ptr %1557, align 4, !tbaa !22
  %1559 = icmp ult i32 %1558, 1101
  %1560 = zext i1 %1559 to i64
  %1561 = select i1 %1559, i32 0, i32 1
  %1562 = load ptr, ptr %6, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1562, i32 0, i32 6
  %1564 = load i32, ptr %1563, align 4, !tbaa !22
  %1565 = icmp ult i32 %1564, 1101
  %1566 = zext i1 %1565 to i64
  %1567 = select i1 %1565, i32 0, i32 1
  %1568 = trunc i32 %1567 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %1546, i32 noundef 671954205, i8 noundef signext %1549, i32 noundef %1552, i32 noundef %1555, i32 noundef 0, i32 noundef %1561, i8 noundef zeroext %1568, i32 noundef 0)
  br label %1614

1569:                                             ; preds = %1541
  %1570 = load ptr, ptr %10, align 8, !tbaa !5
  %1571 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1570, i32 noundef 3)
  %1572 = icmp eq i32 2, %1571
  br i1 %1572, label %1573, label %1613

1573:                                             ; preds = %1569
  %1574 = load ptr, ptr %6, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1574, i32 0, i32 6
  %1576 = load i32, ptr %1575, align 4, !tbaa !22
  %1577 = icmp ult i32 %1576, 1103
  br i1 %1577, label %1578, label %1601

1578:                                             ; preds = %1573
  %1579 = load ptr, ptr %6, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1579, i32 0, i32 6
  %1581 = load i32, ptr %1580, align 4, !tbaa !22
  %1582 = icmp ne i32 %1581, 1053
  br i1 %1582, label %1583, label %1601

1583:                                             ; preds = %1578
  %1584 = load ptr, ptr %6, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1584, i32 0, i32 6
  %1586 = load i32, ptr %1585, align 4, !tbaa !22
  %1587 = icmp ne i32 %1586, 1008
  br i1 %1587, label %1588, label %1601

1588:                                             ; preds = %1583
  %1589 = load ptr, ptr %6, align 8, !tbaa !5
  %1590 = load ptr, ptr %9, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1590, i32 0, i32 128
  %1592 = load i8, ptr %1591, align 4, !tbaa !11
  %1593 = load i32, ptr %21, align 4, !tbaa !9
  %1594 = load i32, ptr %13, align 4, !tbaa !9
  %1595 = add i32 %1593, %1594
  %1596 = load i32, ptr %21, align 4, !tbaa !9
  %1597 = load i32, ptr %13, align 4, !tbaa !9
  %1598 = add i32 %1596, %1597
  %1599 = load i32, ptr %35, align 4, !tbaa !9
  %1600 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %1589, i8 noundef signext %1592, i32 noundef %1595, i32 noundef %1598, i32 noundef %1599, i32 noundef %1600, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br label %1612

1601:                                             ; preds = %1583, %1578, %1573
  %1602 = load ptr, ptr %6, align 8, !tbaa !5
  %1603 = load ptr, ptr %9, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1603, i32 0, i32 128
  %1605 = load i8, ptr %1604, align 4, !tbaa !11
  %1606 = load i32, ptr %21, align 4, !tbaa !9
  %1607 = load i32, ptr %13, align 4, !tbaa !9
  %1608 = add i32 %1606, %1607
  %1609 = load i32, ptr %21, align 4, !tbaa !9
  %1610 = load i32, ptr %13, align 4, !tbaa !9
  %1611 = add i32 %1609, %1610
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1602, i32 noundef 537273970, i8 noundef signext %1605, i32 noundef %1608, i32 noundef %1611)
  br label %1612

1612:                                             ; preds = %1601, %1588
  br label %1613

1613:                                             ; preds = %1612, %1569
  br label %1614

1614:                                             ; preds = %1613, %1545
  br label %1615

1615:                                             ; preds = %1614, %1523
  br label %1616

1616:                                             ; preds = %1615, %1508
  %1617 = load ptr, ptr %6, align 8, !tbaa !5
  %1618 = load ptr, ptr %10, align 8, !tbaa !5
  %1619 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1618, i32 noundef 3)
  %1620 = icmp eq i32 4, %1619
  br i1 %1620, label %1625, label %1621

1621:                                             ; preds = %1616
  %1622 = load ptr, ptr %10, align 8, !tbaa !5
  %1623 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1622, i32 noundef 3)
  %1624 = icmp eq i32 5, %1623
  br i1 %1624, label %1625, label %1631

1625:                                             ; preds = %1621, %1616
  %1626 = load ptr, ptr %6, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1626, i32 0, i32 6
  %1628 = load i32, ptr %1627, align 4, !tbaa !22
  %1629 = icmp ult i32 %1628, 1101
  br i1 %1629, label %1630, label %1631

1630:                                             ; preds = %1625
  br label %1633

1631:                                             ; preds = %1625, %1621
  %1632 = load i32, ptr %29, align 4, !tbaa !9
  br label %1633

1633:                                             ; preds = %1631, %1630
  %1634 = phi i32 [ 545725200, %1630 ], [ %1632, %1631 ]
  %1635 = load ptr, ptr %8, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1635, i32 0, i32 16
  %1637 = load i32, ptr %1636, align 4, !tbaa !26
  %1638 = load i32, ptr %13, align 4, !tbaa !9
  %1639 = load i32, ptr %33, align 4, !tbaa !9
  %1640 = mul i32 %1638, %1639
  %1641 = load ptr, ptr %9, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1641, i32 0, i32 5
  %1643 = load i32, ptr %1642, align 4, !tbaa !33
  %1644 = mul i32 %1640, %1643
  %1645 = load i8, ptr %27, align 1, !tbaa !13
  %1646 = load i32, ptr %21, align 4, !tbaa !9
  %1647 = load i32, ptr %13, align 4, !tbaa !9
  %1648 = add i32 %1646, %1647
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1617, i32 noundef %1634, i32 noundef %1637, i32 noundef 127, i32 noundef 0, i32 noundef %1644, i8 noundef signext %1645, i32 noundef %1648, i32 noundef 0, i32 noundef 0, i32 noundef 1)
  br label %1649

1649:                                             ; preds = %1633, %1370
  %1650 = load i32, ptr %19, align 4, !tbaa !9
  %1651 = icmp ugt i32 %1650, 0
  br i1 %1651, label %1652, label %1894

1652:                                             ; preds = %1649
  %1653 = load i32, ptr %58, align 4, !tbaa !9
  %1654 = icmp ugt i32 %1653, 0
  br i1 %1654, label %1655, label %1749

1655:                                             ; preds = %1652
  %1656 = load ptr, ptr %6, align 8, !tbaa !5
  %1657 = load ptr, ptr %10, align 8, !tbaa !5
  %1658 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1657, i32 noundef 3)
  %1659 = icmp eq i32 4, %1658
  br i1 %1659, label %1664, label %1660

1660:                                             ; preds = %1655
  %1661 = load ptr, ptr %10, align 8, !tbaa !5
  %1662 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1661, i32 noundef 3)
  %1663 = icmp eq i32 5, %1662
  br i1 %1663, label %1664, label %1670

1664:                                             ; preds = %1660, %1655
  %1665 = load ptr, ptr %6, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1665, i32 0, i32 6
  %1667 = load i32, ptr %1666, align 4, !tbaa !22
  %1668 = icmp ult i32 %1667, 1101
  br i1 %1668, label %1669, label %1670

1669:                                             ; preds = %1664
  br label %1672

1670:                                             ; preds = %1664, %1660
  %1671 = load i32, ptr %29, align 4, !tbaa !9
  br label %1672

1672:                                             ; preds = %1670, %1669
  %1673 = phi i32 [ 545725200, %1669 ], [ %1671, %1670 ]
  %1674 = load ptr, ptr %8, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1674, i32 0, i32 17
  %1676 = load i32, ptr %1675, align 4, !tbaa !27
  %1677 = load i32, ptr %13, align 4, !tbaa !9
  %1678 = load i32, ptr %33, align 4, !tbaa !9
  %1679 = mul i32 %1677, %1678
  %1680 = load ptr, ptr %9, align 8, !tbaa !5
  %1681 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1680, i32 0, i32 5
  %1682 = load i32, ptr %1681, align 4, !tbaa !33
  %1683 = mul i32 %1679, %1682
  %1684 = load i8, ptr %27, align 1, !tbaa !13
  %1685 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1656, i32 noundef %1673, i32 noundef %1676, i32 noundef 127, i32 noundef 0, i32 noundef %1683, i8 noundef signext %1684, i32 noundef %1685, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1686 = load ptr, ptr %10, align 8, !tbaa !5
  %1687 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1686, i32 noundef 3)
  %1688 = icmp eq i32 4, %1687
  br i1 %1688, label %1689, label %1696

1689:                                             ; preds = %1672
  %1690 = load ptr, ptr %6, align 8, !tbaa !5
  %1691 = load ptr, ptr %9, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1691, i32 0, i32 128
  %1693 = load i8, ptr %1692, align 4, !tbaa !11
  %1694 = load i32, ptr %35, align 4, !tbaa !9
  %1695 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1690, i8 noundef signext %1693, i32 noundef %1694, i32 noundef %1695)
  br label %1736

1696:                                             ; preds = %1672
  %1697 = load ptr, ptr %10, align 8, !tbaa !5
  %1698 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1697, i32 noundef 3)
  %1699 = icmp eq i32 5, %1698
  br i1 %1699, label %1700, label %1711

1700:                                             ; preds = %1696
  %1701 = load ptr, ptr %6, align 8, !tbaa !5
  %1702 = load ptr, ptr %9, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1702, i32 0, i32 128
  %1704 = load i8, ptr %1703, align 4, !tbaa !11
  %1705 = load i32, ptr %35, align 4, !tbaa !9
  %1706 = load i32, ptr %35, align 4, !tbaa !9
  %1707 = load i32, ptr %36, align 4, !tbaa !9
  %1708 = load i32, ptr %37, align 4, !tbaa !9
  %1709 = load i32, ptr %40, align 4, !tbaa !9
  %1710 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1701, i8 noundef signext %1704, i32 noundef %1705, i32 noundef %1706, i32 noundef %1707, i32 noundef %1708, i32 noundef %1709, i32 noundef %1710)
  br label %1735

1711:                                             ; preds = %1696
  %1712 = load ptr, ptr %10, align 8, !tbaa !5
  %1713 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1712, i32 noundef 3)
  %1714 = icmp eq i32 3, %1713
  br i1 %1714, label %1715, label %1722

1715:                                             ; preds = %1711
  %1716 = load ptr, ptr %6, align 8, !tbaa !5
  %1717 = load ptr, ptr %9, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1717, i32 0, i32 128
  %1719 = load i8, ptr %1718, align 4, !tbaa !11
  %1720 = load i32, ptr %35, align 4, !tbaa !9
  %1721 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1716, i32 noundef 537208083, i8 noundef signext %1719, i32 noundef %1720, i32 noundef %1721)
  br label %1734

1722:                                             ; preds = %1711
  %1723 = load ptr, ptr %10, align 8, !tbaa !5
  %1724 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1723, i32 noundef 3)
  %1725 = icmp eq i32 2, %1724
  br i1 %1725, label %1726, label %1733

1726:                                             ; preds = %1722
  %1727 = load ptr, ptr %6, align 8, !tbaa !5
  %1728 = load ptr, ptr %9, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1728, i32 0, i32 128
  %1730 = load i8, ptr %1729, align 4, !tbaa !11
  %1731 = load i32, ptr %35, align 4, !tbaa !9
  %1732 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1727, i8 noundef signext %1730, i32 noundef %1731, i32 noundef %1732)
  br label %1733

1733:                                             ; preds = %1726, %1722
  br label %1734

1734:                                             ; preds = %1733, %1715
  br label %1735

1735:                                             ; preds = %1734, %1700
  br label %1736

1736:                                             ; preds = %1735, %1689
  %1737 = load ptr, ptr %6, align 8, !tbaa !5
  %1738 = load i32, ptr %23, align 4, !tbaa !9
  %1739 = load ptr, ptr %9, align 8, !tbaa !5
  %1740 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1739, i32 0, i32 128
  %1741 = load i8, ptr %1740, align 4, !tbaa !11
  %1742 = load i32, ptr %35, align 4, !tbaa !9
  %1743 = load i32, ptr %22, align 4, !tbaa !9
  %1744 = load i32, ptr %13, align 4, !tbaa !9
  %1745 = add i32 %1743, %1744
  %1746 = load i32, ptr %22, align 4, !tbaa !9
  %1747 = load i32, ptr %13, align 4, !tbaa !9
  %1748 = add i32 %1746, %1747
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1737, i32 noundef %1738, i8 noundef signext %1741, i32 noundef %1742, i32 noundef %1745, i32 noundef %1748)
  br label %1749

1749:                                             ; preds = %1736, %1652
  %1750 = load ptr, ptr %10, align 8, !tbaa !5
  %1751 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1750, i32 noundef 3)
  %1752 = icmp eq i32 4, %1751
  br i1 %1752, label %1753, label %1764

1753:                                             ; preds = %1749
  %1754 = load ptr, ptr %6, align 8, !tbaa !5
  %1755 = load ptr, ptr %9, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1755, i32 0, i32 128
  %1757 = load i8, ptr %1756, align 4, !tbaa !11
  %1758 = load i32, ptr %22, align 4, !tbaa !9
  %1759 = load i32, ptr %13, align 4, !tbaa !9
  %1760 = add i32 %1758, %1759
  %1761 = load i32, ptr %22, align 4, !tbaa !9
  %1762 = load i32, ptr %13, align 4, !tbaa !9
  %1763 = add i32 %1761, %1762
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %1754, i8 noundef signext %1757, i32 noundef %1760, i32 noundef %1763, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0)
  br label %1861

1764:                                             ; preds = %1749
  %1765 = load ptr, ptr %10, align 8, !tbaa !5
  %1766 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1765, i32 noundef 3)
  %1767 = icmp eq i32 5, %1766
  br i1 %1767, label %1768, label %1786

1768:                                             ; preds = %1764
  %1769 = load ptr, ptr %6, align 8, !tbaa !5
  %1770 = load ptr, ptr %9, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1770, i32 0, i32 128
  %1772 = load i8, ptr %1771, align 4, !tbaa !11
  %1773 = load i32, ptr %22, align 4, !tbaa !9
  %1774 = load i32, ptr %13, align 4, !tbaa !9
  %1775 = add i32 %1773, %1774
  %1776 = load i32, ptr %22, align 4, !tbaa !9
  %1777 = load i32, ptr %13, align 4, !tbaa !9
  %1778 = add i32 %1776, %1777
  %1779 = load i32, ptr %36, align 4, !tbaa !9
  %1780 = load i32, ptr %37, align 4, !tbaa !9
  %1781 = load i32, ptr %38, align 4, !tbaa !9
  %1782 = load i32, ptr %39, align 4, !tbaa !9
  %1783 = load i32, ptr %40, align 4, !tbaa !9
  %1784 = load i32, ptr %41, align 4, !tbaa !9
  %1785 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %1769, i8 noundef signext %1772, i32 noundef %1775, i32 noundef %1778, i32 noundef %1779, i32 noundef %1780, i32 noundef %1781, i32 noundef %1782, i32 noundef %1783, i32 noundef %1784, i32 noundef %1785)
  br label %1860

1786:                                             ; preds = %1764
  %1787 = load ptr, ptr %10, align 8, !tbaa !5
  %1788 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1787, i32 noundef 3)
  %1789 = icmp eq i32 3, %1788
  br i1 %1789, label %1790, label %1814

1790:                                             ; preds = %1786
  %1791 = load ptr, ptr %6, align 8, !tbaa !5
  %1792 = load ptr, ptr %9, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1792, i32 0, i32 128
  %1794 = load i8, ptr %1793, align 4, !tbaa !11
  %1795 = load i32, ptr %22, align 4, !tbaa !9
  %1796 = load i32, ptr %13, align 4, !tbaa !9
  %1797 = add i32 %1795, %1796
  %1798 = load i32, ptr %22, align 4, !tbaa !9
  %1799 = load i32, ptr %13, align 4, !tbaa !9
  %1800 = add i32 %1798, %1799
  %1801 = load ptr, ptr %6, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1801, i32 0, i32 6
  %1803 = load i32, ptr %1802, align 4, !tbaa !22
  %1804 = icmp ult i32 %1803, 1101
  %1805 = zext i1 %1804 to i64
  %1806 = select i1 %1804, i32 0, i32 1
  %1807 = load ptr, ptr %6, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1807, i32 0, i32 6
  %1809 = load i32, ptr %1808, align 4, !tbaa !22
  %1810 = icmp ult i32 %1809, 1101
  %1811 = zext i1 %1810 to i64
  %1812 = select i1 %1810, i32 0, i32 1
  %1813 = trunc i32 %1812 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %1791, i32 noundef 671954205, i8 noundef signext %1794, i32 noundef %1797, i32 noundef %1800, i32 noundef 0, i32 noundef %1806, i8 noundef zeroext %1813, i32 noundef 0)
  br label %1859

1814:                                             ; preds = %1786
  %1815 = load ptr, ptr %10, align 8, !tbaa !5
  %1816 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1815, i32 noundef 3)
  %1817 = icmp eq i32 2, %1816
  br i1 %1817, label %1818, label %1858

1818:                                             ; preds = %1814
  %1819 = load ptr, ptr %6, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1819, i32 0, i32 6
  %1821 = load i32, ptr %1820, align 4, !tbaa !22
  %1822 = icmp ult i32 %1821, 1103
  br i1 %1822, label %1823, label %1846

1823:                                             ; preds = %1818
  %1824 = load ptr, ptr %6, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1824, i32 0, i32 6
  %1826 = load i32, ptr %1825, align 4, !tbaa !22
  %1827 = icmp ne i32 %1826, 1053
  br i1 %1827, label %1828, label %1846

1828:                                             ; preds = %1823
  %1829 = load ptr, ptr %6, align 8, !tbaa !5
  %1830 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1829, i32 0, i32 6
  %1831 = load i32, ptr %1830, align 4, !tbaa !22
  %1832 = icmp ne i32 %1831, 1008
  br i1 %1832, label %1833, label %1846

1833:                                             ; preds = %1828
  %1834 = load ptr, ptr %6, align 8, !tbaa !5
  %1835 = load ptr, ptr %9, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1835, i32 0, i32 128
  %1837 = load i8, ptr %1836, align 4, !tbaa !11
  %1838 = load i32, ptr %22, align 4, !tbaa !9
  %1839 = load i32, ptr %13, align 4, !tbaa !9
  %1840 = add i32 %1838, %1839
  %1841 = load i32, ptr %22, align 4, !tbaa !9
  %1842 = load i32, ptr %13, align 4, !tbaa !9
  %1843 = add i32 %1841, %1842
  %1844 = load i32, ptr %35, align 4, !tbaa !9
  %1845 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %1834, i8 noundef signext %1837, i32 noundef %1840, i32 noundef %1843, i32 noundef %1844, i32 noundef %1845, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br label %1857

1846:                                             ; preds = %1828, %1823, %1818
  %1847 = load ptr, ptr %6, align 8, !tbaa !5
  %1848 = load ptr, ptr %9, align 8, !tbaa !5
  %1849 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1848, i32 0, i32 128
  %1850 = load i8, ptr %1849, align 4, !tbaa !11
  %1851 = load i32, ptr %22, align 4, !tbaa !9
  %1852 = load i32, ptr %13, align 4, !tbaa !9
  %1853 = add i32 %1851, %1852
  %1854 = load i32, ptr %22, align 4, !tbaa !9
  %1855 = load i32, ptr %13, align 4, !tbaa !9
  %1856 = add i32 %1854, %1855
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1847, i32 noundef 537273970, i8 noundef signext %1850, i32 noundef %1853, i32 noundef %1856)
  br label %1857

1857:                                             ; preds = %1846, %1833
  br label %1858

1858:                                             ; preds = %1857, %1814
  br label %1859

1859:                                             ; preds = %1858, %1790
  br label %1860

1860:                                             ; preds = %1859, %1768
  br label %1861

1861:                                             ; preds = %1860, %1753
  %1862 = load ptr, ptr %6, align 8, !tbaa !5
  %1863 = load ptr, ptr %10, align 8, !tbaa !5
  %1864 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1863, i32 noundef 3)
  %1865 = icmp eq i32 4, %1864
  br i1 %1865, label %1870, label %1866

1866:                                             ; preds = %1861
  %1867 = load ptr, ptr %10, align 8, !tbaa !5
  %1868 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1867, i32 noundef 3)
  %1869 = icmp eq i32 5, %1868
  br i1 %1869, label %1870, label %1876

1870:                                             ; preds = %1866, %1861
  %1871 = load ptr, ptr %6, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1871, i32 0, i32 6
  %1873 = load i32, ptr %1872, align 4, !tbaa !22
  %1874 = icmp ult i32 %1873, 1101
  br i1 %1874, label %1875, label %1876

1875:                                             ; preds = %1870
  br label %1878

1876:                                             ; preds = %1870, %1866
  %1877 = load i32, ptr %29, align 4, !tbaa !9
  br label %1878

1878:                                             ; preds = %1876, %1875
  %1879 = phi i32 [ 545725200, %1875 ], [ %1877, %1876 ]
  %1880 = load ptr, ptr %8, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1880, i32 0, i32 17
  %1882 = load i32, ptr %1881, align 4, !tbaa !27
  %1883 = load i32, ptr %13, align 4, !tbaa !9
  %1884 = load i32, ptr %33, align 4, !tbaa !9
  %1885 = mul i32 %1883, %1884
  %1886 = load ptr, ptr %9, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1886, i32 0, i32 5
  %1888 = load i32, ptr %1887, align 4, !tbaa !33
  %1889 = mul i32 %1885, %1888
  %1890 = load i8, ptr %27, align 1, !tbaa !13
  %1891 = load i32, ptr %22, align 4, !tbaa !9
  %1892 = load i32, ptr %13, align 4, !tbaa !9
  %1893 = add i32 %1891, %1892
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1862, i32 noundef %1879, i32 noundef %1882, i32 noundef 127, i32 noundef 0, i32 noundef %1889, i8 noundef signext %1890, i32 noundef %1893, i32 noundef 0, i32 noundef 0, i32 noundef 1)
  br label %1894

1894:                                             ; preds = %1878, %1649
  br label %1895

1895:                                             ; preds = %1894
  %1896 = load i32, ptr %13, align 4, !tbaa !9
  %1897 = add i32 %1896, 1
  store i32 %1897, ptr %13, align 4, !tbaa !9
  br label %1366, !llvm.loop !47

1898:                                             ; preds = %1366
  %1899 = load i32, ptr %46, align 4, !tbaa !9
  %1900 = icmp ugt i32 %1899, 1
  br i1 %1900, label %1901, label %1968

1901:                                             ; preds = %1898
  %1902 = load ptr, ptr %6, align 8, !tbaa !5
  %1903 = load ptr, ptr %9, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1903, i32 0, i32 10
  %1905 = load i32, ptr %1904, align 4, !tbaa !41
  %1906 = load ptr, ptr %8, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1906, i32 0, i32 1
  %1908 = load i32, ptr %1907, align 4, !tbaa !24
  %1909 = load i32, ptr %44, align 4, !tbaa !9
  %1910 = zext i32 %1909 to i64
  %1911 = load i32, ptr %33, align 4, !tbaa !9
  %1912 = zext i32 %1911 to i64
  %1913 = mul nsw i64 %1910, %1912
  %1914 = load ptr, ptr %9, align 8, !tbaa !5
  %1915 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1914, i32 0, i32 2
  %1916 = load i32, ptr %1915, align 4, !tbaa !35
  %1917 = zext i32 %1916 to i64
  %1918 = mul nsw i64 %1913, %1917
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1902, i32 noundef %1905, i32 noundef %1908, i64 noundef %1918)
  %1919 = load i32, ptr %20, align 4, !tbaa !9
  %1920 = icmp ugt i32 %1919, 0
  br i1 %1920, label %1921, label %1939

1921:                                             ; preds = %1901
  %1922 = load ptr, ptr %6, align 8, !tbaa !5
  %1923 = load ptr, ptr %9, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1923, i32 0, i32 10
  %1925 = load i32, ptr %1924, align 4, !tbaa !41
  %1926 = load ptr, ptr %8, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1926, i32 0, i32 16
  %1928 = load i32, ptr %1927, align 4, !tbaa !26
  %1929 = load i32, ptr %44, align 4, !tbaa !9
  %1930 = zext i32 %1929 to i64
  %1931 = load i32, ptr %33, align 4, !tbaa !9
  %1932 = zext i32 %1931 to i64
  %1933 = mul nsw i64 %1930, %1932
  %1934 = load ptr, ptr %9, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1934, i32 0, i32 5
  %1936 = load i32, ptr %1935, align 4, !tbaa !33
  %1937 = zext i32 %1936 to i64
  %1938 = mul nsw i64 %1933, %1937
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1922, i32 noundef %1925, i32 noundef %1928, i64 noundef %1938)
  br label %1939

1939:                                             ; preds = %1921, %1901
  %1940 = load i32, ptr %19, align 4, !tbaa !9
  %1941 = icmp ugt i32 %1940, 0
  br i1 %1941, label %1942, label %1960

1942:                                             ; preds = %1939
  %1943 = load ptr, ptr %6, align 8, !tbaa !5
  %1944 = load ptr, ptr %9, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1944, i32 0, i32 10
  %1946 = load i32, ptr %1945, align 4, !tbaa !41
  %1947 = load ptr, ptr %8, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1947, i32 0, i32 17
  %1949 = load i32, ptr %1948, align 4, !tbaa !27
  %1950 = load i32, ptr %44, align 4, !tbaa !9
  %1951 = zext i32 %1950 to i64
  %1952 = load i32, ptr %33, align 4, !tbaa !9
  %1953 = zext i32 %1952 to i64
  %1954 = mul nsw i64 %1951, %1953
  %1955 = load ptr, ptr %9, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1955, i32 0, i32 5
  %1957 = load i32, ptr %1956, align 4, !tbaa !33
  %1958 = zext i32 %1957 to i64
  %1959 = mul nsw i64 %1954, %1958
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1943, i32 noundef %1946, i32 noundef %1949, i64 noundef %1959)
  br label %1960

1960:                                             ; preds = %1942, %1939
  %1961 = load ptr, ptr %6, align 8, !tbaa !5
  %1962 = load ptr, ptr %7, align 8, !tbaa !5
  %1963 = load ptr, ptr %9, align 8, !tbaa !5
  %1964 = load ptr, ptr %8, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1964, i32 0, i32 24
  %1966 = load i32, ptr %1965, align 4, !tbaa !28
  %1967 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_footer_m_loop(ptr noundef %1961, ptr noundef %1962, ptr noundef %1963, i32 noundef %1966, i32 noundef %1967)
  br label %1968

1968:                                             ; preds = %1960, %1898
  br label %1969

1969:                                             ; preds = %1968, %610
  %1970 = load i32, ptr %45, align 4, !tbaa !9
  %1971 = icmp ugt i32 %1970, 0
  br i1 %1971, label %1972, label %3523

1972:                                             ; preds = %1969
  %1973 = load i32, ptr %46, align 4, !tbaa !9
  %1974 = icmp eq i32 %1973, 1
  br i1 %1974, label %1975, label %2035

1975:                                             ; preds = %1972
  %1976 = load ptr, ptr %6, align 8, !tbaa !5
  %1977 = load ptr, ptr %9, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1977, i32 0, i32 10
  %1979 = load i32, ptr %1978, align 4, !tbaa !41
  %1980 = load ptr, ptr %8, align 8, !tbaa !5
  %1981 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1980, i32 0, i32 1
  %1982 = load i32, ptr %1981, align 4, !tbaa !24
  %1983 = load i32, ptr %44, align 4, !tbaa !9
  %1984 = zext i32 %1983 to i64
  %1985 = load i32, ptr %33, align 4, !tbaa !9
  %1986 = zext i32 %1985 to i64
  %1987 = mul nsw i64 %1984, %1986
  %1988 = load ptr, ptr %9, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1988, i32 0, i32 2
  %1990 = load i32, ptr %1989, align 4, !tbaa !35
  %1991 = zext i32 %1990 to i64
  %1992 = mul nsw i64 %1987, %1991
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1976, i32 noundef %1979, i32 noundef %1982, i64 noundef %1992)
  %1993 = load i32, ptr %20, align 4, !tbaa !9
  %1994 = icmp ugt i32 %1993, 0
  br i1 %1994, label %1995, label %2013

1995:                                             ; preds = %1975
  %1996 = load ptr, ptr %6, align 8, !tbaa !5
  %1997 = load ptr, ptr %9, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1997, i32 0, i32 10
  %1999 = load i32, ptr %1998, align 4, !tbaa !41
  %2000 = load ptr, ptr %8, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2000, i32 0, i32 16
  %2002 = load i32, ptr %2001, align 4, !tbaa !26
  %2003 = load i32, ptr %44, align 4, !tbaa !9
  %2004 = zext i32 %2003 to i64
  %2005 = load i32, ptr %33, align 4, !tbaa !9
  %2006 = zext i32 %2005 to i64
  %2007 = mul nsw i64 %2004, %2006
  %2008 = load ptr, ptr %9, align 8, !tbaa !5
  %2009 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2008, i32 0, i32 5
  %2010 = load i32, ptr %2009, align 4, !tbaa !33
  %2011 = zext i32 %2010 to i64
  %2012 = mul nsw i64 %2007, %2011
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %1996, i32 noundef %1999, i32 noundef %2002, i64 noundef %2012)
  br label %2013

2013:                                             ; preds = %1995, %1975
  %2014 = load i32, ptr %19, align 4, !tbaa !9
  %2015 = icmp ugt i32 %2014, 0
  br i1 %2015, label %2016, label %2034

2016:                                             ; preds = %2013
  %2017 = load ptr, ptr %6, align 8, !tbaa !5
  %2018 = load ptr, ptr %9, align 8, !tbaa !5
  %2019 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2018, i32 0, i32 10
  %2020 = load i32, ptr %2019, align 4, !tbaa !41
  %2021 = load ptr, ptr %8, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2021, i32 0, i32 17
  %2023 = load i32, ptr %2022, align 4, !tbaa !27
  %2024 = load i32, ptr %44, align 4, !tbaa !9
  %2025 = zext i32 %2024 to i64
  %2026 = load i32, ptr %33, align 4, !tbaa !9
  %2027 = zext i32 %2026 to i64
  %2028 = mul nsw i64 %2025, %2027
  %2029 = load ptr, ptr %9, align 8, !tbaa !5
  %2030 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2029, i32 0, i32 5
  %2031 = load i32, ptr %2030, align 4, !tbaa !33
  %2032 = zext i32 %2031 to i64
  %2033 = mul nsw i64 %2028, %2032
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2017, i32 noundef %2020, i32 noundef %2023, i64 noundef %2033)
  br label %2034

2034:                                             ; preds = %2016, %2013
  br label %2035

2035:                                             ; preds = %2034, %1972
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2036

2036:                                             ; preds = %2285, %2035
  %2037 = load i32, ptr %11, align 4, !tbaa !9
  %2038 = load i32, ptr %48, align 4, !tbaa !9
  %2039 = icmp ult i32 %2037, %2038
  br i1 %2039, label %2040, label %2288

2040:                                             ; preds = %2036
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %2041

2041:                                             ; preds = %2281, %2040
  %2042 = load i32, ptr %13, align 4, !tbaa !9
  %2043 = load i32, ptr %45, align 4, !tbaa !9
  %2044 = icmp ult i32 %2042, %2043
  br i1 %2044, label %2045, label %2284

2045:                                             ; preds = %2041
  %2046 = load i32, ptr %54, align 4, !tbaa !9
  %2047 = icmp ugt i32 %2046, 0
  br i1 %2047, label %2051, label %2048

2048:                                             ; preds = %2045
  %2049 = load i32, ptr %56, align 4, !tbaa !9
  %2050 = icmp ugt i32 %2049, 0
  br i1 %2050, label %2051, label %2077

2051:                                             ; preds = %2048, %2045
  %2052 = load ptr, ptr %6, align 8, !tbaa !5
  %2053 = load ptr, ptr %9, align 8, !tbaa !5
  %2054 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2053, i32 0, i32 128
  %2055 = load i8, ptr %2054, align 4, !tbaa !11
  %2056 = load i32, ptr %21, align 4, !tbaa !9
  %2057 = load i32, ptr %13, align 4, !tbaa !9
  %2058 = add i32 %2056, %2057
  %2059 = load i32, ptr %11, align 4, !tbaa !9
  %2060 = load i32, ptr %44, align 4, !tbaa !9
  %2061 = mul i32 %2059, %2060
  %2062 = add i32 %2058, %2061
  %2063 = load i32, ptr %21, align 4, !tbaa !9
  %2064 = load i32, ptr %13, align 4, !tbaa !9
  %2065 = add i32 %2063, %2064
  %2066 = load i32, ptr %11, align 4, !tbaa !9
  %2067 = load i32, ptr %44, align 4, !tbaa !9
  %2068 = mul i32 %2066, %2067
  %2069 = add i32 %2065, %2068
  %2070 = load i32, ptr %21, align 4, !tbaa !9
  %2071 = load i32, ptr %13, align 4, !tbaa !9
  %2072 = add i32 %2070, %2071
  %2073 = load i32, ptr %11, align 4, !tbaa !9
  %2074 = load i32, ptr %44, align 4, !tbaa !9
  %2075 = mul i32 %2073, %2074
  %2076 = add i32 %2072, %2075
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2052, i32 noundef 805574231, i8 noundef signext %2055, i32 noundef %2062, i32 noundef %2069, i32 noundef %2076)
  br label %2251

2077:                                             ; preds = %2048
  %2078 = load i32, ptr %55, align 4, !tbaa !9
  %2079 = icmp ugt i32 %2078, 0
  br i1 %2079, label %2083, label %2080

2080:                                             ; preds = %2077
  %2081 = load i32, ptr %57, align 4, !tbaa !9
  %2082 = icmp ugt i32 %2081, 0
  br i1 %2082, label %2083, label %2250

2083:                                             ; preds = %2080, %2077
  %2084 = load ptr, ptr %6, align 8, !tbaa !5
  %2085 = load ptr, ptr %10, align 8, !tbaa !5
  %2086 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2085, i32 noundef 0)
  %2087 = icmp eq i32 4, %2086
  br i1 %2087, label %2092, label %2088

2088:                                             ; preds = %2083
  %2089 = load ptr, ptr %10, align 8, !tbaa !5
  %2090 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2089, i32 noundef 0)
  %2091 = icmp eq i32 5, %2090
  br i1 %2091, label %2092, label %2106

2092:                                             ; preds = %2088, %2083
  %2093 = load ptr, ptr %6, align 8, !tbaa !5
  %2094 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2093, i32 0, i32 6
  %2095 = load i32, ptr %2094, align 4, !tbaa !22
  %2096 = icmp ult i32 %2095, 1101
  br i1 %2096, label %2097, label %2106

2097:                                             ; preds = %2092
  %2098 = load i32, ptr %17, align 4, !tbaa !9
  %2099 = icmp ugt i32 %2098, 0
  br i1 %2099, label %2100, label %2105

2100:                                             ; preds = %2097
  %2101 = load i32, ptr %13, align 4, !tbaa !9
  %2102 = load i32, ptr %45, align 4, !tbaa !9
  %2103 = sub i32 %2102, 1
  %2104 = icmp eq i32 %2101, %2103
  br i1 %2104, label %2106, label %2105

2105:                                             ; preds = %2100, %2097
  br label %2108

2106:                                             ; preds = %2100, %2092, %2088
  %2107 = load i32, ptr %28, align 4, !tbaa !9
  br label %2108

2108:                                             ; preds = %2106, %2105
  %2109 = phi i32 [ 545725200, %2105 ], [ %2107, %2106 ]
  %2110 = load ptr, ptr %8, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2110, i32 0, i32 1
  %2112 = load i32, ptr %2111, align 4, !tbaa !24
  %2113 = load i32, ptr %13, align 4, !tbaa !9
  %2114 = load i32, ptr %33, align 4, !tbaa !9
  %2115 = mul i32 %2113, %2114
  %2116 = load ptr, ptr %9, align 8, !tbaa !5
  %2117 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2116, i32 0, i32 2
  %2118 = load i32, ptr %2117, align 4, !tbaa !35
  %2119 = mul i32 %2115, %2118
  %2120 = load i8, ptr %26, align 1, !tbaa !13
  %2121 = load i32, ptr %21, align 4, !tbaa !9
  %2122 = load i32, ptr %13, align 4, !tbaa !9
  %2123 = add i32 %2121, %2122
  %2124 = load i32, ptr %11, align 4, !tbaa !9
  %2125 = load i32, ptr %44, align 4, !tbaa !9
  %2126 = mul i32 %2124, %2125
  %2127 = add i32 %2123, %2126
  %2128 = load i32, ptr %13, align 4, !tbaa !9
  %2129 = load i32, ptr %45, align 4, !tbaa !9
  %2130 = sub i32 %2129, 1
  %2131 = icmp eq i32 %2128, %2130
  br i1 %2131, label %2132, label %2135

2132:                                             ; preds = %2108
  %2133 = load i32, ptr %17, align 4, !tbaa !9
  %2134 = icmp ugt i32 %2133, 0
  br label %2135

2135:                                             ; preds = %2132, %2108
  %2136 = phi i1 [ false, %2108 ], [ %2134, %2132 ]
  %2137 = zext i1 %2136 to i64
  %2138 = select i1 %2136, i32 1, i32 0
  %2139 = load i32, ptr %13, align 4, !tbaa !9
  %2140 = load i32, ptr %45, align 4, !tbaa !9
  %2141 = sub i32 %2140, 1
  %2142 = icmp eq i32 %2139, %2141
  br i1 %2142, label %2143, label %2148

2143:                                             ; preds = %2135
  %2144 = load i32, ptr %17, align 4, !tbaa !9
  %2145 = icmp ugt i32 %2144, 0
  br i1 %2145, label %2146, label %2148

2146:                                             ; preds = %2143
  %2147 = load i32, ptr %31, align 4, !tbaa !9
  br label %2149

2148:                                             ; preds = %2143, %2135
  br label %2149

2149:                                             ; preds = %2148, %2146
  %2150 = phi i32 [ %2147, %2146 ], [ 0, %2148 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %2084, i32 noundef %2109, i32 noundef %2112, i32 noundef 127, i32 noundef 0, i32 noundef %2119, i8 noundef signext %2120, i32 noundef %2127, i32 noundef %2138, i32 noundef %2150, i32 noundef 0)
  %2151 = load ptr, ptr %10, align 8, !tbaa !5
  %2152 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2151, i32 noundef 0)
  %2153 = icmp eq i32 4, %2152
  br i1 %2153, label %2154, label %2173

2154:                                             ; preds = %2149
  %2155 = load ptr, ptr %6, align 8, !tbaa !5
  %2156 = load ptr, ptr %9, align 8, !tbaa !5
  %2157 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2156, i32 0, i32 128
  %2158 = load i8, ptr %2157, align 4, !tbaa !11
  %2159 = load i32, ptr %21, align 4, !tbaa !9
  %2160 = load i32, ptr %13, align 4, !tbaa !9
  %2161 = add i32 %2159, %2160
  %2162 = load i32, ptr %11, align 4, !tbaa !9
  %2163 = load i32, ptr %44, align 4, !tbaa !9
  %2164 = mul i32 %2162, %2163
  %2165 = add i32 %2161, %2164
  %2166 = load i32, ptr %21, align 4, !tbaa !9
  %2167 = load i32, ptr %13, align 4, !tbaa !9
  %2168 = add i32 %2166, %2167
  %2169 = load i32, ptr %11, align 4, !tbaa !9
  %2170 = load i32, ptr %44, align 4, !tbaa !9
  %2171 = mul i32 %2169, %2170
  %2172 = add i32 %2168, %2171
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %2155, i8 noundef signext %2158, i32 noundef %2165, i32 noundef %2172)
  br label %2249

2173:                                             ; preds = %2149
  %2174 = load ptr, ptr %10, align 8, !tbaa !5
  %2175 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2174, i32 noundef 0)
  %2176 = icmp eq i32 5, %2175
  br i1 %2176, label %2177, label %2200

2177:                                             ; preds = %2173
  %2178 = load ptr, ptr %6, align 8, !tbaa !5
  %2179 = load ptr, ptr %9, align 8, !tbaa !5
  %2180 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2179, i32 0, i32 128
  %2181 = load i8, ptr %2180, align 4, !tbaa !11
  %2182 = load i32, ptr %21, align 4, !tbaa !9
  %2183 = load i32, ptr %13, align 4, !tbaa !9
  %2184 = add i32 %2182, %2183
  %2185 = load i32, ptr %11, align 4, !tbaa !9
  %2186 = load i32, ptr %44, align 4, !tbaa !9
  %2187 = mul i32 %2185, %2186
  %2188 = add i32 %2184, %2187
  %2189 = load i32, ptr %21, align 4, !tbaa !9
  %2190 = load i32, ptr %13, align 4, !tbaa !9
  %2191 = add i32 %2189, %2190
  %2192 = load i32, ptr %11, align 4, !tbaa !9
  %2193 = load i32, ptr %44, align 4, !tbaa !9
  %2194 = mul i32 %2192, %2193
  %2195 = add i32 %2191, %2194
  %2196 = load i32, ptr %36, align 4, !tbaa !9
  %2197 = load i32, ptr %37, align 4, !tbaa !9
  %2198 = load i32, ptr %40, align 4, !tbaa !9
  %2199 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %2178, i8 noundef signext %2181, i32 noundef %2188, i32 noundef %2195, i32 noundef %2196, i32 noundef %2197, i32 noundef %2198, i32 noundef %2199)
  br label %2248

2200:                                             ; preds = %2173
  %2201 = load ptr, ptr %10, align 8, !tbaa !5
  %2202 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2201, i32 noundef 0)
  %2203 = icmp eq i32 3, %2202
  br i1 %2203, label %2204, label %2223

2204:                                             ; preds = %2200
  %2205 = load ptr, ptr %6, align 8, !tbaa !5
  %2206 = load ptr, ptr %9, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2206, i32 0, i32 128
  %2208 = load i8, ptr %2207, align 4, !tbaa !11
  %2209 = load i32, ptr %21, align 4, !tbaa !9
  %2210 = load i32, ptr %13, align 4, !tbaa !9
  %2211 = add i32 %2209, %2210
  %2212 = load i32, ptr %11, align 4, !tbaa !9
  %2213 = load i32, ptr %44, align 4, !tbaa !9
  %2214 = mul i32 %2212, %2213
  %2215 = add i32 %2211, %2214
  %2216 = load i32, ptr %21, align 4, !tbaa !9
  %2217 = load i32, ptr %13, align 4, !tbaa !9
  %2218 = add i32 %2216, %2217
  %2219 = load i32, ptr %11, align 4, !tbaa !9
  %2220 = load i32, ptr %44, align 4, !tbaa !9
  %2221 = mul i32 %2219, %2220
  %2222 = add i32 %2218, %2221
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %2205, i32 noundef 537208083, i8 noundef signext %2208, i32 noundef %2215, i32 noundef %2222)
  br label %2247

2223:                                             ; preds = %2200
  %2224 = load ptr, ptr %10, align 8, !tbaa !5
  %2225 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2224, i32 noundef 0)
  %2226 = icmp eq i32 2, %2225
  br i1 %2226, label %2227, label %2246

2227:                                             ; preds = %2223
  %2228 = load ptr, ptr %6, align 8, !tbaa !5
  %2229 = load ptr, ptr %9, align 8, !tbaa !5
  %2230 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2229, i32 0, i32 128
  %2231 = load i8, ptr %2230, align 4, !tbaa !11
  %2232 = load i32, ptr %21, align 4, !tbaa !9
  %2233 = load i32, ptr %13, align 4, !tbaa !9
  %2234 = add i32 %2232, %2233
  %2235 = load i32, ptr %11, align 4, !tbaa !9
  %2236 = load i32, ptr %44, align 4, !tbaa !9
  %2237 = mul i32 %2235, %2236
  %2238 = add i32 %2234, %2237
  %2239 = load i32, ptr %21, align 4, !tbaa !9
  %2240 = load i32, ptr %13, align 4, !tbaa !9
  %2241 = add i32 %2239, %2240
  %2242 = load i32, ptr %11, align 4, !tbaa !9
  %2243 = load i32, ptr %44, align 4, !tbaa !9
  %2244 = mul i32 %2242, %2243
  %2245 = add i32 %2241, %2244
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %2228, i8 noundef signext %2231, i32 noundef %2238, i32 noundef %2245)
  br label %2246

2246:                                             ; preds = %2227, %2223
  br label %2247

2247:                                             ; preds = %2246, %2204
  br label %2248

2248:                                             ; preds = %2247, %2177
  br label %2249

2249:                                             ; preds = %2248, %2154
  br label %2250

2250:                                             ; preds = %2249, %2080
  br label %2251

2251:                                             ; preds = %2250, %2051
  %2252 = load i32, ptr %19, align 4, !tbaa !9
  %2253 = icmp ugt i32 %2252, 0
  br i1 %2253, label %2254, label %2280

2254:                                             ; preds = %2251
  %2255 = load ptr, ptr %6, align 8, !tbaa !5
  %2256 = load ptr, ptr %9, align 8, !tbaa !5
  %2257 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2256, i32 0, i32 128
  %2258 = load i8, ptr %2257, align 4, !tbaa !11
  %2259 = load i32, ptr %22, align 4, !tbaa !9
  %2260 = load i32, ptr %13, align 4, !tbaa !9
  %2261 = add i32 %2259, %2260
  %2262 = load i32, ptr %11, align 4, !tbaa !9
  %2263 = load i32, ptr %44, align 4, !tbaa !9
  %2264 = mul i32 %2262, %2263
  %2265 = add i32 %2261, %2264
  %2266 = load i32, ptr %22, align 4, !tbaa !9
  %2267 = load i32, ptr %13, align 4, !tbaa !9
  %2268 = add i32 %2266, %2267
  %2269 = load i32, ptr %11, align 4, !tbaa !9
  %2270 = load i32, ptr %44, align 4, !tbaa !9
  %2271 = mul i32 %2269, %2270
  %2272 = add i32 %2268, %2271
  %2273 = load i32, ptr %22, align 4, !tbaa !9
  %2274 = load i32, ptr %13, align 4, !tbaa !9
  %2275 = add i32 %2273, %2274
  %2276 = load i32, ptr %11, align 4, !tbaa !9
  %2277 = load i32, ptr %44, align 4, !tbaa !9
  %2278 = mul i32 %2276, %2277
  %2279 = add i32 %2275, %2278
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2255, i32 noundef 805574231, i8 noundef signext %2258, i32 noundef %2265, i32 noundef %2272, i32 noundef %2279)
  br label %2280

2280:                                             ; preds = %2254, %2251
  br label %2281

2281:                                             ; preds = %2280
  %2282 = load i32, ptr %13, align 4, !tbaa !9
  %2283 = add i32 %2282, 1
  store i32 %2283, ptr %13, align 4, !tbaa !9
  br label %2041, !llvm.loop !48

2284:                                             ; preds = %2041
  br label %2285

2285:                                             ; preds = %2284
  %2286 = load i32, ptr %11, align 4, !tbaa !9
  %2287 = add i32 %2286, 1
  store i32 %2287, ptr %11, align 4, !tbaa !9
  br label %2036, !llvm.loop !49

2288:                                             ; preds = %2036
  %2289 = load i32, ptr %49, align 4, !tbaa !9
  %2290 = icmp uge i32 %2289, 1
  br i1 %2290, label %2291, label %2553

2291:                                             ; preds = %2288
  %2292 = load i32, ptr %49, align 4, !tbaa !9
  %2293 = icmp ugt i32 %2292, 1
  br i1 %2293, label %2294, label %2301

2294:                                             ; preds = %2291
  %2295 = load ptr, ptr %6, align 8, !tbaa !5
  %2296 = load ptr, ptr %7, align 8, !tbaa !5
  %2297 = load ptr, ptr %9, align 8, !tbaa !5
  %2298 = load ptr, ptr %8, align 8, !tbaa !5
  %2299 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2298, i32 0, i32 25
  %2300 = load i32, ptr %2299, align 4, !tbaa !29
  call void @libxsmm_generator_mateltwise_header_n_loop(ptr noundef %2295, ptr noundef %2296, ptr noundef %2297, i32 noundef %2300)
  br label %2301

2301:                                             ; preds = %2294, %2291
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2302

2302:                                             ; preds = %2519, %2301
  %2303 = load i32, ptr %11, align 4, !tbaa !9
  %2304 = load i32, ptr %48, align 4, !tbaa !9
  %2305 = icmp ult i32 %2303, %2304
  br i1 %2305, label %2306, label %2522

2306:                                             ; preds = %2302
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %2307

2307:                                             ; preds = %2515, %2306
  %2308 = load i32, ptr %13, align 4, !tbaa !9
  %2309 = load i32, ptr %45, align 4, !tbaa !9
  %2310 = icmp ult i32 %2308, %2309
  br i1 %2310, label %2311, label %2518

2311:                                             ; preds = %2307
  %2312 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %2312, ptr %12, align 4, !tbaa !9
  %2313 = load ptr, ptr %6, align 8, !tbaa !5
  %2314 = load ptr, ptr %10, align 8, !tbaa !5
  %2315 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2314, i32 noundef 0)
  %2316 = icmp eq i32 4, %2315
  br i1 %2316, label %2321, label %2317

2317:                                             ; preds = %2311
  %2318 = load ptr, ptr %10, align 8, !tbaa !5
  %2319 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2318, i32 noundef 0)
  %2320 = icmp eq i32 5, %2319
  br i1 %2320, label %2321, label %2335

2321:                                             ; preds = %2317, %2311
  %2322 = load ptr, ptr %6, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2322, i32 0, i32 6
  %2324 = load i32, ptr %2323, align 4, !tbaa !22
  %2325 = icmp ult i32 %2324, 1101
  br i1 %2325, label %2326, label %2335

2326:                                             ; preds = %2321
  %2327 = load i32, ptr %17, align 4, !tbaa !9
  %2328 = icmp ugt i32 %2327, 0
  br i1 %2328, label %2329, label %2334

2329:                                             ; preds = %2326
  %2330 = load i32, ptr %13, align 4, !tbaa !9
  %2331 = load i32, ptr %45, align 4, !tbaa !9
  %2332 = sub i32 %2331, 1
  %2333 = icmp eq i32 %2330, %2332
  br i1 %2333, label %2335, label %2334

2334:                                             ; preds = %2329, %2326
  br label %2337

2335:                                             ; preds = %2329, %2321, %2317
  %2336 = load i32, ptr %28, align 4, !tbaa !9
  br label %2337

2337:                                             ; preds = %2335, %2334
  %2338 = phi i32 [ 545725200, %2334 ], [ %2336, %2335 ]
  %2339 = load ptr, ptr %8, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2339, i32 0, i32 1
  %2341 = load i32, ptr %2340, align 4, !tbaa !24
  %2342 = load i32, ptr %13, align 4, !tbaa !9
  %2343 = load i32, ptr %33, align 4, !tbaa !9
  %2344 = mul i32 %2342, %2343
  %2345 = load i32, ptr %12, align 4, !tbaa !9
  %2346 = load ptr, ptr %10, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2346, i32 0, i32 2
  %2348 = load i32, ptr %2347, align 1, !tbaa !21
  %2349 = mul i32 %2345, %2348
  %2350 = add i32 %2344, %2349
  %2351 = load ptr, ptr %9, align 8, !tbaa !5
  %2352 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2351, i32 0, i32 2
  %2353 = load i32, ptr %2352, align 4, !tbaa !35
  %2354 = mul i32 %2350, %2353
  %2355 = load i8, ptr %26, align 1, !tbaa !13
  %2356 = load i32, ptr %35, align 4, !tbaa !9
  %2357 = load i32, ptr %13, align 4, !tbaa !9
  %2358 = load i32, ptr %45, align 4, !tbaa !9
  %2359 = sub i32 %2358, 1
  %2360 = icmp eq i32 %2357, %2359
  br i1 %2360, label %2361, label %2364

2361:                                             ; preds = %2337
  %2362 = load i32, ptr %17, align 4, !tbaa !9
  %2363 = icmp ugt i32 %2362, 0
  br label %2364

2364:                                             ; preds = %2361, %2337
  %2365 = phi i1 [ false, %2337 ], [ %2363, %2361 ]
  %2366 = zext i1 %2365 to i64
  %2367 = select i1 %2365, i32 1, i32 0
  %2368 = load i32, ptr %13, align 4, !tbaa !9
  %2369 = load i32, ptr %45, align 4, !tbaa !9
  %2370 = sub i32 %2369, 1
  %2371 = icmp eq i32 %2368, %2370
  br i1 %2371, label %2372, label %2377

2372:                                             ; preds = %2364
  %2373 = load i32, ptr %17, align 4, !tbaa !9
  %2374 = icmp ugt i32 %2373, 0
  br i1 %2374, label %2375, label %2377

2375:                                             ; preds = %2372
  %2376 = load i32, ptr %31, align 4, !tbaa !9
  br label %2378

2377:                                             ; preds = %2372, %2364
  br label %2378

2378:                                             ; preds = %2377, %2375
  %2379 = phi i32 [ %2376, %2375 ], [ 0, %2377 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %2313, i32 noundef %2338, i32 noundef %2341, i32 noundef 127, i32 noundef 0, i32 noundef %2354, i8 noundef signext %2355, i32 noundef %2356, i32 noundef %2367, i32 noundef %2379, i32 noundef 0)
  %2380 = load ptr, ptr %10, align 8, !tbaa !5
  %2381 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2380, i32 noundef 0)
  %2382 = icmp eq i32 4, %2381
  br i1 %2382, label %2383, label %2390

2383:                                             ; preds = %2378
  %2384 = load ptr, ptr %6, align 8, !tbaa !5
  %2385 = load ptr, ptr %9, align 8, !tbaa !5
  %2386 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2385, i32 0, i32 128
  %2387 = load i8, ptr %2386, align 4, !tbaa !11
  %2388 = load i32, ptr %35, align 4, !tbaa !9
  %2389 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %2384, i8 noundef signext %2387, i32 noundef %2388, i32 noundef %2389)
  br label %2430

2390:                                             ; preds = %2378
  %2391 = load ptr, ptr %10, align 8, !tbaa !5
  %2392 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2391, i32 noundef 0)
  %2393 = icmp eq i32 5, %2392
  br i1 %2393, label %2394, label %2405

2394:                                             ; preds = %2390
  %2395 = load ptr, ptr %6, align 8, !tbaa !5
  %2396 = load ptr, ptr %9, align 8, !tbaa !5
  %2397 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2396, i32 0, i32 128
  %2398 = load i8, ptr %2397, align 4, !tbaa !11
  %2399 = load i32, ptr %35, align 4, !tbaa !9
  %2400 = load i32, ptr %35, align 4, !tbaa !9
  %2401 = load i32, ptr %36, align 4, !tbaa !9
  %2402 = load i32, ptr %37, align 4, !tbaa !9
  %2403 = load i32, ptr %40, align 4, !tbaa !9
  %2404 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %2395, i8 noundef signext %2398, i32 noundef %2399, i32 noundef %2400, i32 noundef %2401, i32 noundef %2402, i32 noundef %2403, i32 noundef %2404)
  br label %2429

2405:                                             ; preds = %2390
  %2406 = load ptr, ptr %10, align 8, !tbaa !5
  %2407 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2406, i32 noundef 0)
  %2408 = icmp eq i32 3, %2407
  br i1 %2408, label %2409, label %2416

2409:                                             ; preds = %2405
  %2410 = load ptr, ptr %6, align 8, !tbaa !5
  %2411 = load ptr, ptr %9, align 8, !tbaa !5
  %2412 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2411, i32 0, i32 128
  %2413 = load i8, ptr %2412, align 4, !tbaa !11
  %2414 = load i32, ptr %35, align 4, !tbaa !9
  %2415 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %2410, i32 noundef 537208083, i8 noundef signext %2413, i32 noundef %2414, i32 noundef %2415)
  br label %2428

2416:                                             ; preds = %2405
  %2417 = load ptr, ptr %10, align 8, !tbaa !5
  %2418 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2417, i32 noundef 0)
  %2419 = icmp eq i32 2, %2418
  br i1 %2419, label %2420, label %2427

2420:                                             ; preds = %2416
  %2421 = load ptr, ptr %6, align 8, !tbaa !5
  %2422 = load ptr, ptr %9, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2422, i32 0, i32 128
  %2424 = load i8, ptr %2423, align 4, !tbaa !11
  %2425 = load i32, ptr %35, align 4, !tbaa !9
  %2426 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %2421, i8 noundef signext %2424, i32 noundef %2425, i32 noundef %2426)
  br label %2427

2427:                                             ; preds = %2420, %2416
  br label %2428

2428:                                             ; preds = %2427, %2409
  br label %2429

2429:                                             ; preds = %2428, %2394
  br label %2430

2430:                                             ; preds = %2429, %2383
  %2431 = load i32, ptr %20, align 4, !tbaa !9
  %2432 = icmp ugt i32 %2431, 0
  br i1 %2432, label %2433, label %2496

2433:                                             ; preds = %2430
  %2434 = load ptr, ptr %6, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2434, i32 0, i32 6
  %2436 = load i32, ptr %2435, align 4, !tbaa !22
  %2437 = icmp uge i32 %2436, 1051
  br i1 %2437, label %2438, label %2462

2438:                                             ; preds = %2433
  %2439 = load i32, ptr %56, align 4, !tbaa !9
  %2440 = icmp ugt i32 %2439, 0
  br i1 %2440, label %2441, label %2462

2441:                                             ; preds = %2438
  %2442 = load ptr, ptr %6, align 8, !tbaa !5
  %2443 = load i32, ptr %25, align 4, !tbaa !9
  %2444 = load ptr, ptr %9, align 8, !tbaa !5
  %2445 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2444, i32 0, i32 128
  %2446 = load i8, ptr %2445, align 4, !tbaa !11
  %2447 = load i32, ptr %35, align 4, !tbaa !9
  %2448 = load i32, ptr %21, align 4, !tbaa !9
  %2449 = load i32, ptr %13, align 4, !tbaa !9
  %2450 = add i32 %2448, %2449
  %2451 = load i32, ptr %11, align 4, !tbaa !9
  %2452 = load i32, ptr %44, align 4, !tbaa !9
  %2453 = mul i32 %2451, %2452
  %2454 = add i32 %2450, %2453
  %2455 = load i32, ptr %21, align 4, !tbaa !9
  %2456 = load i32, ptr %13, align 4, !tbaa !9
  %2457 = add i32 %2455, %2456
  %2458 = load i32, ptr %11, align 4, !tbaa !9
  %2459 = load i32, ptr %44, align 4, !tbaa !9
  %2460 = mul i32 %2458, %2459
  %2461 = add i32 %2457, %2460
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %2442, i32 noundef %2443, i8 noundef signext %2446, i32 noundef %2447, i32 noundef %2454, i32 noundef %2461, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3)
  br label %2495

2462:                                             ; preds = %2438, %2433
  %2463 = load i32, ptr %56, align 4, !tbaa !9
  %2464 = icmp ugt i32 %2463, 0
  br i1 %2464, label %2465, label %2474

2465:                                             ; preds = %2462
  %2466 = load ptr, ptr %6, align 8, !tbaa !5
  %2467 = load i32, ptr %25, align 4, !tbaa !9
  %2468 = load ptr, ptr %9, align 8, !tbaa !5
  %2469 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2468, i32 0, i32 128
  %2470 = load i8, ptr %2469, align 4, !tbaa !11
  %2471 = load i32, ptr %35, align 4, !tbaa !9
  %2472 = load i32, ptr %34, align 4, !tbaa !9
  %2473 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2466, i32 noundef %2467, i8 noundef signext %2470, i32 noundef %2471, i32 noundef %2472, i32 noundef %2473)
  br label %2474

2474:                                             ; preds = %2465, %2462
  %2475 = load ptr, ptr %6, align 8, !tbaa !5
  %2476 = load i32, ptr %23, align 4, !tbaa !9
  %2477 = load ptr, ptr %9, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2477, i32 0, i32 128
  %2479 = load i8, ptr %2478, align 4, !tbaa !11
  %2480 = load i32, ptr %35, align 4, !tbaa !9
  %2481 = load i32, ptr %21, align 4, !tbaa !9
  %2482 = load i32, ptr %13, align 4, !tbaa !9
  %2483 = add i32 %2481, %2482
  %2484 = load i32, ptr %11, align 4, !tbaa !9
  %2485 = load i32, ptr %44, align 4, !tbaa !9
  %2486 = mul i32 %2484, %2485
  %2487 = add i32 %2483, %2486
  %2488 = load i32, ptr %21, align 4, !tbaa !9
  %2489 = load i32, ptr %13, align 4, !tbaa !9
  %2490 = add i32 %2488, %2489
  %2491 = load i32, ptr %11, align 4, !tbaa !9
  %2492 = load i32, ptr %44, align 4, !tbaa !9
  %2493 = mul i32 %2491, %2492
  %2494 = add i32 %2490, %2493
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2475, i32 noundef %2476, i8 noundef signext %2479, i32 noundef %2480, i32 noundef %2487, i32 noundef %2494)
  br label %2495

2495:                                             ; preds = %2474, %2441
  br label %2496

2496:                                             ; preds = %2495, %2430
  %2497 = load i32, ptr %19, align 4, !tbaa !9
  %2498 = icmp ugt i32 %2497, 0
  br i1 %2498, label %2499, label %2514

2499:                                             ; preds = %2496
  %2500 = load ptr, ptr %6, align 8, !tbaa !5
  %2501 = load i32, ptr %24, align 4, !tbaa !9
  %2502 = load ptr, ptr %9, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2502, i32 0, i32 128
  %2504 = load i8, ptr %2503, align 4, !tbaa !11
  %2505 = load i32, ptr %35, align 4, !tbaa !9
  %2506 = load i32, ptr %35, align 4, !tbaa !9
  %2507 = load i32, ptr %22, align 4, !tbaa !9
  %2508 = load i32, ptr %13, align 4, !tbaa !9
  %2509 = add i32 %2507, %2508
  %2510 = load i32, ptr %11, align 4, !tbaa !9
  %2511 = load i32, ptr %44, align 4, !tbaa !9
  %2512 = mul i32 %2510, %2511
  %2513 = add i32 %2509, %2512
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2500, i32 noundef %2501, i8 noundef signext %2504, i32 noundef %2505, i32 noundef %2506, i32 noundef %2513)
  br label %2514

2514:                                             ; preds = %2499, %2496
  br label %2515

2515:                                             ; preds = %2514
  %2516 = load i32, ptr %13, align 4, !tbaa !9
  %2517 = add i32 %2516, 1
  store i32 %2517, ptr %13, align 4, !tbaa !9
  br label %2307, !llvm.loop !50

2518:                                             ; preds = %2307
  br label %2519

2519:                                             ; preds = %2518
  %2520 = load i32, ptr %11, align 4, !tbaa !9
  %2521 = add i32 %2520, 1
  store i32 %2521, ptr %11, align 4, !tbaa !9
  br label %2302, !llvm.loop !51

2522:                                             ; preds = %2302
  %2523 = load ptr, ptr %6, align 8, !tbaa !5
  %2524 = load ptr, ptr %9, align 8, !tbaa !5
  %2525 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2524, i32 0, i32 10
  %2526 = load i32, ptr %2525, align 4, !tbaa !41
  %2527 = load ptr, ptr %8, align 8, !tbaa !5
  %2528 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2527, i32 0, i32 1
  %2529 = load i32, ptr %2528, align 4, !tbaa !24
  %2530 = load ptr, ptr %10, align 8, !tbaa !5
  %2531 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2530, i32 0, i32 2
  %2532 = load i32, ptr %2531, align 1, !tbaa !21
  %2533 = zext i32 %2532 to i64
  %2534 = load i32, ptr %48, align 4, !tbaa !9
  %2535 = zext i32 %2534 to i64
  %2536 = mul nsw i64 %2533, %2535
  %2537 = load ptr, ptr %9, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2537, i32 0, i32 2
  %2539 = load i32, ptr %2538, align 4, !tbaa !35
  %2540 = zext i32 %2539 to i64
  %2541 = mul nsw i64 %2536, %2540
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2523, i32 noundef %2526, i32 noundef %2529, i64 noundef %2541)
  %2542 = load i32, ptr %49, align 4, !tbaa !9
  %2543 = icmp ugt i32 %2542, 1
  br i1 %2543, label %2544, label %2552

2544:                                             ; preds = %2522
  %2545 = load ptr, ptr %6, align 8, !tbaa !5
  %2546 = load ptr, ptr %7, align 8, !tbaa !5
  %2547 = load ptr, ptr %9, align 8, !tbaa !5
  %2548 = load ptr, ptr %8, align 8, !tbaa !5
  %2549 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2548, i32 0, i32 25
  %2550 = load i32, ptr %2549, align 4, !tbaa !29
  %2551 = load i32, ptr %49, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_footer_n_loop(ptr noundef %2545, ptr noundef %2546, ptr noundef %2547, i32 noundef %2550, i32 noundef %2551)
  br label %2552

2552:                                             ; preds = %2544, %2522
  br label %2553

2553:                                             ; preds = %2552, %2288
  %2554 = load i32, ptr %51, align 4, !tbaa !9
  %2555 = icmp ugt i32 %2554, 0
  br i1 %2555, label %2556, label %2778

2556:                                             ; preds = %2553
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2557

2557:                                             ; preds = %2774, %2556
  %2558 = load i32, ptr %11, align 4, !tbaa !9
  %2559 = load i32, ptr %51, align 4, !tbaa !9
  %2560 = icmp ult i32 %2558, %2559
  br i1 %2560, label %2561, label %2777

2561:                                             ; preds = %2557
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %2562

2562:                                             ; preds = %2770, %2561
  %2563 = load i32, ptr %13, align 4, !tbaa !9
  %2564 = load i32, ptr %45, align 4, !tbaa !9
  %2565 = icmp ult i32 %2563, %2564
  br i1 %2565, label %2566, label %2773

2566:                                             ; preds = %2562
  %2567 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %2567, ptr %12, align 4, !tbaa !9
  %2568 = load ptr, ptr %6, align 8, !tbaa !5
  %2569 = load ptr, ptr %10, align 8, !tbaa !5
  %2570 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2569, i32 noundef 0)
  %2571 = icmp eq i32 4, %2570
  br i1 %2571, label %2576, label %2572

2572:                                             ; preds = %2566
  %2573 = load ptr, ptr %10, align 8, !tbaa !5
  %2574 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2573, i32 noundef 0)
  %2575 = icmp eq i32 5, %2574
  br i1 %2575, label %2576, label %2590

2576:                                             ; preds = %2572, %2566
  %2577 = load ptr, ptr %6, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2577, i32 0, i32 6
  %2579 = load i32, ptr %2578, align 4, !tbaa !22
  %2580 = icmp ult i32 %2579, 1101
  br i1 %2580, label %2581, label %2590

2581:                                             ; preds = %2576
  %2582 = load i32, ptr %17, align 4, !tbaa !9
  %2583 = icmp ugt i32 %2582, 0
  br i1 %2583, label %2584, label %2589

2584:                                             ; preds = %2581
  %2585 = load i32, ptr %13, align 4, !tbaa !9
  %2586 = load i32, ptr %45, align 4, !tbaa !9
  %2587 = sub i32 %2586, 1
  %2588 = icmp eq i32 %2585, %2587
  br i1 %2588, label %2590, label %2589

2589:                                             ; preds = %2584, %2581
  br label %2592

2590:                                             ; preds = %2584, %2576, %2572
  %2591 = load i32, ptr %28, align 4, !tbaa !9
  br label %2592

2592:                                             ; preds = %2590, %2589
  %2593 = phi i32 [ 545725200, %2589 ], [ %2591, %2590 ]
  %2594 = load ptr, ptr %8, align 8, !tbaa !5
  %2595 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2594, i32 0, i32 1
  %2596 = load i32, ptr %2595, align 4, !tbaa !24
  %2597 = load i32, ptr %13, align 4, !tbaa !9
  %2598 = load i32, ptr %33, align 4, !tbaa !9
  %2599 = mul i32 %2597, %2598
  %2600 = load i32, ptr %12, align 4, !tbaa !9
  %2601 = load ptr, ptr %10, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2601, i32 0, i32 2
  %2603 = load i32, ptr %2602, align 1, !tbaa !21
  %2604 = mul i32 %2600, %2603
  %2605 = add i32 %2599, %2604
  %2606 = load ptr, ptr %9, align 8, !tbaa !5
  %2607 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2606, i32 0, i32 2
  %2608 = load i32, ptr %2607, align 4, !tbaa !35
  %2609 = mul i32 %2605, %2608
  %2610 = load i8, ptr %26, align 1, !tbaa !13
  %2611 = load i32, ptr %35, align 4, !tbaa !9
  %2612 = load i32, ptr %13, align 4, !tbaa !9
  %2613 = load i32, ptr %45, align 4, !tbaa !9
  %2614 = sub i32 %2613, 1
  %2615 = icmp eq i32 %2612, %2614
  br i1 %2615, label %2616, label %2619

2616:                                             ; preds = %2592
  %2617 = load i32, ptr %17, align 4, !tbaa !9
  %2618 = icmp ugt i32 %2617, 0
  br label %2619

2619:                                             ; preds = %2616, %2592
  %2620 = phi i1 [ false, %2592 ], [ %2618, %2616 ]
  %2621 = zext i1 %2620 to i64
  %2622 = select i1 %2620, i32 1, i32 0
  %2623 = load i32, ptr %13, align 4, !tbaa !9
  %2624 = load i32, ptr %45, align 4, !tbaa !9
  %2625 = sub i32 %2624, 1
  %2626 = icmp eq i32 %2623, %2625
  br i1 %2626, label %2627, label %2632

2627:                                             ; preds = %2619
  %2628 = load i32, ptr %17, align 4, !tbaa !9
  %2629 = icmp ugt i32 %2628, 0
  br i1 %2629, label %2630, label %2632

2630:                                             ; preds = %2627
  %2631 = load i32, ptr %31, align 4, !tbaa !9
  br label %2633

2632:                                             ; preds = %2627, %2619
  br label %2633

2633:                                             ; preds = %2632, %2630
  %2634 = phi i32 [ %2631, %2630 ], [ 0, %2632 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %2568, i32 noundef %2593, i32 noundef %2596, i32 noundef 127, i32 noundef 0, i32 noundef %2609, i8 noundef signext %2610, i32 noundef %2611, i32 noundef %2622, i32 noundef %2634, i32 noundef 0)
  %2635 = load ptr, ptr %10, align 8, !tbaa !5
  %2636 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2635, i32 noundef 0)
  %2637 = icmp eq i32 4, %2636
  br i1 %2637, label %2638, label %2645

2638:                                             ; preds = %2633
  %2639 = load ptr, ptr %6, align 8, !tbaa !5
  %2640 = load ptr, ptr %9, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2640, i32 0, i32 128
  %2642 = load i8, ptr %2641, align 4, !tbaa !11
  %2643 = load i32, ptr %35, align 4, !tbaa !9
  %2644 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %2639, i8 noundef signext %2642, i32 noundef %2643, i32 noundef %2644)
  br label %2685

2645:                                             ; preds = %2633
  %2646 = load ptr, ptr %10, align 8, !tbaa !5
  %2647 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2646, i32 noundef 0)
  %2648 = icmp eq i32 5, %2647
  br i1 %2648, label %2649, label %2660

2649:                                             ; preds = %2645
  %2650 = load ptr, ptr %6, align 8, !tbaa !5
  %2651 = load ptr, ptr %9, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2651, i32 0, i32 128
  %2653 = load i8, ptr %2652, align 4, !tbaa !11
  %2654 = load i32, ptr %35, align 4, !tbaa !9
  %2655 = load i32, ptr %35, align 4, !tbaa !9
  %2656 = load i32, ptr %36, align 4, !tbaa !9
  %2657 = load i32, ptr %37, align 4, !tbaa !9
  %2658 = load i32, ptr %40, align 4, !tbaa !9
  %2659 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %2650, i8 noundef signext %2653, i32 noundef %2654, i32 noundef %2655, i32 noundef %2656, i32 noundef %2657, i32 noundef %2658, i32 noundef %2659)
  br label %2684

2660:                                             ; preds = %2645
  %2661 = load ptr, ptr %10, align 8, !tbaa !5
  %2662 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2661, i32 noundef 0)
  %2663 = icmp eq i32 3, %2662
  br i1 %2663, label %2664, label %2671

2664:                                             ; preds = %2660
  %2665 = load ptr, ptr %6, align 8, !tbaa !5
  %2666 = load ptr, ptr %9, align 8, !tbaa !5
  %2667 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2666, i32 0, i32 128
  %2668 = load i8, ptr %2667, align 4, !tbaa !11
  %2669 = load i32, ptr %35, align 4, !tbaa !9
  %2670 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %2665, i32 noundef 537208083, i8 noundef signext %2668, i32 noundef %2669, i32 noundef %2670)
  br label %2683

2671:                                             ; preds = %2660
  %2672 = load ptr, ptr %10, align 8, !tbaa !5
  %2673 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2672, i32 noundef 0)
  %2674 = icmp eq i32 2, %2673
  br i1 %2674, label %2675, label %2682

2675:                                             ; preds = %2671
  %2676 = load ptr, ptr %6, align 8, !tbaa !5
  %2677 = load ptr, ptr %9, align 8, !tbaa !5
  %2678 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2677, i32 0, i32 128
  %2679 = load i8, ptr %2678, align 4, !tbaa !11
  %2680 = load i32, ptr %35, align 4, !tbaa !9
  %2681 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %2676, i8 noundef signext %2679, i32 noundef %2680, i32 noundef %2681)
  br label %2682

2682:                                             ; preds = %2675, %2671
  br label %2683

2683:                                             ; preds = %2682, %2664
  br label %2684

2684:                                             ; preds = %2683, %2649
  br label %2685

2685:                                             ; preds = %2684, %2638
  %2686 = load i32, ptr %20, align 4, !tbaa !9
  %2687 = icmp ugt i32 %2686, 0
  br i1 %2687, label %2688, label %2751

2688:                                             ; preds = %2685
  %2689 = load ptr, ptr %6, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2689, i32 0, i32 6
  %2691 = load i32, ptr %2690, align 4, !tbaa !22
  %2692 = icmp uge i32 %2691, 1051
  br i1 %2692, label %2693, label %2717

2693:                                             ; preds = %2688
  %2694 = load i32, ptr %56, align 4, !tbaa !9
  %2695 = icmp ugt i32 %2694, 0
  br i1 %2695, label %2696, label %2717

2696:                                             ; preds = %2693
  %2697 = load ptr, ptr %6, align 8, !tbaa !5
  %2698 = load i32, ptr %25, align 4, !tbaa !9
  %2699 = load ptr, ptr %9, align 8, !tbaa !5
  %2700 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2699, i32 0, i32 128
  %2701 = load i8, ptr %2700, align 4, !tbaa !11
  %2702 = load i32, ptr %35, align 4, !tbaa !9
  %2703 = load i32, ptr %21, align 4, !tbaa !9
  %2704 = load i32, ptr %13, align 4, !tbaa !9
  %2705 = add i32 %2703, %2704
  %2706 = load i32, ptr %11, align 4, !tbaa !9
  %2707 = load i32, ptr %44, align 4, !tbaa !9
  %2708 = mul i32 %2706, %2707
  %2709 = add i32 %2705, %2708
  %2710 = load i32, ptr %21, align 4, !tbaa !9
  %2711 = load i32, ptr %13, align 4, !tbaa !9
  %2712 = add i32 %2710, %2711
  %2713 = load i32, ptr %11, align 4, !tbaa !9
  %2714 = load i32, ptr %44, align 4, !tbaa !9
  %2715 = mul i32 %2713, %2714
  %2716 = add i32 %2712, %2715
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %2697, i32 noundef %2698, i8 noundef signext %2701, i32 noundef %2702, i32 noundef %2709, i32 noundef %2716, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3)
  br label %2750

2717:                                             ; preds = %2693, %2688
  %2718 = load i32, ptr %56, align 4, !tbaa !9
  %2719 = icmp ugt i32 %2718, 0
  br i1 %2719, label %2720, label %2729

2720:                                             ; preds = %2717
  %2721 = load ptr, ptr %6, align 8, !tbaa !5
  %2722 = load i32, ptr %25, align 4, !tbaa !9
  %2723 = load ptr, ptr %9, align 8, !tbaa !5
  %2724 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2723, i32 0, i32 128
  %2725 = load i8, ptr %2724, align 4, !tbaa !11
  %2726 = load i32, ptr %35, align 4, !tbaa !9
  %2727 = load i32, ptr %34, align 4, !tbaa !9
  %2728 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2721, i32 noundef %2722, i8 noundef signext %2725, i32 noundef %2726, i32 noundef %2727, i32 noundef %2728)
  br label %2729

2729:                                             ; preds = %2720, %2717
  %2730 = load ptr, ptr %6, align 8, !tbaa !5
  %2731 = load i32, ptr %23, align 4, !tbaa !9
  %2732 = load ptr, ptr %9, align 8, !tbaa !5
  %2733 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2732, i32 0, i32 128
  %2734 = load i8, ptr %2733, align 4, !tbaa !11
  %2735 = load i32, ptr %35, align 4, !tbaa !9
  %2736 = load i32, ptr %21, align 4, !tbaa !9
  %2737 = load i32, ptr %13, align 4, !tbaa !9
  %2738 = add i32 %2736, %2737
  %2739 = load i32, ptr %11, align 4, !tbaa !9
  %2740 = load i32, ptr %44, align 4, !tbaa !9
  %2741 = mul i32 %2739, %2740
  %2742 = add i32 %2738, %2741
  %2743 = load i32, ptr %21, align 4, !tbaa !9
  %2744 = load i32, ptr %13, align 4, !tbaa !9
  %2745 = add i32 %2743, %2744
  %2746 = load i32, ptr %11, align 4, !tbaa !9
  %2747 = load i32, ptr %44, align 4, !tbaa !9
  %2748 = mul i32 %2746, %2747
  %2749 = add i32 %2745, %2748
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2730, i32 noundef %2731, i8 noundef signext %2734, i32 noundef %2735, i32 noundef %2742, i32 noundef %2749)
  br label %2750

2750:                                             ; preds = %2729, %2696
  br label %2751

2751:                                             ; preds = %2750, %2685
  %2752 = load i32, ptr %19, align 4, !tbaa !9
  %2753 = icmp ugt i32 %2752, 0
  br i1 %2753, label %2754, label %2769

2754:                                             ; preds = %2751
  %2755 = load ptr, ptr %6, align 8, !tbaa !5
  %2756 = load i32, ptr %24, align 4, !tbaa !9
  %2757 = load ptr, ptr %9, align 8, !tbaa !5
  %2758 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2757, i32 0, i32 128
  %2759 = load i8, ptr %2758, align 4, !tbaa !11
  %2760 = load i32, ptr %35, align 4, !tbaa !9
  %2761 = load i32, ptr %35, align 4, !tbaa !9
  %2762 = load i32, ptr %22, align 4, !tbaa !9
  %2763 = load i32, ptr %13, align 4, !tbaa !9
  %2764 = add i32 %2762, %2763
  %2765 = load i32, ptr %11, align 4, !tbaa !9
  %2766 = load i32, ptr %44, align 4, !tbaa !9
  %2767 = mul i32 %2765, %2766
  %2768 = add i32 %2764, %2767
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2755, i32 noundef %2756, i8 noundef signext %2759, i32 noundef %2760, i32 noundef %2761, i32 noundef %2768)
  br label %2769

2769:                                             ; preds = %2754, %2751
  br label %2770

2770:                                             ; preds = %2769
  %2771 = load i32, ptr %13, align 4, !tbaa !9
  %2772 = add i32 %2771, 1
  store i32 %2772, ptr %13, align 4, !tbaa !9
  br label %2562, !llvm.loop !52

2773:                                             ; preds = %2562
  br label %2774

2774:                                             ; preds = %2773
  %2775 = load i32, ptr %11, align 4, !tbaa !9
  %2776 = add i32 %2775, 1
  store i32 %2776, ptr %11, align 4, !tbaa !9
  br label %2557, !llvm.loop !53

2777:                                             ; preds = %2557
  br label %2778

2778:                                             ; preds = %2777, %2553
  %2779 = load i32, ptr %49, align 4, !tbaa !9
  %2780 = icmp uge i32 %2779, 1
  br i1 %2780, label %2781, label %2804

2781:                                             ; preds = %2778
  %2782 = load ptr, ptr %6, align 8, !tbaa !5
  %2783 = load ptr, ptr %9, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2783, i32 0, i32 11
  %2785 = load i32, ptr %2784, align 4, !tbaa !44
  %2786 = load ptr, ptr %8, align 8, !tbaa !5
  %2787 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2786, i32 0, i32 1
  %2788 = load i32, ptr %2787, align 4, !tbaa !24
  %2789 = load ptr, ptr %10, align 8, !tbaa !5
  %2790 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2789, i32 0, i32 2
  %2791 = load i32, ptr %2790, align 1, !tbaa !21
  %2792 = zext i32 %2791 to i64
  %2793 = load i32, ptr %48, align 4, !tbaa !9
  %2794 = zext i32 %2793 to i64
  %2795 = mul nsw i64 %2792, %2794
  %2796 = load i32, ptr %49, align 4, !tbaa !9
  %2797 = zext i32 %2796 to i64
  %2798 = mul nsw i64 %2795, %2797
  %2799 = load ptr, ptr %9, align 8, !tbaa !5
  %2800 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2799, i32 0, i32 2
  %2801 = load i32, ptr %2800, align 4, !tbaa !35
  %2802 = zext i32 %2801 to i64
  %2803 = mul nsw i64 %2798, %2802
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %2782, i32 noundef %2785, i32 noundef %2788, i64 noundef %2803)
  br label %2804

2804:                                             ; preds = %2781, %2778
  store i32 1, ptr %11, align 4, !tbaa !9
  br label %2805

2805:                                             ; preds = %2863, %2804
  %2806 = load i32, ptr %11, align 4, !tbaa !9
  %2807 = load i32, ptr %48, align 4, !tbaa !9
  %2808 = icmp ult i32 %2806, %2807
  br i1 %2808, label %2809, label %2866

2809:                                             ; preds = %2805
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %2810

2810:                                             ; preds = %2859, %2809
  %2811 = load i32, ptr %13, align 4, !tbaa !9
  %2812 = load i32, ptr %45, align 4, !tbaa !9
  %2813 = icmp ult i32 %2811, %2812
  br i1 %2813, label %2814, label %2862

2814:                                             ; preds = %2810
  %2815 = load i32, ptr %20, align 4, !tbaa !9
  %2816 = icmp ugt i32 %2815, 0
  br i1 %2816, label %2817, label %2836

2817:                                             ; preds = %2814
  %2818 = load ptr, ptr %6, align 8, !tbaa !5
  %2819 = load i32, ptr %23, align 4, !tbaa !9
  %2820 = load ptr, ptr %9, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2820, i32 0, i32 128
  %2822 = load i8, ptr %2821, align 4, !tbaa !11
  %2823 = load i32, ptr %21, align 4, !tbaa !9
  %2824 = load i32, ptr %13, align 4, !tbaa !9
  %2825 = add i32 %2823, %2824
  %2826 = load i32, ptr %21, align 4, !tbaa !9
  %2827 = load i32, ptr %13, align 4, !tbaa !9
  %2828 = add i32 %2826, %2827
  %2829 = load i32, ptr %11, align 4, !tbaa !9
  %2830 = load i32, ptr %44, align 4, !tbaa !9
  %2831 = mul i32 %2829, %2830
  %2832 = add i32 %2828, %2831
  %2833 = load i32, ptr %21, align 4, !tbaa !9
  %2834 = load i32, ptr %13, align 4, !tbaa !9
  %2835 = add i32 %2833, %2834
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2818, i32 noundef %2819, i8 noundef signext %2822, i32 noundef %2825, i32 noundef %2832, i32 noundef %2835)
  br label %2836

2836:                                             ; preds = %2817, %2814
  %2837 = load i32, ptr %19, align 4, !tbaa !9
  %2838 = icmp ugt i32 %2837, 0
  br i1 %2838, label %2839, label %2858

2839:                                             ; preds = %2836
  %2840 = load ptr, ptr %6, align 8, !tbaa !5
  %2841 = load i32, ptr %23, align 4, !tbaa !9
  %2842 = load ptr, ptr %9, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2842, i32 0, i32 128
  %2844 = load i8, ptr %2843, align 4, !tbaa !11
  %2845 = load i32, ptr %22, align 4, !tbaa !9
  %2846 = load i32, ptr %13, align 4, !tbaa !9
  %2847 = add i32 %2845, %2846
  %2848 = load i32, ptr %22, align 4, !tbaa !9
  %2849 = load i32, ptr %13, align 4, !tbaa !9
  %2850 = add i32 %2848, %2849
  %2851 = load i32, ptr %11, align 4, !tbaa !9
  %2852 = load i32, ptr %44, align 4, !tbaa !9
  %2853 = mul i32 %2851, %2852
  %2854 = add i32 %2850, %2853
  %2855 = load i32, ptr %22, align 4, !tbaa !9
  %2856 = load i32, ptr %13, align 4, !tbaa !9
  %2857 = add i32 %2855, %2856
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %2840, i32 noundef %2841, i8 noundef signext %2844, i32 noundef %2847, i32 noundef %2854, i32 noundef %2857)
  br label %2858

2858:                                             ; preds = %2839, %2836
  br label %2859

2859:                                             ; preds = %2858
  %2860 = load i32, ptr %13, align 4, !tbaa !9
  %2861 = add i32 %2860, 1
  store i32 %2861, ptr %13, align 4, !tbaa !9
  br label %2810, !llvm.loop !54

2862:                                             ; preds = %2810
  br label %2863

2863:                                             ; preds = %2862
  %2864 = load i32, ptr %11, align 4, !tbaa !9
  %2865 = add i32 %2864, 1
  store i32 %2865, ptr %11, align 4, !tbaa !9
  br label %2805, !llvm.loop !55

2866:                                             ; preds = %2805
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %2867

2867:                                             ; preds = %3519, %2866
  %2868 = load i32, ptr %13, align 4, !tbaa !9
  %2869 = load i32, ptr %45, align 4, !tbaa !9
  %2870 = icmp ult i32 %2868, %2869
  br i1 %2870, label %2871, label %3522

2871:                                             ; preds = %2867
  %2872 = load i32, ptr %20, align 4, !tbaa !9
  %2873 = icmp ugt i32 %2872, 0
  br i1 %2873, label %2874, label %3211

2874:                                             ; preds = %2871
  %2875 = load i32, ptr %58, align 4, !tbaa !9
  %2876 = icmp ugt i32 %2875, 0
  br i1 %2876, label %2877, label %3036

2877:                                             ; preds = %2874
  %2878 = load ptr, ptr %6, align 8, !tbaa !5
  %2879 = load ptr, ptr %10, align 8, !tbaa !5
  %2880 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2879, i32 noundef 3)
  %2881 = icmp eq i32 4, %2880
  br i1 %2881, label %2886, label %2882

2882:                                             ; preds = %2877
  %2883 = load ptr, ptr %10, align 8, !tbaa !5
  %2884 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2883, i32 noundef 3)
  %2885 = icmp eq i32 5, %2884
  br i1 %2885, label %2886, label %2900

2886:                                             ; preds = %2882, %2877
  %2887 = load ptr, ptr %6, align 8, !tbaa !5
  %2888 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2887, i32 0, i32 6
  %2889 = load i32, ptr %2888, align 4, !tbaa !22
  %2890 = icmp ult i32 %2889, 1101
  br i1 %2890, label %2891, label %2900

2891:                                             ; preds = %2886
  %2892 = load i32, ptr %17, align 4, !tbaa !9
  %2893 = icmp ugt i32 %2892, 0
  br i1 %2893, label %2894, label %2899

2894:                                             ; preds = %2891
  %2895 = load i32, ptr %13, align 4, !tbaa !9
  %2896 = load i32, ptr %45, align 4, !tbaa !9
  %2897 = sub i32 %2896, 1
  %2898 = icmp eq i32 %2895, %2897
  br i1 %2898, label %2900, label %2899

2899:                                             ; preds = %2894, %2891
  br label %2902

2900:                                             ; preds = %2894, %2886, %2882
  %2901 = load i32, ptr %29, align 4, !tbaa !9
  br label %2902

2902:                                             ; preds = %2900, %2899
  %2903 = phi i32 [ 545725200, %2899 ], [ %2901, %2900 ]
  %2904 = load ptr, ptr %8, align 8, !tbaa !5
  %2905 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2904, i32 0, i32 16
  %2906 = load i32, ptr %2905, align 4, !tbaa !26
  %2907 = load i32, ptr %13, align 4, !tbaa !9
  %2908 = load i32, ptr %33, align 4, !tbaa !9
  %2909 = mul i32 %2907, %2908
  %2910 = load ptr, ptr %9, align 8, !tbaa !5
  %2911 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2910, i32 0, i32 5
  %2912 = load i32, ptr %2911, align 4, !tbaa !33
  %2913 = mul i32 %2909, %2912
  %2914 = load i8, ptr %27, align 1, !tbaa !13
  %2915 = load i32, ptr %35, align 4, !tbaa !9
  %2916 = load i32, ptr %13, align 4, !tbaa !9
  %2917 = load i32, ptr %45, align 4, !tbaa !9
  %2918 = sub i32 %2917, 1
  %2919 = icmp eq i32 %2916, %2918
  br i1 %2919, label %2920, label %2923

2920:                                             ; preds = %2902
  %2921 = load i32, ptr %17, align 4, !tbaa !9
  %2922 = icmp ugt i32 %2921, 0
  br label %2923

2923:                                             ; preds = %2920, %2902
  %2924 = phi i1 [ false, %2902 ], [ %2922, %2920 ]
  %2925 = zext i1 %2924 to i64
  %2926 = select i1 %2924, i32 1, i32 0
  %2927 = load i32, ptr %13, align 4, !tbaa !9
  %2928 = load i32, ptr %45, align 4, !tbaa !9
  %2929 = sub i32 %2928, 1
  %2930 = icmp eq i32 %2927, %2929
  br i1 %2930, label %2931, label %2936

2931:                                             ; preds = %2923
  %2932 = load i32, ptr %17, align 4, !tbaa !9
  %2933 = icmp ugt i32 %2932, 0
  br i1 %2933, label %2934, label %2936

2934:                                             ; preds = %2931
  %2935 = load i32, ptr %32, align 4, !tbaa !9
  br label %2937

2936:                                             ; preds = %2931, %2923
  br label %2937

2937:                                             ; preds = %2936, %2934
  %2938 = phi i32 [ %2935, %2934 ], [ 0, %2936 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %2878, i32 noundef %2903, i32 noundef %2906, i32 noundef 127, i32 noundef 0, i32 noundef %2913, i8 noundef signext %2914, i32 noundef %2915, i32 noundef %2926, i32 noundef %2938, i32 noundef 0)
  %2939 = load ptr, ptr %10, align 8, !tbaa !5
  %2940 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2939, i32 noundef 3)
  %2941 = icmp eq i32 4, %2940
  br i1 %2941, label %2942, label %2949

2942:                                             ; preds = %2937
  %2943 = load ptr, ptr %6, align 8, !tbaa !5
  %2944 = load ptr, ptr %9, align 8, !tbaa !5
  %2945 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2944, i32 0, i32 128
  %2946 = load i8, ptr %2945, align 4, !tbaa !11
  %2947 = load i32, ptr %35, align 4, !tbaa !9
  %2948 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %2943, i8 noundef signext %2946, i32 noundef %2947, i32 noundef %2948)
  br label %2989

2949:                                             ; preds = %2937
  %2950 = load ptr, ptr %10, align 8, !tbaa !5
  %2951 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2950, i32 noundef 3)
  %2952 = icmp eq i32 5, %2951
  br i1 %2952, label %2953, label %2964

2953:                                             ; preds = %2949
  %2954 = load ptr, ptr %6, align 8, !tbaa !5
  %2955 = load ptr, ptr %9, align 8, !tbaa !5
  %2956 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2955, i32 0, i32 128
  %2957 = load i8, ptr %2956, align 4, !tbaa !11
  %2958 = load i32, ptr %35, align 4, !tbaa !9
  %2959 = load i32, ptr %35, align 4, !tbaa !9
  %2960 = load i32, ptr %36, align 4, !tbaa !9
  %2961 = load i32, ptr %37, align 4, !tbaa !9
  %2962 = load i32, ptr %40, align 4, !tbaa !9
  %2963 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %2954, i8 noundef signext %2957, i32 noundef %2958, i32 noundef %2959, i32 noundef %2960, i32 noundef %2961, i32 noundef %2962, i32 noundef %2963)
  br label %2988

2964:                                             ; preds = %2949
  %2965 = load ptr, ptr %10, align 8, !tbaa !5
  %2966 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2965, i32 noundef 3)
  %2967 = icmp eq i32 3, %2966
  br i1 %2967, label %2968, label %2975

2968:                                             ; preds = %2964
  %2969 = load ptr, ptr %6, align 8, !tbaa !5
  %2970 = load ptr, ptr %9, align 8, !tbaa !5
  %2971 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2970, i32 0, i32 128
  %2972 = load i8, ptr %2971, align 4, !tbaa !11
  %2973 = load i32, ptr %35, align 4, !tbaa !9
  %2974 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %2969, i32 noundef 537208083, i8 noundef signext %2972, i32 noundef %2973, i32 noundef %2974)
  br label %2987

2975:                                             ; preds = %2964
  %2976 = load ptr, ptr %10, align 8, !tbaa !5
  %2977 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %2976, i32 noundef 3)
  %2978 = icmp eq i32 2, %2977
  br i1 %2978, label %2979, label %2986

2979:                                             ; preds = %2975
  %2980 = load ptr, ptr %6, align 8, !tbaa !5
  %2981 = load ptr, ptr %9, align 8, !tbaa !5
  %2982 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2981, i32 0, i32 128
  %2983 = load i8, ptr %2982, align 4, !tbaa !11
  %2984 = load i32, ptr %35, align 4, !tbaa !9
  %2985 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %2980, i8 noundef signext %2983, i32 noundef %2984, i32 noundef %2985)
  br label %2986

2986:                                             ; preds = %2979, %2975
  br label %2987

2987:                                             ; preds = %2986, %2968
  br label %2988

2988:                                             ; preds = %2987, %2953
  br label %2989

2989:                                             ; preds = %2988, %2942
  %2990 = load ptr, ptr %6, align 8, !tbaa !5
  %2991 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2990, i32 0, i32 6
  %2992 = load i32, ptr %2991, align 4, !tbaa !22
  %2993 = icmp uge i32 %2992, 1051
  br i1 %2993, label %2994, label %3010

2994:                                             ; preds = %2989
  %2995 = load i32, ptr %56, align 4, !tbaa !9
  %2996 = icmp ugt i32 %2995, 0
  br i1 %2996, label %2997, label %3010

2997:                                             ; preds = %2994
  %2998 = load ptr, ptr %6, align 8, !tbaa !5
  %2999 = load i32, ptr %25, align 4, !tbaa !9
  %3000 = load ptr, ptr %9, align 8, !tbaa !5
  %3001 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3000, i32 0, i32 128
  %3002 = load i8, ptr %3001, align 4, !tbaa !11
  %3003 = load i32, ptr %35, align 4, !tbaa !9
  %3004 = load i32, ptr %21, align 4, !tbaa !9
  %3005 = load i32, ptr %13, align 4, !tbaa !9
  %3006 = add i32 %3004, %3005
  %3007 = load i32, ptr %21, align 4, !tbaa !9
  %3008 = load i32, ptr %13, align 4, !tbaa !9
  %3009 = add i32 %3007, %3008
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %2998, i32 noundef %2999, i8 noundef signext %3002, i32 noundef %3003, i32 noundef %3006, i32 noundef %3009, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3)
  br label %3035

3010:                                             ; preds = %2994, %2989
  %3011 = load i32, ptr %56, align 4, !tbaa !9
  %3012 = icmp ugt i32 %3011, 0
  br i1 %3012, label %3013, label %3022

3013:                                             ; preds = %3010
  %3014 = load ptr, ptr %6, align 8, !tbaa !5
  %3015 = load i32, ptr %25, align 4, !tbaa !9
  %3016 = load ptr, ptr %9, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3016, i32 0, i32 128
  %3018 = load i8, ptr %3017, align 4, !tbaa !11
  %3019 = load i32, ptr %35, align 4, !tbaa !9
  %3020 = load i32, ptr %34, align 4, !tbaa !9
  %3021 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %3014, i32 noundef %3015, i8 noundef signext %3018, i32 noundef %3019, i32 noundef %3020, i32 noundef %3021)
  br label %3022

3022:                                             ; preds = %3013, %3010
  %3023 = load ptr, ptr %6, align 8, !tbaa !5
  %3024 = load i32, ptr %23, align 4, !tbaa !9
  %3025 = load ptr, ptr %9, align 8, !tbaa !5
  %3026 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3025, i32 0, i32 128
  %3027 = load i8, ptr %3026, align 4, !tbaa !11
  %3028 = load i32, ptr %35, align 4, !tbaa !9
  %3029 = load i32, ptr %21, align 4, !tbaa !9
  %3030 = load i32, ptr %13, align 4, !tbaa !9
  %3031 = add i32 %3029, %3030
  %3032 = load i32, ptr %21, align 4, !tbaa !9
  %3033 = load i32, ptr %13, align 4, !tbaa !9
  %3034 = add i32 %3032, %3033
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %3023, i32 noundef %3024, i8 noundef signext %3027, i32 noundef %3028, i32 noundef %3031, i32 noundef %3034)
  br label %3035

3035:                                             ; preds = %3022, %2997
  br label %3036

3036:                                             ; preds = %3035, %2874
  %3037 = load ptr, ptr %10, align 8, !tbaa !5
  %3038 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3037, i32 noundef 3)
  %3039 = icmp eq i32 4, %3038
  br i1 %3039, label %3040, label %3051

3040:                                             ; preds = %3036
  %3041 = load ptr, ptr %6, align 8, !tbaa !5
  %3042 = load ptr, ptr %9, align 8, !tbaa !5
  %3043 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3042, i32 0, i32 128
  %3044 = load i8, ptr %3043, align 4, !tbaa !11
  %3045 = load i32, ptr %21, align 4, !tbaa !9
  %3046 = load i32, ptr %13, align 4, !tbaa !9
  %3047 = add i32 %3045, %3046
  %3048 = load i32, ptr %21, align 4, !tbaa !9
  %3049 = load i32, ptr %13, align 4, !tbaa !9
  %3050 = add i32 %3048, %3049
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %3041, i8 noundef signext %3044, i32 noundef %3047, i32 noundef %3050, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0)
  br label %3051

3051:                                             ; preds = %3040, %3036
  %3052 = load ptr, ptr %10, align 8, !tbaa !5
  %3053 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3052, i32 noundef 3)
  %3054 = icmp eq i32 5, %3053
  br i1 %3054, label %3055, label %3073

3055:                                             ; preds = %3051
  %3056 = load ptr, ptr %6, align 8, !tbaa !5
  %3057 = load ptr, ptr %9, align 8, !tbaa !5
  %3058 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3057, i32 0, i32 128
  %3059 = load i8, ptr %3058, align 4, !tbaa !11
  %3060 = load i32, ptr %21, align 4, !tbaa !9
  %3061 = load i32, ptr %13, align 4, !tbaa !9
  %3062 = add i32 %3060, %3061
  %3063 = load i32, ptr %21, align 4, !tbaa !9
  %3064 = load i32, ptr %13, align 4, !tbaa !9
  %3065 = add i32 %3063, %3064
  %3066 = load i32, ptr %36, align 4, !tbaa !9
  %3067 = load i32, ptr %37, align 4, !tbaa !9
  %3068 = load i32, ptr %38, align 4, !tbaa !9
  %3069 = load i32, ptr %39, align 4, !tbaa !9
  %3070 = load i32, ptr %40, align 4, !tbaa !9
  %3071 = load i32, ptr %41, align 4, !tbaa !9
  %3072 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %3056, i8 noundef signext %3059, i32 noundef %3062, i32 noundef %3065, i32 noundef %3066, i32 noundef %3067, i32 noundef %3068, i32 noundef %3069, i32 noundef %3070, i32 noundef %3071, i32 noundef %3072)
  br label %3147

3073:                                             ; preds = %3051
  %3074 = load ptr, ptr %10, align 8, !tbaa !5
  %3075 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3074, i32 noundef 3)
  %3076 = icmp eq i32 3, %3075
  br i1 %3076, label %3077, label %3101

3077:                                             ; preds = %3073
  %3078 = load ptr, ptr %6, align 8, !tbaa !5
  %3079 = load ptr, ptr %9, align 8, !tbaa !5
  %3080 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3079, i32 0, i32 128
  %3081 = load i8, ptr %3080, align 4, !tbaa !11
  %3082 = load i32, ptr %21, align 4, !tbaa !9
  %3083 = load i32, ptr %13, align 4, !tbaa !9
  %3084 = add i32 %3082, %3083
  %3085 = load i32, ptr %21, align 4, !tbaa !9
  %3086 = load i32, ptr %13, align 4, !tbaa !9
  %3087 = add i32 %3085, %3086
  %3088 = load ptr, ptr %6, align 8, !tbaa !5
  %3089 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3088, i32 0, i32 6
  %3090 = load i32, ptr %3089, align 4, !tbaa !22
  %3091 = icmp ult i32 %3090, 1101
  %3092 = zext i1 %3091 to i64
  %3093 = select i1 %3091, i32 0, i32 1
  %3094 = load ptr, ptr %6, align 8, !tbaa !5
  %3095 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3094, i32 0, i32 6
  %3096 = load i32, ptr %3095, align 4, !tbaa !22
  %3097 = icmp ult i32 %3096, 1101
  %3098 = zext i1 %3097 to i64
  %3099 = select i1 %3097, i32 0, i32 1
  %3100 = trunc i32 %3099 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %3078, i32 noundef 671954205, i8 noundef signext %3081, i32 noundef %3084, i32 noundef %3087, i32 noundef 0, i32 noundef %3093, i8 noundef zeroext %3100, i32 noundef 0)
  br label %3146

3101:                                             ; preds = %3073
  %3102 = load ptr, ptr %10, align 8, !tbaa !5
  %3103 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3102, i32 noundef 3)
  %3104 = icmp eq i32 2, %3103
  br i1 %3104, label %3105, label %3145

3105:                                             ; preds = %3101
  %3106 = load ptr, ptr %6, align 8, !tbaa !5
  %3107 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3106, i32 0, i32 6
  %3108 = load i32, ptr %3107, align 4, !tbaa !22
  %3109 = icmp ult i32 %3108, 1103
  br i1 %3109, label %3110, label %3133

3110:                                             ; preds = %3105
  %3111 = load ptr, ptr %6, align 8, !tbaa !5
  %3112 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3111, i32 0, i32 6
  %3113 = load i32, ptr %3112, align 4, !tbaa !22
  %3114 = icmp ne i32 %3113, 1053
  br i1 %3114, label %3115, label %3133

3115:                                             ; preds = %3110
  %3116 = load ptr, ptr %6, align 8, !tbaa !5
  %3117 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3116, i32 0, i32 6
  %3118 = load i32, ptr %3117, align 4, !tbaa !22
  %3119 = icmp ne i32 %3118, 1008
  br i1 %3119, label %3120, label %3133

3120:                                             ; preds = %3115
  %3121 = load ptr, ptr %6, align 8, !tbaa !5
  %3122 = load ptr, ptr %9, align 8, !tbaa !5
  %3123 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3122, i32 0, i32 128
  %3124 = load i8, ptr %3123, align 4, !tbaa !11
  %3125 = load i32, ptr %21, align 4, !tbaa !9
  %3126 = load i32, ptr %13, align 4, !tbaa !9
  %3127 = add i32 %3125, %3126
  %3128 = load i32, ptr %21, align 4, !tbaa !9
  %3129 = load i32, ptr %13, align 4, !tbaa !9
  %3130 = add i32 %3128, %3129
  %3131 = load i32, ptr %35, align 4, !tbaa !9
  %3132 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %3121, i8 noundef signext %3124, i32 noundef %3127, i32 noundef %3130, i32 noundef %3131, i32 noundef %3132, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br label %3144

3133:                                             ; preds = %3115, %3110, %3105
  %3134 = load ptr, ptr %6, align 8, !tbaa !5
  %3135 = load ptr, ptr %9, align 8, !tbaa !5
  %3136 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3135, i32 0, i32 128
  %3137 = load i8, ptr %3136, align 4, !tbaa !11
  %3138 = load i32, ptr %21, align 4, !tbaa !9
  %3139 = load i32, ptr %13, align 4, !tbaa !9
  %3140 = add i32 %3138, %3139
  %3141 = load i32, ptr %21, align 4, !tbaa !9
  %3142 = load i32, ptr %13, align 4, !tbaa !9
  %3143 = add i32 %3141, %3142
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %3134, i32 noundef 537273970, i8 noundef signext %3137, i32 noundef %3140, i32 noundef %3143)
  br label %3144

3144:                                             ; preds = %3133, %3120
  br label %3145

3145:                                             ; preds = %3144, %3101
  br label %3146

3146:                                             ; preds = %3145, %3077
  br label %3147

3147:                                             ; preds = %3146, %3055
  %3148 = load ptr, ptr %6, align 8, !tbaa !5
  %3149 = load ptr, ptr %10, align 8, !tbaa !5
  %3150 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3149, i32 noundef 3)
  %3151 = icmp eq i32 4, %3150
  br i1 %3151, label %3156, label %3152

3152:                                             ; preds = %3147
  %3153 = load ptr, ptr %10, align 8, !tbaa !5
  %3154 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3153, i32 noundef 3)
  %3155 = icmp eq i32 5, %3154
  br i1 %3155, label %3156, label %3170

3156:                                             ; preds = %3152, %3147
  %3157 = load ptr, ptr %6, align 8, !tbaa !5
  %3158 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3157, i32 0, i32 6
  %3159 = load i32, ptr %3158, align 4, !tbaa !22
  %3160 = icmp ult i32 %3159, 1101
  br i1 %3160, label %3161, label %3170

3161:                                             ; preds = %3156
  %3162 = load i32, ptr %17, align 4, !tbaa !9
  %3163 = icmp ugt i32 %3162, 0
  br i1 %3163, label %3164, label %3169

3164:                                             ; preds = %3161
  %3165 = load i32, ptr %13, align 4, !tbaa !9
  %3166 = load i32, ptr %45, align 4, !tbaa !9
  %3167 = sub i32 %3166, 1
  %3168 = icmp eq i32 %3165, %3167
  br i1 %3168, label %3170, label %3169

3169:                                             ; preds = %3164, %3161
  br label %3172

3170:                                             ; preds = %3164, %3156, %3152
  %3171 = load i32, ptr %29, align 4, !tbaa !9
  br label %3172

3172:                                             ; preds = %3170, %3169
  %3173 = phi i32 [ 545725200, %3169 ], [ %3171, %3170 ]
  %3174 = load ptr, ptr %8, align 8, !tbaa !5
  %3175 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %3174, i32 0, i32 16
  %3176 = load i32, ptr %3175, align 4, !tbaa !26
  %3177 = load i32, ptr %13, align 4, !tbaa !9
  %3178 = load i32, ptr %33, align 4, !tbaa !9
  %3179 = mul i32 %3177, %3178
  %3180 = load ptr, ptr %9, align 8, !tbaa !5
  %3181 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3180, i32 0, i32 5
  %3182 = load i32, ptr %3181, align 4, !tbaa !33
  %3183 = mul i32 %3179, %3182
  %3184 = load i8, ptr %27, align 1, !tbaa !13
  %3185 = load i32, ptr %21, align 4, !tbaa !9
  %3186 = load i32, ptr %13, align 4, !tbaa !9
  %3187 = add i32 %3185, %3186
  %3188 = load i32, ptr %13, align 4, !tbaa !9
  %3189 = load i32, ptr %45, align 4, !tbaa !9
  %3190 = sub i32 %3189, 1
  %3191 = icmp eq i32 %3188, %3190
  br i1 %3191, label %3192, label %3195

3192:                                             ; preds = %3172
  %3193 = load i32, ptr %17, align 4, !tbaa !9
  %3194 = icmp ugt i32 %3193, 0
  br label %3195

3195:                                             ; preds = %3192, %3172
  %3196 = phi i1 [ false, %3172 ], [ %3194, %3192 ]
  %3197 = zext i1 %3196 to i64
  %3198 = select i1 %3196, i32 1, i32 0
  %3199 = load i32, ptr %13, align 4, !tbaa !9
  %3200 = load i32, ptr %45, align 4, !tbaa !9
  %3201 = sub i32 %3200, 1
  %3202 = icmp eq i32 %3199, %3201
  br i1 %3202, label %3203, label %3208

3203:                                             ; preds = %3195
  %3204 = load i32, ptr %17, align 4, !tbaa !9
  %3205 = icmp ugt i32 %3204, 0
  br i1 %3205, label %3206, label %3208

3206:                                             ; preds = %3203
  %3207 = load i32, ptr %32, align 4, !tbaa !9
  br label %3209

3208:                                             ; preds = %3203, %3195
  br label %3209

3209:                                             ; preds = %3208, %3206
  %3210 = phi i32 [ %3207, %3206 ], [ 0, %3208 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %3148, i32 noundef %3173, i32 noundef %3176, i32 noundef 127, i32 noundef 0, i32 noundef %3183, i8 noundef signext %3184, i32 noundef %3187, i32 noundef %3198, i32 noundef %3210, i32 noundef 1)
  br label %3211

3211:                                             ; preds = %3209, %2871
  %3212 = load i32, ptr %19, align 4, !tbaa !9
  %3213 = icmp ugt i32 %3212, 0
  br i1 %3213, label %3214, label %3518

3214:                                             ; preds = %3211
  %3215 = load i32, ptr %58, align 4, !tbaa !9
  %3216 = icmp ugt i32 %3215, 0
  br i1 %3216, label %3217, label %3342

3217:                                             ; preds = %3214
  %3218 = load ptr, ptr %6, align 8, !tbaa !5
  %3219 = load ptr, ptr %10, align 8, !tbaa !5
  %3220 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3219, i32 noundef 3)
  %3221 = icmp eq i32 4, %3220
  br i1 %3221, label %3226, label %3222

3222:                                             ; preds = %3217
  %3223 = load ptr, ptr %10, align 8, !tbaa !5
  %3224 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3223, i32 noundef 3)
  %3225 = icmp eq i32 5, %3224
  br i1 %3225, label %3226, label %3240

3226:                                             ; preds = %3222, %3217
  %3227 = load ptr, ptr %6, align 8, !tbaa !5
  %3228 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3227, i32 0, i32 6
  %3229 = load i32, ptr %3228, align 4, !tbaa !22
  %3230 = icmp ult i32 %3229, 1101
  br i1 %3230, label %3231, label %3240

3231:                                             ; preds = %3226
  %3232 = load i32, ptr %17, align 4, !tbaa !9
  %3233 = icmp ugt i32 %3232, 0
  br i1 %3233, label %3234, label %3239

3234:                                             ; preds = %3231
  %3235 = load i32, ptr %13, align 4, !tbaa !9
  %3236 = load i32, ptr %45, align 4, !tbaa !9
  %3237 = sub i32 %3236, 1
  %3238 = icmp eq i32 %3235, %3237
  br i1 %3238, label %3240, label %3239

3239:                                             ; preds = %3234, %3231
  br label %3242

3240:                                             ; preds = %3234, %3226, %3222
  %3241 = load i32, ptr %29, align 4, !tbaa !9
  br label %3242

3242:                                             ; preds = %3240, %3239
  %3243 = phi i32 [ 545725200, %3239 ], [ %3241, %3240 ]
  %3244 = load ptr, ptr %8, align 8, !tbaa !5
  %3245 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %3244, i32 0, i32 17
  %3246 = load i32, ptr %3245, align 4, !tbaa !27
  %3247 = load i32, ptr %13, align 4, !tbaa !9
  %3248 = load i32, ptr %33, align 4, !tbaa !9
  %3249 = mul i32 %3247, %3248
  %3250 = load ptr, ptr %9, align 8, !tbaa !5
  %3251 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3250, i32 0, i32 5
  %3252 = load i32, ptr %3251, align 4, !tbaa !33
  %3253 = mul i32 %3249, %3252
  %3254 = load i8, ptr %27, align 1, !tbaa !13
  %3255 = load i32, ptr %35, align 4, !tbaa !9
  %3256 = load i32, ptr %13, align 4, !tbaa !9
  %3257 = load i32, ptr %45, align 4, !tbaa !9
  %3258 = sub i32 %3257, 1
  %3259 = icmp eq i32 %3256, %3258
  br i1 %3259, label %3260, label %3263

3260:                                             ; preds = %3242
  %3261 = load i32, ptr %17, align 4, !tbaa !9
  %3262 = icmp ugt i32 %3261, 0
  br label %3263

3263:                                             ; preds = %3260, %3242
  %3264 = phi i1 [ false, %3242 ], [ %3262, %3260 ]
  %3265 = zext i1 %3264 to i64
  %3266 = select i1 %3264, i32 1, i32 0
  %3267 = load i32, ptr %13, align 4, !tbaa !9
  %3268 = load i32, ptr %45, align 4, !tbaa !9
  %3269 = sub i32 %3268, 1
  %3270 = icmp eq i32 %3267, %3269
  br i1 %3270, label %3271, label %3276

3271:                                             ; preds = %3263
  %3272 = load i32, ptr %17, align 4, !tbaa !9
  %3273 = icmp ugt i32 %3272, 0
  br i1 %3273, label %3274, label %3276

3274:                                             ; preds = %3271
  %3275 = load i32, ptr %32, align 4, !tbaa !9
  br label %3277

3276:                                             ; preds = %3271, %3263
  br label %3277

3277:                                             ; preds = %3276, %3274
  %3278 = phi i32 [ %3275, %3274 ], [ 0, %3276 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %3218, i32 noundef %3243, i32 noundef %3246, i32 noundef 127, i32 noundef 0, i32 noundef %3253, i8 noundef signext %3254, i32 noundef %3255, i32 noundef %3266, i32 noundef %3278, i32 noundef 0)
  %3279 = load ptr, ptr %10, align 8, !tbaa !5
  %3280 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3279, i32 noundef 3)
  %3281 = icmp eq i32 4, %3280
  br i1 %3281, label %3282, label %3289

3282:                                             ; preds = %3277
  %3283 = load ptr, ptr %6, align 8, !tbaa !5
  %3284 = load ptr, ptr %9, align 8, !tbaa !5
  %3285 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3284, i32 0, i32 128
  %3286 = load i8, ptr %3285, align 4, !tbaa !11
  %3287 = load i32, ptr %35, align 4, !tbaa !9
  %3288 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %3283, i8 noundef signext %3286, i32 noundef %3287, i32 noundef %3288)
  br label %3329

3289:                                             ; preds = %3277
  %3290 = load ptr, ptr %10, align 8, !tbaa !5
  %3291 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3290, i32 noundef 3)
  %3292 = icmp eq i32 5, %3291
  br i1 %3292, label %3293, label %3304

3293:                                             ; preds = %3289
  %3294 = load ptr, ptr %6, align 8, !tbaa !5
  %3295 = load ptr, ptr %9, align 8, !tbaa !5
  %3296 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3295, i32 0, i32 128
  %3297 = load i8, ptr %3296, align 4, !tbaa !11
  %3298 = load i32, ptr %35, align 4, !tbaa !9
  %3299 = load i32, ptr %35, align 4, !tbaa !9
  %3300 = load i32, ptr %36, align 4, !tbaa !9
  %3301 = load i32, ptr %37, align 4, !tbaa !9
  %3302 = load i32, ptr %40, align 4, !tbaa !9
  %3303 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %3294, i8 noundef signext %3297, i32 noundef %3298, i32 noundef %3299, i32 noundef %3300, i32 noundef %3301, i32 noundef %3302, i32 noundef %3303)
  br label %3328

3304:                                             ; preds = %3289
  %3305 = load ptr, ptr %10, align 8, !tbaa !5
  %3306 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3305, i32 noundef 3)
  %3307 = icmp eq i32 3, %3306
  br i1 %3307, label %3308, label %3315

3308:                                             ; preds = %3304
  %3309 = load ptr, ptr %6, align 8, !tbaa !5
  %3310 = load ptr, ptr %9, align 8, !tbaa !5
  %3311 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3310, i32 0, i32 128
  %3312 = load i8, ptr %3311, align 4, !tbaa !11
  %3313 = load i32, ptr %35, align 4, !tbaa !9
  %3314 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %3309, i32 noundef 537208083, i8 noundef signext %3312, i32 noundef %3313, i32 noundef %3314)
  br label %3327

3315:                                             ; preds = %3304
  %3316 = load ptr, ptr %10, align 8, !tbaa !5
  %3317 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3316, i32 noundef 3)
  %3318 = icmp eq i32 2, %3317
  br i1 %3318, label %3319, label %3326

3319:                                             ; preds = %3315
  %3320 = load ptr, ptr %6, align 8, !tbaa !5
  %3321 = load ptr, ptr %9, align 8, !tbaa !5
  %3322 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3321, i32 0, i32 128
  %3323 = load i8, ptr %3322, align 4, !tbaa !11
  %3324 = load i32, ptr %35, align 4, !tbaa !9
  %3325 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %3320, i8 noundef signext %3323, i32 noundef %3324, i32 noundef %3325)
  br label %3326

3326:                                             ; preds = %3319, %3315
  br label %3327

3327:                                             ; preds = %3326, %3308
  br label %3328

3328:                                             ; preds = %3327, %3293
  br label %3329

3329:                                             ; preds = %3328, %3282
  %3330 = load ptr, ptr %6, align 8, !tbaa !5
  %3331 = load i32, ptr %23, align 4, !tbaa !9
  %3332 = load ptr, ptr %9, align 8, !tbaa !5
  %3333 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3332, i32 0, i32 128
  %3334 = load i8, ptr %3333, align 4, !tbaa !11
  %3335 = load i32, ptr %35, align 4, !tbaa !9
  %3336 = load i32, ptr %22, align 4, !tbaa !9
  %3337 = load i32, ptr %13, align 4, !tbaa !9
  %3338 = add i32 %3336, %3337
  %3339 = load i32, ptr %22, align 4, !tbaa !9
  %3340 = load i32, ptr %13, align 4, !tbaa !9
  %3341 = add i32 %3339, %3340
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %3330, i32 noundef %3331, i8 noundef signext %3334, i32 noundef %3335, i32 noundef %3338, i32 noundef %3341)
  br label %3342

3342:                                             ; preds = %3329, %3214
  %3343 = load ptr, ptr %10, align 8, !tbaa !5
  %3344 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3343, i32 noundef 3)
  %3345 = icmp eq i32 4, %3344
  br i1 %3345, label %3346, label %3357

3346:                                             ; preds = %3342
  %3347 = load ptr, ptr %6, align 8, !tbaa !5
  %3348 = load ptr, ptr %9, align 8, !tbaa !5
  %3349 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3348, i32 0, i32 128
  %3350 = load i8, ptr %3349, align 4, !tbaa !11
  %3351 = load i32, ptr %22, align 4, !tbaa !9
  %3352 = load i32, ptr %13, align 4, !tbaa !9
  %3353 = add i32 %3351, %3352
  %3354 = load i32, ptr %22, align 4, !tbaa !9
  %3355 = load i32, ptr %13, align 4, !tbaa !9
  %3356 = add i32 %3354, %3355
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %3347, i8 noundef signext %3350, i32 noundef %3353, i32 noundef %3356, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0)
  br label %3454

3357:                                             ; preds = %3342
  %3358 = load ptr, ptr %10, align 8, !tbaa !5
  %3359 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3358, i32 noundef 3)
  %3360 = icmp eq i32 5, %3359
  br i1 %3360, label %3361, label %3379

3361:                                             ; preds = %3357
  %3362 = load ptr, ptr %6, align 8, !tbaa !5
  %3363 = load ptr, ptr %9, align 8, !tbaa !5
  %3364 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3363, i32 0, i32 128
  %3365 = load i8, ptr %3364, align 4, !tbaa !11
  %3366 = load i32, ptr %22, align 4, !tbaa !9
  %3367 = load i32, ptr %13, align 4, !tbaa !9
  %3368 = add i32 %3366, %3367
  %3369 = load i32, ptr %22, align 4, !tbaa !9
  %3370 = load i32, ptr %13, align 4, !tbaa !9
  %3371 = add i32 %3369, %3370
  %3372 = load i32, ptr %36, align 4, !tbaa !9
  %3373 = load i32, ptr %37, align 4, !tbaa !9
  %3374 = load i32, ptr %38, align 4, !tbaa !9
  %3375 = load i32, ptr %39, align 4, !tbaa !9
  %3376 = load i32, ptr %40, align 4, !tbaa !9
  %3377 = load i32, ptr %41, align 4, !tbaa !9
  %3378 = load i32, ptr %42, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %3362, i8 noundef signext %3365, i32 noundef %3368, i32 noundef %3371, i32 noundef %3372, i32 noundef %3373, i32 noundef %3374, i32 noundef %3375, i32 noundef %3376, i32 noundef %3377, i32 noundef %3378)
  br label %3453

3379:                                             ; preds = %3357
  %3380 = load ptr, ptr %10, align 8, !tbaa !5
  %3381 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3380, i32 noundef 3)
  %3382 = icmp eq i32 3, %3381
  br i1 %3382, label %3383, label %3407

3383:                                             ; preds = %3379
  %3384 = load ptr, ptr %6, align 8, !tbaa !5
  %3385 = load ptr, ptr %9, align 8, !tbaa !5
  %3386 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3385, i32 0, i32 128
  %3387 = load i8, ptr %3386, align 4, !tbaa !11
  %3388 = load i32, ptr %22, align 4, !tbaa !9
  %3389 = load i32, ptr %13, align 4, !tbaa !9
  %3390 = add i32 %3388, %3389
  %3391 = load i32, ptr %22, align 4, !tbaa !9
  %3392 = load i32, ptr %13, align 4, !tbaa !9
  %3393 = add i32 %3391, %3392
  %3394 = load ptr, ptr %6, align 8, !tbaa !5
  %3395 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3394, i32 0, i32 6
  %3396 = load i32, ptr %3395, align 4, !tbaa !22
  %3397 = icmp ult i32 %3396, 1101
  %3398 = zext i1 %3397 to i64
  %3399 = select i1 %3397, i32 0, i32 1
  %3400 = load ptr, ptr %6, align 8, !tbaa !5
  %3401 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3400, i32 0, i32 6
  %3402 = load i32, ptr %3401, align 4, !tbaa !22
  %3403 = icmp ult i32 %3402, 1101
  %3404 = zext i1 %3403 to i64
  %3405 = select i1 %3403, i32 0, i32 1
  %3406 = trunc i32 %3405 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %3384, i32 noundef 671954205, i8 noundef signext %3387, i32 noundef %3390, i32 noundef %3393, i32 noundef 0, i32 noundef %3399, i8 noundef zeroext %3406, i32 noundef 0)
  br label %3452

3407:                                             ; preds = %3379
  %3408 = load ptr, ptr %10, align 8, !tbaa !5
  %3409 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3408, i32 noundef 3)
  %3410 = icmp eq i32 2, %3409
  br i1 %3410, label %3411, label %3451

3411:                                             ; preds = %3407
  %3412 = load ptr, ptr %6, align 8, !tbaa !5
  %3413 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3412, i32 0, i32 6
  %3414 = load i32, ptr %3413, align 4, !tbaa !22
  %3415 = icmp ult i32 %3414, 1103
  br i1 %3415, label %3416, label %3439

3416:                                             ; preds = %3411
  %3417 = load ptr, ptr %6, align 8, !tbaa !5
  %3418 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3417, i32 0, i32 6
  %3419 = load i32, ptr %3418, align 4, !tbaa !22
  %3420 = icmp ne i32 %3419, 1053
  br i1 %3420, label %3421, label %3439

3421:                                             ; preds = %3416
  %3422 = load ptr, ptr %6, align 8, !tbaa !5
  %3423 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3422, i32 0, i32 6
  %3424 = load i32, ptr %3423, align 4, !tbaa !22
  %3425 = icmp ne i32 %3424, 1008
  br i1 %3425, label %3426, label %3439

3426:                                             ; preds = %3421
  %3427 = load ptr, ptr %6, align 8, !tbaa !5
  %3428 = load ptr, ptr %9, align 8, !tbaa !5
  %3429 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3428, i32 0, i32 128
  %3430 = load i8, ptr %3429, align 4, !tbaa !11
  %3431 = load i32, ptr %22, align 4, !tbaa !9
  %3432 = load i32, ptr %13, align 4, !tbaa !9
  %3433 = add i32 %3431, %3432
  %3434 = load i32, ptr %22, align 4, !tbaa !9
  %3435 = load i32, ptr %13, align 4, !tbaa !9
  %3436 = add i32 %3434, %3435
  %3437 = load i32, ptr %35, align 4, !tbaa !9
  %3438 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %3427, i8 noundef signext %3430, i32 noundef %3433, i32 noundef %3436, i32 noundef %3437, i32 noundef %3438, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br label %3450

3439:                                             ; preds = %3421, %3416, %3411
  %3440 = load ptr, ptr %6, align 8, !tbaa !5
  %3441 = load ptr, ptr %9, align 8, !tbaa !5
  %3442 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3441, i32 0, i32 128
  %3443 = load i8, ptr %3442, align 4, !tbaa !11
  %3444 = load i32, ptr %22, align 4, !tbaa !9
  %3445 = load i32, ptr %13, align 4, !tbaa !9
  %3446 = add i32 %3444, %3445
  %3447 = load i32, ptr %22, align 4, !tbaa !9
  %3448 = load i32, ptr %13, align 4, !tbaa !9
  %3449 = add i32 %3447, %3448
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %3440, i32 noundef 537273970, i8 noundef signext %3443, i32 noundef %3446, i32 noundef %3449)
  br label %3450

3450:                                             ; preds = %3439, %3426
  br label %3451

3451:                                             ; preds = %3450, %3407
  br label %3452

3452:                                             ; preds = %3451, %3383
  br label %3453

3453:                                             ; preds = %3452, %3361
  br label %3454

3454:                                             ; preds = %3453, %3346
  %3455 = load ptr, ptr %6, align 8, !tbaa !5
  %3456 = load ptr, ptr %10, align 8, !tbaa !5
  %3457 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3456, i32 noundef 3)
  %3458 = icmp eq i32 4, %3457
  br i1 %3458, label %3463, label %3459

3459:                                             ; preds = %3454
  %3460 = load ptr, ptr %10, align 8, !tbaa !5
  %3461 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3460, i32 noundef 3)
  %3462 = icmp eq i32 5, %3461
  br i1 %3462, label %3463, label %3477

3463:                                             ; preds = %3459, %3454
  %3464 = load ptr, ptr %6, align 8, !tbaa !5
  %3465 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3464, i32 0, i32 6
  %3466 = load i32, ptr %3465, align 4, !tbaa !22
  %3467 = icmp ult i32 %3466, 1101
  br i1 %3467, label %3468, label %3477

3468:                                             ; preds = %3463
  %3469 = load i32, ptr %17, align 4, !tbaa !9
  %3470 = icmp ugt i32 %3469, 0
  br i1 %3470, label %3471, label %3476

3471:                                             ; preds = %3468
  %3472 = load i32, ptr %13, align 4, !tbaa !9
  %3473 = load i32, ptr %45, align 4, !tbaa !9
  %3474 = sub i32 %3473, 1
  %3475 = icmp eq i32 %3472, %3474
  br i1 %3475, label %3477, label %3476

3476:                                             ; preds = %3471, %3468
  br label %3479

3477:                                             ; preds = %3471, %3463, %3459
  %3478 = load i32, ptr %29, align 4, !tbaa !9
  br label %3479

3479:                                             ; preds = %3477, %3476
  %3480 = phi i32 [ 545725200, %3476 ], [ %3478, %3477 ]
  %3481 = load ptr, ptr %8, align 8, !tbaa !5
  %3482 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %3481, i32 0, i32 17
  %3483 = load i32, ptr %3482, align 4, !tbaa !27
  %3484 = load i32, ptr %13, align 4, !tbaa !9
  %3485 = load i32, ptr %33, align 4, !tbaa !9
  %3486 = mul i32 %3484, %3485
  %3487 = load ptr, ptr %9, align 8, !tbaa !5
  %3488 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %3487, i32 0, i32 5
  %3489 = load i32, ptr %3488, align 4, !tbaa !33
  %3490 = mul i32 %3486, %3489
  %3491 = load i8, ptr %27, align 1, !tbaa !13
  %3492 = load i32, ptr %22, align 4, !tbaa !9
  %3493 = load i32, ptr %13, align 4, !tbaa !9
  %3494 = add i32 %3492, %3493
  %3495 = load i32, ptr %13, align 4, !tbaa !9
  %3496 = load i32, ptr %45, align 4, !tbaa !9
  %3497 = sub i32 %3496, 1
  %3498 = icmp eq i32 %3495, %3497
  br i1 %3498, label %3499, label %3502

3499:                                             ; preds = %3479
  %3500 = load i32, ptr %17, align 4, !tbaa !9
  %3501 = icmp ugt i32 %3500, 0
  br label %3502

3502:                                             ; preds = %3499, %3479
  %3503 = phi i1 [ false, %3479 ], [ %3501, %3499 ]
  %3504 = zext i1 %3503 to i64
  %3505 = select i1 %3503, i32 1, i32 0
  %3506 = load i32, ptr %13, align 4, !tbaa !9
  %3507 = load i32, ptr %45, align 4, !tbaa !9
  %3508 = sub i32 %3507, 1
  %3509 = icmp eq i32 %3506, %3508
  br i1 %3509, label %3510, label %3515

3510:                                             ; preds = %3502
  %3511 = load i32, ptr %17, align 4, !tbaa !9
  %3512 = icmp ugt i32 %3511, 0
  br i1 %3512, label %3513, label %3515

3513:                                             ; preds = %3510
  %3514 = load i32, ptr %32, align 4, !tbaa !9
  br label %3516

3515:                                             ; preds = %3510, %3502
  br label %3516

3516:                                             ; preds = %3515, %3513
  %3517 = phi i32 [ %3514, %3513 ], [ 0, %3515 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %3455, i32 noundef %3480, i32 noundef %3483, i32 noundef 127, i32 noundef 0, i32 noundef %3490, i8 noundef signext %3491, i32 noundef %3494, i32 noundef %3505, i32 noundef %3517, i32 noundef 1)
  br label %3518

3518:                                             ; preds = %3516, %3211
  br label %3519

3519:                                             ; preds = %3518
  %3520 = load i32, ptr %13, align 4, !tbaa !9
  %3521 = add i32 %3520, 1
  store i32 %3521, ptr %13, align 4, !tbaa !9
  br label %2867, !llvm.loop !56

3522:                                             ; preds = %2867
  br label %3523

3523:                                             ; preds = %3522, %1969
  %3524 = load ptr, ptr %10, align 8, !tbaa !5
  %3525 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3524, i32 noundef 3)
  %3526 = icmp eq i32 4, %3525
  br i1 %3526, label %3527, label %3529

3527:                                             ; preds = %3523
  %3528 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf8_avx512_clean_stack(ptr noundef %3528, i32 noundef 0)
  br label %3563

3529:                                             ; preds = %3523
  %3530 = load ptr, ptr %10, align 8, !tbaa !5
  %3531 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3530, i32 noundef 3)
  %3532 = icmp eq i32 2, %3531
  br i1 %3532, label %3533, label %3551

3533:                                             ; preds = %3529
  %3534 = load ptr, ptr %6, align 8, !tbaa !5
  %3535 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3534, i32 0, i32 6
  %3536 = load i32, ptr %3535, align 4, !tbaa !22
  %3537 = icmp ult i32 %3536, 1103
  br i1 %3537, label %3538, label %3550

3538:                                             ; preds = %3533
  %3539 = load ptr, ptr %6, align 8, !tbaa !5
  %3540 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3539, i32 0, i32 6
  %3541 = load i32, ptr %3540, align 4, !tbaa !22
  %3542 = icmp ne i32 %3541, 1053
  br i1 %3542, label %3543, label %3550

3543:                                             ; preds = %3538
  %3544 = load ptr, ptr %6, align 8, !tbaa !5
  %3545 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %3544, i32 0, i32 6
  %3546 = load i32, ptr %3545, align 4, !tbaa !22
  %3547 = icmp ne i32 %3546, 1008
  br i1 %3547, label %3548, label %3550

3548:                                             ; preds = %3543
  %3549 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf16_avx512_clean_stack(ptr noundef %3549, i32 noundef 0)
  br label %3550

3550:                                             ; preds = %3548, %3543, %3538, %3533
  br label %3562

3551:                                             ; preds = %3529
  %3552 = load ptr, ptr %10, align 8, !tbaa !5
  %3553 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3552, i32 noundef 0)
  %3554 = icmp eq i32 5, %3553
  br i1 %3554, label %3559, label %3555

3555:                                             ; preds = %3551
  %3556 = load ptr, ptr %10, align 8, !tbaa !5
  %3557 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3556, i32 noundef 3)
  %3558 = icmp eq i32 5, %3557
  br i1 %3558, label %3559, label %3561

3559:                                             ; preds = %3555, %3551
  %3560 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef %3560, i32 noundef 0)
  br label %3561

3561:                                             ; preds = %3559, %3555
  br label %3562

3562:                                             ; preds = %3561, %3550
  br label %3563

3563:                                             ; preds = %3562, %3527
  store i32 0, ptr %61, align 4
  br label %3564

3564:                                             ; preds = %3563, %288, %267, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  %3565 = load i32, ptr %61, align 4
  switch i32 %3565, label %3567 [
    i32 0, label %3566
    i32 1, label %3566
  ]

3566:                                             ; preds = %3564, %3564
  ret void

3567:                                             ; preds = %3564
  unreachable
}

declare i32 @printf(ptr noundef, ...) #2

declare void @libxsmm_generator_load_vreg_signmask(ptr noundef, i8 noundef zeroext, i32 noundef, i32 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

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 }

!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, !7, i64 512}
!12 = !{!"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}
!13 = !{!7, !7, i64 0}
!14 = !{!12, !10, i64 24}
!15 = !{!12, !10, i64 36}
!16 = !{!17, !18, i64 29}
!17 = !{!"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, !18, i64 27, !18, i64 29, !7, i64 31}
!18 = !{!"short", !7, i64 0}
!19 = !{!17, !18, i64 27}
!20 = !{!17, !10, i64 0}
!21 = !{!17, !10, i64 8}
!22 = !{!23, !10, i64 28}
!23 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!24 = !{!25, !10, i64 4}
!25 = !{!"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}
!26 = !{!25, !10, i64 64}
!27 = !{!25, !10, i64 68}
!28 = !{!25, !10, i64 96}
!29 = !{!25, !10, i64 100}
!30 = !{!12, !10, i64 56}
!31 = !{!25, !10, i64 0}
!32 = !{!17, !10, i64 12}
!33 = !{!12, !10, i64 20}
!34 = !{!17, !10, i64 4}
!35 = !{!12, !10, i64 8}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}
!39 = distinct !{!39, !37}
!40 = distinct !{!40, !37}
!41 = !{!12, !10, i64 40}
!42 = distinct !{!42, !37}
!43 = distinct !{!43, !37}
!44 = !{!12, !10, i64 44}
!45 = distinct !{!45, !37}
!46 = distinct !{!46, !37}
!47 = distinct !{!47, !37}
!48 = distinct !{!48, !37}
!49 = distinct !{!49, !37}
!50 = distinct !{!50, !37}
!51 = distinct !{!51, !37}
!52 = distinct !{!52, !37}
!53 = distinct !{!53, !37}
!54 = distinct !{!54, !37}
!55 = distinct !{!55, !37}
!56 = distinct !{!56, !37}


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

@.str = external hidden unnamed_addr constant [94 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@__func__.libxsmm_generator_reduce_cols_avx512_microkernel = external hidden unnamed_addr constant [49 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [63 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_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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_generator_mateltwise_header_n_loop(ptr noundef, ptr noundef, ptr 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_mateltwise_footer_n_loop(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 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_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_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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_reduce_cols_avx512_microkernel(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 {
switch.edge:
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #5
  %10 = getelementptr inbounds i8, ptr %3, i64 512
  %11 = load i8, ptr %10, align 4, !tbaa !5
  store i8 %11, ptr %5, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #5
  store i8 %11, ptr %6, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  %12 = getelementptr inbounds i8, ptr %3, i64 24
  %13 = load i32, ptr %12, align 4, !tbaa !11
  store i32 %13, ptr %7, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #5
  %14 = getelementptr inbounds i8, ptr %3, i64 36
  %15 = load i32, ptr %14, align 4, !tbaa !13
  store i32 %15, ptr %8, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  store i32 16, ptr %9, align 4, !tbaa !12
  %16 = getelementptr inbounds i8, ptr %4, i64 29
  %17 = load i16, ptr %16, align 1, !tbaa !14
  %switch.tableidx = add i16 %17, -18
  %18 = icmp ult i16 %switch.tableidx, 53
  %switch.cast = zext nneg i16 %switch.tableidx to i53
  %switch.downshift = lshr i53 -2251799813685235, %switch.cast
  %switch.masked = trunc i53 %switch.downshift to i1
  %19 = select i1 %18, i1 %switch.masked, i1 false
  %20 = add i16 %17, -19
  %spec.select = icmp ult i16 %20, 2
  %.off1561 = add i16 %17, -18
  %switch1562 = icmp ult i16 %.off1561, 3
  %21 = icmp eq i16 %17, 70
  %22 = getelementptr inbounds i8, ptr %4, i64 27
  %23 = load i16, ptr %22, align 1, !tbaa !17
  %24 = and i16 %23, 64
  %.not = icmp eq i16 %24, 0
  %25 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %26 = icmp eq i32 %25, 5
  br i1 %26, label %30, label %27

27:                                               ; preds = %switch.edge
  %28 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %29 = icmp eq i32 %28, 5
  br i1 %29, label %30, label %31

30:                                               ; preds = %27, %switch.edge
  br label %31

31:                                               ; preds = %30, %27
  %.01447 = phi i32 [ 28, %30 ], [ 30, %27 ]
  call void @libxsmm_generator_reduce_set_lp_vlen_vname_vmove_x86(ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8)
  %32 = load i32, ptr %4, align 1, !tbaa !18
  %33 = getelementptr inbounds i8, ptr %4, i64 8
  %34 = load i32, ptr %33, align 1, !tbaa !19
  %35 = icmp ugt i32 %32, %34
  br i1 %35, label %36, label %41

36:                                               ; preds = %31
  %37 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %38 = icmp ugt i32 %37, 1
  %39 = load i32, ptr @libxsmm_verbosity, align 4
  %40 = select i1 %38, i32 %39, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90007, ptr noundef nonnull @__func__.libxsmm_generator_reduce_cols_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 699, i32 noundef %40) #5
  br label %1174

41:                                               ; preds = %31
  %42 = xor i1 %spec.select, true
  br i1 %switch1562, label %43, label %46

43:                                               ; preds = %41
  %44 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %45 = icmp eq i32 %44, 0
  %. = select i1 %45, i32 814032568, i32 805643960
  %not. = xor i1 %45, true
  %.1496 = select i1 %45, i32 814028376, i32 805574232
  br label %64

46:                                               ; preds = %41
  switch i16 %17, label %58 [
    i16 70, label %47
    i16 21, label %47
    i16 69, label %55
  ]

47:                                               ; preds = %46, %46
  %48 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %49 = icmp eq i32 %48, 0
  %50 = getelementptr inbounds i8, ptr %0, i64 28
  %51 = load i32, ptr %50, align 4, !tbaa !20
  %52 = icmp ugt i32 %51, 1050
  br i1 %49, label %53, label %54

53:                                               ; preds = %47
  %.1497 = select i1 %52, i32 -259180976, i32 814028507
  br label %64

54:                                               ; preds = %47
  %.1498 = select i1 %52, i32 -267569584, i32 814028507
  br label %64

55:                                               ; preds = %46
  %56 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %57 = icmp eq i32 %56, 0
  %.1499 = select i1 %57, i32 814028381, i32 805573981
  br label %64

58:                                               ; preds = %46
  %59 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  %60 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %61 = icmp ugt i32 %60, 1
  %62 = load i32, ptr @libxsmm_verbosity, align 4
  %63 = select i1 %61, i32 %62, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_reduce_cols_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 748, i32 noundef %63) #5
  br label %1174

64:                                               ; preds = %55, %54, %53, %43
  %.01437 = phi i32 [ 0, %43 ], [ %.1497, %53 ], [ %.1498, %54 ], [ 0, %55 ]
  %.01436 = phi i32 [ %., %43 ], [ 0, %53 ], [ 0, %54 ], [ 0, %55 ]
  %65 = phi i1 [ %not., %43 ], [ false, %53 ], [ false, %54 ], [ false, %55 ]
  %66 = phi i1 [ %45, %43 ], [ false, %53 ], [ false, %54 ], [ false, %55 ]
  %.01435 = phi i32 [ %.1496, %43 ], [ 814028383, %53 ], [ 805574239, %54 ], [ %.1499, %55 ]
  %or.cond3 = or i1 %65, %42
  %or.cond5 = or i1 %or.cond3, %66
  br i1 %or.cond5, label %73, label %67

67:                                               ; preds = %64
  %68 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11)
  %69 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %70 = icmp ugt i32 %69, 1
  %71 = load i32, ptr @libxsmm_verbosity, align 4
  %72 = select i1 %70, i32 %71, i32 1
  call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_reduce_cols_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 755, i32 noundef %72) #5
  br label %1174

73:                                               ; preds = %64
  %74 = getelementptr inbounds i8, ptr %0, i64 28
  %75 = load i32, ptr %74, align 4, !tbaa !20
  %76 = icmp ult i32 %75, 1051
  br i1 %76, label %77, label %85

77:                                               ; preds = %73
  store i32 8, ptr %9, align 4, !tbaa !12
  br i1 %21, label %.sink.split, label %81

.sink.split:                                      ; preds = %77
  %78 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %79 = icmp ne i32 %78, 0
  %80 = load i8, ptr %10, align 4, !tbaa !5
  %.1775 = zext i1 %79 to i32
  call void @libxsmm_generator_load_vreg_signmask(ptr noundef nonnull %0, i8 noundef zeroext %80, i32 noundef 0, i32 noundef 14, i32 noundef %.1775) #5
  br label %81

81:                                               ; preds = %.sink.split, %77
  %.01455 = phi i32 [ 0, %77 ], [ 14, %.sink.split ]
  %.11448 = phi i32 [ 15, %77 ], [ 14, %.sink.split ]
  %82 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %83 = icmp eq i32 %82, 2
  %84 = add nsw i32 %.11448, -1
  %spec.select1500 = select i1 %83, i32 %84, i32 30
  %spec.select1501 = select i1 %83, i32 %84, i32 %.11448
  br label %85

85:                                               ; preds = %81, %73
  %.01458 = phi i32 [ 30, %73 ], [ %spec.select1500, %81 ]
  %.01457 = phi i32 [ 31, %73 ], [ 15, %81 ]
  %.11456 = phi i32 [ 0, %73 ], [ %.01455, %81 ]
  %.21449 = phi i32 [ %.01447, %73 ], [ %spec.select1501, %81 ]
  %86 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %88, label %91

88:                                               ; preds = %85
  %89 = load i32, ptr %9, align 4, !tbaa !12
  %90 = lshr i32 %89, 1
  store i32 %90, ptr %9, align 4, !tbaa !12
  br label %91

91:                                               ; preds = %88, %85
  %92 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 8, ptr %92, align 4, !tbaa !23
  %93 = getelementptr inbounds i8, ptr %2, i64 64
  store i32 9, ptr %93, align 4, !tbaa !25
  %94 = getelementptr inbounds i8, ptr %2, i64 68
  store i32 10, ptr %94, align 4, !tbaa !26
  %95 = getelementptr inbounds i8, ptr %2, i64 96
  store i32 11, ptr %95, align 4, !tbaa !27
  %96 = getelementptr inbounds i8, ptr %2, i64 100
  store i32 0, ptr %96, align 4, !tbaa !28
  %97 = getelementptr inbounds i8, ptr %3, i64 56
  %98 = load i32, ptr %97, align 4, !tbaa !29
  %99 = load i32, ptr %2, align 4, !tbaa !30
  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 32, i32 noundef 8, i32 noundef 0) #5
  %100 = load i32, ptr %97, align 4, !tbaa !29
  %101 = load i32, ptr %2, align 4, !tbaa !30
  br i1 %19, label %102, label %115

102:                                              ; preds = %91
  %103 = load i32, ptr %93, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %100, i32 noundef %101, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %103, i32 noundef 0) #5
  br i1 %spec.select, label %104, label %117

104:                                              ; preds = %102
  %105 = getelementptr inbounds i8, ptr %4, i64 12
  %106 = load i32, ptr %105, align 1, !tbaa !31
  %107 = getelementptr inbounds i8, ptr %3, i64 20
  %108 = load i32, ptr %107, align 4, !tbaa !32
  %109 = mul i32 %108, %106
  %110 = load i32, ptr %97, align 4, !tbaa !29
  %111 = load i32, ptr %93, align 4, !tbaa !25
  %112 = load i32, ptr %94, align 4, !tbaa !26
  call void @libxsmm_x86_instruction_alu_reg(ptr noundef nonnull %0, i32 noundef %110, i32 noundef %111, i32 noundef %112) #5
  %113 = load i32, ptr %94, align 4, !tbaa !26
  %114 = zext i32 %109 to i64
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef nonnull %0, i32 noundef 30000, i32 noundef %113, i64 noundef %114) #5
  br label %117

115:                                              ; preds = %91
  %116 = load i32, ptr %94, align 4, !tbaa !26
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %100, i32 noundef %101, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %116, i32 noundef 0) #5
  br label %117

117:                                              ; preds = %102, %104, %115
  %118 = load i32, ptr %4, align 1, !tbaa !18
  %119 = getelementptr inbounds i8, ptr %4, i64 4
  %120 = load i32, ptr %119, align 1, !tbaa !33
  %121 = load i32, ptr %9, align 4, !tbaa !12
  %122 = urem i32 %118, %121
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %153

124:                                              ; preds = %117
  %125 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #5
  %126 = load i32, ptr %74, align 4, !tbaa !20
  %127 = icmp ugt i32 %126, 1050
  br i1 %127, label %128, label %132

128:                                              ; preds = %124
  %129 = load i32, ptr %9, align 4, !tbaa !12
  %130 = urem i32 %118, %129
  %131 = sub i32 %129, %130
  call void @libxsmm_generator_initialize_avx512_mask(ptr noundef nonnull %0, i32 noundef 0, i32 noundef 1, i32 noundef %131, i32 noundef %125) #5
  br label %153

132:                                              ; preds = %124
  %133 = add nsw i32 %.21449, -1
  %134 = load i32, ptr %9, align 4, !tbaa !12
  %135 = urem i32 %118, %134
  call void @libxsmm_generator_initialize_avx_mask(ptr noundef nonnull %0, i32 noundef %133, i32 noundef %135, i32 noundef %125) #5
  %136 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %137 = icmp eq i32 %136, 2
  br i1 %137, label %141, label %138

138:                                              ; preds = %132
  %139 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %140 = icmp eq i32 %139, 3
  br i1 %140, label %141, label %144

141:                                              ; preds = %138, %132
  %142 = load i32, ptr %9, align 4, !tbaa !12
  %143 = urem i32 %118, %142
  br label %144

144:                                              ; preds = %141, %138
  %.01438 = phi i32 [ %143, %141 ], [ %133, %138 ]
  %145 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %146 = icmp eq i32 %145, 2
  br i1 %146, label %150, label %147

147:                                              ; preds = %144
  %148 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %149 = icmp eq i32 %148, 3
  br i1 %149, label %150, label %153

150:                                              ; preds = %147, %144
  %151 = load i32, ptr %9, align 4, !tbaa !12
  %152 = urem i32 %118, %151
  br label %153

153:                                              ; preds = %128, %150, %147, %117
  %.11454 = phi i32 [ 0, %117 ], [ 1, %128 ], [ %152, %150 ], [ %133, %147 ]
  %.41451 = phi i32 [ %.21449, %117 ], [ %.21449, %128 ], [ %133, %150 ], [ %133, %147 ]
  %.21440 = phi i32 [ 0, %117 ], [ 1, %128 ], [ %.01438, %150 ], [ %.01438, %147 ]
  %154 = load i32, ptr %9, align 4, !tbaa !12
  %155 = add i32 %118, -1
  %156 = add i32 %155, %154
  %157 = udiv i32 %156, %154
  %or.cond7 = and i1 %spec.select, %19
  %158 = lshr i32 %.41451, 1
  %spec.select1502 = select i1 %or.cond7, i32 %158, i32 %.41451
  %spec.select1503 = select i1 %or.cond7, i32 %158, i32 0
  %159 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %160 = icmp eq i32 %159, 4
  br i1 %160, label %161, label %162

161:                                              ; preds = %153
  call void @libxsmm_generator_vcvtneps2bf8_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef 0) #5
  br label %176

162:                                              ; preds = %153
  %163 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %164 = icmp eq i32 %163, 2
  br i1 %164, label %165, label %169

165:                                              ; preds = %162
  %166 = load i32, ptr %74, align 4, !tbaa !20
  %.fr = freeze i32 %166
  %167 = icmp ugt i32 %.fr, 1102
  br i1 %167, label %176, label %switch.early.test

switch.early.test:                                ; preds = %165
  switch i32 %.fr, label %168 [
    i32 1053, label %176
    i32 1008, label %176
  ]

168:                                              ; preds = %switch.early.test
  call void @libxsmm_generator_vcvtneps2bf16_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef 0) #5
  br label %176

169:                                              ; preds = %162
  %170 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %171 = icmp eq i32 %170, 5
  br i1 %171, label %175, label %172

172:                                              ; preds = %169
  %173 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %174 = icmp eq i32 %173, 5
  br i1 %174, label %175, label %176

175:                                              ; preds = %172, %169
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_prep_stack(ptr noundef nonnull %0, i32 noundef 0) #5
  br label %176

176:                                              ; preds = %switch.early.test, %switch.early.test, %165, %168, %175, %172, %161
  %177 = icmp ugt i32 %157, %spec.select1502
  br i1 %177, label %178, label %186

178:                                              ; preds = %176
  %179 = udiv i32 %157, %spec.select1502
  %180 = mul i32 %179, %spec.select1502
  %.recomposed = urem i32 %157, %spec.select1502
  %181 = icmp eq i32 %.recomposed, 0
  %or.cond9 = select i1 %123, i1 %181, i1 false
  br i1 %or.cond9, label %182, label %select.unfold

182:                                              ; preds = %178
  %183 = add nsw i32 %179, -1
  %184 = mul i32 %183, %spec.select1502
  %185 = sub i32 %157, %184
  br label %select.unfold

186:                                              ; preds = %176
  %spec.select1588 = select i1 %123, i32 %157, i32 0
  %not.1590 = xor i1 %123, true
  %spec.select1589 = zext i1 %not.1590 to i32
  br label %select.unfold

select.unfold:                                    ; preds = %186, %178, %182
  %.01446 = phi i32 [ %spec.select1502, %182 ], [ %spec.select1502, %178 ], [ %157, %186 ]
  %.01445 = phi i32 [ %185, %182 ], [ %.recomposed, %178 ], [ %spec.select1588, %186 ]
  %.01444 = phi i32 [ %183, %182 ], [ %179, %178 ], [ %spec.select1589, %186 ]
  %.lhs.trunc = trunc i32 %spec.select1502 to i8
  %.rhs.trunc = trunc i32 %.01446 to i8
  %187 = udiv i8 %.lhs.trunc, %.rhs.trunc
  %188 = call i8 @llvm.umax.i8(i8 %187, i8 1)
  %.1507 = zext nneg i8 %188 to i32
  %189 = add i32 %120, -1
  %190 = add i32 %189, %.1507
  %191 = udiv i32 %190, %.1507
  %192 = urem i32 %120, %.1507
  %.not1473 = icmp eq i32 %192, 0
  %193 = add i32 %191, -1
  %194 = mul i32 %193, %.1507
  %195 = sub i32 %120, %194
  %.01442 = select i1 %.not1473, i32 %191, i32 %193
  %.01441 = select i1 %.not1473, i32 0, i32 %195
  %.not1474 = icmp eq i32 %.01444, 0
  br i1 %.not1474, label %.thread1572, label %196

196:                                              ; preds = %select.unfold
  %.not1475 = icmp eq i32 %.01444, 1
  br i1 %.not1475, label %199, label %197

197:                                              ; preds = %196
  %198 = load i32, ptr %95, align 4, !tbaa !27
  call void @libxsmm_generator_mateltwise_header_m_loop(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %198) #5
  br label %199

199:                                              ; preds = %197, %196
  %.not1713 = icmp eq i32 %.01446, 0
  %200 = getelementptr inbounds i8, ptr %3, i64 8
  br i1 %.not1713, label %.split1628.us, label %.split.us

.split.us:                                        ; preds = %199
  br i1 %19, label %.preheader1608.us.us, label %.split.us.split

.preheader1608.us.us:                             ; preds = %.split.us, %._crit_edge.split.us.us.us
  %.01615.us.us = phi i32 [ %203, %._crit_edge.split.us.us.us ], [ 0, %.split.us ]
  %201 = mul i32 %.01615.us.us, %.01446
  %202 = add i32 %201, %spec.select1503
  switch i16 %17, label %._crit_edge.split.us.us.us [
    i16 70, label %.lr.ph.split.us.split.us.us.us
    i16 20, label %.lr.ph.split.us.split.us.us.us
    i16 19, label %.lr.ph.split.us.split.us.us.us
    i16 18, label %.lr.ph.split.us.split.us.us.us
    i16 69, label %.lr.ph.split.us.split.us1612.us.us.preheader
    i16 21, label %.lr.ph.split.us.split.us1612.us.us.preheader
  ]

.lr.ph.split.us.split.us1612.us.us.preheader:     ; preds = %.preheader1608.us.us, %.preheader1608.us.us
  br label %.lr.ph.split.us.split.us1612.us.us

._crit_edge.split.us.us.us:                       ; preds = %.thread.us.us1614.us.us, %.thread.us.us.us.us, %.thread.us.us.us.us.us, %.preheader1608.us.us
  %203 = add nuw nsw i32 %.01615.us.us, 1
  %204 = icmp ult i32 %203, %.1507
  br i1 %204, label %.preheader1608.us.us, label %.split1628.us, !llvm.loop !34

.lr.ph.split.us.split.us.us.us:                   ; preds = %.preheader1608.us.us, %.preheader1608.us.us, %.preheader1608.us.us, %.preheader1608.us.us
  br i1 %spec.select, label %.thread.us.us.us.us.us, label %.thread.us.us.us.us

.thread.us.us.us.us.us:                           ; preds = %.lr.ph.split.us.split.us.us.us, %.thread.us.us.us.us.us
  %.014241609.us.us.us.us.us = phi i32 [ %209, %.thread.us.us.us.us.us ], [ 0, %.lr.ph.split.us.split.us.us.us ]
  %205 = load i8, ptr %10, align 4, !tbaa !5
  %206 = add i32 %.014241609.us.us.us.us.us, %201
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %205, i32 noundef %206, i32 noundef %206, i32 noundef %206) #5
  %207 = load i8, ptr %10, align 4, !tbaa !5
  %208 = add i32 %202, %.014241609.us.us.us.us.us
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %207, i32 noundef %208, i32 noundef %208, i32 noundef %208) #5
  %209 = add nuw i32 %.014241609.us.us.us.us.us, 1
  %exitcond1747.not = icmp eq i32 %209, %.01446
  br i1 %exitcond1747.not, label %._crit_edge.split.us.us.us, label %.thread.us.us.us.us.us, !llvm.loop !36

.thread.us.us.us.us:                              ; preds = %.lr.ph.split.us.split.us.us.us, %.thread.us.us.us.us
  %.014241609.us.us.us.us = phi i32 [ %212, %.thread.us.us.us.us ], [ 0, %.lr.ph.split.us.split.us.us.us ]
  %210 = load i8, ptr %10, align 4, !tbaa !5
  %211 = add i32 %.014241609.us.us.us.us, %201
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %210, i32 noundef %211, i32 noundef %211, i32 noundef %211) #5
  %212 = add nuw i32 %.014241609.us.us.us.us, 1
  %exitcond1746.not = icmp eq i32 %212, %.01446
  br i1 %exitcond1746.not, label %._crit_edge.split.us.us.us, label %.thread.us.us.us.us, !llvm.loop !36

.lr.ph.split.us.split.us1612.us.us:               ; preds = %.lr.ph.split.us.split.us1612.us.us.preheader, %.thread.us.us1614.us.us
  %.014241609.us.us1613.us.us = phi i32 [ %251, %.thread.us.us1614.us.us ], [ 0, %.lr.ph.split.us.split.us1612.us.us.preheader ]
  %213 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %214 = icmp eq i32 %213, 4
  br i1 %214, label %218, label %215

215:                                              ; preds = %.lr.ph.split.us.split.us1612.us.us
  %216 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %217 = icmp eq i32 %216, 5
  br i1 %217, label %218, label %221

218:                                              ; preds = %215, %.lr.ph.split.us.split.us1612.us.us
  %219 = load i32, ptr %74, align 4, !tbaa !20
  %220 = icmp ult i32 %219, 1101
  br i1 %220, label %223, label %221

221:                                              ; preds = %218, %215
  %222 = load i32, ptr %7, align 4, !tbaa !12
  br label %223

223:                                              ; preds = %221, %218
  %224 = phi i32 [ %222, %221 ], [ 545725200, %218 ]
  %225 = load i32, ptr %92, align 4, !tbaa !23
  %226 = load i32, ptr %9, align 4, !tbaa !12
  %227 = mul i32 %226, %.014241609.us.us1613.us.us
  %228 = load i32, ptr %200, align 4, !tbaa !37
  %229 = mul i32 %227, %228
  %230 = load i8, ptr %5, align 1, !tbaa !10
  %231 = add i32 %.014241609.us.us1613.us.us, %201
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %224, i32 noundef %225, i32 noundef 127, i32 noundef 0, i32 noundef %229, i8 noundef signext %230, i32 noundef %231, i32 noundef 0, i32 noundef 0, i32 noundef 0) #5
  %232 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %233 = icmp eq i32 %232, 4
  br i1 %233, label %249, label %234

234:                                              ; preds = %223
  %235 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %236 = icmp eq i32 %235, 5
  br i1 %236, label %247, label %237

237:                                              ; preds = %234
  %238 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %239 = icmp eq i32 %238, 3
  br i1 %239, label %245, label %240

240:                                              ; preds = %237
  %241 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %242 = icmp eq i32 %241, 2
  br i1 %242, label %243, label %.thread.us.us1614.us.us

243:                                              ; preds = %240
  %244 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %244, i32 noundef %231, i32 noundef %231) #5
  br label %.thread.us.us1614.us.us

245:                                              ; preds = %237
  %246 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %246, i32 noundef %231, i32 noundef %231) #5
  br label %.thread.us.us1614.us.us

247:                                              ; preds = %234
  %248 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %248, i32 noundef %231, i32 noundef %231, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %.thread.us.us1614.us.us

249:                                              ; preds = %223
  %250 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %250, i32 noundef %231, i32 noundef %231) #5
  br label %.thread.us.us1614.us.us

.thread.us.us1614.us.us:                          ; preds = %249, %247, %245, %243, %240
  %251 = add nuw i32 %.014241609.us.us1613.us.us, 1
  %exitcond1745.not = icmp eq i32 %251, %.01446
  br i1 %exitcond1745.not, label %._crit_edge.split.us.us.us, label %.lr.ph.split.us.split.us1612.us.us, !llvm.loop !36

.split.us.split:                                  ; preds = %.split.us
  br i1 %spec.select, label %.preheader1608.us.us1629, label %.split1628.us

.preheader1608.us.us1629:                         ; preds = %.split.us.split, %._crit_edge.split.split.us.us.us
  %.01615.us.us1630 = phi i32 [ %257, %._crit_edge.split.split.us.us.us ], [ 0, %.split.us.split ]
  %252 = mul i32 %.01615.us.us1630, %.01446
  %253 = add i32 %252, %spec.select1503
  br label %.thread.us1611.us.us

.thread.us1611.us.us:                             ; preds = %.thread.us1611.us.us, %.preheader1608.us.us1629
  %.014241609.us1610.us.us = phi i32 [ 0, %.preheader1608.us.us1629 ], [ %256, %.thread.us1611.us.us ]
  %254 = load i8, ptr %10, align 4, !tbaa !5
  %255 = add i32 %253, %.014241609.us1610.us.us
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %254, i32 noundef %255, i32 noundef %255, i32 noundef %255) #5
  %256 = add nuw i32 %.014241609.us1610.us.us, 1
  %exitcond.not = icmp eq i32 %256, %.01446
  br i1 %exitcond.not, label %._crit_edge.split.split.us.us.us, label %.thread.us1611.us.us, !llvm.loop !36

._crit_edge.split.split.us.us.us:                 ; preds = %.thread.us1611.us.us
  %257 = add nuw nsw i32 %.01615.us.us1630, 1
  %258 = icmp ult i32 %257, %.1507
  br i1 %258, label %.preheader1608.us.us1629, label %.split1628.us, !llvm.loop !34

.split1628.us:                                    ; preds = %._crit_edge.split.split.us.us.us, %._crit_edge.split.us.us.us, %.split.us.split, %199
  %.not1476 = icmp eq i32 %.01442, 0
  br i1 %.not1476, label %338, label %259

259:                                              ; preds = %.split1628.us
  %.not1477 = icmp eq i32 %.01442, 1
  br i1 %.not1477, label %262, label %260

260:                                              ; preds = %259
  %261 = load i32, ptr %96, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_header_n_loop(ptr noundef %0, ptr noundef %1, ptr noundef %3, i32 noundef %261) #5
  br label %262

262:                                              ; preds = %260, %259
  br i1 %.not1713, label %.split1635.us, label %.preheader1607.us

.preheader1607.us:                                ; preds = %262, %._crit_edge.us
  %.11632.us = phi i32 [ %324, %._crit_edge.us ], [ 0, %262 ]
  %263 = mul i32 %.11632.us, %.01446
  %264 = add i32 %263, %spec.select1503
  br label %265

265:                                              ; preds = %.preheader1607.us, %322
  %.114251631.us = phi i32 [ 0, %.preheader1607.us ], [ %323, %322 ]
  %266 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %267 = icmp eq i32 %266, 4
  br i1 %267, label %271, label %268

268:                                              ; preds = %265
  %269 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %270 = icmp eq i32 %269, 5
  br i1 %270, label %271, label %274

271:                                              ; preds = %268, %265
  %272 = load i32, ptr %74, align 4, !tbaa !20
  %273 = icmp ult i32 %272, 1101
  br i1 %273, label %276, label %274

274:                                              ; preds = %271, %268
  %275 = load i32, ptr %7, align 4, !tbaa !12
  br label %276

276:                                              ; preds = %274, %271
  %277 = phi i32 [ %275, %274 ], [ 545725200, %271 ]
  %278 = load i32, ptr %92, align 4, !tbaa !23
  %279 = load i32, ptr %9, align 4, !tbaa !12
  %280 = mul i32 %279, %.114251631.us
  %281 = load i32, ptr %33, align 1, !tbaa !19
  %282 = mul i32 %281, %.11632.us
  %283 = add i32 %282, %280
  %284 = load i32, ptr %200, align 4, !tbaa !37
  %285 = mul i32 %283, %284
  %286 = load i8, ptr %5, align 1, !tbaa !10
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %277, i32 noundef %278, i32 noundef 127, i32 noundef 0, i32 noundef %285, i8 noundef signext %286, i32 noundef %.01457, i32 noundef 0, i32 noundef 0, i32 noundef 0) #5
  %287 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %288 = icmp eq i32 %287, 4
  br i1 %288, label %304, label %289

289:                                              ; preds = %276
  %290 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %291 = icmp eq i32 %290, 5
  br i1 %291, label %302, label %292

292:                                              ; preds = %289
  %293 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %294 = icmp eq i32 %293, 3
  br i1 %294, label %300, label %295

295:                                              ; preds = %292
  %296 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %297 = icmp eq i32 %296, 2
  br i1 %297, label %298, label %306

298:                                              ; preds = %295
  %299 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %299, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %306

300:                                              ; preds = %292
  %301 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %301, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %306

302:                                              ; preds = %289
  %303 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %303, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %306

304:                                              ; preds = %276
  %305 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %305, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %306

306:                                              ; preds = %304, %302, %300, %298, %295
  br i1 %19, label %307, label %316

307:                                              ; preds = %306
  %308 = load i32, ptr %74, align 4, !tbaa !20
  %309 = icmp ugt i32 %308, 1050
  %or.cond17.us = and i1 %21, %309
  br i1 %or.cond17.us, label %.thread1566.us, label %310

310:                                              ; preds = %307
  br i1 %21, label %311, label %313

311:                                              ; preds = %310
  %312 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %312, i32 noundef %.01457, i32 noundef %.11456, i32 noundef %.01457) #5
  br label %313

313:                                              ; preds = %311, %310
  %314 = load i8, ptr %10, align 4, !tbaa !5
  %315 = add i32 %.114251631.us, %263
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01435, i8 noundef signext %314, i32 noundef %.01457, i32 noundef %315, i32 noundef %315) #5
  br label %316

316:                                              ; preds = %313, %306
  br i1 %spec.select, label %317, label %322

317:                                              ; preds = %316
  %318 = load i8, ptr %10, align 4, !tbaa !5
  %319 = add i32 %264, %.114251631.us
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01436, i8 noundef signext %318, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %319) #5
  br label %322

.thread1566.us:                                   ; preds = %307
  %320 = load i8, ptr %10, align 4, !tbaa !5
  %321 = add i32 %.114251631.us, %263
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %320, i32 noundef %.01457, i32 noundef %321, i32 noundef %321, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3) #5
  br label %322

322:                                              ; preds = %.thread1566.us, %317, %316
  %323 = add nuw i32 %.114251631.us, 1
  %exitcond1748.not = icmp eq i32 %323, %.01446
  br i1 %exitcond1748.not, label %._crit_edge.us, label %265, !llvm.loop !38

._crit_edge.us:                                   ; preds = %322
  %324 = add nuw nsw i32 %.11632.us, 1
  %325 = icmp ult i32 %324, %.1507
  br i1 %325, label %.preheader1607.us, label %.split1635.us, !llvm.loop !39

.split1635.us:                                    ; preds = %._crit_edge.us, %262
  %326 = getelementptr inbounds i8, ptr %3, i64 40
  %327 = load i32, ptr %326, align 4, !tbaa !40
  %328 = load i32, ptr %92, align 4, !tbaa !23
  %329 = load i32, ptr %33, align 1, !tbaa !19
  %330 = zext i32 %329 to i64
  %331 = zext i8 %188 to i64
  %332 = mul nuw nsw i64 %330, %331
  %333 = load i32, ptr %200, align 4, !tbaa !37
  %334 = zext i32 %333 to i64
  %335 = mul nuw nsw i64 %332, %334
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %327, i32 noundef %328, i64 noundef %335) #5
  br i1 %.not1477, label %338, label %336

336:                                              ; preds = %.split1635.us
  %337 = load i32, ptr %96, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_footer_n_loop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %337, i32 noundef %.01442) #5
  br label %338

338:                                              ; preds = %.split1635.us, %336, %.split1628.us
  %.not1478 = icmp eq i32 %.01441, 0
  %brmerge = or i1 %.not1478, %.not1713
  br i1 %brmerge, label %.loopexit1606, label %.preheader1604.us

.preheader1604.us:                                ; preds = %338, %._crit_edge.us1638
  %.21637.us = phi i32 [ %400, %._crit_edge.us1638 ], [ 0, %338 ]
  %339 = mul i32 %.21637.us, %.01446
  %340 = add i32 %339, %spec.select1503
  br label %341

341:                                              ; preds = %.preheader1604.us, %398
  %.214261636.us = phi i32 [ 0, %.preheader1604.us ], [ %399, %398 ]
  %342 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %343 = icmp eq i32 %342, 4
  br i1 %343, label %347, label %344

344:                                              ; preds = %341
  %345 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %346 = icmp eq i32 %345, 5
  br i1 %346, label %347, label %350

347:                                              ; preds = %344, %341
  %348 = load i32, ptr %74, align 4, !tbaa !20
  %349 = icmp ult i32 %348, 1101
  br i1 %349, label %352, label %350

350:                                              ; preds = %347, %344
  %351 = load i32, ptr %7, align 4, !tbaa !12
  br label %352

352:                                              ; preds = %350, %347
  %353 = phi i32 [ %351, %350 ], [ 545725200, %347 ]
  %354 = load i32, ptr %92, align 4, !tbaa !23
  %355 = load i32, ptr %9, align 4, !tbaa !12
  %356 = mul i32 %355, %.214261636.us
  %357 = load i32, ptr %33, align 1, !tbaa !19
  %358 = mul i32 %357, %.21637.us
  %359 = add i32 %358, %356
  %360 = load i32, ptr %200, align 4, !tbaa !37
  %361 = mul i32 %359, %360
  %362 = load i8, ptr %5, align 1, !tbaa !10
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %353, i32 noundef %354, i32 noundef 127, i32 noundef 0, i32 noundef %361, i8 noundef signext %362, i32 noundef %.01457, i32 noundef 0, i32 noundef 0, i32 noundef 0) #5
  %363 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %364 = icmp eq i32 %363, 4
  br i1 %364, label %380, label %365

365:                                              ; preds = %352
  %366 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %367 = icmp eq i32 %366, 5
  br i1 %367, label %378, label %368

368:                                              ; preds = %365
  %369 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %370 = icmp eq i32 %369, 3
  br i1 %370, label %376, label %371

371:                                              ; preds = %368
  %372 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %373 = icmp eq i32 %372, 2
  br i1 %373, label %374, label %382

374:                                              ; preds = %371
  %375 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %375, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %382

376:                                              ; preds = %368
  %377 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %377, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %382

378:                                              ; preds = %365
  %379 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %379, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %382

380:                                              ; preds = %352
  %381 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %381, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %382

382:                                              ; preds = %380, %378, %376, %374, %371
  br i1 %19, label %383, label %392

383:                                              ; preds = %382
  %384 = load i32, ptr %74, align 4, !tbaa !20
  %385 = icmp ugt i32 %384, 1050
  %or.cond19.us = and i1 %21, %385
  br i1 %or.cond19.us, label %.thread1569.us, label %386

386:                                              ; preds = %383
  br i1 %21, label %387, label %389

387:                                              ; preds = %386
  %388 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %388, i32 noundef %.01457, i32 noundef %.11456, i32 noundef %.01457) #5
  br label %389

389:                                              ; preds = %387, %386
  %390 = load i8, ptr %10, align 4, !tbaa !5
  %391 = add i32 %.214261636.us, %339
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01435, i8 noundef signext %390, i32 noundef %.01457, i32 noundef %391, i32 noundef %391) #5
  br label %392

392:                                              ; preds = %389, %382
  br i1 %spec.select, label %393, label %398

393:                                              ; preds = %392
  %394 = load i8, ptr %10, align 4, !tbaa !5
  %395 = add i32 %340, %.214261636.us
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01436, i8 noundef signext %394, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %395) #5
  br label %398

.thread1569.us:                                   ; preds = %383
  %396 = load i8, ptr %10, align 4, !tbaa !5
  %397 = add i32 %.214261636.us, %339
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %396, i32 noundef %.01457, i32 noundef %397, i32 noundef %397, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3) #5
  br label %398

398:                                              ; preds = %.thread1569.us, %393, %392
  %399 = add nuw i32 %.214261636.us, 1
  %exitcond1749.not = icmp eq i32 %399, %.01446
  br i1 %exitcond1749.not, label %._crit_edge.us1638, label %341, !llvm.loop !41

._crit_edge.us1638:                               ; preds = %398
  %400 = add nuw i32 %.21637.us, 1
  %exitcond1750.not = icmp eq i32 %400, %.01441
  br i1 %exitcond1750.not, label %.loopexit1606, label %.preheader1604.us, !llvm.loop !42

.loopexit1606:                                    ; preds = %._crit_edge.us1638, %338
  br i1 %.not1476, label %414, label %401

401:                                              ; preds = %.loopexit1606
  %402 = getelementptr inbounds i8, ptr %3, i64 44
  %403 = load i32, ptr %402, align 4, !tbaa !43
  %404 = load i32, ptr %92, align 4, !tbaa !23
  %405 = load i32, ptr %33, align 1, !tbaa !19
  %406 = zext i32 %405 to i64
  %407 = zext i8 %188 to i64
  %408 = zext i32 %.01442 to i64
  %409 = load i32, ptr %200, align 4, !tbaa !37
  %410 = zext i32 %409 to i64
  %411 = mul nuw nsw i64 %408, %407
  %412 = mul i64 %411, %406
  %413 = mul nuw nsw i64 %412, %410
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %403, i32 noundef %404, i64 noundef %413) #5
  br label %414

414:                                              ; preds = %401, %.loopexit1606
  %415 = icmp ugt i8 %187, 1
  br i1 %415, label %.preheader1603.lr.ph, label %.preheader1602

.preheader1603.lr.ph:                             ; preds = %414
  br i1 %.not1713, label %._crit_edge, label %.preheader1603.lr.ph.split.us

.preheader1603.lr.ph.split.us:                    ; preds = %.preheader1603.lr.ph
  br i1 %spec.select, label %.preheader1603.us.us, label %.preheader1603.lr.ph.split.us.split

.preheader1603.us.us:                             ; preds = %.preheader1603.lr.ph.split.us, %._crit_edge.split.us.us.us1651
  %.31641.us.us = phi i32 [ %421, %._crit_edge.split.us.us.us1651 ], [ 1, %.preheader1603.lr.ph.split.us ]
  %416 = mul i32 %.31641.us.us, %.01446
  br i1 %19, label %.lr.ph.split.us.split.us.us.us1652, label %.lr.ph.split.us.split.us1650.us

.lr.ph.split.us.split.us1650.us:                  ; preds = %.preheader1603.us.us, %.lr.ph.split.us.split.us1650.us
  %.314271639.us.us1646.us = phi i32 [ %420, %.lr.ph.split.us.split.us1650.us ], [ 0, %.preheader1603.us.us ]
  %417 = load i8, ptr %10, align 4, !tbaa !5
  %418 = add i32 %.314271639.us.us1646.us, %spec.select1503
  %419 = add i32 %418, %416
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %417, i32 noundef %418, i32 noundef %419, i32 noundef %418) #5
  %420 = add nuw i32 %.314271639.us.us1646.us, 1
  %exitcond1752.not = icmp eq i32 %420, %.01446
  br i1 %exitcond1752.not, label %._crit_edge.split.us.us.us1651, label %.lr.ph.split.us.split.us1650.us, !llvm.loop !44

._crit_edge.split.us.us.us1651:                   ; preds = %.lr.ph.split.us.split.us1650.us, %.lr.ph.split.us.split.us.us.us1652
  %421 = add nuw nsw i32 %.31641.us.us, 1
  %422 = icmp ult i32 %421, %.1507
  br i1 %422, label %.preheader1603.us.us, label %.lr.ph, !llvm.loop !45

.lr.ph.split.us.split.us.us.us1652:               ; preds = %.preheader1603.us.us, %.lr.ph.split.us.split.us.us.us1652
  %.314271639.us.us.us.us = phi i32 [ %428, %.lr.ph.split.us.split.us.us.us1652 ], [ 0, %.preheader1603.us.us ]
  %423 = load i8, ptr %10, align 4, !tbaa !5
  %424 = add i32 %.314271639.us.us.us.us, %416
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %423, i32 noundef %.314271639.us.us.us.us, i32 noundef %424, i32 noundef %.314271639.us.us.us.us) #5
  %425 = load i8, ptr %10, align 4, !tbaa !5
  %426 = add i32 %.314271639.us.us.us.us, %spec.select1503
  %427 = add i32 %426, %416
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %425, i32 noundef %426, i32 noundef %427, i32 noundef %426) #5
  %428 = add nuw i32 %.314271639.us.us.us.us, 1
  %exitcond1753.not = icmp eq i32 %428, %.01446
  br i1 %exitcond1753.not, label %._crit_edge.split.us.us.us1651, label %.lr.ph.split.us.split.us.us.us1652, !llvm.loop !44

.preheader1603.lr.ph.split.us.split:              ; preds = %.preheader1603.lr.ph.split.us
  br i1 %19, label %.preheader1603.us.us1654, label %.lr.ph

.preheader1603.us.us1654:                         ; preds = %.preheader1603.lr.ph.split.us.split, %._crit_edge.split.split.us.us.us1656
  %.31641.us.us1655 = phi i32 [ %434, %._crit_edge.split.split.us.us.us1656 ], [ 1, %.preheader1603.lr.ph.split.us.split ]
  %429 = mul i32 %.31641.us.us1655, %.01446
  br label %430

430:                                              ; preds = %430, %.preheader1603.us.us1654
  %.314271639.us1640.us.us = phi i32 [ 0, %.preheader1603.us.us1654 ], [ %433, %430 ]
  %431 = load i8, ptr %10, align 4, !tbaa !5
  %432 = add i32 %.314271639.us1640.us.us, %429
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %431, i32 noundef %.314271639.us1640.us.us, i32 noundef %432, i32 noundef %.314271639.us1640.us.us) #5
  %433 = add nuw i32 %.314271639.us1640.us.us, 1
  %exitcond1751.not = icmp eq i32 %433, %.01446
  br i1 %exitcond1751.not, label %._crit_edge.split.split.us.us.us1656, label %430, !llvm.loop !44

._crit_edge.split.split.us.us.us1656:             ; preds = %430
  %434 = add nuw nsw i32 %.31641.us.us1655, 1
  %435 = icmp ult i32 %434, %.1507
  br i1 %435, label %.preheader1603.us.us1654, label %.lr.ph, !llvm.loop !45

.preheader1602:                                   ; preds = %414
  br i1 %.not1713, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %._crit_edge.split.split.us.us.us1656, %._crit_edge.split.us.us.us1651, %.preheader1603.lr.ph.split.us.split, %.preheader1602
  %436 = getelementptr inbounds i8, ptr %3, i64 20
  br label %437

437:                                              ; preds = %.lr.ph, %632
  %.414281657 = phi i32 [ 0, %.lr.ph ], [ %633, %632 ]
  br i1 %19, label %438, label %535

438:                                              ; preds = %437
  br i1 %.not, label %487, label %439

439:                                              ; preds = %438
  %440 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %441 = icmp eq i32 %440, 4
  br i1 %441, label %445, label %442

442:                                              ; preds = %439
  %443 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %444 = icmp eq i32 %443, 5
  br i1 %444, label %445, label %448

445:                                              ; preds = %442, %439
  %446 = load i32, ptr %74, align 4, !tbaa !20
  %447 = icmp ult i32 %446, 1101
  br i1 %447, label %450, label %448

448:                                              ; preds = %445, %442
  %449 = load i32, ptr %8, align 4, !tbaa !12
  br label %450

450:                                              ; preds = %445, %448
  %451 = phi i32 [ %449, %448 ], [ 545725200, %445 ]
  %452 = load i32, ptr %93, align 4, !tbaa !25
  %453 = load i32, ptr %9, align 4, !tbaa !12
  %454 = mul i32 %453, %.414281657
  %455 = load i32, ptr %436, align 4, !tbaa !32
  %456 = mul i32 %454, %455
  %457 = load i8, ptr %6, align 1, !tbaa !10
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %451, i32 noundef %452, i32 noundef 127, i32 noundef 0, i32 noundef %456, i8 noundef signext %457, i32 noundef %.01457, i32 noundef 0, i32 noundef 0, i32 noundef 0) #5
  %458 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %459 = icmp eq i32 %458, 4
  br i1 %459, label %460, label %462

460:                                              ; preds = %450
  %461 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %461, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %477

462:                                              ; preds = %450
  %463 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %464 = icmp eq i32 %463, 5
  br i1 %464, label %465, label %467

465:                                              ; preds = %462
  %466 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %466, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %477

467:                                              ; preds = %462
  %468 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %469 = icmp eq i32 %468, 3
  br i1 %469, label %470, label %472

470:                                              ; preds = %467
  %471 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %471, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %477

472:                                              ; preds = %467
  %473 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %474 = icmp eq i32 %473, 2
  br i1 %474, label %475, label %477

475:                                              ; preds = %472
  %476 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %476, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %477

477:                                              ; preds = %465, %472, %475, %470, %460
  %478 = load i32, ptr %74, align 4, !tbaa !20
  %479 = icmp ugt i32 %478, 1050
  %or.cond21 = and i1 %21, %479
  br i1 %or.cond21, label %480, label %482

480:                                              ; preds = %477
  %481 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %481, i32 noundef %.01457, i32 noundef %.414281657, i32 noundef %.414281657, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3) #5
  br label %487

482:                                              ; preds = %477
  br i1 %21, label %483, label %485

483:                                              ; preds = %482
  %484 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %484, i32 noundef %.01457, i32 noundef %.11456, i32 noundef %.01457) #5
  br label %485

485:                                              ; preds = %483, %482
  %486 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01435, i8 noundef signext %486, i32 noundef %.01457, i32 noundef %.414281657, i32 noundef %.414281657) #5
  br label %487

487:                                              ; preds = %480, %485, %438
  %488 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %489 = icmp eq i32 %488, 4
  br i1 %489, label %490, label %492

490:                                              ; preds = %487
  %491 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %491, i32 noundef %.414281657, i32 noundef %.414281657, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0) #5
  br label %516

492:                                              ; preds = %487
  %493 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %494 = icmp eq i32 %493, 5
  br i1 %494, label %495, label %497

495:                                              ; preds = %492
  %496 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %496, i32 noundef %.414281657, i32 noundef %.414281657, i32 noundef %.01458, i32 noundef 29, i32 noundef 27, i32 noundef 28, i32 noundef 7, i32 noundef 6, i32 noundef 5) #5
  br label %516

497:                                              ; preds = %492
  %498 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %499 = icmp eq i32 %498, 3
  br i1 %499, label %500, label %506

500:                                              ; preds = %497
  %501 = load i8, ptr %10, align 4, !tbaa !5
  %502 = load i32, ptr %74, align 4, !tbaa !20
  %503 = icmp ugt i32 %502, 1100
  %504 = zext i1 %503 to i32
  %505 = zext i1 %503 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %0, i32 noundef 671954205, i8 noundef signext %501, i32 noundef %.414281657, i32 noundef %.414281657, i32 noundef 0, i32 noundef %504, i8 noundef zeroext %505, i32 noundef 0) #5
  br label %516

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

509:                                              ; preds = %506
  %510 = load i32, ptr %74, align 4, !tbaa !20
  %.fr1591 = freeze i32 %510
  %511 = icmp ugt i32 %.fr1591, 1102
  br i1 %511, label %514, label %switch.early.test1540

switch.early.test1540:                            ; preds = %509
  switch i32 %.fr1591, label %512 [
    i32 1053, label %514
    i32 1008, label %514
  ]

512:                                              ; preds = %switch.early.test1540
  %513 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %513, i32 noundef %.414281657, i32 noundef %.414281657, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 2, i32 noundef 3, i32 noundef 0) #5
  br label %516

514:                                              ; preds = %switch.early.test1540, %switch.early.test1540, %509
  %515 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %515, i32 noundef %.414281657, i32 noundef %.414281657) #5
  br label %516

516:                                              ; preds = %495, %506, %514, %512, %500, %490
  %517 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %518 = icmp eq i32 %517, 4
  br i1 %518, label %522, label %519

519:                                              ; preds = %516
  %520 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %521 = icmp eq i32 %520, 5
  br i1 %521, label %522, label %525

522:                                              ; preds = %519, %516
  %523 = load i32, ptr %74, align 4, !tbaa !20
  %524 = icmp ult i32 %523, 1101
  br i1 %524, label %527, label %525

525:                                              ; preds = %522, %519
  %526 = load i32, ptr %8, align 4, !tbaa !12
  br label %527

527:                                              ; preds = %522, %525
  %528 = phi i32 [ %526, %525 ], [ 545725200, %522 ]
  %529 = load i32, ptr %93, align 4, !tbaa !25
  %530 = load i32, ptr %9, align 4, !tbaa !12
  %531 = mul i32 %530, %.414281657
  %532 = load i32, ptr %436, align 4, !tbaa !32
  %533 = mul i32 %531, %532
  %534 = load i8, ptr %6, align 1, !tbaa !10
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %528, i32 noundef %529, i32 noundef 127, i32 noundef 0, i32 noundef %533, i8 noundef signext %534, i32 noundef %.414281657, i32 noundef 0, i32 noundef 0, i32 noundef 1) #5
  br label %535

535:                                              ; preds = %527, %437
  br i1 %spec.select, label %536, label %632

536:                                              ; preds = %535
  br i1 %.not, label %578, label %537

537:                                              ; preds = %536
  %538 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %539 = icmp eq i32 %538, 4
  br i1 %539, label %543, label %540

540:                                              ; preds = %537
  %541 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %542 = icmp eq i32 %541, 5
  br i1 %542, label %543, label %546

543:                                              ; preds = %540, %537
  %544 = load i32, ptr %74, align 4, !tbaa !20
  %545 = icmp ult i32 %544, 1101
  br i1 %545, label %548, label %546

546:                                              ; preds = %543, %540
  %547 = load i32, ptr %8, align 4, !tbaa !12
  br label %548

548:                                              ; preds = %543, %546
  %549 = phi i32 [ %547, %546 ], [ 545725200, %543 ]
  %550 = load i32, ptr %94, align 4, !tbaa !26
  %551 = load i32, ptr %9, align 4, !tbaa !12
  %552 = mul i32 %551, %.414281657
  %553 = load i32, ptr %436, align 4, !tbaa !32
  %554 = mul i32 %552, %553
  %555 = load i8, ptr %6, align 1, !tbaa !10
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %549, i32 noundef %550, i32 noundef 127, i32 noundef 0, i32 noundef %554, i8 noundef signext %555, i32 noundef %.01457, i32 noundef 0, i32 noundef 0, i32 noundef 0) #5
  %556 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %557 = icmp eq i32 %556, 4
  br i1 %557, label %558, label %560

558:                                              ; preds = %548
  %559 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %559, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %575

560:                                              ; preds = %548
  %561 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %562 = icmp eq i32 %561, 5
  br i1 %562, label %563, label %565

563:                                              ; preds = %560
  %564 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %564, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %575

565:                                              ; preds = %560
  %566 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %567 = icmp eq i32 %566, 3
  br i1 %567, label %568, label %570

568:                                              ; preds = %565
  %569 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %569, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %575

570:                                              ; preds = %565
  %571 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %572 = icmp eq i32 %571, 2
  br i1 %572, label %573, label %575

573:                                              ; preds = %570
  %574 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %574, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %575

575:                                              ; preds = %563, %570, %573, %568, %558
  %576 = load i8, ptr %10, align 4, !tbaa !5
  %577 = add i32 %.414281657, %spec.select1503
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %576, i32 noundef %.01457, i32 noundef %577, i32 noundef %577) #5
  br label %578

578:                                              ; preds = %575, %536
  %579 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %580 = icmp eq i32 %579, 4
  br i1 %580, label %581, label %584

581:                                              ; preds = %578
  %582 = load i8, ptr %10, align 4, !tbaa !5
  %583 = add i32 %.414281657, %spec.select1503
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %582, i32 noundef %583, i32 noundef %583, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0) #5
  br label %612

584:                                              ; preds = %578
  %585 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %586 = icmp eq i32 %585, 5
  br i1 %586, label %587, label %590

587:                                              ; preds = %584
  %588 = load i8, ptr %10, align 4, !tbaa !5
  %589 = add i32 %.414281657, %spec.select1503
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %588, i32 noundef %589, i32 noundef %589, i32 noundef %.01458, i32 noundef 29, i32 noundef 27, i32 noundef 28, i32 noundef 7, i32 noundef 6, i32 noundef 5) #5
  br label %612

590:                                              ; preds = %584
  %591 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %592 = icmp eq i32 %591, 3
  br i1 %592, label %593, label %600

593:                                              ; preds = %590
  %594 = load i8, ptr %10, align 4, !tbaa !5
  %595 = add i32 %.414281657, %spec.select1503
  %596 = load i32, ptr %74, align 4, !tbaa !20
  %597 = icmp ugt i32 %596, 1100
  %598 = zext i1 %597 to i32
  %599 = zext i1 %597 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %0, i32 noundef 671954205, i8 noundef signext %594, i32 noundef %595, i32 noundef %595, i32 noundef 0, i32 noundef %598, i8 noundef zeroext %599, i32 noundef 0) #5
  br label %612

600:                                              ; preds = %590
  %601 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %602 = icmp eq i32 %601, 2
  br i1 %602, label %603, label %612

603:                                              ; preds = %600
  %604 = load i32, ptr %74, align 4, !tbaa !20
  %.fr1592 = freeze i32 %604
  %605 = icmp ugt i32 %.fr1592, 1102
  br i1 %605, label %609, label %switch.early.test1543

switch.early.test1543:                            ; preds = %603
  switch i32 %.fr1592, label %606 [
    i32 1053, label %609
    i32 1008, label %609
  ]

606:                                              ; preds = %switch.early.test1543
  %607 = load i8, ptr %10, align 4, !tbaa !5
  %608 = add i32 %.414281657, %spec.select1503
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %607, i32 noundef %608, i32 noundef %608, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 2, i32 noundef 3, i32 noundef 0) #5
  br label %612

609:                                              ; preds = %switch.early.test1543, %switch.early.test1543, %603
  %610 = load i8, ptr %10, align 4, !tbaa !5
  %611 = add i32 %.414281657, %spec.select1503
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %610, i32 noundef %611, i32 noundef %611) #5
  br label %612

612:                                              ; preds = %587, %600, %609, %606, %593, %581
  %613 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %614 = icmp eq i32 %613, 4
  br i1 %614, label %618, label %615

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

618:                                              ; preds = %615, %612
  %619 = load i32, ptr %74, align 4, !tbaa !20
  %620 = icmp ult i32 %619, 1101
  br i1 %620, label %623, label %621

621:                                              ; preds = %618, %615
  %622 = load i32, ptr %8, align 4, !tbaa !12
  br label %623

623:                                              ; preds = %618, %621
  %624 = phi i32 [ %622, %621 ], [ 545725200, %618 ]
  %625 = load i32, ptr %94, align 4, !tbaa !26
  %626 = load i32, ptr %9, align 4, !tbaa !12
  %627 = mul i32 %626, %.414281657
  %628 = load i32, ptr %436, align 4, !tbaa !32
  %629 = mul i32 %627, %628
  %630 = load i8, ptr %6, align 1, !tbaa !10
  %631 = add i32 %.414281657, %spec.select1503
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %624, i32 noundef %625, i32 noundef 127, i32 noundef 0, i32 noundef %629, i8 noundef signext %630, i32 noundef %631, i32 noundef 0, i32 noundef 0, i32 noundef 1) #5
  br label %632

632:                                              ; preds = %535, %623
  %633 = add nuw i32 %.414281657, 1
  %exitcond1754.not = icmp eq i32 %633, %.01446
  br i1 %exitcond1754.not, label %._crit_edge, label %437, !llvm.loop !46

._crit_edge:                                      ; preds = %632, %.preheader1603.lr.ph, %.preheader1602
  br i1 %.not1475, label %.thread1575, label %634

634:                                              ; preds = %._crit_edge
  %635 = getelementptr inbounds i8, ptr %3, i64 40
  %636 = load i32, ptr %635, align 4, !tbaa !40
  %637 = load i32, ptr %92, align 4, !tbaa !23
  %638 = zext i32 %.01446 to i64
  %639 = load i32, ptr %9, align 4, !tbaa !12
  %640 = zext i32 %639 to i64
  %641 = mul nuw nsw i64 %640, %638
  %642 = load i32, ptr %200, align 4, !tbaa !37
  %643 = zext i32 %642 to i64
  %644 = mul nuw nsw i64 %641, %643
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %636, i32 noundef %637, i64 noundef %644) #5
  br i1 %19, label %645, label %655

645:                                              ; preds = %634
  %646 = load i32, ptr %635, align 4, !tbaa !40
  %647 = load i32, ptr %93, align 4, !tbaa !25
  %648 = load i32, ptr %9, align 4, !tbaa !12
  %649 = zext i32 %648 to i64
  %650 = mul nuw nsw i64 %649, %638
  %651 = getelementptr inbounds i8, ptr %3, i64 20
  %652 = load i32, ptr %651, align 4, !tbaa !32
  %653 = zext i32 %652 to i64
  %654 = mul nuw nsw i64 %650, %653
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %646, i32 noundef %647, i64 noundef %654) #5
  br label %655

655:                                              ; preds = %645, %634
  br i1 %spec.select, label %656, label %666

656:                                              ; preds = %655
  %657 = load i32, ptr %635, align 4, !tbaa !40
  %658 = load i32, ptr %94, align 4, !tbaa !26
  %659 = load i32, ptr %9, align 4, !tbaa !12
  %660 = zext i32 %659 to i64
  %661 = mul nuw nsw i64 %660, %638
  %662 = getelementptr inbounds i8, ptr %3, i64 20
  %663 = load i32, ptr %662, align 4, !tbaa !32
  %664 = zext i32 %663 to i64
  %665 = mul nuw nsw i64 %661, %664
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %657, i32 noundef %658, i64 noundef %665) #5
  br label %666

666:                                              ; preds = %656, %655
  %667 = load i32, ptr %95, align 4, !tbaa !27
  call void @libxsmm_generator_mateltwise_footer_m_loop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %667, i32 noundef %.01444) #5
  %.not1479 = icmp eq i32 %.01445, 0
  br i1 %.not1479, label %.loopexit, label %.preheader1601.us.preheader

.thread1575:                                      ; preds = %._crit_edge
  %.not14791576 = icmp eq i32 %.01445, 0
  br i1 %.not14791576, label %.loopexit, label %.thread1577

.thread1572:                                      ; preds = %select.unfold
  %.not14791573 = icmp eq i32 %.01445, 0
  br i1 %.not14791573, label %.loopexit, label %.preheader1601.us.preheader

.thread1577:                                      ; preds = %.thread1575
  %668 = getelementptr inbounds i8, ptr %3, i64 40
  %669 = load i32, ptr %668, align 4, !tbaa !40
  %670 = load i32, ptr %92, align 4, !tbaa !23
  %671 = zext i32 %.01446 to i64
  %672 = load i32, ptr %9, align 4, !tbaa !12
  %673 = zext i32 %672 to i64
  %674 = mul nuw nsw i64 %673, %671
  %675 = load i32, ptr %200, align 4, !tbaa !37
  %676 = zext i32 %675 to i64
  %677 = mul nuw nsw i64 %674, %676
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %669, i32 noundef %670, i64 noundef %677) #5
  br i1 %19, label %678, label %688

678:                                              ; preds = %.thread1577
  %679 = load i32, ptr %668, align 4, !tbaa !40
  %680 = load i32, ptr %93, align 4, !tbaa !25
  %681 = load i32, ptr %9, align 4, !tbaa !12
  %682 = zext i32 %681 to i64
  %683 = mul nuw nsw i64 %682, %671
  %684 = getelementptr inbounds i8, ptr %3, i64 20
  %685 = load i32, ptr %684, align 4, !tbaa !32
  %686 = zext i32 %685 to i64
  %687 = mul nuw nsw i64 %683, %686
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %679, i32 noundef %680, i64 noundef %687) #5
  br label %688

688:                                              ; preds = %678, %.thread1577
  br i1 %spec.select, label %689, label %.preheader1601.us.preheader

689:                                              ; preds = %688
  %690 = load i32, ptr %668, align 4, !tbaa !40
  %691 = load i32, ptr %94, align 4, !tbaa !26
  %692 = load i32, ptr %9, align 4, !tbaa !12
  %693 = zext i32 %692 to i64
  %694 = mul nuw nsw i64 %693, %671
  %695 = getelementptr inbounds i8, ptr %3, i64 20
  %696 = load i32, ptr %695, align 4, !tbaa !32
  %697 = zext i32 %696 to i64
  %698 = mul nuw nsw i64 %694, %697
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %690, i32 noundef %691, i64 noundef %698) #5
  br label %.preheader1601.us.preheader

.preheader1601.us.preheader:                      ; preds = %689, %688, %.thread1572, %666
  %699 = add i32 %.01445, -1
  %700 = getelementptr inbounds i8, ptr %3, i64 8
  br label %.preheader1601.us

.preheader1601.us:                                ; preds = %.preheader1601.us.preheader, %._crit_edge1662.us
  %.41667.us = phi i32 [ %703, %._crit_edge1662.us ], [ 0, %.preheader1601.us.preheader ]
  %701 = mul i32 %.41667.us, %.01446
  %702 = add i32 %701, %spec.select1503
  switch i16 %17, label %._crit_edge1662.us [
    i16 70, label %.lr.ph1661.split.us.us
    i16 20, label %.lr.ph1661.split.us.us
    i16 19, label %.lr.ph1661.split.us.us
    i16 18, label %.lr.ph1661.split.us.us
    i16 69, label %.lr.ph1661.split.us1663.us.preheader
    i16 21, label %.lr.ph1661.split.us1663.us.preheader
  ]

.lr.ph1661.split.us1663.us.preheader:             ; preds = %.preheader1601.us, %.preheader1601.us
  br label %.lr.ph1661.split.us1663.us

._crit_edge1662.us:                               ; preds = %.thread1579.us1665.us, %.thread1579.us.us1673, %.thread1579.us.us.us, %.preheader1601.us
  %703 = add nuw nsw i32 %.41667.us, 1
  %704 = icmp ult i32 %703, %.1507
  br i1 %704, label %.preheader1601.us, label %.split1678.us, !llvm.loop !47

.lr.ph1661.split.us.us:                           ; preds = %.preheader1601.us, %.preheader1601.us, %.preheader1601.us, %.preheader1601.us
  br i1 %spec.select, label %.thread1579.us.us.us, label %.thread1579.us.us1673

.thread1579.us.us1673:                            ; preds = %.lr.ph1661.split.us.us, %.thread1579.us.us1673
  %.514291658.us.us1674 = phi i32 [ %707, %.thread1579.us.us1673 ], [ 0, %.lr.ph1661.split.us.us ]
  %705 = load i8, ptr %10, align 4, !tbaa !5
  %706 = add i32 %.514291658.us.us1674, %701
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %705, i32 noundef %706, i32 noundef %706, i32 noundef %706) #5
  %707 = add nuw i32 %.514291658.us.us1674, 1
  %exitcond1756.not = icmp eq i32 %707, %.01445
  br i1 %exitcond1756.not, label %._crit_edge1662.us, label %.thread1579.us.us1673, !llvm.loop !48

.lr.ph1661.split.us1663.us:                       ; preds = %.lr.ph1661.split.us1663.us.preheader, %.thread1579.us1665.us
  %.514291658.us1664.us = phi i32 [ %751, %.thread1579.us1665.us ], [ 0, %.lr.ph1661.split.us1663.us.preheader ]
  %708 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %709 = icmp eq i32 %708, 4
  br i1 %709, label %713, label %710

710:                                              ; preds = %.lr.ph1661.split.us1663.us
  %711 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %712 = icmp eq i32 %711, 5
  br i1 %712, label %713, label %717

713:                                              ; preds = %710, %.lr.ph1661.split.us1663.us
  %714 = load i32, ptr %74, align 4, !tbaa !20
  %715 = icmp ugt i32 %714, 1100
  %716 = icmp eq i32 %.514291658.us1664.us, %699
  %or.cond1513.us.us = select i1 %123, i1 %716, i1 false
  %or.cond = select i1 %715, i1 true, i1 %or.cond1513.us.us
  br i1 %or.cond, label %717, label %719

717:                                              ; preds = %713, %710
  %718 = load i32, ptr %7, align 4, !tbaa !12
  br label %719

719:                                              ; preds = %713, %717
  %720 = phi i32 [ %718, %717 ], [ 545725200, %713 ]
  %721 = load i32, ptr %92, align 4, !tbaa !23
  %722 = load i32, ptr %9, align 4, !tbaa !12
  %723 = mul i32 %722, %.514291658.us1664.us
  %724 = load i32, ptr %700, align 4, !tbaa !37
  %725 = mul i32 %723, %724
  %726 = load i8, ptr %5, align 1, !tbaa !10
  %727 = add i32 %.514291658.us1664.us, %701
  %728 = icmp eq i32 %.514291658.us1664.us, %699
  %729 = and i1 %123, %728
  %730 = zext i1 %729 to i32
  %731 = select i1 %729, i32 %.21440, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %720, i32 noundef %721, i32 noundef 127, i32 noundef 0, i32 noundef %725, i8 noundef signext %726, i32 noundef %727, i32 noundef %730, i32 noundef %731, i32 noundef 0) #5
  %732 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %733 = icmp eq i32 %732, 4
  br i1 %733, label %749, label %734

734:                                              ; preds = %719
  %735 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %736 = icmp eq i32 %735, 5
  br i1 %736, label %747, label %737

737:                                              ; preds = %734
  %738 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %739 = icmp eq i32 %738, 3
  br i1 %739, label %745, label %740

740:                                              ; preds = %737
  %741 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %742 = icmp eq i32 %741, 2
  br i1 %742, label %743, label %.thread1579.us1665.us

743:                                              ; preds = %740
  %744 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %744, i32 noundef %727, i32 noundef %727) #5
  br label %.thread1579.us1665.us

745:                                              ; preds = %737
  %746 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %746, i32 noundef %727, i32 noundef %727) #5
  br label %.thread1579.us1665.us

747:                                              ; preds = %734
  %748 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %748, i32 noundef %727, i32 noundef %727, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %.thread1579.us1665.us

749:                                              ; preds = %719
  %750 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %750, i32 noundef %727, i32 noundef %727) #5
  br label %.thread1579.us1665.us

.thread1579.us1665.us:                            ; preds = %749, %747, %745, %743, %740
  %751 = add nuw i32 %.514291658.us1664.us, 1
  %exitcond1755.not = icmp eq i32 %751, %.01445
  br i1 %exitcond1755.not, label %._crit_edge1662.us, label %.lr.ph1661.split.us1663.us, !llvm.loop !48

.thread1579.us.us.us:                             ; preds = %.lr.ph1661.split.us.us, %.thread1579.us.us.us
  %.514291658.us.us.us = phi i32 [ %756, %.thread1579.us.us.us ], [ 0, %.lr.ph1661.split.us.us ]
  %752 = load i8, ptr %10, align 4, !tbaa !5
  %753 = add i32 %.514291658.us.us.us, %701
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %752, i32 noundef %753, i32 noundef %753, i32 noundef %753) #5
  %754 = load i8, ptr %10, align 4, !tbaa !5
  %755 = add i32 %702, %.514291658.us.us.us
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574231, i8 noundef signext %754, i32 noundef %755, i32 noundef %755, i32 noundef %755) #5
  %756 = add nuw i32 %.514291658.us.us.us, 1
  %exitcond1757.not = icmp eq i32 %756, %.01445
  br i1 %exitcond1757.not, label %._crit_edge1662.us, label %.thread1579.us.us.us, !llvm.loop !48

.split1678.us:                                    ; preds = %._crit_edge1662.us
  %.not1480 = icmp eq i32 %.01442, 0
  br i1 %.not1480, label %840, label %757

757:                                              ; preds = %.split1678.us
  %.not1481 = icmp eq i32 %.01442, 1
  br i1 %.not1481, label %.preheader1600.us.preheader, label %758

758:                                              ; preds = %757
  %759 = load i32, ptr %96, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_header_n_loop(ptr noundef %0, ptr noundef %1, ptr noundef %3, i32 noundef %759) #5
  br label %.preheader1600.us.preheader

.preheader1600.us.preheader:                      ; preds = %757, %758
  br label %.preheader1600.us

.preheader1600.us:                                ; preds = %.preheader1600.us.preheader, %._crit_edge1681.us
  %.51682.us = phi i32 [ %826, %._crit_edge1681.us ], [ 0, %.preheader1600.us.preheader ]
  %760 = mul i32 %.51682.us, %.01446
  %761 = add i32 %760, %spec.select1503
  br label %762

762:                                              ; preds = %.preheader1600.us, %824
  %.614301679.us = phi i32 [ 0, %.preheader1600.us ], [ %825, %824 ]
  %763 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %764 = icmp eq i32 %763, 4
  br i1 %764, label %768, label %765

765:                                              ; preds = %762
  %766 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %767 = icmp eq i32 %766, 5
  br i1 %767, label %768, label %772

768:                                              ; preds = %765, %762
  %769 = load i32, ptr %74, align 4, !tbaa !20
  %770 = icmp ugt i32 %769, 1100
  %771 = icmp eq i32 %.614301679.us, %699
  %or.cond1515.us = select i1 %123, i1 %771, i1 false
  %or.cond1707 = select i1 %770, i1 true, i1 %or.cond1515.us
  br i1 %or.cond1707, label %772, label %774

772:                                              ; preds = %768, %765
  %773 = load i32, ptr %7, align 4, !tbaa !12
  br label %774

774:                                              ; preds = %768, %772
  %775 = phi i32 [ %773, %772 ], [ 545725200, %768 ]
  %776 = load i32, ptr %92, align 4, !tbaa !23
  %777 = load i32, ptr %9, align 4, !tbaa !12
  %778 = mul i32 %777, %.614301679.us
  %779 = load i32, ptr %33, align 1, !tbaa !19
  %780 = mul i32 %779, %.51682.us
  %781 = add i32 %780, %778
  %782 = load i32, ptr %700, align 4, !tbaa !37
  %783 = mul i32 %781, %782
  %784 = load i8, ptr %5, align 1, !tbaa !10
  %785 = icmp eq i32 %.614301679.us, %699
  %786 = and i1 %123, %785
  %787 = zext i1 %786 to i32
  %788 = select i1 %786, i32 %.21440, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %775, i32 noundef %776, i32 noundef 127, i32 noundef 0, i32 noundef %783, i8 noundef signext %784, i32 noundef %.01457, i32 noundef %787, i32 noundef %788, i32 noundef 0) #5
  %789 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %790 = icmp eq i32 %789, 4
  br i1 %790, label %806, label %791

791:                                              ; preds = %774
  %792 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %793 = icmp eq i32 %792, 5
  br i1 %793, label %804, label %794

794:                                              ; preds = %791
  %795 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %796 = icmp eq i32 %795, 3
  br i1 %796, label %802, label %797

797:                                              ; preds = %794
  %798 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %799 = icmp eq i32 %798, 2
  br i1 %799, label %800, label %808

800:                                              ; preds = %797
  %801 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %801, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %808

802:                                              ; preds = %794
  %803 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %803, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %808

804:                                              ; preds = %791
  %805 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %805, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %808

806:                                              ; preds = %774
  %807 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %807, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %808

808:                                              ; preds = %806, %804, %802, %800, %797
  br i1 %19, label %809, label %818

809:                                              ; preds = %808
  %810 = load i32, ptr %74, align 4, !tbaa !20
  %811 = icmp ugt i32 %810, 1050
  %or.cond31.us = and i1 %21, %811
  br i1 %or.cond31.us, label %.thread1582.us, label %812

812:                                              ; preds = %809
  br i1 %21, label %813, label %815

813:                                              ; preds = %812
  %814 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %814, i32 noundef %.01457, i32 noundef %.11456, i32 noundef %.01457) #5
  br label %815

815:                                              ; preds = %813, %812
  %816 = load i8, ptr %10, align 4, !tbaa !5
  %817 = add i32 %.614301679.us, %760
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01435, i8 noundef signext %816, i32 noundef %.01457, i32 noundef %817, i32 noundef %817) #5
  br label %818

818:                                              ; preds = %815, %808
  br i1 %spec.select, label %819, label %824

819:                                              ; preds = %818
  %820 = load i8, ptr %10, align 4, !tbaa !5
  %821 = add i32 %761, %.614301679.us
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01436, i8 noundef signext %820, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %821) #5
  br label %824

.thread1582.us:                                   ; preds = %809
  %822 = load i8, ptr %10, align 4, !tbaa !5
  %823 = add i32 %.614301679.us, %760
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %822, i32 noundef %.01457, i32 noundef %823, i32 noundef %823, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3) #5
  br label %824

824:                                              ; preds = %.thread1582.us, %819, %818
  %825 = add nuw i32 %.614301679.us, 1
  %exitcond1758.not = icmp eq i32 %825, %.01445
  br i1 %exitcond1758.not, label %._crit_edge1681.us, label %762, !llvm.loop !49

._crit_edge1681.us:                               ; preds = %824
  %826 = add nuw nsw i32 %.51682.us, 1
  %827 = icmp ult i32 %826, %.1507
  br i1 %827, label %.preheader1600.us, label %.split1685.us, !llvm.loop !50

.split1685.us:                                    ; preds = %._crit_edge1681.us
  %828 = getelementptr inbounds i8, ptr %3, i64 40
  %829 = load i32, ptr %828, align 4, !tbaa !40
  %830 = load i32, ptr %92, align 4, !tbaa !23
  %831 = load i32, ptr %33, align 1, !tbaa !19
  %832 = zext i32 %831 to i64
  %833 = zext i8 %188 to i64
  %834 = mul nuw nsw i64 %832, %833
  %835 = load i32, ptr %700, align 4, !tbaa !37
  %836 = zext i32 %835 to i64
  %837 = mul nuw nsw i64 %834, %836
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %829, i32 noundef %830, i64 noundef %837) #5
  br i1 %.not1481, label %840, label %838

838:                                              ; preds = %.split1685.us
  %839 = load i32, ptr %96, align 4, !tbaa !28
  call void @libxsmm_generator_mateltwise_footer_n_loop(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %3, i32 noundef %839, i32 noundef %.01442) #5
  br label %840

840:                                              ; preds = %.split1685.us, %838, %.split1678.us
  %.not1482 = icmp eq i32 %.01441, 0
  br i1 %.not1482, label %.loopexit1599, label %.preheader1597.us

.preheader1597.us:                                ; preds = %840, %._crit_edge1688.us
  %.61689.us = phi i32 [ %907, %._crit_edge1688.us ], [ 0, %840 ]
  %841 = mul i32 %.61689.us, %.01446
  %842 = add i32 %841, %spec.select1503
  br label %843

843:                                              ; preds = %.preheader1597.us, %905
  %.714311686.us = phi i32 [ 0, %.preheader1597.us ], [ %906, %905 ]
  %844 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %845 = icmp eq i32 %844, 4
  br i1 %845, label %849, label %846

846:                                              ; preds = %843
  %847 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %848 = icmp eq i32 %847, 5
  br i1 %848, label %849, label %853

849:                                              ; preds = %846, %843
  %850 = load i32, ptr %74, align 4, !tbaa !20
  %851 = icmp ugt i32 %850, 1100
  %852 = icmp eq i32 %.714311686.us, %699
  %or.cond1517.us = select i1 %123, i1 %852, i1 false
  %or.cond1708 = select i1 %851, i1 true, i1 %or.cond1517.us
  br i1 %or.cond1708, label %853, label %855

853:                                              ; preds = %849, %846
  %854 = load i32, ptr %7, align 4, !tbaa !12
  br label %855

855:                                              ; preds = %849, %853
  %856 = phi i32 [ %854, %853 ], [ 545725200, %849 ]
  %857 = load i32, ptr %92, align 4, !tbaa !23
  %858 = load i32, ptr %9, align 4, !tbaa !12
  %859 = mul i32 %858, %.714311686.us
  %860 = load i32, ptr %33, align 1, !tbaa !19
  %861 = mul i32 %860, %.61689.us
  %862 = add i32 %861, %859
  %863 = load i32, ptr %700, align 4, !tbaa !37
  %864 = mul i32 %862, %863
  %865 = load i8, ptr %5, align 1, !tbaa !10
  %866 = icmp eq i32 %.714311686.us, %699
  %867 = and i1 %123, %866
  %868 = zext i1 %867 to i32
  %869 = select i1 %867, i32 %.21440, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %856, i32 noundef %857, i32 noundef 127, i32 noundef 0, i32 noundef %864, i8 noundef signext %865, i32 noundef %.01457, i32 noundef %868, i32 noundef %869, i32 noundef 0) #5
  %870 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %871 = icmp eq i32 %870, 4
  br i1 %871, label %887, label %872

872:                                              ; preds = %855
  %873 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %874 = icmp eq i32 %873, 5
  br i1 %874, label %885, label %875

875:                                              ; preds = %872
  %876 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %877 = icmp eq i32 %876, 3
  br i1 %877, label %883, label %878

878:                                              ; preds = %875
  %879 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %880 = icmp eq i32 %879, 2
  br i1 %880, label %881, label %889

881:                                              ; preds = %878
  %882 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %882, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %889

883:                                              ; preds = %875
  %884 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %884, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %889

885:                                              ; preds = %872
  %886 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %886, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %889

887:                                              ; preds = %855
  %888 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %888, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %889

889:                                              ; preds = %887, %885, %883, %881, %878
  br i1 %19, label %890, label %899

890:                                              ; preds = %889
  %891 = load i32, ptr %74, align 4, !tbaa !20
  %892 = icmp ugt i32 %891, 1050
  %or.cond35.us = and i1 %21, %892
  br i1 %or.cond35.us, label %.thread1585.us, label %893

893:                                              ; preds = %890
  br i1 %21, label %894, label %896

894:                                              ; preds = %893
  %895 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %895, i32 noundef %.01457, i32 noundef %.11456, i32 noundef %.01457) #5
  br label %896

896:                                              ; preds = %894, %893
  %897 = load i8, ptr %10, align 4, !tbaa !5
  %898 = add i32 %.714311686.us, %841
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01435, i8 noundef signext %897, i32 noundef %.01457, i32 noundef %898, i32 noundef %898) #5
  br label %899

899:                                              ; preds = %896, %889
  br i1 %spec.select, label %900, label %905

900:                                              ; preds = %899
  %901 = load i8, ptr %10, align 4, !tbaa !5
  %902 = add i32 %842, %.714311686.us
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01436, i8 noundef signext %901, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %902) #5
  br label %905

.thread1585.us:                                   ; preds = %890
  %903 = load i8, ptr %10, align 4, !tbaa !5
  %904 = add i32 %.714311686.us, %841
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %903, i32 noundef %.01457, i32 noundef %904, i32 noundef %904, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3) #5
  br label %905

905:                                              ; preds = %.thread1585.us, %900, %899
  %906 = add nuw i32 %.714311686.us, 1
  %exitcond1759.not = icmp eq i32 %906, %.01445
  br i1 %exitcond1759.not, label %._crit_edge1688.us, label %843, !llvm.loop !51

._crit_edge1688.us:                               ; preds = %905
  %907 = add nuw i32 %.61689.us, 1
  %exitcond1760.not = icmp eq i32 %907, %.01441
  br i1 %exitcond1760.not, label %.loopexit1599, label %.preheader1597.us, !llvm.loop !52

.loopexit1599:                                    ; preds = %._crit_edge1688.us, %840
  br i1 %.not1480, label %921, label %908

908:                                              ; preds = %.loopexit1599
  %909 = getelementptr inbounds i8, ptr %3, i64 44
  %910 = load i32, ptr %909, align 4, !tbaa !43
  %911 = load i32, ptr %92, align 4, !tbaa !23
  %912 = load i32, ptr %33, align 1, !tbaa !19
  %913 = zext i32 %912 to i64
  %914 = zext i8 %188 to i64
  %915 = zext i32 %.01442 to i64
  %916 = load i32, ptr %700, align 4, !tbaa !37
  %917 = zext i32 %916 to i64
  %918 = mul nuw nsw i64 %915, %914
  %919 = mul i64 %918, %913
  %920 = mul nuw nsw i64 %919, %917
  call void @libxsmm_x86_instruction_alu_imm(ptr noundef %0, i32 noundef %910, i32 noundef %911, i64 noundef %920) #5
  br label %921

921:                                              ; preds = %908, %.loopexit1599
  %922 = icmp ugt i8 %187, 1
  br i1 %922, label %.preheader1596.us, label %.lr.ph1706

.preheader1596.us:                                ; preds = %921, %._crit_edge1692.us
  %.71694.us = phi i32 [ %924, %._crit_edge1692.us ], [ 1, %921 ]
  %923 = mul i32 %.71694.us, %.01446
  br i1 %spec.select, label %.lr.ph1691.split.us.us, label %.lr.ph1691.split.us1697

.lr.ph1691.split.us1697:                          ; preds = %.preheader1596.us
  br i1 %19, label %.lr.ph1691.split.split.us.us, label %._crit_edge1692.us

._crit_edge1692.us:                               ; preds = %.lr.ph1691.split.split.us.us, %.lr.ph1691.split.us.split.us1702, %.lr.ph1691.split.us.split.us.us, %.lr.ph1691.split.us1697
  %924 = add nuw nsw i32 %.71694.us, 1
  %925 = icmp ult i32 %924, %.1507
  br i1 %925, label %.preheader1596.us, label %.lr.ph1706, !llvm.loop !53

.lr.ph1691.split.us.us:                           ; preds = %.preheader1596.us
  br i1 %19, label %.lr.ph1691.split.us.split.us.us, label %.lr.ph1691.split.us.split.us1702

.lr.ph1691.split.us.split.us1702:                 ; preds = %.lr.ph1691.split.us.us, %.lr.ph1691.split.us.split.us1702
  %.81690.us.us1698 = phi i32 [ %929, %.lr.ph1691.split.us.split.us1702 ], [ 0, %.lr.ph1691.split.us.us ]
  %926 = load i8, ptr %10, align 4, !tbaa !5
  %927 = add i32 %.81690.us.us1698, %spec.select1503
  %928 = add i32 %927, %923
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %926, i32 noundef %927, i32 noundef %928, i32 noundef %927) #5
  %929 = add nuw i32 %.81690.us.us1698, 1
  %exitcond1762.not = icmp eq i32 %929, %.01445
  br i1 %exitcond1762.not, label %._crit_edge1692.us, label %.lr.ph1691.split.us.split.us1702, !llvm.loop !54

.lr.ph1691.split.split.us.us:                     ; preds = %.lr.ph1691.split.us1697, %.lr.ph1691.split.split.us.us
  %.81690.us1693.us = phi i32 [ %932, %.lr.ph1691.split.split.us.us ], [ 0, %.lr.ph1691.split.us1697 ]
  %930 = load i8, ptr %10, align 4, !tbaa !5
  %931 = add i32 %.81690.us1693.us, %923
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %930, i32 noundef %.81690.us1693.us, i32 noundef %931, i32 noundef %.81690.us1693.us) #5
  %932 = add nuw i32 %.81690.us1693.us, 1
  %exitcond1761.not = icmp eq i32 %932, %.01445
  br i1 %exitcond1761.not, label %._crit_edge1692.us, label %.lr.ph1691.split.split.us.us, !llvm.loop !54

.lr.ph1691.split.us.split.us.us:                  ; preds = %.lr.ph1691.split.us.us, %.lr.ph1691.split.us.split.us.us
  %.81690.us.us.us = phi i32 [ %938, %.lr.ph1691.split.us.split.us.us ], [ 0, %.lr.ph1691.split.us.us ]
  %933 = load i8, ptr %10, align 4, !tbaa !5
  %934 = add i32 %.81690.us.us.us, %923
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %933, i32 noundef %.81690.us.us.us, i32 noundef %934, i32 noundef %.81690.us.us.us) #5
  %935 = load i8, ptr %10, align 4, !tbaa !5
  %936 = add i32 %.81690.us.us.us, %spec.select1503
  %937 = add i32 %936, %923
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %935, i32 noundef %936, i32 noundef %937, i32 noundef %936) #5
  %938 = add nuw i32 %.81690.us.us.us, 1
  %exitcond1763.not = icmp eq i32 %938, %.01445
  br i1 %exitcond1763.not, label %._crit_edge1692.us, label %.lr.ph1691.split.us.split.us.us, !llvm.loop !54

.lr.ph1706:                                       ; preds = %._crit_edge1692.us, %921
  %939 = getelementptr inbounds i8, ptr %3, i64 20
  br label %940

940:                                              ; preds = %.lr.ph1706, %1155
  %.91703 = phi i32 [ 0, %.lr.ph1706 ], [ %1156, %1155 ]
  br i1 %19, label %941, label %1048

941:                                              ; preds = %940
  br i1 %.not, label %995, label %942

942:                                              ; preds = %941
  %943 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %944 = icmp eq i32 %943, 4
  br i1 %944, label %948, label %945

945:                                              ; preds = %942
  %946 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %947 = icmp eq i32 %946, 5
  br i1 %947, label %948, label %952

948:                                              ; preds = %945, %942
  %949 = load i32, ptr %74, align 4, !tbaa !20
  %950 = icmp ugt i32 %949, 1100
  %951 = icmp eq i32 %.91703, %699
  %or.cond1519 = select i1 %123, i1 %951, i1 false
  %or.cond1709 = select i1 %950, i1 true, i1 %or.cond1519
  br i1 %or.cond1709, label %952, label %954

952:                                              ; preds = %948, %945
  %953 = load i32, ptr %8, align 4, !tbaa !12
  br label %954

954:                                              ; preds = %948, %952
  %955 = phi i32 [ %953, %952 ], [ 545725200, %948 ]
  %956 = load i32, ptr %93, align 4, !tbaa !25
  %957 = load i32, ptr %9, align 4, !tbaa !12
  %958 = mul i32 %957, %.91703
  %959 = load i32, ptr %939, align 4, !tbaa !32
  %960 = mul i32 %958, %959
  %961 = load i8, ptr %6, align 1, !tbaa !10
  %962 = icmp eq i32 %.91703, %699
  %963 = and i1 %123, %962
  %964 = zext i1 %963 to i32
  %965 = select i1 %963, i32 %.11454, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %955, i32 noundef %956, i32 noundef 127, i32 noundef 0, i32 noundef %960, i8 noundef signext %961, i32 noundef %.01457, i32 noundef %964, i32 noundef %965, i32 noundef 0) #5
  %966 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %967 = icmp eq i32 %966, 4
  br i1 %967, label %968, label %970

968:                                              ; preds = %954
  %969 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %969, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %985

970:                                              ; preds = %954
  %971 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %972 = icmp eq i32 %971, 5
  br i1 %972, label %973, label %975

973:                                              ; preds = %970
  %974 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %974, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %985

975:                                              ; preds = %970
  %976 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %977 = icmp eq i32 %976, 3
  br i1 %977, label %978, label %980

978:                                              ; preds = %975
  %979 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %979, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %985

980:                                              ; preds = %975
  %981 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %982 = icmp eq i32 %981, 2
  br i1 %982, label %983, label %985

983:                                              ; preds = %980
  %984 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %984, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %985

985:                                              ; preds = %973, %980, %983, %978, %968
  %986 = load i32, ptr %74, align 4, !tbaa !20
  %987 = icmp ugt i32 %986, 1050
  %or.cond39 = and i1 %21, %987
  br i1 %or.cond39, label %988, label %990

988:                                              ; preds = %985
  %989 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %989, i32 noundef %.01457, i32 noundef %.91703, i32 noundef %.91703, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 3) #5
  br label %995

990:                                              ; preds = %985
  br i1 %21, label %991, label %993

991:                                              ; preds = %990
  %992 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01437, i8 noundef signext %992, i32 noundef %.01457, i32 noundef %.11456, i32 noundef %.01457) #5
  br label %993

993:                                              ; preds = %991, %990
  %994 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.01435, i8 noundef signext %994, i32 noundef %.01457, i32 noundef %.91703, i32 noundef %.91703) #5
  br label %995

995:                                              ; preds = %988, %993, %941
  %996 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %997 = icmp eq i32 %996, 4
  br i1 %997, label %998, label %1000

998:                                              ; preds = %995
  %999 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %999, i32 noundef %.91703, i32 noundef %.91703, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0) #5
  br label %1000

1000:                                             ; preds = %998, %995
  %1001 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1002 = icmp eq i32 %1001, 5
  br i1 %1002, label %1003, label %1005

1003:                                             ; preds = %1000
  %1004 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %1004, i32 noundef %.91703, i32 noundef %.91703, i32 noundef %.01458, i32 noundef 29, i32 noundef 27, i32 noundef 28, i32 noundef 7, i32 noundef 6, i32 noundef 5) #5
  br label %1024

1005:                                             ; preds = %1000
  %1006 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1007 = icmp eq i32 %1006, 3
  br i1 %1007, label %1008, label %1014

1008:                                             ; preds = %1005
  %1009 = load i8, ptr %10, align 4, !tbaa !5
  %1010 = load i32, ptr %74, align 4, !tbaa !20
  %1011 = icmp ugt i32 %1010, 1100
  %1012 = zext i1 %1011 to i32
  %1013 = zext i1 %1011 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %0, i32 noundef 671954205, i8 noundef signext %1009, i32 noundef %.91703, i32 noundef %.91703, i32 noundef 0, i32 noundef %1012, i8 noundef zeroext %1013, i32 noundef 0) #5
  br label %1024

1014:                                             ; preds = %1005
  %1015 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1016 = icmp eq i32 %1015, 2
  br i1 %1016, label %1017, label %1024

1017:                                             ; preds = %1014
  %1018 = load i32, ptr %74, align 4, !tbaa !20
  %.fr1593 = freeze i32 %1018
  %1019 = icmp ugt i32 %.fr1593, 1102
  br i1 %1019, label %1022, label %switch.early.test1556

switch.early.test1556:                            ; preds = %1017
  switch i32 %.fr1593, label %1020 [
    i32 1053, label %1022
    i32 1008, label %1022
  ]

1020:                                             ; preds = %switch.early.test1556
  %1021 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %1021, i32 noundef %.91703, i32 noundef %.91703, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 2, i32 noundef 3, i32 noundef 0) #5
  br label %1024

1022:                                             ; preds = %switch.early.test1556, %switch.early.test1556, %1017
  %1023 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %1023, i32 noundef %.91703, i32 noundef %.91703) #5
  br label %1024

1024:                                             ; preds = %1008, %1020, %1022, %1014, %1003
  %1025 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1026 = icmp eq i32 %1025, 4
  br i1 %1026, label %1030, label %1027

1027:                                             ; preds = %1024
  %1028 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1029 = icmp eq i32 %1028, 5
  br i1 %1029, label %1030, label %1034

1030:                                             ; preds = %1027, %1024
  %1031 = load i32, ptr %74, align 4, !tbaa !20
  %1032 = icmp ugt i32 %1031, 1100
  %1033 = icmp eq i32 %.91703, %699
  %or.cond1523 = select i1 %123, i1 %1033, i1 false
  %or.cond1710 = select i1 %1032, i1 true, i1 %or.cond1523
  br i1 %or.cond1710, label %1034, label %1036

1034:                                             ; preds = %1030, %1027
  %1035 = load i32, ptr %8, align 4, !tbaa !12
  br label %1036

1036:                                             ; preds = %1030, %1034
  %1037 = phi i32 [ %1035, %1034 ], [ 545725200, %1030 ]
  %1038 = load i32, ptr %93, align 4, !tbaa !25
  %1039 = load i32, ptr %9, align 4, !tbaa !12
  %1040 = mul i32 %1039, %.91703
  %1041 = load i32, ptr %939, align 4, !tbaa !32
  %1042 = mul i32 %1040, %1041
  %1043 = load i8, ptr %6, align 1, !tbaa !10
  %1044 = icmp eq i32 %.91703, %699
  %1045 = and i1 %123, %1044
  %1046 = zext i1 %1045 to i32
  %1047 = select i1 %1045, i32 %.11454, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %1037, i32 noundef %1038, i32 noundef 127, i32 noundef 0, i32 noundef %1042, i8 noundef signext %1043, i32 noundef %.91703, i32 noundef %1046, i32 noundef %1047, i32 noundef 1) #5
  br label %1048

1048:                                             ; preds = %1036, %940
  br i1 %spec.select, label %1049, label %1155

1049:                                             ; preds = %1048
  br i1 %.not, label %1096, label %1050

1050:                                             ; preds = %1049
  %1051 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1052 = icmp eq i32 %1051, 4
  br i1 %1052, label %1056, label %1053

1053:                                             ; preds = %1050
  %1054 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1055 = icmp eq i32 %1054, 5
  br i1 %1055, label %1056, label %1060

1056:                                             ; preds = %1053, %1050
  %1057 = load i32, ptr %74, align 4, !tbaa !20
  %1058 = icmp ugt i32 %1057, 1100
  %1059 = icmp eq i32 %.91703, %699
  %or.cond1525 = select i1 %123, i1 %1059, i1 false
  %or.cond1711 = select i1 %1058, i1 true, i1 %or.cond1525
  br i1 %or.cond1711, label %1060, label %1062

1060:                                             ; preds = %1056, %1053
  %1061 = load i32, ptr %8, align 4, !tbaa !12
  br label %1062

1062:                                             ; preds = %1056, %1060
  %1063 = phi i32 [ %1061, %1060 ], [ 545725200, %1056 ]
  %1064 = load i32, ptr %94, align 4, !tbaa !26
  %1065 = load i32, ptr %9, align 4, !tbaa !12
  %1066 = mul i32 %1065, %.91703
  %1067 = load i32, ptr %939, align 4, !tbaa !32
  %1068 = mul i32 %1066, %1067
  %1069 = load i8, ptr %6, align 1, !tbaa !10
  %1070 = icmp eq i32 %.91703, %699
  %1071 = and i1 %123, %1070
  %1072 = zext i1 %1071 to i32
  %1073 = select i1 %1071, i32 %.11454, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %1063, i32 noundef %1064, i32 noundef 127, i32 noundef 0, i32 noundef %1068, i8 noundef signext %1069, i32 noundef %.01457, i32 noundef %1072, i32 noundef %1073, i32 noundef 0) #5
  %1074 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1075 = icmp eq i32 %1074, 4
  br i1 %1075, label %1076, label %1078

1076:                                             ; preds = %1062
  %1077 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %1077, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %1093

1078:                                             ; preds = %1062
  %1079 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1080 = icmp eq i32 %1079, 5
  br i1 %1080, label %1081, label %1083

1081:                                             ; preds = %1078
  %1082 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %1082, i32 noundef %.01457, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 29, i32 noundef 7, i32 noundef 6) #5
  br label %1093

1083:                                             ; preds = %1078
  %1084 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1085 = icmp eq i32 %1084, 3
  br i1 %1085, label %1086, label %1088

1086:                                             ; preds = %1083
  %1087 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %1087, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %1093

1088:                                             ; preds = %1083
  %1089 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1090 = icmp eq i32 %1089, 2
  br i1 %1090, label %1091, label %1093

1091:                                             ; preds = %1088
  %1092 = load i8, ptr %10, align 4, !tbaa !5
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %1092, i32 noundef %.01457, i32 noundef %.01457) #5
  br label %1093

1093:                                             ; preds = %1081, %1088, %1091, %1086, %1076
  %1094 = load i8, ptr %10, align 4, !tbaa !5
  %1095 = add i32 %.91703, %spec.select1503
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef %.01435, i8 noundef signext %1094, i32 noundef %.01457, i32 noundef %1095, i32 noundef %1095) #5
  br label %1096

1096:                                             ; preds = %1093, %1049
  %1097 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1098 = icmp eq i32 %1097, 4
  br i1 %1098, label %1099, label %1102

1099:                                             ; preds = %1096
  %1100 = load i8, ptr %10, align 4, !tbaa !5
  %1101 = add i32 %.91703, %spec.select1503
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %1100, i32 noundef %1101, i32 noundef %1101, i32 noundef 30, i32 noundef 31, i32 noundef 2, i32 noundef 3, i32 noundef 0, i32 noundef 0) #5
  br label %1130

1102:                                             ; preds = %1096
  %1103 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1104 = icmp eq i32 %1103, 5
  br i1 %1104, label %1105, label %1108

1105:                                             ; preds = %1102
  %1106 = load i8, ptr %10, align 4, !tbaa !5
  %1107 = add i32 %.91703, %spec.select1503
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %1106, i32 noundef %1107, i32 noundef %1107, i32 noundef %.01458, i32 noundef 29, i32 noundef 27, i32 noundef 28, i32 noundef 7, i32 noundef 6, i32 noundef 5) #5
  br label %1130

1108:                                             ; preds = %1102
  %1109 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1110 = icmp eq i32 %1109, 3
  br i1 %1110, label %1111, label %1118

1111:                                             ; preds = %1108
  %1112 = load i8, ptr %10, align 4, !tbaa !5
  %1113 = add i32 %.91703, %spec.select1503
  %1114 = load i32, ptr %74, align 4, !tbaa !20
  %1115 = icmp ugt i32 %1114, 1100
  %1116 = zext i1 %1115 to i32
  %1117 = zext i1 %1115 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %0, i32 noundef 671954205, i8 noundef signext %1112, i32 noundef %1113, i32 noundef %1113, i32 noundef 0, i32 noundef %1116, i8 noundef zeroext %1117, i32 noundef 0) #5
  br label %1130

1118:                                             ; preds = %1108
  %1119 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1120 = icmp eq i32 %1119, 2
  br i1 %1120, label %1121, label %1130

1121:                                             ; preds = %1118
  %1122 = load i32, ptr %74, align 4, !tbaa !20
  %.fr1594 = freeze i32 %1122
  %1123 = icmp ugt i32 %.fr1594, 1102
  br i1 %1123, label %1127, label %switch.early.test1559

switch.early.test1559:                            ; preds = %1121
  switch i32 %.fr1594, label %1124 [
    i32 1053, label %1127
    i32 1008, label %1127
  ]

1124:                                             ; preds = %switch.early.test1559
  %1125 = load i8, ptr %10, align 4, !tbaa !5
  %1126 = add i32 %.91703, %spec.select1503
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %1125, i32 noundef %1126, i32 noundef %1126, i32 noundef %.01457, i32 noundef %.01458, i32 noundef 2, i32 noundef 3, i32 noundef 0) #5
  br label %1130

1127:                                             ; preds = %switch.early.test1559, %switch.early.test1559, %1121
  %1128 = load i8, ptr %10, align 4, !tbaa !5
  %1129 = add i32 %.91703, %spec.select1503
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %1128, i32 noundef %1129, i32 noundef %1129) #5
  br label %1130

1130:                                             ; preds = %1105, %1118, %1127, %1124, %1111, %1099
  %1131 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1132 = icmp eq i32 %1131, 4
  br i1 %1132, label %1136, label %1133

1133:                                             ; preds = %1130
  %1134 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1135 = icmp eq i32 %1134, 5
  br i1 %1135, label %1136, label %1140

1136:                                             ; preds = %1133, %1130
  %1137 = load i32, ptr %74, align 4, !tbaa !20
  %1138 = icmp ugt i32 %1137, 1100
  %1139 = icmp eq i32 %.91703, %699
  %or.cond1529 = select i1 %123, i1 %1139, i1 false
  %or.cond1712 = select i1 %1138, i1 true, i1 %or.cond1529
  br i1 %or.cond1712, label %1140, label %1142

1140:                                             ; preds = %1136, %1133
  %1141 = load i32, ptr %8, align 4, !tbaa !12
  br label %1142

1142:                                             ; preds = %1136, %1140
  %1143 = phi i32 [ %1141, %1140 ], [ 545725200, %1136 ]
  %1144 = load i32, ptr %94, align 4, !tbaa !26
  %1145 = load i32, ptr %9, align 4, !tbaa !12
  %1146 = mul i32 %1145, %.91703
  %1147 = load i32, ptr %939, align 4, !tbaa !32
  %1148 = mul i32 %1146, %1147
  %1149 = load i8, ptr %6, align 1, !tbaa !10
  %1150 = add i32 %.91703, %spec.select1503
  %1151 = icmp eq i32 %.91703, %699
  %1152 = and i1 %123, %1151
  %1153 = zext i1 %1152 to i32
  %1154 = select i1 %1152, i32 %.11454, i32 0
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %1143, i32 noundef %1144, i32 noundef 127, i32 noundef 0, i32 noundef %1148, i8 noundef signext %1149, i32 noundef %1150, i32 noundef %1153, i32 noundef %1154, i32 noundef 1) #5
  br label %1155

1155:                                             ; preds = %1048, %1142
  %1156 = add nuw i32 %.91703, 1
  %exitcond1764.not = icmp eq i32 %1156, %.01445
  br i1 %exitcond1764.not, label %.loopexit, label %940, !llvm.loop !55

.loopexit:                                        ; preds = %1155, %.thread1575, %.thread1572, %666
  %1157 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1158 = icmp eq i32 %1157, 4
  br i1 %1158, label %1159, label %1160

1159:                                             ; preds = %.loopexit
  call void @libxsmm_generator_vcvtneps2bf8_avx512_clean_stack(ptr noundef %0, i32 noundef 0) #5
  br label %1174

1160:                                             ; preds = %.loopexit
  %1161 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1162 = icmp eq i32 %1161, 2
  br i1 %1162, label %1163, label %1167

1163:                                             ; preds = %1160
  %1164 = load i32, ptr %74, align 4, !tbaa !20
  %.fr1595 = freeze i32 %1164
  %1165 = icmp ugt i32 %.fr1595, 1102
  br i1 %1165, label %1174, label %switch.early.test1560

switch.early.test1560:                            ; preds = %1163
  switch i32 %.fr1595, label %1166 [
    i32 1053, label %1174
    i32 1008, label %1174
  ]

1166:                                             ; preds = %switch.early.test1560
  call void @libxsmm_generator_vcvtneps2bf16_avx512_clean_stack(ptr noundef nonnull %0, i32 noundef 0) #5
  br label %1174

1167:                                             ; preds = %1160
  %1168 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #5
  %1169 = icmp eq i32 %1168, 5
  br i1 %1169, label %1173, label %1170

1170:                                             ; preds = %1167
  %1171 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #5
  %1172 = icmp eq i32 %1171, 5
  br i1 %1172, label %1173, label %1174

1173:                                             ; preds = %1170, %1167
  call void @libxsmm_generator_vcvt_hf8_tofrom_f32_avx512_clean_stack(ptr noundef %0, i32 noundef 0) #5
  br label %1174

1174:                                             ; preds = %switch.early.test1560, %switch.early.test1560, %1163, %1159, %1170, %1173, %1166, %67, %58, %36
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #5
  ret void
}

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

declare void @libxsmm_generator_load_vreg_signmask(ptr noundef, i8 noundef zeroext, i32 noundef, i32 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.umax.i8(i8, i8) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !8, i64 512}
!6 = !{!"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}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!8, !8, i64 0}
!11 = !{!6, !7, i64 24}
!12 = !{!7, !7, i64 0}
!13 = !{!6, !7, i64 36}
!14 = !{!15, !16, i64 29}
!15 = !{!"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, !16, i64 27, !16, i64 29, !8, i64 31}
!16 = !{!"short", !8, i64 0}
!17 = !{!15, !16, i64 27}
!18 = !{!15, !7, i64 0}
!19 = !{!15, !7, i64 8}
!20 = !{!21, !7, i64 28}
!21 = !{!"libxsmm_generated_code", !22, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!22 = !{!"any pointer", !8, i64 0}
!23 = !{!24, !7, i64 4}
!24 = !{!"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}
!25 = !{!24, !7, i64 64}
!26 = !{!24, !7, i64 68}
!27 = !{!24, !7, i64 96}
!28 = !{!24, !7, i64 100}
!29 = !{!6, !7, i64 56}
!30 = !{!24, !7, i64 0}
!31 = !{!15, !7, i64 12}
!32 = !{!6, !7, i64 20}
!33 = !{!15, !7, i64 4}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = !{!6, !7, i64 8}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = !{!6, !7, i64 40}
!41 = distinct !{!41, !35}
!42 = distinct !{!42, !35}
!43 = !{!6, !7, i64 44}
!44 = distinct !{!44, !35}
!45 = distinct !{!45, !35}
!46 = distinct !{!46, !35}
!47 = distinct !{!47, !35}
!48 = distinct !{!48, !35}
!49 = distinct !{!49, !35}
!50 = distinct !{!50, !35}
!51 = distinct !{!51, !35}
!52 = distinct !{!52, !35}
!53 = distinct !{!53, !35}
!54 = distinct !{!54, !35}
!55 = distinct !{!55, !35}


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