; LLVM IR from libxsmm/libxsmm :: src (generator_mateltwise_unary_binary_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_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%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 [100 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@__func__.libxsmm_compute_unary_2d_reg_block_relu_inv = external hidden unnamed_addr constant [44 x i8], align 1

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

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

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_unary_2d_reg_block_relu_inv(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) #2 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store i32 %4, ptr %15, align 4, !tbaa !9
  store i32 %5, ptr %16, align 4, !tbaa !9
  store i32 %6, ptr %17, align 4, !tbaa !9
  store i32 %7, ptr %18, align 4, !tbaa !9
  store i32 %8, ptr %19, align 4, !tbaa !9
  store i32 %9, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  %33 = load i32, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %34

34:                                               ; preds = %840, %10
  %35 = load i32, ptr %22, align 4, !tbaa !9
  %36 = load i32, ptr %18, align 4, !tbaa !9
  %37 = icmp ult i32 %35, %36
  br i1 %37, label %38, label %843

38:                                               ; preds = %34
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %39

39:                                               ; preds = %836, %38
  %40 = load i32, ptr %21, align 4, !tbaa !9
  %41 = load i32, ptr %17, align 4, !tbaa !9
  %42 = icmp ult i32 %40, %41
  br i1 %42, label %43, label %839

43:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  %44 = load ptr, ptr %14, align 8, !tbaa !5
  %45 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %44, i32 noundef 4)
  %46 = icmp eq i32 2, %45
  %47 = zext i1 %46 to i64
  %48 = select i1 %46, i32 1, i32 0
  store i32 %48, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %49 = load ptr, ptr %13, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %49, i32 0, i32 19
  %51 = load i32, ptr %50, align 4, !tbaa !11
  %52 = sub i32 8, %51
  store i32 %52, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %53 = load ptr, ptr %13, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %53, i32 0, i32 19
  %55 = load i32, ptr %54, align 4, !tbaa !11
  %56 = load i32, ptr %22, align 4, !tbaa !9
  %57 = load i32, ptr %17, align 4, !tbaa !9
  %58 = mul i32 %56, %57
  %59 = load i32, ptr %21, align 4, !tbaa !9
  %60 = add i32 %58, %59
  %61 = load i32, ptr %25, align 4, !tbaa !9
  %62 = urem i32 %60, %61
  %63 = add i32 %55, %62
  store i32 %63, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %64 = load i32, ptr %24, align 4, !tbaa !9
  %65 = icmp ugt i32 %64, 0
  %66 = zext i1 %65 to i64
  %67 = select i1 %65, i32 -259180993, i32 806098626
  store i32 %67, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %68 = load i32, ptr %24, align 4, !tbaa !9
  %69 = icmp ugt i32 %68, 0
  %70 = zext i1 %69 to i64
  %71 = select i1 %69, i32 -259709338, i32 -268097948
  store i32 %71, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %72 = load i32, ptr %24, align 4, !tbaa !9
  %73 = icmp ugt i32 %72, 0
  %74 = zext i1 %73 to i64
  %75 = select i1 %73, i32 -1601891952, i32 -1610346096
  store i32 %75, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %76 = load i32, ptr %24, align 4, !tbaa !9
  %77 = icmp ugt i32 %76, 0
  %78 = zext i1 %77 to i64
  %79 = select i1 %77, i32 32, i32 16
  store i32 %79, ptr %30, align 4, !tbaa !9
  %80 = load i32, ptr %16, align 4, !tbaa !9
  %81 = load i32, ptr %22, align 4, !tbaa !9
  %82 = load i32, ptr %17, align 4, !tbaa !9
  %83 = mul i32 %81, %82
  %84 = add i32 %80, %83
  %85 = load i32, ptr %21, align 4, !tbaa !9
  %86 = add i32 %84, %85
  store i32 %86, ptr %23, align 4, !tbaa !9
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %87, i32 0, i32 6
  %89 = load i32, ptr %88, align 4, !tbaa !13
  %90 = icmp ult i32 %89, 1051
  br i1 %90, label %91, label %404

91:                                               ; preds = %43
  %92 = load i32, ptr %24, align 4, !tbaa !9
  %93 = icmp ne i32 %92, 0
  br i1 %93, label %94, label %103

94:                                               ; preds = %91
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %97 = icmp ult i32 1, %96
  br i1 %97, label %98, label %100

98:                                               ; preds = %94
  %99 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %101

100:                                              ; preds = %94
  br label %101

101:                                              ; preds = %100, %98
  %102 = phi i32 [ %99, %98 ], [ 1, %100 ]
  call void @libxsmm_handle_error(ptr noundef %95, i32 noundef 90006, ptr noundef @__func__.libxsmm_compute_unary_2d_reg_block_relu_inv, ptr noundef @.str, i32 noundef 1761, i32 noundef %102)
  store i32 1, ptr %31, align 4
  br label %833

103:                                              ; preds = %91
  %104 = load i32, ptr %30, align 4, !tbaa !9
  %105 = udiv i32 %104, 2
  store i32 %105, ptr %30, align 4, !tbaa !9
  %106 = load ptr, ptr %14, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %106, i32 0, i32 9
  %108 = load i16, ptr %107, align 1, !tbaa !15
  %109 = zext i16 %108 to i32
  %110 = and i32 %109, 1
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %112, label %165

112:                                              ; preds = %103
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %113, i32 0, i32 10
  %115 = load i16, ptr %114, align 1, !tbaa !18
  %116 = zext i16 %115 to i32
  %117 = icmp ne i32 %116, 37
  br i1 %117, label %118, label %165

118:                                              ; preds = %112
  %119 = load ptr, ptr %11, align 8, !tbaa !5
  %120 = load ptr, ptr %12, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %120, i32 0, i32 9
  %122 = load i32, ptr %121, align 4, !tbaa !19
  %123 = load i32, ptr %21, align 4, !tbaa !9
  %124 = load i32, ptr %30, align 4, !tbaa !9
  %125 = mul i32 %123, %124
  %126 = load i32, ptr %22, align 4, !tbaa !9
  %127 = load ptr, ptr %13, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %127, i32 0, i32 16
  %129 = load i32, ptr %128, align 4, !tbaa !21
  %130 = mul i32 %126, %129
  %131 = add i32 %125, %130
  %132 = udiv i32 %131, 8
  %133 = load ptr, ptr %13, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %133, i32 0, i32 128
  %135 = load i8, ptr %134, align 4, !tbaa !22
  %136 = load ptr, ptr %13, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %136, i32 0, i32 29
  %138 = load i32, ptr %137, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %119, i32 noundef 537208952, i32 noundef %122, i32 noundef 127, i32 noundef 0, i32 noundef %132, i8 noundef signext %135, i32 noundef %138, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %139 = load ptr, ptr %11, align 8, !tbaa !5
  %140 = load ptr, ptr %13, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %140, i32 0, i32 128
  %142 = load i8, ptr %141, align 4, !tbaa !22
  %143 = load ptr, ptr %13, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %143, i32 0, i32 29
  %145 = load i32, ptr %144, align 4, !tbaa !23
  %146 = load ptr, ptr %13, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %146, i32 0, i32 86
  %148 = load i32, ptr %147, align 4, !tbaa !24
  %149 = load ptr, ptr %13, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %149, i32 0, i32 29
  %151 = load i32, ptr %150, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %139, i32 noundef 805639899, i8 noundef signext %142, i32 noundef %145, i32 noundef %148, i32 noundef %151)
  %152 = load ptr, ptr %11, align 8, !tbaa !5
  %153 = load ptr, ptr %13, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %153, i32 0, i32 128
  %155 = load i8, ptr %154, align 4, !tbaa !22
  %156 = load ptr, ptr %13, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %156, i32 0, i32 29
  %158 = load i32, ptr %157, align 4, !tbaa !23
  %159 = load ptr, ptr %13, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %159, i32 0, i32 86
  %161 = load i32, ptr %160, align 4, !tbaa !24
  %162 = load ptr, ptr %13, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %162, i32 0, i32 29
  %164 = load i32, ptr %163, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %152, i32 noundef 805639798, i8 noundef signext %155, i32 noundef %158, i32 noundef %161, i32 noundef %164, i32 noundef 0)
  br label %320

165:                                              ; preds = %112, %103
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #3
  %166 = load i32, ptr %30, align 4, !tbaa !9
  %167 = load ptr, ptr %13, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %167, i32 0, i32 2
  %169 = load i32, ptr %168, align 4, !tbaa !25
  %170 = mul i32 %166, %169
  %171 = icmp eq i32 %170, 64
  br i1 %171, label %172, label %173

172:                                              ; preds = %165
  br label %182

173:                                              ; preds = %165
  %174 = load i32, ptr %30, align 4, !tbaa !9
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %175, i32 0, i32 2
  %177 = load i32, ptr %176, align 4, !tbaa !25
  %178 = mul i32 %174, %177
  %179 = icmp eq i32 %178, 32
  %180 = zext i1 %179 to i64
  %181 = select i1 %179, i32 121, i32 120
  br label %182

182:                                              ; preds = %173, %172
  %183 = phi i32 [ 122, %172 ], [ %181, %173 ]
  %184 = trunc i32 %183 to i8
  store i8 %184, ptr %32, align 1, !tbaa !26
  %185 = load ptr, ptr %14, align 8, !tbaa !5
  %186 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %185, i32 noundef 0)
  %187 = icmp eq i32 2, %186
  br i1 %187, label %192, label %188

188:                                              ; preds = %182
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %189, i32 noundef 0)
  %191 = icmp eq i32 3, %190
  br i1 %191, label %192, label %208

192:                                              ; preds = %188, %182
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %193, i32 0, i32 6
  %195 = load i32, ptr %194, align 4, !tbaa !13
  %196 = icmp ult i32 %195, 1051
  br i1 %196, label %197, label %207

197:                                              ; preds = %192
  %198 = load i32, ptr %19, align 4, !tbaa !9
  %199 = icmp ugt i32 %198, 0
  br i1 %199, label %200, label %206

200:                                              ; preds = %197
  %201 = load ptr, ptr %14, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %201, i32 0, i32 0
  %203 = load i32, ptr %202, align 1, !tbaa !27
  %204 = load i32, ptr %15, align 4, !tbaa !9
  %205 = urem i32 %203, %204
  store i32 %205, ptr %20, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %200, %197
  br label %207

207:                                              ; preds = %206, %192
  br label %208

208:                                              ; preds = %207, %188
  %209 = load ptr, ptr %11, align 8, !tbaa !5
  %210 = load ptr, ptr %13, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %210, i32 0, i32 6
  %212 = load i32, ptr %211, align 4, !tbaa !28
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %213, i32 0, i32 9
  %215 = load i32, ptr %214, align 4, !tbaa !19
  %216 = load i32, ptr %21, align 4, !tbaa !9
  %217 = load i32, ptr %30, align 4, !tbaa !9
  %218 = mul i32 %216, %217
  %219 = load i32, ptr %22, align 4, !tbaa !9
  %220 = load ptr, ptr %14, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %220, i32 0, i32 2
  %222 = load i32, ptr %221, align 1, !tbaa !29
  %223 = mul i32 %219, %222
  %224 = add i32 %218, %223
  %225 = load ptr, ptr %13, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %225, i32 0, i32 2
  %227 = load i32, ptr %226, align 4, !tbaa !25
  %228 = mul i32 %224, %227
  %229 = load i8, ptr %32, align 1, !tbaa !26
  %230 = load ptr, ptr %13, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %230, i32 0, i32 29
  %232 = load i32, ptr %231, align 4, !tbaa !23
  %233 = load i32, ptr %19, align 4, !tbaa !9
  %234 = icmp eq i32 %233, 1
  br i1 %234, label %235, label %240

235:                                              ; preds = %208
  %236 = load i32, ptr %21, align 4, !tbaa !9
  %237 = load i32, ptr %17, align 4, !tbaa !9
  %238 = sub i32 %237, 1
  %239 = icmp eq i32 %236, %238
  br label %240

240:                                              ; preds = %235, %208
  %241 = phi i1 [ false, %208 ], [ %239, %235 ]
  %242 = zext i1 %241 to i64
  %243 = select i1 %241, i32 1, i32 0
  %244 = load i32, ptr %19, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 1
  br i1 %245, label %246, label %253

246:                                              ; preds = %240
  %247 = load i32, ptr %21, align 4, !tbaa !9
  %248 = load i32, ptr %17, align 4, !tbaa !9
  %249 = sub i32 %248, 1
  %250 = icmp eq i32 %247, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %246
  %252 = load i32, ptr %20, align 4, !tbaa !9
  br label %254

253:                                              ; preds = %246, %240
  br label %254

254:                                              ; preds = %253, %251
  %255 = phi i32 [ %252, %251 ], [ 0, %253 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %209, i32 noundef %212, i32 noundef %215, i32 noundef 127, i32 noundef 0, i32 noundef %228, i8 noundef signext %229, i32 noundef %232, i32 noundef %243, i32 noundef %255, i32 noundef 0)
  %256 = load ptr, ptr %14, align 8, !tbaa !5
  %257 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %256, i32 noundef 0)
  %258 = icmp eq i32 2, %257
  br i1 %258, label %259, label %273

259:                                              ; preds = %254
  %260 = load i32, ptr %24, align 4, !tbaa !9
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %273

262:                                              ; preds = %259
  %263 = load ptr, ptr %11, align 8, !tbaa !5
  %264 = load ptr, ptr %13, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %264, i32 0, i32 128
  %266 = load i8, ptr %265, align 4, !tbaa !22
  %267 = load ptr, ptr %13, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %267, i32 0, i32 29
  %269 = load i32, ptr %268, align 4, !tbaa !23
  %270 = load ptr, ptr %13, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %270, i32 0, i32 29
  %272 = load i32, ptr %271, align 4, !tbaa !23
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %263, i8 noundef signext %266, i32 noundef %269, i32 noundef %272)
  br label %273

273:                                              ; preds = %262, %259, %254
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %274, i32 noundef 0)
  %276 = icmp eq i32 3, %275
  br i1 %276, label %277, label %291

277:                                              ; preds = %273
  %278 = load i32, ptr %24, align 4, !tbaa !9
  %279 = icmp eq i32 %278, 0
  br i1 %279, label %280, label %291

280:                                              ; preds = %277
  %281 = load ptr, ptr %11, align 8, !tbaa !5
  %282 = load ptr, ptr %13, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %282, i32 0, i32 128
  %284 = load i8, ptr %283, align 4, !tbaa !22
  %285 = load ptr, ptr %13, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %285, i32 0, i32 29
  %287 = load i32, ptr %286, align 4, !tbaa !23
  %288 = load ptr, ptr %13, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %288, i32 0, i32 29
  %290 = load i32, ptr %289, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %281, i32 noundef 537208083, i8 noundef signext %284, i32 noundef %287, i32 noundef %290)
  br label %291

291:                                              ; preds = %280, %277, %273
  %292 = load ptr, ptr %14, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %292, i32 0, i32 10
  %294 = load i16, ptr %293, align 1, !tbaa !18
  %295 = zext i16 %294 to i32
  %296 = icmp eq i32 %295, 37
  br i1 %296, label %297, label %308

297:                                              ; preds = %291
  %298 = load ptr, ptr %11, align 8, !tbaa !5
  %299 = load ptr, ptr %13, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %299, i32 0, i32 32
  %301 = load i32, ptr %300, align 4, !tbaa !30
  %302 = load ptr, ptr %13, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %302, i32 0, i32 29
  %304 = load i32, ptr %303, align 4, !tbaa !23
  %305 = load ptr, ptr %13, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %305, i32 0, i32 30
  %307 = load i32, ptr %306, align 4, !tbaa !31
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %298, i32 noundef 806098626, i8 noundef signext 121, i32 noundef %301, i32 noundef %304, i32 noundef %307, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 14)
  br label %319

308:                                              ; preds = %291
  %309 = load ptr, ptr %11, align 8, !tbaa !5
  %310 = load ptr, ptr %13, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %310, i32 0, i32 32
  %312 = load i32, ptr %311, align 4, !tbaa !30
  %313 = load ptr, ptr %13, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %313, i32 0, i32 29
  %315 = load i32, ptr %314, align 4, !tbaa !23
  %316 = load ptr, ptr %13, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %316, i32 0, i32 29
  %318 = load i32, ptr %317, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %309, i32 noundef 806098626, i8 noundef signext 121, i32 noundef %312, i32 noundef %315, i32 noundef %318, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 14)
  br label %319

319:                                              ; preds = %308, %297
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #3
  br label %320

320:                                              ; preds = %319, %118
  %321 = load ptr, ptr %14, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %321, i32 0, i32 10
  %323 = load i16, ptr %322, align 1, !tbaa !18
  %324 = zext i16 %323 to i32
  %325 = icmp eq i32 %324, 35
  br i1 %325, label %326, label %348

326:                                              ; preds = %320
  %327 = load ptr, ptr %11, align 8, !tbaa !5
  %328 = load ptr, ptr %13, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %328, i32 0, i32 128
  %330 = load i8, ptr %329, align 4, !tbaa !22
  %331 = load i32, ptr %23, align 4, !tbaa !9
  %332 = load ptr, ptr %13, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %332, i32 0, i32 102
  %334 = load i32, ptr %333, align 4, !tbaa !32
  %335 = load ptr, ptr %13, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %335, i32 0, i32 30
  %337 = load i32, ptr %336, align 4, !tbaa !31
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %327, i32 noundef 805574233, i8 noundef signext %330, i32 noundef %331, i32 noundef %334, i32 noundef %337)
  %338 = load ptr, ptr %11, align 8, !tbaa !5
  %339 = load i32, ptr %23, align 4, !tbaa !9
  %340 = load ptr, ptr %13, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %340, i32 0, i32 30
  %342 = load i32, ptr %341, align 4, !tbaa !31
  %343 = load i32, ptr %23, align 4, !tbaa !9
  %344 = load ptr, ptr %13, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %344, i32 0, i32 29
  %346 = load i32, ptr %345, align 4, !tbaa !23
  %347 = shl i32 %346, 4
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %338, i32 noundef 1879912522, i8 noundef signext 121, i32 noundef %339, i32 noundef %342, i32 noundef %343, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %347)
  br label %403

348:                                              ; preds = %320
  %349 = load ptr, ptr %14, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %349, i32 0, i32 10
  %351 = load i16, ptr %350, align 1, !tbaa !18
  %352 = zext i16 %351 to i32
  %353 = icmp eq i32 %352, 6
  br i1 %353, label %354, label %365

354:                                              ; preds = %348
  %355 = load ptr, ptr %11, align 8, !tbaa !5
  %356 = load i32, ptr %23, align 4, !tbaa !9
  %357 = load ptr, ptr %13, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %357, i32 0, i32 32
  %359 = load i32, ptr %358, align 4, !tbaa !30
  %360 = load i32, ptr %23, align 4, !tbaa !9
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %361, i32 0, i32 29
  %363 = load i32, ptr %362, align 4, !tbaa !23
  %364 = shl i32 %363, 4
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %355, i32 noundef 1879912522, i8 noundef signext 121, i32 noundef %356, i32 noundef %359, i32 noundef %360, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %364)
  br label %402

365:                                              ; preds = %348
  %366 = load ptr, ptr %14, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %366, i32 0, i32 10
  %368 = load i16, ptr %367, align 1, !tbaa !18
  %369 = zext i16 %368 to i32
  %370 = icmp eq i32 %369, 37
  br i1 %370, label %371, label %400

371:                                              ; preds = %365
  %372 = load ptr, ptr %11, align 8, !tbaa !5
  %373 = load ptr, ptr %13, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %373, i32 0, i32 29
  %375 = load i32, ptr %374, align 4, !tbaa !23
  %376 = load ptr, ptr %13, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %376, i32 0, i32 102
  %378 = load i32, ptr %377, align 4, !tbaa !32
  %379 = load ptr, ptr %13, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %379, i32 0, i32 29
  %381 = load i32, ptr %380, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %372, i32 noundef 805574232, i8 noundef signext 121, i32 noundef %375, i32 noundef %378, i32 noundef %381)
  %382 = load ptr, ptr %11, align 8, !tbaa !5
  %383 = load ptr, ptr %13, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %383, i32 0, i32 29
  %385 = load i32, ptr %384, align 4, !tbaa !23
  %386 = load i32, ptr %23, align 4, !tbaa !9
  %387 = load ptr, ptr %13, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %387, i32 0, i32 29
  %389 = load i32, ptr %388, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %382, i32 noundef 805574233, i8 noundef signext 121, i32 noundef %385, i32 noundef %386, i32 noundef %389)
  %390 = load ptr, ptr %11, align 8, !tbaa !5
  %391 = load i32, ptr %23, align 4, !tbaa !9
  %392 = load ptr, ptr %13, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %392, i32 0, i32 29
  %394 = load i32, ptr %393, align 4, !tbaa !23
  %395 = load i32, ptr %23, align 4, !tbaa !9
  %396 = load ptr, ptr %13, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %396, i32 0, i32 30
  %398 = load i32, ptr %397, align 4, !tbaa !31
  %399 = shl i32 %398, 4
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef %390, i32 noundef 1879912522, i8 noundef signext 121, i32 noundef %391, i32 noundef %394, i32 noundef %395, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %399)
  br label %401

400:                                              ; preds = %365
  br label %401

401:                                              ; preds = %400, %371
  br label %402

402:                                              ; preds = %401, %354
  br label %403

403:                                              ; preds = %402, %326
  br label %832

404:                                              ; preds = %43
  %405 = load ptr, ptr %11, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %405, i32 0, i32 6
  %407 = load i32, ptr %406, align 4, !tbaa !13
  %408 = icmp ule i32 %407, 1053
  br i1 %408, label %409, label %412

409:                                              ; preds = %404
  %410 = load i32, ptr %30, align 4, !tbaa !9
  %411 = udiv i32 %410, 2
  br label %414

412:                                              ; preds = %404
  %413 = load i32, ptr %30, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %412, %409
  %415 = phi i32 [ %411, %409 ], [ %413, %412 ]
  store i32 %415, ptr %30, align 4, !tbaa !9
  %416 = load ptr, ptr %14, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %416, i32 0, i32 9
  %418 = load i16, ptr %417, align 1, !tbaa !15
  %419 = zext i16 %418 to i32
  %420 = and i32 %419, 1
  %421 = icmp sgt i32 %420, 0
  br i1 %421, label %422, label %445

422:                                              ; preds = %414
  %423 = load ptr, ptr %14, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %423, i32 0, i32 10
  %425 = load i16, ptr %424, align 1, !tbaa !18
  %426 = zext i16 %425 to i32
  %427 = icmp ne i32 %426, 37
  br i1 %427, label %428, label %445

428:                                              ; preds = %422
  %429 = load ptr, ptr %11, align 8, !tbaa !5
  %430 = load i32, ptr %29, align 4, !tbaa !9
  %431 = load ptr, ptr %12, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %431, i32 0, i32 9
  %433 = load i32, ptr %432, align 4, !tbaa !19
  %434 = load i32, ptr %21, align 4, !tbaa !9
  %435 = load i32, ptr %30, align 4, !tbaa !9
  %436 = mul i32 %434, %435
  %437 = load i32, ptr %22, align 4, !tbaa !9
  %438 = load ptr, ptr %13, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %438, i32 0, i32 16
  %440 = load i32, ptr %439, align 4, !tbaa !21
  %441 = mul i32 %437, %440
  %442 = add i32 %436, %441
  %443 = udiv i32 %442, 8
  %444 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef %429, i32 noundef %430, i32 noundef %433, i32 noundef 127, i32 noundef 0, i32 noundef %443, i32 noundef %444)
  br label %748

445:                                              ; preds = %422, %414
  %446 = load ptr, ptr %14, align 8, !tbaa !5
  %447 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %446, i32 noundef 0)
  %448 = icmp eq i32 2, %447
  br i1 %448, label %449, label %516

449:                                              ; preds = %445
  %450 = load i32, ptr %24, align 4, !tbaa !9
  %451 = icmp eq i32 %450, 0
  br i1 %451, label %452, label %516

452:                                              ; preds = %449
  %453 = load ptr, ptr %11, align 8, !tbaa !5
  %454 = load ptr, ptr %13, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %454, i32 0, i32 6
  %456 = load i32, ptr %455, align 4, !tbaa !28
  %457 = load ptr, ptr %12, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %457, i32 0, i32 9
  %459 = load i32, ptr %458, align 4, !tbaa !19
  %460 = load i32, ptr %21, align 4, !tbaa !9
  %461 = load i32, ptr %30, align 4, !tbaa !9
  %462 = mul i32 %460, %461
  %463 = load i32, ptr %22, align 4, !tbaa !9
  %464 = load ptr, ptr %14, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %464, i32 0, i32 2
  %466 = load i32, ptr %465, align 1, !tbaa !29
  %467 = mul i32 %463, %466
  %468 = add i32 %462, %467
  %469 = load ptr, ptr %13, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %469, i32 0, i32 2
  %471 = load i32, ptr %470, align 4, !tbaa !25
  %472 = mul i32 %468, %471
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %473, i32 0, i32 6
  %475 = load i32, ptr %474, align 4, !tbaa !13
  %476 = icmp ule i32 %475, 1053
  %477 = zext i1 %476 to i64
  %478 = select i1 %476, i32 120, i32 121
  %479 = trunc i32 %478 to i8
  %480 = load ptr, ptr %13, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %480, i32 0, i32 29
  %482 = load i32, ptr %481, align 4, !tbaa !23
  %483 = load i32, ptr %19, align 4, !tbaa !9
  %484 = icmp eq i32 %483, 1
  br i1 %484, label %485, label %490

485:                                              ; preds = %452
  %486 = load i32, ptr %21, align 4, !tbaa !9
  %487 = load i32, ptr %17, align 4, !tbaa !9
  %488 = sub i32 %487, 1
  %489 = icmp eq i32 %486, %488
  br label %490

490:                                              ; preds = %485, %452
  %491 = phi i1 [ false, %452 ], [ %489, %485 ]
  %492 = zext i1 %491 to i64
  %493 = select i1 %491, i32 1, i32 0
  %494 = load i32, ptr %19, align 4, !tbaa !9
  %495 = icmp eq i32 %494, 1
  br i1 %495, label %496, label %503

496:                                              ; preds = %490
  %497 = load i32, ptr %21, align 4, !tbaa !9
  %498 = load i32, ptr %17, align 4, !tbaa !9
  %499 = sub i32 %498, 1
  %500 = icmp eq i32 %497, %499
  br i1 %500, label %501, label %503

501:                                              ; preds = %496
  %502 = load i32, ptr %20, align 4, !tbaa !9
  br label %504

503:                                              ; preds = %496, %490
  br label %504

504:                                              ; preds = %503, %501
  %505 = phi i32 [ %502, %501 ], [ 0, %503 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %453, i32 noundef %456, i32 noundef %459, i32 noundef 127, i32 noundef 0, i32 noundef %472, i8 noundef signext %479, i32 noundef %482, i32 noundef %493, i32 noundef %505, i32 noundef 0)
  %506 = load ptr, ptr %11, align 8, !tbaa !5
  %507 = load ptr, ptr %13, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %507, i32 0, i32 128
  %509 = load i8, ptr %508, align 4, !tbaa !22
  %510 = load ptr, ptr %13, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %510, i32 0, i32 29
  %512 = load i32, ptr %511, align 4, !tbaa !23
  %513 = load ptr, ptr %13, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %513, i32 0, i32 29
  %515 = load i32, ptr %514, align 4, !tbaa !23
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %506, i8 noundef signext %509, i32 noundef %512, i32 noundef %515)
  br label %735

516:                                              ; preds = %449, %445
  %517 = load ptr, ptr %14, align 8, !tbaa !5
  %518 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %517, i32 noundef 0)
  %519 = icmp eq i32 3, %518
  br i1 %519, label %520, label %587

520:                                              ; preds = %516
  %521 = load i32, ptr %24, align 4, !tbaa !9
  %522 = icmp eq i32 %521, 0
  br i1 %522, label %523, label %587

523:                                              ; preds = %520
  %524 = load ptr, ptr %11, align 8, !tbaa !5
  %525 = load ptr, ptr %13, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %525, i32 0, i32 6
  %527 = load i32, ptr %526, align 4, !tbaa !28
  %528 = load ptr, ptr %12, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %528, i32 0, i32 9
  %530 = load i32, ptr %529, align 4, !tbaa !19
  %531 = load i32, ptr %21, align 4, !tbaa !9
  %532 = load i32, ptr %30, align 4, !tbaa !9
  %533 = mul i32 %531, %532
  %534 = load i32, ptr %22, align 4, !tbaa !9
  %535 = load ptr, ptr %14, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %535, i32 0, i32 2
  %537 = load i32, ptr %536, align 1, !tbaa !29
  %538 = mul i32 %534, %537
  %539 = add i32 %533, %538
  %540 = load ptr, ptr %13, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %540, i32 0, i32 2
  %542 = load i32, ptr %541, align 4, !tbaa !25
  %543 = mul i32 %539, %542
  %544 = load ptr, ptr %11, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %544, i32 0, i32 6
  %546 = load i32, ptr %545, align 4, !tbaa !13
  %547 = icmp ule i32 %546, 1053
  %548 = zext i1 %547 to i64
  %549 = select i1 %547, i32 120, i32 121
  %550 = trunc i32 %549 to i8
  %551 = load ptr, ptr %13, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %551, i32 0, i32 29
  %553 = load i32, ptr %552, align 4, !tbaa !23
  %554 = load i32, ptr %19, align 4, !tbaa !9
  %555 = icmp eq i32 %554, 1
  br i1 %555, label %556, label %561

556:                                              ; preds = %523
  %557 = load i32, ptr %21, align 4, !tbaa !9
  %558 = load i32, ptr %17, align 4, !tbaa !9
  %559 = sub i32 %558, 1
  %560 = icmp eq i32 %557, %559
  br label %561

561:                                              ; preds = %556, %523
  %562 = phi i1 [ false, %523 ], [ %560, %556 ]
  %563 = zext i1 %562 to i64
  %564 = select i1 %562, i32 1, i32 0
  %565 = load i32, ptr %19, align 4, !tbaa !9
  %566 = icmp eq i32 %565, 1
  br i1 %566, label %567, label %574

567:                                              ; preds = %561
  %568 = load i32, ptr %21, align 4, !tbaa !9
  %569 = load i32, ptr %17, align 4, !tbaa !9
  %570 = sub i32 %569, 1
  %571 = icmp eq i32 %568, %570
  br i1 %571, label %572, label %574

572:                                              ; preds = %567
  %573 = load i32, ptr %20, align 4, !tbaa !9
  br label %575

574:                                              ; preds = %567, %561
  br label %575

575:                                              ; preds = %574, %572
  %576 = phi i32 [ %573, %572 ], [ 0, %574 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %524, i32 noundef %527, i32 noundef %530, i32 noundef 127, i32 noundef 0, i32 noundef %543, i8 noundef signext %550, i32 noundef %553, i32 noundef %564, i32 noundef %576, i32 noundef 0)
  %577 = load ptr, ptr %11, align 8, !tbaa !5
  %578 = load ptr, ptr %13, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %578, i32 0, i32 128
  %580 = load i8, ptr %579, align 4, !tbaa !22
  %581 = load ptr, ptr %13, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %581, i32 0, i32 29
  %583 = load i32, ptr %582, align 4, !tbaa !23
  %584 = load ptr, ptr %13, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %584, i32 0, i32 29
  %586 = load i32, ptr %585, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %577, i32 noundef 537208083, i8 noundef signext %580, i32 noundef %583, i32 noundef %586)
  br label %734

587:                                              ; preds = %520, %516
  %588 = load ptr, ptr %14, align 8, !tbaa !5
  %589 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %588, i32 noundef 0)
  %590 = icmp eq i32 4, %589
  br i1 %590, label %595, label %591

591:                                              ; preds = %587
  %592 = load ptr, ptr %14, align 8, !tbaa !5
  %593 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %592, i32 noundef 0)
  %594 = icmp eq i32 5, %593
  br i1 %594, label %595, label %683

595:                                              ; preds = %591, %587
  %596 = load i32, ptr %24, align 4, !tbaa !9
  %597 = icmp eq i32 %596, 0
  br i1 %597, label %598, label %683

598:                                              ; preds = %595
  %599 = load ptr, ptr %11, align 8, !tbaa !5
  %600 = load ptr, ptr %13, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %600, i32 0, i32 6
  %602 = load i32, ptr %601, align 4, !tbaa !28
  %603 = load ptr, ptr %12, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %603, i32 0, i32 9
  %605 = load i32, ptr %604, align 4, !tbaa !19
  %606 = load i32, ptr %21, align 4, !tbaa !9
  %607 = load i32, ptr %30, align 4, !tbaa !9
  %608 = mul i32 %606, %607
  %609 = load i32, ptr %22, align 4, !tbaa !9
  %610 = load ptr, ptr %14, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %610, i32 0, i32 2
  %612 = load i32, ptr %611, align 1, !tbaa !29
  %613 = mul i32 %609, %612
  %614 = add i32 %608, %613
  %615 = load ptr, ptr %13, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %615, i32 0, i32 2
  %617 = load i32, ptr %616, align 4, !tbaa !25
  %618 = mul i32 %614, %617
  %619 = load ptr, ptr %13, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %619, i32 0, i32 29
  %621 = load i32, ptr %620, align 4, !tbaa !23
  %622 = load i32, ptr %19, align 4, !tbaa !9
  %623 = icmp eq i32 %622, 1
  br i1 %623, label %624, label %629

624:                                              ; preds = %598
  %625 = load i32, ptr %21, align 4, !tbaa !9
  %626 = load i32, ptr %17, align 4, !tbaa !9
  %627 = sub i32 %626, 1
  %628 = icmp eq i32 %625, %627
  br label %629

629:                                              ; preds = %624, %598
  %630 = phi i1 [ false, %598 ], [ %628, %624 ]
  %631 = zext i1 %630 to i64
  %632 = select i1 %630, i32 1, i32 0
  %633 = load i32, ptr %19, align 4, !tbaa !9
  %634 = icmp eq i32 %633, 1
  br i1 %634, label %635, label %642

635:                                              ; preds = %629
  %636 = load i32, ptr %21, align 4, !tbaa !9
  %637 = load i32, ptr %17, align 4, !tbaa !9
  %638 = sub i32 %637, 1
  %639 = icmp eq i32 %636, %638
  br i1 %639, label %640, label %642

640:                                              ; preds = %635
  %641 = load i32, ptr %20, align 4, !tbaa !9
  br label %643

642:                                              ; preds = %635, %629
  br label %643

643:                                              ; preds = %642, %640
  %644 = phi i32 [ %641, %640 ], [ 0, %642 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %599, i32 noundef %602, i32 noundef %605, i32 noundef 127, i32 noundef 0, i32 noundef %618, i8 noundef signext 120, i32 noundef %621, i32 noundef %632, i32 noundef %644, i32 noundef 0)
  %645 = load ptr, ptr %14, align 8, !tbaa !5
  %646 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %645, i32 noundef 0)
  %647 = icmp eq i32 4, %646
  br i1 %647, label %648, label %659

648:                                              ; preds = %643
  %649 = load ptr, ptr %11, align 8, !tbaa !5
  %650 = load ptr, ptr %13, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %650, i32 0, i32 128
  %652 = load i8, ptr %651, align 4, !tbaa !22
  %653 = load ptr, ptr %13, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %653, i32 0, i32 29
  %655 = load i32, ptr %654, align 4, !tbaa !23
  %656 = load ptr, ptr %13, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %656, i32 0, i32 29
  %658 = load i32, ptr %657, align 4, !tbaa !23
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %649, i8 noundef signext %652, i32 noundef %655, i32 noundef %658)
  br label %682

659:                                              ; preds = %643
  %660 = load ptr, ptr %11, align 8, !tbaa !5
  %661 = load ptr, ptr %13, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %661, i32 0, i32 128
  %663 = load i8, ptr %662, align 4, !tbaa !22
  %664 = load ptr, ptr %13, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %664, i32 0, i32 29
  %666 = load i32, ptr %665, align 4, !tbaa !23
  %667 = load ptr, ptr %13, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %667, i32 0, i32 29
  %669 = load i32, ptr %668, align 4, !tbaa !23
  %670 = load ptr, ptr %13, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %670, i32 0, i32 24
  %672 = load i32, ptr %671, align 4, !tbaa !33
  %673 = load ptr, ptr %13, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %673, i32 0, i32 25
  %675 = load i32, ptr %674, align 4, !tbaa !34
  %676 = load ptr, ptr %13, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %676, i32 0, i32 21
  %678 = load i32, ptr %677, align 4, !tbaa !35
  %679 = load ptr, ptr %13, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %679, i32 0, i32 22
  %681 = load i32, ptr %680, align 4, !tbaa !36
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %660, i8 noundef signext %663, i32 noundef %666, i32 noundef %669, i32 noundef %672, i32 noundef %675, i32 noundef %678, i32 noundef %681)
  br label %682

682:                                              ; preds = %659, %648
  br label %733

683:                                              ; preds = %595, %591
  %684 = load ptr, ptr %11, align 8, !tbaa !5
  %685 = load ptr, ptr %13, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %685, i32 0, i32 6
  %687 = load i32, ptr %686, align 4, !tbaa !28
  %688 = load ptr, ptr %12, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %688, i32 0, i32 9
  %690 = load i32, ptr %689, align 4, !tbaa !19
  %691 = load i32, ptr %21, align 4, !tbaa !9
  %692 = load i32, ptr %30, align 4, !tbaa !9
  %693 = mul i32 %691, %692
  %694 = load i32, ptr %22, align 4, !tbaa !9
  %695 = load ptr, ptr %14, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %695, i32 0, i32 2
  %697 = load i32, ptr %696, align 1, !tbaa !29
  %698 = mul i32 %694, %697
  %699 = add i32 %693, %698
  %700 = load ptr, ptr %13, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %700, i32 0, i32 2
  %702 = load i32, ptr %701, align 4, !tbaa !25
  %703 = mul i32 %699, %702
  %704 = load ptr, ptr %13, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %704, i32 0, i32 128
  %706 = load i8, ptr %705, align 4, !tbaa !22
  %707 = load ptr, ptr %13, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %707, i32 0, i32 29
  %709 = load i32, ptr %708, align 4, !tbaa !23
  %710 = load i32, ptr %19, align 4, !tbaa !9
  %711 = icmp eq i32 %710, 1
  br i1 %711, label %712, label %717

712:                                              ; preds = %683
  %713 = load i32, ptr %21, align 4, !tbaa !9
  %714 = load i32, ptr %17, align 4, !tbaa !9
  %715 = sub i32 %714, 1
  %716 = icmp eq i32 %713, %715
  br label %717

717:                                              ; preds = %712, %683
  %718 = phi i1 [ false, %683 ], [ %716, %712 ]
  %719 = zext i1 %718 to i64
  %720 = select i1 %718, i32 1, i32 0
  %721 = load i32, ptr %19, align 4, !tbaa !9
  %722 = icmp eq i32 %721, 1
  br i1 %722, label %723, label %730

723:                                              ; preds = %717
  %724 = load i32, ptr %21, align 4, !tbaa !9
  %725 = load i32, ptr %17, align 4, !tbaa !9
  %726 = sub i32 %725, 1
  %727 = icmp eq i32 %724, %726
  br i1 %727, label %728, label %730

728:                                              ; preds = %723
  %729 = load i32, ptr %20, align 4, !tbaa !9
  br label %731

730:                                              ; preds = %723, %717
  br label %731

731:                                              ; preds = %730, %728
  %732 = phi i32 [ %729, %728 ], [ 0, %730 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %684, i32 noundef %687, i32 noundef %690, i32 noundef 127, i32 noundef 0, i32 noundef %703, i8 noundef signext %706, i32 noundef %709, i32 noundef %720, i32 noundef %732, i32 noundef 0)
  br label %733

733:                                              ; preds = %731, %682
  br label %734

734:                                              ; preds = %733, %575
  br label %735

735:                                              ; preds = %734, %504
  %736 = load ptr, ptr %11, align 8, !tbaa !5
  %737 = load i32, ptr %27, align 4, !tbaa !9
  %738 = load ptr, ptr %13, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %738, i32 0, i32 128
  %740 = load i8, ptr %739, align 4, !tbaa !22
  %741 = load ptr, ptr %13, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %741, i32 0, i32 32
  %743 = load i32, ptr %742, align 4, !tbaa !30
  %744 = load ptr, ptr %13, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %744, i32 0, i32 29
  %746 = load i32, ptr %745, align 4, !tbaa !23
  %747 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %736, i32 noundef %737, i8 noundef signext %740, i32 noundef %743, i32 noundef %746, i32 noundef %747, i32 noundef 6)
  br label %748

748:                                              ; preds = %735, %428
  %749 = load ptr, ptr %14, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %749, i32 0, i32 10
  %751 = load i16, ptr %750, align 1, !tbaa !18
  %752 = zext i16 %751 to i32
  %753 = icmp eq i32 %752, 35
  br i1 %753, label %754, label %768

754:                                              ; preds = %748
  %755 = load ptr, ptr %11, align 8, !tbaa !5
  %756 = load i32, ptr %26, align 4, !tbaa !9
  %757 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_mask_compute_reg(ptr noundef %755, i32 noundef -1601892028, i32 noundef %756, i32 noundef 255, i32 noundef %757, i32 noundef 1024)
  %758 = load ptr, ptr %11, align 8, !tbaa !5
  %759 = load ptr, ptr %13, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %759, i32 0, i32 128
  %761 = load i8, ptr %760, align 4, !tbaa !22
  %762 = load i32, ptr %23, align 4, !tbaa !9
  %763 = load ptr, ptr %13, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %763, i32 0, i32 102
  %765 = load i32, ptr %764, align 4, !tbaa !32
  %766 = load i32, ptr %23, align 4, !tbaa !9
  %767 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %758, i32 noundef 805574233, i8 noundef signext %761, i32 noundef %762, i32 noundef %765, i32 noundef %766, i32 noundef %767, i32 noundef 0)
  br label %831

768:                                              ; preds = %748
  %769 = load ptr, ptr %14, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %769, i32 0, i32 10
  %771 = load i16, ptr %770, align 1, !tbaa !18
  %772 = zext i16 %771 to i32
  %773 = icmp eq i32 %772, 6
  br i1 %773, label %774, label %786

774:                                              ; preds = %768
  %775 = load ptr, ptr %11, align 8, !tbaa !5
  %776 = load i32, ptr %28, align 4, !tbaa !9
  %777 = load ptr, ptr %13, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %777, i32 0, i32 128
  %779 = load i8, ptr %778, align 4, !tbaa !22
  %780 = load i32, ptr %23, align 4, !tbaa !9
  %781 = load ptr, ptr %13, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %781, i32 0, i32 32
  %783 = load i32, ptr %782, align 4, !tbaa !30
  %784 = load i32, ptr %23, align 4, !tbaa !9
  %785 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %775, i32 noundef %776, i8 noundef signext %779, i32 noundef %780, i32 noundef %783, i32 noundef %784, i32 noundef %785, i32 noundef 0)
  br label %830

786:                                              ; preds = %768
  %787 = load ptr, ptr %14, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %787, i32 0, i32 10
  %789 = load i16, ptr %788, align 1, !tbaa !18
  %790 = zext i16 %789 to i32
  %791 = icmp eq i32 %790, 37
  br i1 %791, label %792, label %828

792:                                              ; preds = %786
  %793 = load ptr, ptr %11, align 8, !tbaa !5
  %794 = load ptr, ptr %13, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %794, i32 0, i32 128
  %796 = load i8, ptr %795, align 4, !tbaa !22
  %797 = load ptr, ptr %13, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %797, i32 0, i32 29
  %799 = load i32, ptr %798, align 4, !tbaa !23
  %800 = load ptr, ptr %13, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %800, i32 0, i32 102
  %802 = load i32, ptr %801, align 4, !tbaa !32
  %803 = load ptr, ptr %13, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %803, i32 0, i32 29
  %805 = load i32, ptr %804, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %793, i32 noundef 805574232, i8 noundef signext %796, i32 noundef %799, i32 noundef %802, i32 noundef %805)
  %806 = load ptr, ptr %11, align 8, !tbaa !5
  %807 = load ptr, ptr %13, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %807, i32 0, i32 128
  %809 = load i8, ptr %808, align 4, !tbaa !22
  %810 = load ptr, ptr %13, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %810, i32 0, i32 29
  %812 = load i32, ptr %811, align 4, !tbaa !23
  %813 = load i32, ptr %23, align 4, !tbaa !9
  %814 = load ptr, ptr %13, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %814, i32 0, i32 29
  %816 = load i32, ptr %815, align 4, !tbaa !23
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %806, i32 noundef 805574233, i8 noundef signext %809, i32 noundef %812, i32 noundef %813, i32 noundef %816)
  %817 = load ptr, ptr %11, align 8, !tbaa !5
  %818 = load i32, ptr %28, align 4, !tbaa !9
  %819 = load ptr, ptr %13, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %819, i32 0, i32 128
  %821 = load i8, ptr %820, align 4, !tbaa !22
  %822 = load i32, ptr %23, align 4, !tbaa !9
  %823 = load ptr, ptr %13, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %823, i32 0, i32 29
  %825 = load i32, ptr %824, align 4, !tbaa !23
  %826 = load i32, ptr %23, align 4, !tbaa !9
  %827 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef %817, i32 noundef %818, i8 noundef signext %821, i32 noundef %822, i32 noundef %825, i32 noundef %826, i32 noundef %827, i32 noundef 0)
  br label %829

828:                                              ; preds = %786
  br label %829

829:                                              ; preds = %828, %792
  br label %830

830:                                              ; preds = %829, %774
  br label %831

831:                                              ; preds = %830, %754
  br label %832

832:                                              ; preds = %831, %403
  store i32 0, ptr %31, align 4
  br label %833

833:                                              ; preds = %832, %101
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  %834 = load i32, ptr %31, align 4
  switch i32 %834, label %844 [
    i32 0, label %835
  ]

835:                                              ; preds = %833
  br label %836

836:                                              ; preds = %835
  %837 = load i32, ptr %21, align 4, !tbaa !9
  %838 = add i32 %837, 1
  store i32 %838, ptr %21, align 4, !tbaa !9
  br label %39, !llvm.loop !37

839:                                              ; preds = %39
  br label %840

840:                                              ; preds = %839
  %841 = load i32, ptr %22, align 4, !tbaa !9
  %842 = add i32 %841, 1
  store i32 %842, ptr %22, align 4, !tbaa !9
  br label %34, !llvm.loop !39

843:                                              ; preds = %34
  store i32 0, ptr %31, align 4
  br label %844

844:                                              ; preds = %843, %833
  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
  %845 = load i32, ptr %31, align 4
  switch i32 %845, label %847 [
    i32 0, label %846
    i32 1, label %846
  ]

846:                                              ; preds = %844, %844
  ret void

847:                                              ; preds = %844
  unreachable
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 76}
!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 = !{!14, !10, i64 28}
!14 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!15 = !{!16, !17, i64 27}
!16 = !{!"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, !17, i64 27, !17, i64 29, !7, i64 31}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !17, i64 29}
!19 = !{!20, !10, i64 36}
!20 = !{!"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}
!21 = !{!12, !10, i64 64}
!22 = !{!12, !7, i64 512}
!23 = !{!12, !10, i64 116}
!24 = !{!12, !10, i64 344}
!25 = !{!12, !10, i64 8}
!26 = !{!7, !7, i64 0}
!27 = !{!16, !10, i64 0}
!28 = !{!12, !10, i64 24}
!29 = !{!16, !10, i64 8}
!30 = !{!12, !10, i64 128}
!31 = !{!12, !10, i64 120}
!32 = !{!12, !10, i64 408}
!33 = !{!12, !10, i64 96}
!34 = !{!12, !10, i64 100}
!35 = !{!12, !10, i64 84}
!36 = !{!12, !10, i64 88}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = distinct !{!39, !38}


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

@.str = external hidden unnamed_addr constant [100 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_compute_unary_2d_reg_block_relu_inv = external hidden unnamed_addr constant [44 x i8], align 1

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

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

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

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

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

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

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

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

declare void @libxsmm_x86_instruction_vec_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 #0

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_unary_2d_reg_block_relu_inv(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) local_unnamed_addr #1 {
  %.not = icmp eq i32 %7, 0
  br i1 %.not, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %10
  %.not325 = icmp eq i32 %6, 0
  %11 = getelementptr inbounds i8, ptr %2, i64 76
  %12 = getelementptr inbounds i8, ptr %0, i64 28
  %13 = getelementptr inbounds i8, ptr %3, i64 27
  %14 = getelementptr inbounds i8, ptr %3, i64 29
  %15 = getelementptr inbounds i8, ptr %1, i64 36
  %16 = getelementptr inbounds i8, ptr %2, i64 64
  %17 = getelementptr inbounds i8, ptr %2, i64 24
  %18 = getelementptr inbounds i8, ptr %3, i64 8
  %19 = getelementptr inbounds i8, ptr %2, i64 8
  %20 = getelementptr inbounds i8, ptr %2, i64 116
  %21 = icmp eq i32 %8, 1
  %22 = add i32 %6, -1
  %23 = getelementptr inbounds i8, ptr %2, i64 512
  %24 = getelementptr inbounds i8, ptr %2, i64 96
  %25 = getelementptr inbounds i8, ptr %2, i64 100
  %26 = getelementptr inbounds i8, ptr %2, i64 84
  %27 = getelementptr inbounds i8, ptr %2, i64 88
  %28 = getelementptr inbounds i8, ptr %2, i64 128
  %29 = getelementptr inbounds i8, ptr %2, i64 408
  %30 = getelementptr inbounds i8, ptr %2, i64 344
  %31 = icmp ne i32 %8, 0
  %32 = getelementptr inbounds i8, ptr %2, i64 120
  br i1 %.not325, label %.loopexit, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.lr.ph, %._crit_edge.us
  %.0324.us = phi i32 [ %.5.ph.us, %._crit_edge.us ], [ %9, %.preheader.lr.ph ]
  %.0294323.us = phi i32 [ %262, %._crit_edge.us ], [ 0, %.preheader.lr.ph ]
  %33 = mul i32 %.0294323.us, %6
  %34 = add i32 %33, %5
  br label %35

35:                                               ; preds = %.preheader.us, %260
  %.1321.us = phi i32 [ %.0324.us, %.preheader.us ], [ %.5.ph.us, %260 ]
  %.0293319.us = phi i32 [ 0, %.preheader.us ], [ %261, %260 ]
  %36 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #2
  %37 = icmp eq i32 %36, 2
  %38 = load i32, ptr %11, align 4, !tbaa !5
  %39 = sub i32 8, %38
  %40 = add i32 %.0293319.us, %33
  %41 = urem i32 %40, %39
  %42 = add i32 %41, %38
  %43 = select i1 %37, i32 -259180993, i32 806098626
  %44 = select i1 %37, i32 -259709338, i32 -268097948
  %45 = select i1 %37, i32 -1601891952, i32 -1610346096
  %46 = add i32 %34, %.0293319.us
  %47 = load i32, ptr %12, align 4, !tbaa !10
  %48 = icmp ult i32 %47, 1051
  br i1 %48, label %171, label %49

49:                                               ; preds = %35
  %50 = select i1 %37, i32 32, i32 16
  %51 = icmp ult i32 %47, 1054
  %52 = zext i1 %51 to i32
  %53 = lshr exact i32 %50, %52
  %54 = load i16, ptr %13, align 1, !tbaa !13
  %55 = and i16 %54, 1
  %.not.us = icmp eq i16 %55, 0
  br i1 %.not.us, label %65, label %56

56:                                               ; preds = %49
  %57 = load i16, ptr %14, align 1, !tbaa !16
  %.not300.us = icmp eq i16 %57, 37
  br i1 %.not300.us, label %65, label %58

58:                                               ; preds = %56
  %59 = load i32, ptr %15, align 4, !tbaa !17
  %60 = mul i32 %53, %.0293319.us
  %61 = load i32, ptr %16, align 4, !tbaa !19
  %62 = mul i32 %61, %.0294323.us
  %63 = add i32 %62, %60
  %64 = lshr i32 %63, 3
  tail call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef nonnull %0, i32 noundef %45, i32 noundef %59, i32 noundef 127, i32 noundef 0, i32 noundef %64, i32 noundef %42) #2
  br label %155

65:                                               ; preds = %56, %49
  %66 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %67 = icmp ne i32 %66, 2
  %or.cond5.not.us = select i1 %67, i1 true, i1 %37
  br i1 %or.cond5.not.us, label %86, label %68

68:                                               ; preds = %65
  %69 = load i32, ptr %17, align 4, !tbaa !20
  %70 = load i32, ptr %15, align 4, !tbaa !17
  %71 = mul i32 %53, %.0293319.us
  %72 = load i32, ptr %18, align 1, !tbaa !21
  %73 = mul i32 %72, %.0294323.us
  %74 = add i32 %73, %71
  %75 = load i32, ptr %19, align 4, !tbaa !22
  %76 = mul i32 %74, %75
  %77 = load i32, ptr %12, align 4, !tbaa !10
  %78 = icmp ult i32 %77, 1054
  %79 = select i1 %78, i8 120, i8 121
  %80 = load i32, ptr %20, align 4, !tbaa !23
  %81 = icmp eq i32 %.0293319.us, %22
  %82 = and i1 %21, %81
  %83 = zext i1 %82 to i32
  %spec.select309.us = select i1 %82, i32 %.1321.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %69, i32 noundef %70, i32 noundef 127, i32 noundef 0, i32 noundef %76, i8 noundef signext %79, i32 noundef %80, i32 noundef %83, i32 noundef %spec.select309.us, i32 noundef 0) #2
  %84 = load i8, ptr %23, align 4, !tbaa !24
  %85 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %84, i32 noundef %85, i32 noundef %85) #2
  br label %151

86:                                               ; preds = %65
  %87 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %88 = icmp ne i32 %87, 3
  %or.cond7.not.us = select i1 %88, i1 true, i1 %37
  br i1 %or.cond7.not.us, label %107, label %89

89:                                               ; preds = %86
  %90 = load i32, ptr %17, align 4, !tbaa !20
  %91 = load i32, ptr %15, align 4, !tbaa !17
  %92 = mul i32 %53, %.0293319.us
  %93 = load i32, ptr %18, align 1, !tbaa !21
  %94 = mul i32 %93, %.0294323.us
  %95 = add i32 %94, %92
  %96 = load i32, ptr %19, align 4, !tbaa !22
  %97 = mul i32 %95, %96
  %98 = load i32, ptr %12, align 4, !tbaa !10
  %99 = icmp ult i32 %98, 1054
  %100 = select i1 %99, i8 120, i8 121
  %101 = load i32, ptr %20, align 4, !tbaa !23
  %102 = icmp eq i32 %.0293319.us, %22
  %103 = and i1 %21, %102
  %104 = zext i1 %103 to i32
  %spec.select310.us = select i1 %103, i32 %.1321.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %90, i32 noundef %91, i32 noundef 127, i32 noundef 0, i32 noundef %97, i8 noundef signext %100, i32 noundef %101, i32 noundef %104, i32 noundef %spec.select310.us, i32 noundef 0) #2
  %105 = load i8, ptr %23, align 4, !tbaa !24
  %106 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %105, i32 noundef %106, i32 noundef %106) #2
  br label %151

107:                                              ; preds = %86
  %108 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %109 = icmp eq i32 %108, 4
  br i1 %109, label %113, label %110

110:                                              ; preds = %107
  %111 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %112 = icmp ne i32 %111, 5
  %or.cond9.not.us = select i1 %112, i1 true, i1 %37
  br i1 %or.cond9.not.us, label %137, label %114

113:                                              ; preds = %107
  br i1 %37, label %137, label %114

114:                                              ; preds = %113, %110
  %115 = load i32, ptr %17, align 4, !tbaa !20
  %116 = load i32, ptr %15, align 4, !tbaa !17
  %117 = mul i32 %53, %.0293319.us
  %118 = load i32, ptr %18, align 1, !tbaa !21
  %119 = mul i32 %118, %.0294323.us
  %120 = add i32 %119, %117
  %121 = load i32, ptr %19, align 4, !tbaa !22
  %122 = mul i32 %120, %121
  %123 = load i32, ptr %20, align 4, !tbaa !23
  %124 = icmp eq i32 %.0293319.us, %22
  %125 = and i1 %21, %124
  %126 = zext i1 %125 to i32
  %spec.select311.us = select i1 %125, i32 %.1321.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %115, i32 noundef %116, i32 noundef 127, i32 noundef 0, i32 noundef %122, i8 noundef signext 120, i32 noundef %123, i32 noundef %126, i32 noundef %spec.select311.us, i32 noundef 0) #2
  %127 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %128 = icmp eq i32 %127, 4
  %129 = load i8, ptr %23, align 4, !tbaa !24
  %130 = load i32, ptr %20, align 4, !tbaa !23
  br i1 %128, label %136, label %131

131:                                              ; preds = %114
  %132 = load i32, ptr %24, align 4, !tbaa !25
  %133 = load i32, ptr %25, align 4, !tbaa !26
  %134 = load i32, ptr %26, align 4, !tbaa !27
  %135 = load i32, ptr %27, align 4, !tbaa !28
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %129, i32 noundef %130, i32 noundef %130, i32 noundef %132, i32 noundef %133, i32 noundef %134, i32 noundef %135) #2
  br label %151

136:                                              ; preds = %114
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef nonnull %0, i8 noundef signext %129, i32 noundef %130, i32 noundef %130) #2
  br label %151

137:                                              ; preds = %113, %110
  %138 = load i32, ptr %17, align 4, !tbaa !20
  %139 = load i32, ptr %15, align 4, !tbaa !17
  %140 = mul i32 %53, %.0293319.us
  %141 = load i32, ptr %18, align 1, !tbaa !21
  %142 = mul i32 %141, %.0294323.us
  %143 = add i32 %142, %140
  %144 = load i32, ptr %19, align 4, !tbaa !22
  %145 = mul i32 %143, %144
  %146 = load i8, ptr %23, align 4, !tbaa !24
  %147 = load i32, ptr %20, align 4, !tbaa !23
  %148 = icmp eq i32 %.0293319.us, %22
  %149 = and i1 %21, %148
  %150 = zext i1 %149 to i32
  %spec.select312.us = select i1 %149, i32 %.1321.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %138, i32 noundef %139, i32 noundef 127, i32 noundef 0, i32 noundef %145, i8 noundef signext %146, i32 noundef %147, i32 noundef %150, i32 noundef %spec.select312.us, i32 noundef 0) #2
  br label %151

151:                                              ; preds = %137, %136, %131, %89, %68
  %152 = load i8, ptr %23, align 4, !tbaa !24
  %153 = load i32, ptr %28, align 4, !tbaa !29
  %154 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef nonnull %0, i32 noundef %43, i8 noundef signext %152, i32 noundef %153, i32 noundef %154, i32 noundef %42, i32 noundef 6) #2
  br label %155

155:                                              ; preds = %151, %58
  %156 = load i16, ptr %14, align 1, !tbaa !16
  switch i16 %156, label %260 [
    i16 35, label %168
    i16 6, label %165
    i16 37, label %157
  ]

157:                                              ; preds = %155
  %158 = load i8, ptr %23, align 4, !tbaa !24
  %159 = load i32, ptr %20, align 4, !tbaa !23
  %160 = load i32, ptr %29, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805574232, i8 noundef signext %158, i32 noundef %159, i32 noundef %160, i32 noundef %159) #2
  %161 = load i8, ptr %23, align 4, !tbaa !24
  %162 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805574233, i8 noundef signext %161, i32 noundef %162, i32 noundef %46, i32 noundef %162) #2
  %163 = load i8, ptr %23, align 4, !tbaa !24
  %164 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef nonnull %0, i32 noundef %44, i8 noundef signext %163, i32 noundef %46, i32 noundef %164, i32 noundef %46, i32 noundef %42, i32 noundef 0) #2
  br label %260

165:                                              ; preds = %155
  %166 = load i8, ptr %23, align 4, !tbaa !24
  %167 = load i32, ptr %28, align 4, !tbaa !29
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef nonnull %0, i32 noundef %44, i8 noundef signext %166, i32 noundef %46, i32 noundef %167, i32 noundef %46, i32 noundef %42, i32 noundef 0) #2
  br label %260

168:                                              ; preds = %155
  tail call void @libxsmm_x86_instruction_mask_compute_reg(ptr noundef nonnull %0, i32 noundef -1601892028, i32 noundef %42, i32 noundef 255, i32 noundef %42, i32 noundef 1024) #2
  %169 = load i8, ptr %23, align 4, !tbaa !24
  %170 = load i32, ptr %29, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask(ptr noundef nonnull %0, i32 noundef 805574233, i8 noundef signext %169, i32 noundef %46, i32 noundef %170, i32 noundef %46, i32 noundef %42, i32 noundef 0) #2
  br label %260

171:                                              ; preds = %35
  br i1 %37, label %.split.us, label %172

172:                                              ; preds = %171
  %173 = load i16, ptr %13, align 1, !tbaa !13
  %174 = and i16 %173, 1
  %.not304.us = icmp eq i16 %174, 0
  br i1 %.not304.us, label %192, label %175

175:                                              ; preds = %172
  %176 = load i16, ptr %14, align 1, !tbaa !16
  %.not305.us = icmp eq i16 %176, 37
  br i1 %.not305.us, label %192, label %177

177:                                              ; preds = %175
  %178 = load i32, ptr %15, align 4, !tbaa !17
  %179 = load i32, ptr %16, align 4, !tbaa !19
  %180 = mul i32 %179, %.0294323.us
  %181 = lshr i32 %180, 3
  %182 = add i32 %181, %.0293319.us
  %183 = and i32 %182, 536870911
  %184 = load i8, ptr %23, align 4, !tbaa !24
  %185 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef 537208952, i32 noundef %178, i32 noundef 127, i32 noundef 0, i32 noundef %183, i8 noundef signext %184, i32 noundef %185, i32 noundef 0, i32 noundef 0, i32 noundef 0) #2
  %186 = load i8, ptr %23, align 4, !tbaa !24
  %187 = load i32, ptr %20, align 4, !tbaa !23
  %188 = load i32, ptr %30, align 4, !tbaa !31
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639899, i8 noundef signext %186, i32 noundef %187, i32 noundef %188, i32 noundef %187) #2
  %189 = load i8, ptr %23, align 4, !tbaa !24
  %190 = load i32, ptr %20, align 4, !tbaa !23
  %191 = load i32, ptr %30, align 4, !tbaa !31
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef nonnull %0, i32 noundef 805639798, i8 noundef signext %189, i32 noundef %190, i32 noundef %191, i32 noundef %190, i32 noundef 0) #2
  br label %240

192:                                              ; preds = %175, %172
  %193 = load i32, ptr %19, align 4, !tbaa !22
  %194 = shl i32 %193, 3
  %195 = icmp eq i32 %194, 64
  %196 = icmp eq i32 %194, 32
  %197 = select i1 %196, i8 121, i8 120
  %198 = select i1 %195, i8 122, i8 %197
  %199 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %200 = icmp eq i32 %199, 2
  br i1 %200, label %204, label %201

201:                                              ; preds = %192
  %202 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %203 = icmp eq i32 %202, 3
  br i1 %203, label %204, label %210

204:                                              ; preds = %201, %192
  %205 = load i32, ptr %12, align 4, !tbaa !10
  %206 = icmp ult i32 %205, 1051
  %or.cond12.us = and i1 %31, %206
  br i1 %or.cond12.us, label %207, label %210

207:                                              ; preds = %204
  %208 = load i32, ptr %3, align 1, !tbaa !32
  %209 = urem i32 %208, %4
  br label %210

210:                                              ; preds = %207, %204, %201
  %.2.us = phi i32 [ %209, %207 ], [ %.1321.us, %204 ], [ %.1321.us, %201 ]
  %211 = load i32, ptr %17, align 4, !tbaa !20
  %212 = load i32, ptr %15, align 4, !tbaa !17
  %213 = shl i32 %.0293319.us, 3
  %214 = load i32, ptr %18, align 1, !tbaa !21
  %215 = mul i32 %214, %.0294323.us
  %216 = add i32 %215, %213
  %217 = load i32, ptr %19, align 4, !tbaa !22
  %218 = mul i32 %216, %217
  %219 = load i32, ptr %20, align 4, !tbaa !23
  %220 = icmp eq i32 %.0293319.us, %22
  %221 = and i1 %21, %220
  %222 = zext i1 %221 to i32
  %spec.select308.us = select i1 %221, i32 %.2.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %211, i32 noundef %212, i32 noundef 127, i32 noundef 0, i32 noundef %218, i8 noundef signext %198, i32 noundef %219, i32 noundef %222, i32 noundef %spec.select308.us, i32 noundef 0) #2
  %223 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %.not316.us = icmp eq i32 %223, 2
  br i1 %.not316.us, label %224, label %227

224:                                              ; preds = %210
  %225 = load i8, ptr %23, align 4, !tbaa !24
  %226 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %225, i32 noundef %226, i32 noundef %226) #2
  br label %227

227:                                              ; preds = %224, %210
  %228 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %.not317.us = icmp eq i32 %228, 3
  br i1 %.not317.us, label %229, label %232

229:                                              ; preds = %227
  %230 = load i8, ptr %23, align 4, !tbaa !24
  %231 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %230, i32 noundef %231, i32 noundef %231) #2
  br label %232

232:                                              ; preds = %229, %227
  %233 = load i16, ptr %14, align 1, !tbaa !16
  %234 = icmp eq i16 %233, 37
  %235 = load i32, ptr %28, align 4, !tbaa !29
  %236 = load i32, ptr %20, align 4, !tbaa !23
  br i1 %234, label %238, label %237

237:                                              ; preds = %232
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef 806098626, i8 noundef signext 121, i32 noundef %235, i32 noundef %236, i32 noundef %236, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 14) #2
  br label %240

238:                                              ; preds = %232
  %239 = load i32, ptr %32, align 4, !tbaa !33
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef 806098626, i8 noundef signext 121, i32 noundef %235, i32 noundef %236, i32 noundef %239, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef 14) #2
  br label %240

240:                                              ; preds = %238, %237, %177
  %.3.us = phi i32 [ %.1321.us, %177 ], [ %.2.us, %237 ], [ %.2.us, %238 ]
  %241 = load i16, ptr %14, align 1, !tbaa !16
  switch i16 %241, label %260 [
    i16 35, label %253
    i16 6, label %249
    i16 37, label %242
  ]

242:                                              ; preds = %240
  %243 = load i32, ptr %20, align 4, !tbaa !23
  %244 = load i32, ptr %29, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805574232, i8 noundef signext 121, i32 noundef %243, i32 noundef %244, i32 noundef %243) #2
  %245 = load i32, ptr %20, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805574233, i8 noundef signext 121, i32 noundef %245, i32 noundef %46, i32 noundef %245) #2
  %246 = load i32, ptr %20, align 4, !tbaa !23
  %247 = load i32, ptr %32, align 4, !tbaa !33
  %248 = shl i32 %247, 4
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef 1879912522, i8 noundef signext 121, i32 noundef %46, i32 noundef %246, i32 noundef %46, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %248) #2
  br label %260

249:                                              ; preds = %240
  %250 = load i32, ptr %28, align 4, !tbaa !29
  %251 = load i32, ptr %20, align 4, !tbaa !23
  %252 = shl i32 %251, 4
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef 1879912522, i8 noundef signext 121, i32 noundef %46, i32 noundef %250, i32 noundef %46, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %252) #2
  br label %260

253:                                              ; preds = %240
  %254 = load i8, ptr %23, align 4, !tbaa !24
  %255 = load i32, ptr %29, align 4, !tbaa !30
  %256 = load i32, ptr %32, align 4, !tbaa !33
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805574233, i8 noundef signext %254, i32 noundef %46, i32 noundef %255, i32 noundef %256) #2
  %257 = load i32, ptr %32, align 4, !tbaa !33
  %258 = load i32, ptr %20, align 4, !tbaa !23
  %259 = shl i32 %258, 4
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_mask_sae_imm8(ptr noundef nonnull %0, i32 noundef 1879912522, i8 noundef signext 121, i32 noundef %46, i32 noundef %257, i32 noundef %46, i32 noundef 0, i32 noundef 0, i8 noundef zeroext 0, i32 noundef %259) #2
  br label %260

260:                                              ; preds = %253, %249, %242, %240, %168, %165, %157, %155
  %.5.ph.us = phi i32 [ %.1321.us, %155 ], [ %.3.us, %240 ], [ %.1321.us, %157 ], [ %.1321.us, %165 ], [ %.1321.us, %168 ], [ %.3.us, %242 ], [ %.3.us, %249 ], [ %.3.us, %253 ]
  %261 = add nuw i32 %.0293319.us, 1
  %exitcond.not = icmp eq i32 %261, %6
  br i1 %exitcond.not, label %._crit_edge.us, label %35, !llvm.loop !34

._crit_edge.us:                                   ; preds = %260
  %262 = add nuw i32 %.0294323.us, 1
  %exitcond327.not = icmp eq i32 %262, %7
  br i1 %exitcond327.not, label %.loopexit, label %.preheader.us, !llvm.loop !36

.split.us:                                        ; preds = %171
  %263 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !37
  %264 = icmp ugt i32 %263, 1
  %265 = load i32, ptr @libxsmm_verbosity, align 4
  %266 = select i1 %264, i32 %265, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90006, ptr noundef nonnull @__func__.libxsmm_compute_unary_2d_reg_block_relu_inv, ptr noundef nonnull @.str, i32 noundef 1761, i32 noundef %266) #2
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge.us, %.preheader.lr.ph, %10, %.split.us
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 76}
!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 = !{!11, !7, i64 28}
!11 = !{!"libxsmm_generated_code", !12, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!14, !15, i64 27}
!14 = !{!"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, !15, i64 27, !15, i64 29, !8, i64 31}
!15 = !{!"short", !8, i64 0}
!16 = !{!14, !15, i64 29}
!17 = !{!18, !7, i64 36}
!18 = !{!"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}
!19 = !{!6, !7, i64 64}
!20 = !{!6, !7, i64 24}
!21 = !{!14, !7, i64 8}
!22 = !{!6, !7, i64 8}
!23 = !{!6, !7, i64 116}
!24 = !{!6, !8, i64 512}
!25 = !{!6, !7, i64 96}
!26 = !{!6, !7, i64 100}
!27 = !{!6, !7, i64 84}
!28 = !{!6, !7, i64 88}
!29 = !{!6, !7, i64 128}
!30 = !{!6, !7, i64 408}
!31 = !{!6, !7, i64 344}
!32 = !{!14, !7, i64 0}
!33 = !{!6, !7, i64 120}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = !{!7, !7, i64 0}


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